diff --git a/e2e/features/animation/animation-test.spec.js b/e2e/features/animation/animation-test.spec.js
index 5f178c311b..1f2d778f60 100644
--- a/e2e/features/animation/animation-test.spec.js
+++ b/e2e/features/animation/animation-test.spec.js
@@ -64,8 +64,8 @@ test('Disable playback when max frames exceeded', async () => {
const { playButton, yearStartInput } = selectors
await page.goto(animationGeostationary)
await closeModal(page)
- const animateYearDown = page.locator('.wv-date-range-selector > div > div > div:nth-child(3) > svg > .downarrow').first()
- const animateYearUp = page.locator('.wv-date-range-selector > div > div > div > svg > .uparrow').first()
+ const animateYearDown = page.locator('.wv-date-range-selector > div > div > div:nth-child(3) > svg.downarrow').first()
+ const animateYearUp = page.locator('.wv-date-range-selector > div > div > div > svg.uparrow').first()
await animateYearDown.click()
await expect(playButton).toHaveClass(/disabled/)
// Playback re-enabled when frames within the max
diff --git a/e2e/features/share/share-test.spec.js b/e2e/features/share/share-test.spec.js
index 81b81fd800..3dc630f5d8 100644
--- a/e2e/features/share/share-test.spec.js
+++ b/e2e/features/share/share-test.spec.js
@@ -54,7 +54,7 @@ test('Share link clipboard with no time query string param in the page url will
const queryString = 'http://localhost:3000/'
await page.goto(queryString)
await closeModal(page)
- await page.getByRole('button', { name: '×' }).click()
+ await page.locator('.tour-close-btn').click()
await shareToolbarButton.click()
const minutesOffset = 40 * 60000 // 40 minutes
let date = new Date(new Date().getTime() - minutesOffset)
diff --git a/e2e/features/timeline/date-selector-test.spec.js b/e2e/features/timeline/date-selector-test.spec.js
index b6bfd88e57..2405262c23 100644
--- a/e2e/features/timeline/date-selector-test.spec.js
+++ b/e2e/features/timeline/date-selector-test.spec.js
@@ -50,7 +50,7 @@ test('Left timeline arrow will not be disabled by default', async () => {
const queryString = 'http://localhost:3000/'
await page.goto(queryString)
await closeModal(page)
- await page.getByRole('button', { name: '×' }).click()
+ await page.locator('.tour-close-btn').click()
const leftArrow = await page.locator('#left-arrow-group')
await expect(leftArrow).not.toHaveClass(/button-disabled/)
})
@@ -59,7 +59,7 @@ test('Left timeline arrow will not be disabled by default', async () => {
// test.only('Right timeline arrow will be disabled by default', async () => {
// const queryString = 'http://localhost:3000/'
// await page.goto(queryString)
-// await page.getByRole('button', { name: '×' }).click()
+// await page.locator('.tour-close-btn').click()
// const rightArrow = await page.locator('#right-arrow-group')
// await expect(rightArrow).toHaveClass(/button-disabled/)
// })
@@ -68,7 +68,7 @@ test('Left timeline arrow will not be disabled by default', async () => {
// test('Now button will be disabled by default', async () => {
// const queryString = 'http://localhost:3000/'
// await page.goto(queryString)
-// await page.getByRole('button', { name: '×' }).click()
+// await page.locator('.tour-close-btn').click()
// const nowButton = page.locator('#now-button-group')
// await expect(nowButton).toHaveClass(/button-disabled/)
// })
diff --git a/e2e/test-utils/global-variables/selectors.js b/e2e/test-utils/global-variables/selectors.js
index 9fde650d79..659a20c44f 100644
--- a/e2e/test-utils/global-variables/selectors.js
+++ b/e2e/test-utils/global-variables/selectors.js
@@ -15,8 +15,8 @@ module.exports = (page) => ({
animationButtonCase: page.locator('#timeline-header .animate-button'),
animationButton: page.locator('.animate-button'),
playButton: page.locator('#play-button'),
- animateYearUp: page.locator('.wv-date-range-selector > div > div:nth-child(2) > div > svg > .uparrow'),
- animateYearDown: page.locator('.wv-date-range-selector > div > div > div:nth-child(3) > svg > .downarrow'),
+ animateYearUp: page.locator('.wv-date-range-selector > div > div:nth-child(2) > div > svg.uparrow'),
+ animateYearDown: page.locator('.wv-date-range-selector > div > div > div:nth-child(3) > svg.downarrow'),
yearStartInput: page.locator('#year-animation-widget-start'),
monthStartInput: page.locator('#month-animation-widget-start'),
dayStartInput: page.locator('#day-animation-widget-start'),
diff --git a/package-lock.json b/package-lock.json
index 87e430be55..c43a6aa922 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,6 +10,7 @@
"hasInstallScript": true,
"license": "NASA-1.3",
"dependencies": {
+ "@edsc/earthdata-react-icons": "^0.0.2",
"@elastic/react-search-ui": "^1.21.5",
"@elastic/react-search-ui-views": "^1.21.2",
"@fortawesome/fontawesome-svg-core": "^6.6.0",
@@ -2003,6 +2004,15 @@
"node": ">=10.0.0"
}
},
+ "node_modules/@edsc/earthdata-react-icons": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/@edsc/earthdata-react-icons/-/earthdata-react-icons-0.0.2.tgz",
+ "integrity": "sha512-2E++Sd1CQiB2RQ17Hq+/6ftjfiuiH1a3FVevNKYLLgxipefOv70q2lFEW0VyhTX4kt8rCXPLZGA0CzMnzu0srQ==",
+ "peerDependencies": {
+ "react": "^17.0.0 || ^18.0.0",
+ "react-dom": "^17.0.0 || ^18.0.0"
+ }
+ },
"node_modules/@elastic/react-search-ui": {
"version": "1.21.5",
"license": "Apache-2.0",
diff --git a/package.json b/package.json
index 68eb032a8c..c3f6e45a2f 100644
--- a/package.json
+++ b/package.json
@@ -146,6 +146,7 @@
"yargs": "^17.7.2"
},
"dependencies": {
+ "@edsc/earthdata-react-icons": "^0.0.2",
"@elastic/react-search-ui": "^1.21.5",
"@elastic/react-search-ui-views": "^1.21.2",
"@fortawesome/fontawesome-svg-core": "^6.6.0",
diff --git a/web/.eslintrc b/web/.eslintrc
index 1790df5a14..2b60e11521 100644
--- a/web/.eslintrc
+++ b/web/.eslintrc
@@ -25,7 +25,11 @@
},
"import/resolver": {
"webpack": {}
- }
+ },
+ "import/core-modules": [
+ "@edsc/earthdata-react-icons/horizon-design-system/earthdata/ui",
+ "@edsc/earthdata-react-icons/horizon-design-system/hds/ui"
+ ]
},
"rules": {
// The following rules are cases where our base rules
diff --git a/web/fonts/Inter/Inter-Light.ttf b/web/fonts/Inter/Inter-Light.ttf
new file mode 100644
index 0000000000..acae361282
Binary files /dev/null and b/web/fonts/Inter/Inter-Light.ttf differ
diff --git a/web/fonts/Inter/Inter-Medium.ttf b/web/fonts/Inter/Inter-Medium.ttf
new file mode 100644
index 0000000000..71d90172f1
Binary files /dev/null and b/web/fonts/Inter/Inter-Medium.ttf differ
diff --git a/web/fonts/PublicSans/PublicSans-Regular.ttf b/web/fonts/PublicSans/PublicSans-Regular.ttf
new file mode 100644
index 0000000000..8afd7e0a17
Binary files /dev/null and b/web/fonts/PublicSans/PublicSans-Regular.ttf differ
diff --git a/web/fonts/PublicSans/PublicSans-VariableFont_wght.ttf b/web/fonts/PublicSans/PublicSans-VariableFont_wght.ttf
new file mode 100644
index 0000000000..bc53efc12a
Binary files /dev/null and b/web/fonts/PublicSans/PublicSans-VariableFont_wght.ttf differ
diff --git a/web/js/components/layer/product-picker/search/search-layer-row.js b/web/js/components/layer/product-picker/search/search-layer-row.js
index 611d79be9a..e3cf77e96f 100644
--- a/web/js/components/layer/product-picker/search/search-layer-row.js
+++ b/web/js/components/layer/product-picker/search/search-layer-row.js
@@ -3,6 +3,7 @@ import { connect } from 'react-redux';
import PropTypes from 'prop-types';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import { Button, UncontrolledTooltip } from 'reactstrap';
+import { Check } from '@edsc/earthdata-react-icons/horizon-design-system/hds/ui';
import {
addLayer as addLayerAction,
removeLayer as removeLayerAction,
@@ -129,7 +130,7 @@ class SearchLayerRow extends React.Component {
onMouseEnter={() => this.toggleDeleteIcon(true)}
onMouseLeave={() => this.toggleDeleteIcon(false)}
>
-
+
+ {isEnabled && (
+
+ )}
{layerNotices && (
diff --git a/web/js/components/layer/settings/associated-layers-toggle.js b/web/js/components/layer/settings/associated-layers-toggle.js
index 68b1763ce4..360a851193 100644
--- a/web/js/components/layer/settings/associated-layers-toggle.js
+++ b/web/js/components/layer/settings/associated-layers-toggle.js
@@ -38,6 +38,7 @@ function AssociatedLayersToggle(props) {
onChangePalette(id)}
/>
+ {isSelected && (
+
+ )}