@madie/madie-design-system 1.2.62 → 2.0.1

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 (156) hide show
  1. package/.babelrc +14 -2
  2. package/.eslintrc.js +1 -1
  3. package/.storybook/.babelrc +2 -1
  4. package/.storybook/main.js +3 -11
  5. package/.storybook/preview.js +1 -1
  6. package/components/Accordion/index.jsx +32 -36
  7. package/components/AutoComplete/AutoComplete.jsx +2 -17
  8. package/components/Button/Button.stories.js +0 -7
  9. package/components/Button/index.js +34 -44
  10. package/components/DateField/DateField.jsx +2 -15
  11. package/components/DateField/DateField.stories.jsx +23 -10
  12. package/components/DateTimeField/DateTimeField.jsx +7 -11
  13. package/components/DateTimeField/DateTimeField.stories.jsx +29 -19
  14. package/components/InputLabel/index.jsx +1 -6
  15. package/components/Instant/Instant.stories.js +14 -6
  16. package/components/Instant/index.jsx +0 -16
  17. package/components/Link/index.js +14 -33
  18. package/components/MadieAlert/MadieAlert.stories.js +35 -29
  19. package/components/MadieAlert/index.jsx +5 -44
  20. package/components/MadieConfirmDialog/MadieConfirmDialog.stories.js +17 -32
  21. package/components/MadieConfirmDialog/index.jsx +0 -8
  22. package/components/MadieDeleteDialog/MadieDeleteDialog.stories.js +9 -24
  23. package/components/MadieDeleteDialog/index.jsx +0 -7
  24. package/components/MadieDialog/MadieDialog.stories.js +45 -121
  25. package/components/MadieDialog/index.jsx +4 -23
  26. package/components/MadieDiscardDialog/MadieDiscardDialog.stories.js +5 -12
  27. package/components/MadieDiscardDialog/index.jsx +0 -7
  28. package/components/MadieSpinner/MadieSpinner.stories.js +1 -9
  29. package/components/MadieSpinner/index.jsx +0 -5
  30. package/components/MadieTooltip/MadieTooltip.stories.js +7 -2
  31. package/components/MadieTooltip/index.jsx +0 -6
  32. package/components/MadieTooltipIcon/index.jsx +0 -5
  33. package/components/Modal/Modal.jsx +31 -43
  34. package/components/Modal/Modal.stories.js +18 -89
  35. package/components/Modal/index.jsx +6 -8
  36. package/components/NumberInput/NumberInput.stories.js +50 -67
  37. package/components/NumberInput/index.jsx +0 -13
  38. package/components/Pagination/index.jsx +0 -17
  39. package/components/Popover/Popover.stories.js +6 -14
  40. package/components/Popover/index.js +0 -23
  41. package/components/RadioButton/RadioButton.jsx +5 -15
  42. package/components/RadioButton/RadioButton.stories.jsx +6 -2
  43. package/components/ReadOnlyTextField/ReadOnlyTextField.stories.js +3 -8
  44. package/components/ReadOnlyTextField/index.jsx +1 -9
  45. package/components/RichTextEditor/RichTextEditor.stories.js +10 -8
  46. package/components/RichTextEditor/index.jsx +14 -30
  47. package/components/SanitizedContent/index.jsx +0 -8
  48. package/components/Search/Search.stories.js +2 -4
  49. package/components/Search/index.js +26 -40
  50. package/components/Select/Select.stories.js +59 -164
  51. package/components/Select/index.jsx +2 -17
  52. package/components/Tabs/Tab.js +29 -25
  53. package/components/Tabs/TabPanel.js +15 -19
  54. package/components/Tabs/Tabs.stories.js +43 -211
  55. package/components/Tabs/index.js +10 -28
  56. package/components/TextArea/TextArea.stories.js +87 -113
  57. package/components/TextArea/index.jsx +2 -14
  58. package/components/TextField/TextField.stories.js +100 -129
  59. package/components/TextField/index.jsx +2 -17
  60. package/components/TimeField/TimeField.jsx +0 -10
  61. package/components/TimeField/TimeField.stories.js +18 -8
  62. package/components/Toast/Toast.stories.js +42 -102
  63. package/components/Toast/index.jsx +0 -14
  64. package/components/TruncateText/TruncateText.stories.js +22 -17
  65. package/components/TruncateText/index.js +0 -8
  66. package/components/hooks/useGetConfig.js +2 -2
  67. package/components/{index.js → index.mjs} +37 -57
  68. package/dist/index.js +3 -1
  69. package/dist/index.js.LICENSE.txt +16 -0
  70. package/dist/index.js.map +1 -0
  71. package/dist/react/index.html +1 -1
  72. package/dist/react/index.mjs +103 -0
  73. package/dist/react/{index.js.LICENSE.txt → index.mjs.LICENSE.txt} +3 -52
  74. package/dist/react/index.mjs.map +1 -0
  75. package/dist/react/package.json +1 -0
  76. package/eslint.config.cjs +59 -0
  77. package/index.js +7 -9
  78. package/jest.config.mjs +10 -0
  79. package/lib/Chevron.jsx +2 -10
  80. package/package.json +57 -82
  81. package/styles/_main.scss +4 -3
  82. package/test/components/Accordion.test.js +1 -1
  83. package/test/components/AutoComplete.test.js +11 -6
  84. package/test/components/Button.test.js +13 -19
  85. package/test/components/DateField.test.js +25 -29
  86. package/test/components/DateTimeField.test.js +21 -25
  87. package/test/components/Instant.test.js +1 -1
  88. package/test/components/MadieAlert.test.js +22 -22
  89. package/test/components/MadieConfirmDialog.test.js +42 -64
  90. package/test/components/MadieDeleteDialog.test.js +51 -69
  91. package/test/components/MadieDialog.test.js +13 -13
  92. package/test/components/MadieDiscardDialog.test.js +28 -45
  93. package/test/components/MadieSpinner.test.js +12 -17
  94. package/test/components/Modal.test.js +115 -0
  95. package/test/components/Pagination.test.js +2 -2
  96. package/test/components/RadioButton.test.js +7 -7
  97. package/test/components/ReadOnlyTextField.test.js +4 -2
  98. package/test/components/RichTextEditor.test.js +90 -6
  99. package/test/components/Search.test.js +75 -0
  100. package/test/components/Select.test.js +97 -107
  101. package/test/components/Tabs.test.js +22 -24
  102. package/test/components/TextArea.test.js +78 -92
  103. package/test/components/TextField.test.js +128 -147
  104. package/test/components/Toast.test.js +67 -78
  105. package/test/components/TruncateText.test.js +75 -0
  106. package/test/components/index.test.js +23 -0
  107. package/webpack.config.mjs +79 -0
  108. package/webpack.config.react.mjs +72 -0
  109. package/.eslintignore +0 -5
  110. package/components/Alert/Alert.stories.js +0 -70
  111. package/components/Alert/index.js +0 -55
  112. package/components/Breadcrumb/Breadcrumb.md +0 -28
  113. package/components/Breadcrumb/Breadcrumb.stories.js +0 -76
  114. package/components/Breadcrumb/index.js +0 -92
  115. package/components/CalloutBox/CalloutBox.stories.js +0 -94
  116. package/components/CalloutBox/index.js +0 -109
  117. package/components/Card/Card.stories.js +0 -163
  118. package/components/Card/index.js +0 -144
  119. package/components/Dropdown/Dropdown.stories.js +0 -94
  120. package/components/Dropdown/index.js +0 -85
  121. package/components/Error/Collapsible.jsx +0 -93
  122. package/components/Error/ErrorUI.jsx +0 -31
  123. package/components/Error/error.js +0 -26
  124. package/components/FlashNotification/FlashNotificationUI.jsx +0 -91
  125. package/components/FlashNotification/index.js +0 -30
  126. package/components/Footer/Footer.stories.js +0 -20
  127. package/components/Footer/FooterUI.jsx +0 -137
  128. package/components/Footer/LegacyFooterUI.jsx +0 -204
  129. package/components/Footer/SocialLinks.jsx +0 -63
  130. package/components/Footer/Subscribe.jsx +0 -34
  131. package/components/Footer/footer.js +0 -30
  132. package/components/Infotip/Infotip.jsx +0 -75
  133. package/components/Infotip/Infotip.stories.js +0 -52
  134. package/components/Infotip/InfotipIcon.jsx +0 -41
  135. package/components/Infotip/index.js +0 -3
  136. package/components/Link/Link.stories.js +0 -82
  137. package/components/NotificationBanner/NotificationBanner.stories.js +0 -23
  138. package/components/NotificationBanner/index.js +0 -279
  139. package/components/Spinner/index.js +0 -9
  140. package/components/TextInput/TextInput.stories.js +0 -118
  141. package/components/TextInput/index.js +0 -137
  142. package/components/Tooltip/Tooltip.jsx +0 -88
  143. package/components/Tooltip/Tooltip.stories.js +0 -80
  144. package/components/Tooltip/index.js +0 -3
  145. package/components/Tooltip/position.js +0 -76
  146. package/components/UnwrappedSpinner/index.js +0 -8
  147. package/dist/browser.js +0 -1
  148. package/dist/react/index.js +0 -185
  149. package/dist/react/index.js.map +0 -1
  150. package/jest.config.js +0 -17
  151. package/test/components/ErrorUI.test.js +0 -32
  152. package/test/components/FooterUI.test.js +0 -122
  153. package/test/components/Infotip.test.js +0 -76
  154. package/test/components/Tooltip.test.js +0 -147
  155. package/webpack.config.js +0 -124
  156. package/webpack.config.react.js +0 -104
@@ -1,91 +0,0 @@
1
- import React, { Component } from "react";
2
- import PropTypes from "prop-types";
3
- import reactDOM from "react-dom";
4
- import { CloseXIcon } from "../../lib/SvgComponents.jsx";
5
-
6
- class FlashNotification extends Component {
7
- constructor(props) {
8
- super(props);
9
- this.state = { isClosed: true };
10
- this._closeFlashNotification = this.closeFlashNotification.bind(this);
11
- this._fadeOutNotification = this.fadeOutNotification.bind(this);
12
- }
13
-
14
- render() {
15
- return (
16
- <div
17
- className={
18
- this.state.isClosed
19
- ? "flash-notification notification-closed"
20
- : "flash-notification"
21
- }
22
- ref={(elem) => {
23
- this.element = elem;
24
- }}
25
- >
26
- <div className={this.props.success ? "success" : "error"}>
27
- <div className="icon"></div>
28
- <div className="text-content">
29
- <p className="title-text">{this.props.titleText}</p>
30
- <p className="body-text">{this.props.bodyText}</p>
31
- </div>
32
- <div className="close-notification-container">
33
- <button
34
- className="closeNotification"
35
- aria-label="Close notification"
36
- onClick={this._closeFlashNotification}
37
- >
38
- <svg className="close-icon" aria-hidden="true">
39
- {/* <use xlinkHref="#closex" /> */}
40
- <CloseXIcon />
41
- </svg>
42
- </button>
43
- </div>
44
- </div>
45
- </div>
46
- );
47
- }
48
-
49
- componentDidMount() {
50
- setTimeout(
51
- function () {
52
- this.setState({ isClosed: false });
53
- }.bind(this),
54
- 250
55
- );
56
-
57
- this.timer = setTimeout(
58
- function () {
59
- this._fadeOutNotification();
60
- }.bind(this),
61
- 10000
62
- );
63
- }
64
-
65
- fadeOutNotification() {
66
- this.setState({ isClosed: true });
67
- setTimeout(
68
- function () {
69
- reactDOM.unmountComponentAtNode(this.element.parentElement);
70
- if (typeof this.props.onClose === "function") {
71
- this.props.onClose();
72
- }
73
- }.bind(this),
74
- 500
75
- );
76
- }
77
-
78
- closeFlashNotification() {
79
- clearTimeout(this.timer);
80
- this._fadeOutNotification();
81
- }
82
- }
83
-
84
- FlashNotification.propTypes = {
85
- bodyText: PropTypes.string,
86
- success: PropTypes.bool.isRequired,
87
- titleText: PropTypes.string,
88
- onClose: PropTypes.func,
89
- };
90
-
91
- export default FlashNotification;
@@ -1,30 +0,0 @@
1
- import React from "react";
2
- import { render } from "react-dom";
3
- import FlashNotificationUI from "./FlashNotificationUI";
4
-
5
- /**
6
- * Renders the Confirmation/Error Flash Component
7
- */
8
- export default class FlashNotification {
9
- /**
10
- * @param {Object} options - An object containing content and config data
11
- * @param {Boolean} options.success - Whether to render a confirmation or error notification
12
- * @param {String} options.titleText - The title text displayed on the notification
13
- * @param {String} options.bodyText - The body text displayed on the notification
14
- * @param {HTMLElement} options.rootElement - Elem inside which to render
15
- */
16
- constructor(options) {
17
- if (options.hasOwnProperty("rootElement")) {
18
- render(
19
- <FlashNotificationUI
20
- success={options.success}
21
- titleText={options.titleText}
22
- bodyText={options.bodyText}
23
- />,
24
- options.rootElement
25
- );
26
- } else {
27
- render(<FlashNotificationUI />, options);
28
- }
29
- }
30
- }
@@ -1,20 +0,0 @@
1
- import React from "react";
2
- import Footer from "./FooterUI";
3
- import { withKnobs, boolean, text } from "@storybook/addon-knobs";
4
-
5
- export default {
6
- title: "Footer",
7
- component: Footer,
8
- decorators: [withKnobs],
9
- };
10
-
11
- export const ExampleFooter = () => (
12
- <Footer
13
- isFullWidth={boolean("isFullWidth", false)}
14
- buildVersion={text("buildVersion", "BUILD VERSION")}
15
- isNewFooter={boolean("isNewFooter", false)}
16
- showHcdResearch={boolean("showHcdResearch", false)}
17
- />
18
- );
19
-
20
- ExampleFooter.storyName = "example Footer";
@@ -1,137 +0,0 @@
1
- import React from "react";
2
- import PropTypes from "prop-types";
3
-
4
- import LegacyFooterUI from "./LegacyFooterUI";
5
-
6
- const FooterUI = (props) => {
7
- const isNewFooter = props.isNewFooter;
8
- const isIESupportPage = props.isIESupportPage;
9
- const signUpNowLink = props.showHcdResearch
10
- ? "/about/hcd-research"
11
- : "mailto:madie@cms.hhs.gov?subject=Sign up for feedback sessions";
12
-
13
- // Default footer assets
14
- const assets = {
15
- ...{
16
- hhsLogo: (
17
- <img
18
- className="hhs-logo"
19
- alt="Department of Health &amp; Human Services USA"
20
- src="/images/hhs-logo-black.svg"
21
- />
22
- ),
23
- madieLogo: (
24
- <img
25
- className="qpp-logo"
26
- src="/images/qpp_logo_rgb_color.png"
27
- alt="MADiE Measure Authoring Development Integrated Environment logo"
28
- />
29
- ),
30
- },
31
- ...props.assets,
32
- };
33
-
34
- const setLink = (link) => {
35
- return isIESupportPage ? "/" : link;
36
- };
37
-
38
- if (isNewFooter) {
39
- return (
40
- <>
41
- {!isIESupportPage && (
42
- <div className="feedback-session-sign-up" />
43
- )}
44
- <footer aria-label="Site footer" className="global-footer">
45
- <div className="build-version" id="build-version">
46
- {props.buildVersion}
47
- </div>
48
-
49
- <div className="responsive-container">
50
- <div className="other-links">
51
- <hr className="divider-top" />
52
- <ul className="small">
53
- <li>
54
- <a
55
- href={setLink(
56
- "https://harp.cms.gov/login/terms-of-use"
57
- )}
58
- aria-label="Terms of Use"
59
- data-track-category="FooterNav"
60
- data-track-action="OpenTermsOfService"
61
- data-track-label="Terms of Use"
62
- >
63
- Terms of Use
64
- </a>
65
- </li>
66
- <li className="divider"></li>{" "}
67
- <li>
68
- <a
69
- href={setLink(
70
- "https://www.cms.gov/privacy"
71
- )}
72
- aria-label="Privacy Policy"
73
- data-track-category="FooterNav"
74
- data-track-action="OpenPrivacyPolicy"
75
- data-track-label="Privacy Policy"
76
- >
77
- Privacy Policy
78
- </a>
79
- </li>
80
- <li className="divider"></li>{" "}
81
- <li>
82
- <a
83
- href={setLink(
84
- "https://www.hhs.gov/web/governance/digital-strategy/it-policy-archive/hhs-rules-of-behavior-for-the-use-of-hhs-information-and-it-resources-policy.html"
85
- )}
86
- aria-label="Rules of Behavior"
87
- data-track-category="FooterNav"
88
- data-track-action="OpenRulesofBehavior"
89
- data-track-label="Rules of Behavior"
90
- >
91
- Rules of Behavior
92
- </a>
93
- </li>
94
- </ul>
95
- <hr className="divider-bottom" />
96
- </div>
97
- <div className="qpp-hhs-logo-container">
98
- <div className="qpp-logo-container">
99
- {assets.qppLogo}
100
- </div>
101
- <div className="hhs-logo-container">
102
- {assets.hhsLogo}
103
- <p>
104
- A federal government website managed and
105
- paid for by the U.S Centers for Medicare
106
- &amp; Medicaid Services. 7500 Security
107
- Boulevard, Baltimore MD 21244
108
- </p>
109
- </div>
110
- </div>
111
- </div>
112
- </footer>
113
- </>
114
- );
115
- }
116
- return (
117
- <LegacyFooterUI
118
- buildVersion={props.buildVersion}
119
- isFullWidth={props.isFullWidth}
120
- signUpNowLink={signUpNowLink}
121
- />
122
- );
123
- };
124
-
125
- FooterUI.propTypes = {
126
- buildVersion: PropTypes.string,
127
- isFullWidth: PropTypes.bool,
128
- isNewFooter: PropTypes.bool,
129
- isIESupportPage: PropTypes.bool,
130
- showHcdResearch: PropTypes.bool,
131
- assets: PropTypes.shape({
132
- cmsLogo: PropTypes.element,
133
- madieLogo: PropTypes.element,
134
- }),
135
- };
136
-
137
- export default FooterUI;
@@ -1,204 +0,0 @@
1
- import React from "react";
2
- import PropTypes from "prop-types";
3
- import InfoTip from "../Infotip/Infotip";
4
-
5
- const infoTipLabel =
6
- "When dialing 711, you will automatically be connected to a TRS Communications Assistant who will relay your conversation to the help desk agent with strict confidentiality.";
7
-
8
- const LegacyFooterUI = ({ buildVersion, isFullWidth, signUpNowLink }) => {
9
- return (
10
- <footer className="legacy-footer">
11
- <div className="build-version" id="build-version">
12
- {buildVersion}
13
- </div>
14
- <div className="banner">
15
- <div
16
- className={
17
- isFullWidth
18
- ? "container-full-width"
19
- : "responsive-container"
20
- }
21
- >
22
- <div className="row">
23
- <div className="col-sm-12 col-md-12 col-lg-12">
24
- <span>Help shape the future of MADiE</span> by
25
- participating in user feedback sessions.{" "}
26
- <a className="email-note-link" href={signUpNowLink}>
27
- Send us an email to sign up
28
- </a>
29
- </div>
30
- </div>
31
- </div>
32
- </div>
33
- <div
34
- className={
35
- isFullWidth
36
- ? "container-full-width"
37
- : "responsive-container"
38
- }
39
- >
40
- <div className="row">
41
- <div
42
- className={
43
- isFullWidth
44
- ? "col-sm-12 col-md-8 col-lg-8"
45
- : "col-sm-8 col-md-9 col-lg-9"
46
- }
47
- >
48
- <div className="logo-container">
49
- <img
50
- src="/images/qpp_logo_reversed.png"
51
- alt="Quality Payment Program"
52
- className="qpp-logo"
53
- />
54
- <div className="social-container">
55
- <a
56
- rel="noopener noreferrer"
57
- target="_blank"
58
- className="social-link"
59
- href="https://twitter.com/CMSGov"
60
- aria-label="Follow us on Twitter. This link opens in a new window."
61
- >
62
- <span className="glyphicon glyphicon-twitter"></span>
63
- </a>
64
- <a
65
- rel="noopener noreferrer"
66
- target="_blank"
67
- className="social-link"
68
- href="https://www.youtube.com/playlist?list=PLaV7m2-zFKpj_6fBsqav6GvFzzq9oOpkk"
69
- aria-label="Follow us on YouTube. This link opens in a new window."
70
- >
71
- <span className="glyphicon glyphicon-youtube"></span>
72
- </a>
73
- </div>
74
- </div>
75
- <div className="links">
76
- <ul>
77
- <li>
78
- <a
79
- href="/developers"
80
- data-track-category="FooterNav"
81
- data-track-action="OpenDeveloperTools"
82
- data-track-label="Quality Payment Program"
83
- >
84
- Developer Tools
85
- </a>
86
- </li>
87
- <li>
88
- <a
89
- href="/about/resource-library"
90
- data-track-category="FooterNav"
91
- data-track-action="OpenEducationAndTools"
92
- data-track-label="Education and Tools"
93
- >
94
- Resource Library
95
- </a>
96
- </li>
97
- <li>
98
- <a
99
- href="/glossary"
100
- data-track-category="FooterNav"
101
- data-track-action="OpenGlossary"
102
- data-track-label="Glossary"
103
- >
104
- Glossary
105
- </a>
106
- </li>
107
- <li>
108
- <a
109
- href="/resources/help-and-support"
110
- data-track-category="FooterNav"
111
- data-track-action="OpenHelpAndSupport"
112
- data-track-label="Help and Support"
113
- >
114
- Help and Support
115
- </a>
116
- </li>
117
- </ul>
118
- <ul className="small">
119
- <li>
120
- <a
121
- href="https://www.cms.gov/privacy"
122
- data-track-category="FooterNav"
123
- data-track-action="OpenPrivacyDisclaimer"
124
- data-track-label="Notice of Privacy and Disclaimer"
125
- >
126
- CMS Privacy Notice
127
- </a>
128
- </li>
129
- <span className="divider"></span>
130
- <li>
131
- <a
132
- href="https://www.cms.gov/About-CMS/Agency-Information/Aboutwebsite/Policiesforaccessibility"
133
- data-track-category="FooterNav"
134
- data-track-action="OpenAccessibility"
135
- data-track-label="Accessibility"
136
- >
137
- Accessibility
138
- </a>
139
- </li>
140
- <span className="divider"></span>
141
- <li>
142
- <a
143
- className="adobe-link"
144
- rel="noopener noreferrer"
145
- target="_blank"
146
- href="https://get.adobe.com/reader"
147
- data-track-category="FooterNav"
148
- data-track-action="DownloadAdobeReader"
149
- data-track-label="AdobeReader"
150
- >
151
- <svg className="icon">
152
- <use xlinkHref="#icon-download" />
153
- </svg>
154
- Download Adobe Reader
155
- </a>
156
- </li>
157
- <span className="divider"></span>
158
- <li>
159
- <a
160
- href="mailto:sb-mat-help@semanticbits.com"
161
- className="email-link"
162
- >
163
- sb-mat-help@semanticbits.com
164
- </a>
165
- </li>
166
- <li>
167
- 1-866-288-8292 (TRS: 711)
168
- <div className="footer-trs-infotip">
169
- <InfoTip
170
- lightIcon
171
- label={infoTipLabel}
172
- />
173
- </div>
174
- </li>
175
- </ul>
176
- </div>
177
- </div>
178
- <div
179
- className={
180
- isFullWidth
181
- ? "col-sm-12 col-md-4 col-lg-4"
182
- : "col-sm-4 col-md-3 col-lg-3"
183
- }
184
- >
185
- <div className="hhs-logo-container">
186
- <img
187
- alt="Department of Health &amp; Human Services USA"
188
- src="/images/hhs-logo-white.svg"
189
- />
190
- </div>
191
- </div>
192
- </div>
193
- </div>
194
- </footer>
195
- );
196
- };
197
-
198
- LegacyFooterUI.propTypes = {
199
- buildVersion: PropTypes.string,
200
- isFullWidth: PropTypes.bool,
201
- signUpNowLink: PropTypes.string,
202
- };
203
-
204
- export default LegacyFooterUI;
@@ -1,63 +0,0 @@
1
- import React from "react";
2
-
3
- const SocialLinks = () => (
4
- <div className="social-container">
5
- <a
6
- rel="noopener noreferrer"
7
- target="_blank"
8
- className="social-link"
9
- href="https://twitter.com/CMSGov"
10
- aria-label="Follow us on Twitter. This link opens in a new window."
11
- >
12
- <svg width="19px" height="16px" viewBox="0 0 19 16">
13
- <g stroke="none" strokeWidth="1" fill="none" fillRule="evenodd">
14
- <g
15
- transform="translate(-763.000000, -177.000000)"
16
- fill="#242424"
17
- fillRule="nonzero"
18
- >
19
- <g transform="translate(763.000000, 140.000000)">
20
- <g transform="translate(0.000000, 37.000000)">
21
- <path
22
- d="M16.9243259,4.73901817 C16.9243259,4.57725788 16.9243259,4.41549759 16.916868,4.25373729 C17.6626567,3.71698723 18.3114928,3.05524058 18.826087,2.30526104 C18.1250456,2.6067234 17.3867149,2.81260014 16.6260105,2.90083303 C17.4240043,2.43025763 18.0206352,1.68763083 18.3040349,0.812654705 C17.5507884,1.25381914 16.7304209,1.56263424 15.8727639,1.72439454 C14.425934,0.202377237 12.0021209,0.128849832 10.4583384,1.56263424 C9.46643951,2.48172682 9.04133999,3.8566893 9.35457121,5.16547712 C6.28192201,5.01106957 3.41063575,3.5846379 1.47158528,1.22440818 C0.457312727,2.94494947 0.971906889,5.15077164 2.65738922,6.26103547 C2.04584253,6.24632999 1.45666951,6.0845697 0.919701685,5.79046007 C0.919701685,5.80516555 0.919701685,5.81987104 0.919701685,5.83457652 C0.919701685,7.62864522 2.20245815,9.17272074 3.99235089,9.53300502 C3.42555152,9.68741258 2.83637849,9.7094708 2.26212124,9.59917969 C2.76179963,11.1359025 4.20117171,12.1873444 5.83444883,12.2167553 C4.4771135,13.2681972 2.80654695,13.8343583 1.08377519,13.8343583 C0.778001843,13.8343583 0.4722285,13.8123 0.173913043,13.7828891 C1.93397424,14.8784474 3.96251934,15.4666667 6.04326965,15.4666667 C13.0760565,15.4666667 16.9243259,9.71682354 16.9243259,4.73901817 Z"
23
- id="twitter-icon"
24
- ></path>
25
- </g>
26
- </g>
27
- </g>
28
- </g>
29
- </svg>
30
- </a>
31
- <a
32
- rel="noopener noreferrer"
33
- target="_blank"
34
- className="social-link"
35
- href="https://www.youtube.com/playlist?list=PLaV7m2-zFKpj_6fBsqav6GvFzzq9oOpkk"
36
- aria-label="Follow us on YouTube. This link opens in a new window."
37
- >
38
- <svg width="19px" height="14px" viewBox="0 0 19 14">
39
- <g stroke="none" strokeWidth="1" fill="none" fillRule="evenodd">
40
- <g
41
- transform="translate(-801.000000, -179.000000)"
42
- fill="#242424"
43
- fillRule="nonzero"
44
- >
45
- <g transform="translate(763.000000, 140.000000)">
46
- <g
47
- id="Group"
48
- transform="translate(38.000000, 39.000000)"
49
- >
50
- <path
51
- d="M17.7486957,2.84298208 C17.551087,2.10010036 16.9670652,1.51515412 16.2265217,1.3162724 C14.8843478,0.955555556 9.5,0.955555556 9.5,0.955555556 C9.5,0.955555556 4.11565217,0.955555556 2.77347826,1.3162724 C2.03293478,1.51515412 1.44891304,2.10010036 1.25130435,2.84298208 C0.891304348,4.19030824 0.891304348,7 0.891304348,7 C0.891304348,7 0.891304348,9.80969176 1.25130435,11.1570179 C1.44891304,11.8998996 2.03293478,12.4848459 2.77347826,12.6837276 C4.11565217,13.0444444 9.5,13.0444444 9.5,13.0444444 C9.5,13.0444444 14.8843478,13.0444444 16.2265217,12.6837276 C16.9670652,12.4848459 17.551087,11.8998996 17.7486957,11.1570179 C18.1086957,9.80969176 18.1086957,7 18.1086957,7 C18.1086957,7 18.1086957,4.19030824 17.7486957,2.84298208 Z M7.73913043,9.5513405 L7.73913043,4.4486595 L12.2391304,7 L7.73913043,9.5513405 Z"
52
- id="Youtube-icon"
53
- ></path>
54
- </g>
55
- </g>
56
- </g>
57
- </g>
58
- </svg>
59
- </a>
60
- </div>
61
- );
62
-
63
- export default SocialLinks;
@@ -1,34 +0,0 @@
1
- import React from "react";
2
-
3
- const Subscribe = () => (
4
- <div className="subscriber-form">
5
- <form
6
- action="https://public.govdelivery.com/accounts/USCMS/subscriber/qualify"
7
- target="_blank"
8
- acceptCharset="UTF-8"
9
- method="get"
10
- rel="noopener noreferrer"
11
- >
12
- <input type="hidden" name="topic_id" value="USCMS_12196" />
13
- <label className="sr-only" htmlFor="email-subscribe">
14
- Email address
15
- </label>
16
- <input
17
- id="email-subscribe"
18
- className="form-control"
19
- type="email"
20
- name="email"
21
- placeholder="Enter your Email"
22
- />
23
- <button
24
- className="btn btn-subscribe js-subscribe-submit"
25
- type="submit"
26
- name="commit"
27
- >
28
- Subscribe
29
- </button>
30
- </form>
31
- </div>
32
- );
33
-
34
- export default Subscribe;
@@ -1,30 +0,0 @@
1
- /* global buildVersion */
2
- // buildVersion above is defined in webpack.config.js
3
- import React from "react";
4
- import { render } from "react-dom";
5
- import FooterUI from "./FooterUI";
6
-
7
- /**
8
- * Renders the QPP Footer content.
9
- */
10
- export default class Footer {
11
- /**
12
- * @param {Object} options - An object containing content and config data
13
- * @param {HTMLElement} options.rootElement - Elem inside which to render
14
- */
15
- constructor(options) {
16
- if (options.hasOwnProperty("rootElement")) {
17
- render(
18
- <FooterUI
19
- buildVersion={buildVersion}
20
- isFullWidth={options.isFullWidth}
21
- isNewFooter={options.isNewFooter}
22
- showHcdResearch={options.showHcdResearch}
23
- />,
24
- options.rootElement
25
- );
26
- } else {
27
- render(<FooterUI buildVersion={buildVersion} />, options);
28
- }
29
- }
30
- }