diff --git a/assets/images/icon-all-hosts-20x20@2x.png b/assets/images/icon-all-hosts-20x20@2x.png
new file mode 100644
index 0000000000..492b780eb7
Binary files /dev/null and b/assets/images/icon-all-hosts-20x20@2x.png differ
diff --git a/assets/images/icon-apple-dark-20x20@2x.png b/assets/images/icon-apple-dark-20x20@2x.png
new file mode 100644
index 0000000000..eadc54c7df
Binary files /dev/null and b/assets/images/icon-apple-dark-20x20@2x.png differ
diff --git a/assets/images/icon-centos-dark-20x20@2x.png b/assets/images/icon-centos-dark-20x20@2x.png
new file mode 100644
index 0000000000..471f1cad3b
Binary files /dev/null and b/assets/images/icon-centos-dark-20x20@2x.png differ
diff --git a/assets/images/icon-hosts-2-20x20@2x.png b/assets/images/icon-hosts-2-20x20@2x.png
new file mode 100644
index 0000000000..03e26a7160
Binary files /dev/null and b/assets/images/icon-hosts-2-20x20@2x.png differ
diff --git a/assets/images/icon-hosts-3-20x20@2x.png b/assets/images/icon-hosts-3-20x20@2x.png
new file mode 100644
index 0000000000..c58c855b36
Binary files /dev/null and b/assets/images/icon-hosts-3-20x20@2x.png differ
diff --git a/assets/images/icon-label-20x20@2x.png b/assets/images/icon-label-20x20@2x.png
new file mode 100644
index 0000000000..cac459aa34
Binary files /dev/null and b/assets/images/icon-label-20x20@2x.png differ
diff --git a/assets/images/icon-linux-dark-20x20@2x.png b/assets/images/icon-linux-dark-20x20@2x.png
new file mode 100644
index 0000000000..77e32b3e54
Binary files /dev/null and b/assets/images/icon-linux-dark-20x20@2x.png differ
diff --git a/assets/images/icon-main-admin-white-24x24@2x.png b/assets/images/icon-main-admin-white-24x24@2x.png
new file mode 100644
index 0000000000..88b87a717c
Binary files /dev/null and b/assets/images/icon-main-admin-white-24x24@2x.png differ
diff --git a/assets/images/icon-main-help-white-24x24@2x.png b/assets/images/icon-main-help-white-24x24@2x.png
new file mode 100644
index 0000000000..6ea026223a
Binary files /dev/null and b/assets/images/icon-main-help-white-24x24@2x.png differ
diff --git a/assets/images/icon-main-hosts-white-24x24@2x.png b/assets/images/icon-main-hosts-white-24x24@2x.png
new file mode 100644
index 0000000000..548f5d8135
Binary files /dev/null and b/assets/images/icon-main-hosts-white-24x24@2x.png differ
diff --git a/assets/images/icon-main-logout-white-24x24@2x.png b/assets/images/icon-main-logout-white-24x24@2x.png
new file mode 100644
index 0000000000..5880603c58
Binary files /dev/null and b/assets/images/icon-main-logout-white-24x24@2x.png differ
diff --git a/assets/images/icon-main-packs-white-24x24@2x.png b/assets/images/icon-main-packs-white-24x24@2x.png
new file mode 100644
index 0000000000..c4c8a4e1d9
Binary files /dev/null and b/assets/images/icon-main-packs-white-24x24@2x.png differ
diff --git a/assets/images/icon-main-query-white-24x24@2x.png b/assets/images/icon-main-query-white-24x24@2x.png
new file mode 100644
index 0000000000..b6def88877
Binary files /dev/null and b/assets/images/icon-main-query-white-24x24@2x.png differ
diff --git a/assets/images/icon-main-settings-white-24x24@2x.png b/assets/images/icon-main-settings-white-24x24@2x.png
new file mode 100644
index 0000000000..21cf6abe2c
Binary files /dev/null and b/assets/images/icon-main-settings-white-24x24@2x.png differ
diff --git a/assets/images/icon-mia-20x20@2x.png b/assets/images/icon-mia-20x20@2x.png
new file mode 100644
index 0000000000..422840908d
Binary files /dev/null and b/assets/images/icon-mia-20x20@2x.png differ
diff --git a/assets/images/icon-new-20x20@2x.png b/assets/images/icon-new-20x20@2x.png
new file mode 100644
index 0000000000..92ed45dde3
Binary files /dev/null and b/assets/images/icon-new-20x20@2x.png differ
diff --git a/assets/images/icon-offline-20x20@2x.png b/assets/images/icon-offline-20x20@2x.png
new file mode 100644
index 0000000000..cf7b2f7daa
Binary files /dev/null and b/assets/images/icon-offline-20x20@2x.png differ
diff --git a/assets/images/icon-online-20x20@2x.png b/assets/images/icon-online-20x20@2x.png
new file mode 100644
index 0000000000..aa1f8c0d08
Binary files /dev/null and b/assets/images/icon-online-20x20@2x.png differ
diff --git a/assets/images/icon-ubuntu-dark-20x20@2x.png b/assets/images/icon-ubuntu-dark-20x20@2x.png
new file mode 100644
index 0000000000..b430f88738
Binary files /dev/null and b/assets/images/icon-ubuntu-dark-20x20@2x.png differ
diff --git a/assets/images/icon-windows-dark-20x20@2x.png b/assets/images/icon-windows-dark-20x20@2x.png
new file mode 100644
index 0000000000..d802e72af2
Binary files /dev/null and b/assets/images/icon-windows-dark-20x20@2x.png differ
diff --git a/frontend/components/StackedWhiteBoxes/StackedWhiteBoxes.jsx b/frontend/components/StackedWhiteBoxes/StackedWhiteBoxes.jsx
index 99f77ca50a..0c5906254f 100644
--- a/frontend/components/StackedWhiteBoxes/StackedWhiteBoxes.jsx
+++ b/frontend/components/StackedWhiteBoxes/StackedWhiteBoxes.jsx
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
import { Link } from 'react-router';
import classnames from 'classnames';
-import Icon from 'components/icons/Icon';
+import KolideIcon from 'components/icons/KolideIcon';
const baseClass = 'stacked-white-boxes';
@@ -77,7 +77,7 @@ class StackedWhiteBoxes extends Component {
return (
-
+
);
diff --git a/frontend/components/WarningBanner/WarningBanner.jsx b/frontend/components/WarningBanner/WarningBanner.jsx
index 95bf7ba0e3..7f0dc6bb99 100644
--- a/frontend/components/WarningBanner/WarningBanner.jsx
+++ b/frontend/components/WarningBanner/WarningBanner.jsx
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
import classnames from 'classnames';
import Button from 'components/buttons/Button';
-import Icon from 'components/icons/Icon';
+import KolideIcon from 'components/icons/KolideIcon';
const baseClass = 'warning-banner';
@@ -19,7 +19,7 @@ const WarningBanner = ({ className, message, labelText, shouldShowWarning, onDis
return (
-
+
{label}
{message}
diff --git a/frontend/components/WarningBanner/WarningBanner.tests.jsx b/frontend/components/WarningBanner/WarningBanner.tests.jsx
index efcc3e4cb7..96cfe6d6dc 100644
--- a/frontend/components/WarningBanner/WarningBanner.tests.jsx
+++ b/frontend/components/WarningBanner/WarningBanner.tests.jsx
@@ -8,7 +8,7 @@ describe('WarningBanner - component', () => {
const props = { shouldShowWarning: true, message: 'message' };
const component = shallow(
);
expect(component.length).toEqual(1);
- expect(component.find('Icon').props().name).toEqual('warning-filled');
+ expect(component.find('KolideIcon').props().name).toEqual('warning-filled');
expect(component.find('.warning-banner__label').text()).toEqual('Warning:');
expect(component.find('.warning-banner__text').text()).toEqual('message');
});
diff --git a/frontend/components/buttons/DropdownButton/DropdownButton.jsx b/frontend/components/buttons/DropdownButton/DropdownButton.jsx
index 576355079e..53c62db019 100644
--- a/frontend/components/buttons/DropdownButton/DropdownButton.jsx
+++ b/frontend/components/buttons/DropdownButton/DropdownButton.jsx
@@ -4,7 +4,7 @@ import { noop } from 'lodash';
import classnames from 'classnames';
import ClickOutside from 'components/ClickOutside';
-import Icon from 'components/icons/Icon';
+import KolideIcon from 'components/icons/KolideIcon';
import Button from 'components/buttons/Button';
const baseClass = 'dropdown-button';
@@ -92,7 +92,7 @@ export class DropdownButton extends Component {
type={type}
variant={variant}
>
- {children}
+ {children}
diff --git a/frontend/components/flash_messages/PersistentFlash/PersistentFlash.jsx b/frontend/components/flash_messages/PersistentFlash/PersistentFlash.jsx
index 4e49ca3e5e..be0da67e4e 100644
--- a/frontend/components/flash_messages/PersistentFlash/PersistentFlash.jsx
+++ b/frontend/components/flash_messages/PersistentFlash/PersistentFlash.jsx
@@ -2,7 +2,7 @@ import React from 'react';
import PropTypes from 'prop-types';
import classnames from 'classnames';
-import Icon from 'components/icons/Icon';
+import KolideIcon from 'components/icons/KolideIcon';
const baseClass = 'persistent-flash';
@@ -12,7 +12,7 @@ const PersistentFlash = ({ message }) => {
return (
);
diff --git a/frontend/components/forms/ConfigurePackQueryForm/ConfigurePackQueryForm.jsx b/frontend/components/forms/ConfigurePackQueryForm/ConfigurePackQueryForm.jsx
index 2b83f5f0ae..c1f2a1c75f 100644
--- a/frontend/components/forms/ConfigurePackQueryForm/ConfigurePackQueryForm.jsx
+++ b/frontend/components/forms/ConfigurePackQueryForm/ConfigurePackQueryForm.jsx
@@ -2,7 +2,7 @@ import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { pull } from 'lodash';
-import Icon from 'components/icons/Icon';
+import KolideIcon from 'components/icons/KolideIcon';
import Button from 'components/buttons/Button';
import Dropdown from 'components/forms/fields/Dropdown';
import Form from 'components/forms/Form';
@@ -142,7 +142,7 @@ export class ConfigurePackQueryForm extends Component {
{...fields.version}
options={minOsqueryVersionOptions}
placeholder="- - -"
- label={['minimum ', , ' version']}
+ label={['minimum ', , ' version']}
wrapperClassName={`${baseClass}__form-field ${baseClass}__form-field--osquer-vers`}
/>
{
- const CaratIcon = ;
+ const CaratIcon = ;
return Advanced Options {CaratIcon} Most users do not need to modify these options. ;
};
diff --git a/frontend/components/forms/fields/InputFieldWithIcon/InputFieldWithIcon.jsx b/frontend/components/forms/fields/InputFieldWithIcon/InputFieldWithIcon.jsx
index 2c5126c1d3..0589e6757f 100644
--- a/frontend/components/forms/fields/InputFieldWithIcon/InputFieldWithIcon.jsx
+++ b/frontend/components/forms/fields/InputFieldWithIcon/InputFieldWithIcon.jsx
@@ -2,7 +2,7 @@ import React from 'react';
import PropTypes from 'prop-types';
import classnames from 'classnames';
-import Icon from 'components/icons/Icon';
+import KolideIcon from 'components/icons/KolideIcon';
import InputField from '../InputField';
const baseClass = 'input-icon-field';
@@ -74,7 +74,7 @@ class InputFieldWithIcon extends InputField {
type={type}
value={value}
/>
- {iconName && }
+ {iconName && }
{renderHint()}
);
diff --git a/frontend/components/forms/fields/SelectTargetsDropdown/TargetOption/TargetIcon.jsx b/frontend/components/forms/fields/SelectTargetsDropdown/TargetOption/TargetIcon.jsx
index d8c2cebb22..d98d015635 100644
--- a/frontend/components/forms/fields/SelectTargetsDropdown/TargetOption/TargetIcon.jsx
+++ b/frontend/components/forms/fields/SelectTargetsDropdown/TargetOption/TargetIcon.jsx
@@ -1,7 +1,7 @@
import React from 'react';
import classnames from 'classnames';
-import Icon from 'components/icons/Icon';
+import KolideIcon from 'components/icons/KolideIcon';
import targetInterface from 'interfaces/target';
const baseClass = 'target-option';
@@ -21,7 +21,7 @@ const TargetIcon = ({ target }) => {
const targetClasses = classnames(`${baseClass}__icon`, `${baseClass}__icon--${status}`);
- return ;
+ return ;
};
TargetIcon.propTypes = { target: targetInterface.isRequired };
diff --git a/frontend/components/forms/fields/SelectTargetsDropdown/TargetOption/TargetOption.jsx b/frontend/components/forms/fields/SelectTargetsDropdown/TargetOption/TargetOption.jsx
index 2ed9362889..5ad926467a 100644
--- a/frontend/components/forms/fields/SelectTargetsDropdown/TargetOption/TargetOption.jsx
+++ b/frontend/components/forms/fields/SelectTargetsDropdown/TargetOption/TargetOption.jsx
@@ -2,7 +2,7 @@ import React, { Component } from 'react';
import PropTypes from 'prop-types';
import classnames from 'classnames';
-import Icon from 'components/icons/Icon';
+import KolideIcon from 'components/icons/KolideIcon';
import targetInterface from 'interfaces/target';
import TargetIcon from './TargetIcon';
@@ -66,7 +66,7 @@ class TargetOption extends Component {
{renderTargetDetail()}
-
+
);
diff --git a/frontend/components/hosts/AddHostModal/AddHostModal.jsx b/frontend/components/hosts/AddHostModal/AddHostModal.jsx
index a9aca46053..98780ce2a3 100644
--- a/frontend/components/hosts/AddHostModal/AddHostModal.jsx
+++ b/frontend/components/hosts/AddHostModal/AddHostModal.jsx
@@ -7,7 +7,7 @@ import Button from 'components/buttons/Button';
import configInterface from 'interfaces/config';
import enrollSecretInterface from 'interfaces/enroll_secret';
import EnrollSecretTable from 'components/config/EnrollSecretTable';
-import Icon from 'components/icons/Icon';
+import KolideIcon from 'components/icons/KolideIcon';
import DownloadIcon from '../../../../assets/images/icon-download-12x12@2x.png';
const baseClass = 'add-host-modal';
@@ -113,7 +113,7 @@ class AddHostModal extends Component {
target="_blank"
rel="noopener noreferrer"
>
- Add Hosts Documentation
+ Add Hosts Documentation
diff --git a/frontend/components/hosts/HostContainer/_styles.scss b/frontend/components/hosts/HostContainer/_styles.scss
index ec4d5468e9..eb297bf342 100644
--- a/frontend/components/hosts/HostContainer/_styles.scss
+++ b/frontend/components/hosts/HostContainer/_styles.scss
@@ -1,6 +1,4 @@
.host-container {
- // We set this equal to the max-width of header-wrap to preserve visual consistency
- max-width: 1206px;
&--no-hosts {
display: flex;
diff --git a/frontend/components/hosts/HostsTable/HostsTable.jsx b/frontend/components/hosts/HostsTable/HostsTable.jsx
index 7544dd8d30..6578bb806e 100644
--- a/frontend/components/hosts/HostsTable/HostsTable.jsx
+++ b/frontend/components/hosts/HostsTable/HostsTable.jsx
@@ -3,9 +3,9 @@ import PropTypes from 'prop-types';
import classnames from 'classnames';
import Button from 'components/buttons/Button';
-import Icon from 'components/icons/Icon';
+import KolideIcon from 'components/icons/KolideIcon';
import hostInterface from 'interfaces/host';
-import iconClassForLabel from 'utilities/icon_class_for_label';
+import { iconNameForLabel } from 'utilities/icon_name';
import { humanMemory, humanUptime, humanLastSeen } from './helpers';
@@ -15,14 +15,14 @@ const ActionButton = ({ host, onDestroyHost, onQueryHost }) => {
if (host.status === 'online') {
return (
-
+
);
}
return (
-
+
);
};
@@ -64,7 +64,7 @@ class HostsTable extends Component {
{host.hostname}
-
+
{host.os_version}
{host.osquery_version}
diff --git a/frontend/components/hosts/HostsTable/HostsTable.tests.jsx b/frontend/components/hosts/HostsTable/HostsTable.tests.jsx
index c0df577523..a760b12e05 100644
--- a/frontend/components/hosts/HostsTable/HostsTable.tests.jsx
+++ b/frontend/components/hosts/HostsTable/HostsTable.tests.jsx
@@ -21,7 +21,7 @@ describe('HostsTable - component', () => {
);
const btn = offlineComponent.find('Button');
- expect(btn.find('Icon').prop('name')).toEqual('trash');
+ expect(btn.find('KolideIcon').prop('name')).toEqual('trash');
btn.simulate('click');
@@ -46,7 +46,7 @@ describe('HostsTable - component', () => {
);
const btn = miaComponent.find('Button');
- expect(btn.find('Icon').prop('name')).toEqual('trash');
+ expect(btn.find('KolideIcon').prop('name')).toEqual('trash');
btn.simulate('click');
@@ -71,7 +71,7 @@ describe('HostsTable - component', () => {
);
const btn = onlineComponent.find('Button');
- expect(btn.find('Icon').prop('name')).toEqual('query');
+ expect(btn.find('KolideIcon').prop('name')).toEqual('query');
btn.simulate('click');
diff --git a/frontend/components/hosts/HostsTable/_styles.scss b/frontend/components/hosts/HostsTable/_styles.scss
index 91dedf5a6d..045a1505ff 100644
--- a/frontend/components/hosts/HostsTable/_styles.scss
+++ b/frontend/components/hosts/HostsTable/_styles.scss
@@ -7,6 +7,7 @@
}
&__table {
+ width: 100%;
border-collapse: collapse;
color: $core-black;
font-size: $x-small;
diff --git a/frontend/components/icons/Icon/Icon.jsx b/frontend/components/icons/Icon/Icon.jsx
index 9b49ef259c..baedcddf4f 100644
--- a/frontend/components/icons/Icon/Icon.jsx
+++ b/frontend/components/icons/Icon/Icon.jsx
@@ -2,26 +2,24 @@ import React, { Component } from 'react';
import PropTypes from 'prop-types';
import classnames from 'classnames';
-const baseClass = 'kolidecon';
+const baseClass = 'icon';
export class Icon extends Component {
static propTypes = {
className: PropTypes.string,
- fw: PropTypes.bool,
name: PropTypes.string.isRequired,
- size: PropTypes.string,
- title: PropTypes.string,
+ size: PropTypes.string.isRequired,
};
render () {
- const { className, fw, name, size, title } = this.props;
- const iconClasses = classnames(baseClass, `${baseClass}-${name}`, className, {
- [`${baseClass}-fw`]: fw,
+ const { className, name, size } = this.props;
+ const src = `../../../assets/images/icon-${name}-${size}x${size}@2x.png`;
+ const iconClasses = classnames(baseClass, className, {
[`${baseClass}-${size}`]: size,
});
return (
-
+
);
}
}
diff --git a/frontend/components/icons/Icon/Icon.tests.jsx b/frontend/components/icons/Icon/Icon.tests.jsx
index fafa2af5e2..b421aab653 100644
--- a/frontend/components/icons/Icon/Icon.tests.jsx
+++ b/frontend/components/icons/Icon/Icon.tests.jsx
@@ -5,6 +5,6 @@ import Icon from './Icon';
describe('Icon - component', () => {
it('renders', () => {
- expect(mount( )).toBeTruthy();
+ expect(mount( )).toBeTruthy();
});
});
diff --git a/frontend/components/icons/Icon/_styles.scss b/frontend/components/icons/Icon/_styles.scss
new file mode 100644
index 0000000000..1c39a50921
--- /dev/null
+++ b/frontend/components/icons/Icon/_styles.scss
@@ -0,0 +1,11 @@
+.icon {
+ &-24 {
+ width: 24px;
+ height: 24px;
+ }
+
+ &-20 {
+ width: 20px;
+ height: 20px;
+ }
+}
diff --git a/frontend/components/icons/KolideIcon/KolideIcon.jsx b/frontend/components/icons/KolideIcon/KolideIcon.jsx
new file mode 100644
index 0000000000..d42d16e1d7
--- /dev/null
+++ b/frontend/components/icons/KolideIcon/KolideIcon.jsx
@@ -0,0 +1,29 @@
+import React, { Component } from 'react';
+import PropTypes from 'prop-types';
+import classnames from 'classnames';
+
+const baseClass = 'kolidecon';
+
+export class KolideIcon extends Component {
+ static propTypes = {
+ className: PropTypes.string,
+ fw: PropTypes.bool,
+ name: PropTypes.string.isRequired,
+ size: PropTypes.string,
+ title: PropTypes.string,
+ };
+
+ render () {
+ const { className, fw, name, size, title } = this.props;
+ const iconClasses = classnames(baseClass, `${baseClass}-${name}`, className, {
+ [`${baseClass}-fw`]: fw,
+ [`${baseClass}-${size}`]: size,
+ });
+
+ return (
+
+ );
+ }
+}
+
+export default KolideIcon;
diff --git a/frontend/components/icons/KolideIcon/KolideIcon.tests.jsx b/frontend/components/icons/KolideIcon/KolideIcon.tests.jsx
new file mode 100644
index 0000000000..b6af4fef45
--- /dev/null
+++ b/frontend/components/icons/KolideIcon/KolideIcon.tests.jsx
@@ -0,0 +1,10 @@
+import React from 'react';
+import { mount } from 'enzyme';
+
+import KolideIcon from './KolideIcon';
+
+describe('KolideIcon - component', () => {
+ it('renders', () => {
+ expect(mount( )).toBeTruthy();
+ });
+});
diff --git a/frontend/components/icons/KolideIcon/index.js b/frontend/components/icons/KolideIcon/index.js
new file mode 100644
index 0000000000..51b3c5d001
--- /dev/null
+++ b/frontend/components/icons/KolideIcon/index.js
@@ -0,0 +1 @@
+export default from './KolideIcon';
diff --git a/frontend/components/icons/PlatformIcon/PlatformIcon.jsx b/frontend/components/icons/PlatformIcon/PlatformIcon.jsx
index ffe00f3fe7..2580160959 100644
--- a/frontend/components/icons/PlatformIcon/PlatformIcon.jsx
+++ b/frontend/components/icons/PlatformIcon/PlatformIcon.jsx
@@ -2,7 +2,7 @@ import React, { Component } from 'react';
import PropTypes from 'prop-types';
import classnames from 'classnames';
-import Icon from 'components/icons/Icon';
+import KolideIcon from 'components/icons/KolideIcon';
import platformIconClass from 'utilities/platform_icon_class';
const baseClass = 'platform-icon';
@@ -26,7 +26,7 @@ export class PlatformIcon extends Component {
}
return (
- {title}
-
+
diff --git a/frontend/components/packs/PacksList/Row/Row.jsx b/frontend/components/packs/PacksList/Row/Row.jsx
index eb437f7afe..e9f25f100a 100644
--- a/frontend/components/packs/PacksList/Row/Row.jsx
+++ b/frontend/components/packs/PacksList/Row/Row.jsx
@@ -6,7 +6,7 @@ import moment from 'moment';
import Checkbox from 'components/forms/fields/Checkbox';
import ClickableTableRow from 'components/ClickableTableRow';
-import Icon from 'components/icons/Icon';
+import KolideIcon from 'components/icons/KolideIcon';
import packInterface from 'interfaces/pack';
const baseClass = 'packs-list-row';
@@ -53,7 +53,7 @@ class Row extends Component {
if (disabled) {
return (
-
+
Disabled
);
@@ -61,7 +61,7 @@ class Row extends Component {
return (
-
+
Enabled
);
diff --git a/frontend/components/queries/QueryResultsTable/QueryResultsTable.jsx b/frontend/components/queries/QueryResultsTable/QueryResultsTable.jsx
index 7da8951540..8fe704a6db 100644
--- a/frontend/components/queries/QueryResultsTable/QueryResultsTable.jsx
+++ b/frontend/components/queries/QueryResultsTable/QueryResultsTable.jsx
@@ -6,7 +6,7 @@ import { keys, omit } from 'lodash';
import Button from 'components/buttons/Button';
import campaignInterface from 'interfaces/campaign';
import filterArrayByHash from 'utilities/filter_array_by_hash';
-import Icon from 'components/icons/Icon';
+import KolideIcon from 'components/icons/KolideIcon';
import InputField from 'components/forms/fields/InputField';
import QueryResultsRow from 'components/queries/QueryResultsTable/QueryResultsRow';
import QueryProgressDetails from 'components/queries/QueryProgressDetails';
@@ -66,7 +66,7 @@ class QueryResultsTable extends Component {
return (
- {column}
+ {column}
-
+
Then we'll set the following:
interval: the amount of time, in seconds, the query waits before running
platform: the computer platform where this query will run (other platforms ignored)
- minimum version: the minimum required osqueryd version installed on a host
+ minimum version: the minimum required osqueryd version installed on a host
logging type:
- differential: show only what’s added from last run
- differential (ignore removals): show only what’s been added since the last run
- snapshot: show everything in its current state
+ differential: show only what’s added from last run
+ differential (ignore removals): show only what’s been added since the last run
+ snapshot: show everything in its current state
@@ -124,7 +124,7 @@ class ScheduledQueriesList extends Component {
Query name
Interval(s)
Platform
- Ver.
+ Ver.
Shard
Logging
diff --git a/frontend/components/queries/ScheduledQueriesList/ScheduledQueriesListItem/ScheduledQueriesListItem.jsx b/frontend/components/queries/ScheduledQueriesList/ScheduledQueriesListItem/ScheduledQueriesListItem.jsx
index a4db8fed6a..d8ecc202ba 100644
--- a/frontend/components/queries/ScheduledQueriesList/ScheduledQueriesListItem/ScheduledQueriesListItem.jsx
+++ b/frontend/components/queries/ScheduledQueriesList/ScheduledQueriesListItem/ScheduledQueriesListItem.jsx
@@ -4,7 +4,7 @@ import classnames from 'classnames';
import Checkbox from 'components/forms/fields/Checkbox';
import ClickableTableRow from 'components/ClickableTableRow';
-import Icon from 'components/icons/Icon';
+import KolideIcon from 'components/icons/KolideIcon';
import PlatformIcon from 'components/icons/PlatformIcon';
import { includes, isEmpty, isEqual } from 'lodash';
import scheduledQueryInterface from 'interfaces/scheduled_query';
@@ -97,7 +97,7 @@ class ScheduledQueriesListItem extends Component {
{renderPlatformIcon()}
{version ? `${version}+` : 'Any'}
{shard}
-
+
);
}
diff --git a/frontend/components/queries/ScheduledQueriesList/ScheduledQueriesListItem/ScheduledQueriesListItem.tests.jsx b/frontend/components/queries/ScheduledQueriesList/ScheduledQueriesListItem/ScheduledQueriesListItem.tests.jsx
index 3a1c4cc99e..fcc959386c 100644
--- a/frontend/components/queries/ScheduledQueriesList/ScheduledQueriesListItem/ScheduledQueriesListItem.tests.jsx
+++ b/frontend/components/queries/ScheduledQueriesList/ScheduledQueriesListItem/ScheduledQueriesListItem.tests.jsx
@@ -73,26 +73,26 @@ describe('ScheduledQueriesListItem - component', () => {
const props = { ...defaultProps, scheduledQuery: query };
let component = shallow( );
- expect(component.find('Icon').last().props().name).toEqual('camera');
+ expect(component.find('KolideIcon').last().props().name).toEqual('camera');
query.snapshot = false;
query.removed = false;
component = shallow( );
- expect(component.find('Icon').last().props().name).toEqual('bold-plus');
+ expect(component.find('KolideIcon').last().props().name).toEqual('bold-plus');
query.snapshot = false;
query.removed = null;
component = shallow( );
- expect(component.find('Icon').last().props().name).toEqual('plus-minus');
+ expect(component.find('KolideIcon').last().props().name).toEqual('plus-minus');
query.snapshot = false;
query.removed = true;
component = shallow( );
- expect(component.find('Icon').last().props().name).toEqual('plus-minus');
+ expect(component.find('KolideIcon').last().props().name).toEqual('plus-minus');
query.snapshot = null;
query.removed = true;
component = shallow( );
- expect(component.find('Icon').last().props().name).toEqual('plus-minus');
+ expect(component.find('KolideIcon').last().props().name).toEqual('plus-minus');
});
});
diff --git a/frontend/components/side_panels/HostSidePanel/HostSidePanel.jsx b/frontend/components/side_panels/HostSidePanel/HostSidePanel.jsx
index 01f1ed34f4..08dfb5846f 100644
--- a/frontend/components/side_panels/HostSidePanel/HostSidePanel.jsx
+++ b/frontend/components/side_panels/HostSidePanel/HostSidePanel.jsx
@@ -2,7 +2,7 @@ import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { filter } from 'lodash';
-import Icon from 'components/icons/Icon';
+import KolideIcon from 'components/icons/KolideIcon';
import Button from 'components/buttons/Button';
import InputField from 'components/forms/fields/InputField';
import labelInterface from 'interfaces/label';
@@ -86,7 +86,7 @@ class HostSidePanel extends Component {
value={labelFilter}
inputWrapperClass={`${baseClass}__filter-labels`}
/>
-
+
{
const { item, type } = this.props;
-
if (type === 'platform') {
- return ;
+ return ;
}
- return ;
+ return ;
}
render () {
diff --git a/frontend/components/side_panels/HostSidePanel/PanelGroupItem/PanelGroupItem.tests.jsx b/frontend/components/side_panels/HostSidePanel/PanelGroupItem/PanelGroupItem.tests.jsx
index 047b6cf67c..5bd33854c3 100644
--- a/frontend/components/side_panels/HostSidePanel/PanelGroupItem/PanelGroupItem.tests.jsx
+++ b/frontend/components/side_panels/HostSidePanel/PanelGroupItem/PanelGroupItem.tests.jsx
@@ -46,7 +46,8 @@ describe('PanelGroupItem - component', () => {
expect(labelComponent.find('PlatformIcon').length).toEqual(0);
expect(labelComponent.find('Icon').length).toEqual(1);
- expect(platformComponent.find('PlatformIcon').length).toEqual(1);
+ expect(platformComponent.find('PlatformIcon').length).toEqual(0);
+ expect(platformComponent.find('Icon').length).toEqual(1);
});
it('renders the item text', () => {
diff --git a/frontend/components/side_panels/HostSidePanel/PanelGroupItem/_styles.scss b/frontend/components/side_panels/HostSidePanel/PanelGroupItem/_styles.scss
index e6bce52a2c..899c6f1d3e 100644
--- a/frontend/components/side_panels/HostSidePanel/PanelGroupItem/_styles.scss
+++ b/frontend/components/side_panels/HostSidePanel/PanelGroupItem/_styles.scss
@@ -5,7 +5,7 @@ $base-class: 'panel-group-item';
width: 100%;
font-size: $x-small;
font-weight: $regular;
- color: $black;
+ color: $core-dark-blue-grey;
text-align: left;
padding: 10px 0;
margin: 2px 0;
diff --git a/frontend/components/side_panels/HostSidePanel/_styles.scss b/frontend/components/side_panels/HostSidePanel/_styles.scss
index ab632c4939..77f5f213f4 100644
--- a/frontend/components/side_panels/HostSidePanel/_styles.scss
+++ b/frontend/components/side_panels/HostSidePanel/_styles.scss
@@ -17,7 +17,7 @@
h3 {
font-size: $x-small;
font-weight: $bold;
- color: $black;
+ color: $core-dark-blue-grey;
margin: 24px 0 10px 8px;
}
diff --git a/frontend/components/side_panels/PackInfoSidePanel/PackInfoSidePanel.jsx b/frontend/components/side_panels/PackInfoSidePanel/PackInfoSidePanel.jsx
index 25eae66167..5bd9b50f5e 100644
--- a/frontend/components/side_panels/PackInfoSidePanel/PackInfoSidePanel.jsx
+++ b/frontend/components/side_panels/PackInfoSidePanel/PackInfoSidePanel.jsx
@@ -1,6 +1,6 @@
import React from 'react';
-import Icon from 'components/icons/Icon';
+import KolideIcon from 'components/icons/KolideIcon';
import SecondarySidePanelContainer from '../SecondarySidePanelContainer';
const baseClass = 'pack-info-side-panel';
@@ -9,7 +9,7 @@ const PackInfoSidePanel = () => {
return (
-
+
What's a query pack?
@@ -30,10 +30,10 @@ const PackInfoSidePanel = () => {
- Differential
+ Differential
Only record data that has changed.
- Snapshot
+ Snapshot
Record full query result each time.
diff --git a/frontend/components/side_panels/QuerySidePanel/QuerySidePanel.jsx b/frontend/components/side_panels/QuerySidePanel/QuerySidePanel.jsx
index ea828118bc..b3d1e1e98e 100644
--- a/frontend/components/side_panels/QuerySidePanel/QuerySidePanel.jsx
+++ b/frontend/components/side_panels/QuerySidePanel/QuerySidePanel.jsx
@@ -4,7 +4,7 @@ import PropTypes from 'prop-types';
import osqueryTableInterface from 'interfaces/osquery_table';
import { osqueryTableNames } from 'utilities/osquery_tables';
import Dropdown from 'components/forms/fields/Dropdown';
-import Icon from 'components/icons/Icon';
+import KolideIcon from 'components/icons/KolideIcon';
import PlatformIcon from 'components/icons/PlatformIcon';
import SecondarySidePanelContainer from '../SecondarySidePanelContainer';
@@ -48,7 +48,7 @@ class QuerySidePanel extends Component {
{column.name}
{displayTypeForDataType(column.type)}
-
+
);
@@ -93,7 +93,7 @@ class QuerySidePanel extends Component {
{platforms.map((platform) => {
if (platform === 'all') {
- return {platform} ;
+ return {platform} ;
}
return {platform} ;
diff --git a/frontend/components/side_panels/ScheduleQuerySidePanel/SearchPackQuery/SearchPackQuery.jsx b/frontend/components/side_panels/ScheduleQuerySidePanel/SearchPackQuery/SearchPackQuery.jsx
index c02e314cd3..6be3e1159e 100644
--- a/frontend/components/side_panels/ScheduleQuerySidePanel/SearchPackQuery/SearchPackQuery.jsx
+++ b/frontend/components/side_panels/ScheduleQuerySidePanel/SearchPackQuery/SearchPackQuery.jsx
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
import AceEditor from 'react-ace';
import { isEqual, sortBy } from 'lodash';
-import Icon from 'components/icons/Icon';
+import KolideIcon from 'components/icons/KolideIcon';
import queryInterface from 'interfaces/query';
import Dropdown from 'components/forms/fields/Dropdown';
@@ -59,7 +59,7 @@ class SearchPackQuery extends Component {
if (selectedQuery) {
return (
- {selectedQuery.name}
+ {selectedQuery.name}
);
}
@@ -117,7 +117,7 @@ class SearchPackQuery extends Component {
, ' Select query']}
+ placeholder={[ , ' Select query']}
/>
{renderQuery()}
{renderDescription()}
diff --git a/frontend/components/side_panels/SiteNavSidePanel/SiteNavSidePanel.jsx b/frontend/components/side_panels/SiteNavSidePanel/SiteNavSidePanel.jsx
index 19991d4033..1716eca240 100644
--- a/frontend/components/side_panels/SiteNavSidePanel/SiteNavSidePanel.jsx
+++ b/frontend/components/side_panels/SiteNavSidePanel/SiteNavSidePanel.jsx
@@ -3,6 +3,7 @@ import PropTypes from 'prop-types';
import classnames from 'classnames';
import userInterface from 'interfaces/user';
+import KolideIcon from 'components/icons/KolideIcon';
import Icon from 'components/icons/Icon';
import UserMenu from 'components/side_panels/UserMenu';
@@ -52,7 +53,7 @@ class SiteNavSidePanel extends Component {
}
renderNavItem = (navItem) => {
- const { icon, name, subItems } = navItem;
+ const { name, iconName, subItems } = navItem;
const { onNavItemClick, pathname } = this.props;
const { renderSubItems } = this;
const active = navItem.location.regex.test(pathname);
@@ -62,22 +63,21 @@ class SiteNavSidePanel extends Component {
`${navItemBaseClass}`,
{
[`${navItemBaseClass}--active`]: active,
- [`${navItemBaseClass}--single`]: subItems.length === 0,
+ [`${navItemBaseClass}--multiple`]: subItems.length !== 0,
},
);
return (
-
-
+
{name}
-
+
{active && renderSubItems(subItems)}
);
@@ -120,14 +120,14 @@ class SiteNavSidePanel extends Component {
key={name}
className={baseSubItemItemClass}
>
-
{name}
-
-
+
+
);
}
diff --git a/frontend/components/side_panels/SiteNavSidePanel/_styles.scss b/frontend/components/side_panels/SiteNavSidePanel/_styles.scss
index c04b9395af..0bfb2319a7 100644
--- a/frontend/components/side_panels/SiteNavSidePanel/_styles.scss
+++ b/frontend/components/side_panels/SiteNavSidePanel/_styles.scss
@@ -1,11 +1,39 @@
.site-nav-item {
position: relative;
+ transition: color 200ms ease-in-out;
+ cursor: pointer;
+
+ &:hover {
+ background-color: $core-black;
+ }
+
+ @include breakpoint(smalldesk) {
+ justify-content: center;
+ }
+
+ &--multiple.site-nav-item--active {
+ background-color: transparent;
+ border-right: 0;
+
+ .site-nav-item__link {
+ border-right: 3px solid $core-blue;
+ background-color: $core-black;
+ }
+ }
&__icon {
position: relative;
font-size: $large;
margin-right: 24px;
vertical-align: sub;
+
+ @at-root .site-nav--small & {
+ margin-right: 0;
+ }
+
+ @include breakpoint(smalldesk) {
+ margin-right: 0;
+ }
}
&__name {
@@ -23,54 +51,57 @@
}
}
- &__button {
- transition: color 200ms ease-in-out;
- border-radius: 0;
- line-height: 40px;
- position: relative;
+ a {
color: $white;
- cursor: pointer;
- font-size: $x-small;
- letter-spacing: 0.5px;
- padding: 4px 20px;
- text-align: left;
-
- &:hover {
- background-color: $core-black;
- }
+ text-align: center;
+ display: flex;
+ align-items: center;
+ padding: 14px 20px;
@include breakpoint(smalldesk) {
- padding: 4px 10px;
+ padding: 11px 14px;
}
}
&--active {
- .site-nav-item__button {
- background-color: $core-black;
+ border-right: 3px solid $core-blue;
+ background-color: $core-black;
+
+ @at-root .site-nav--small & {
border-right: 3px solid $core-blue;
+ }
- @at-root .site-nav--small & {
- border-right: 3px solid $core-blue;
- padding: 4px 10px;
- }
-
- @include breakpoint(smalldesk) {
- border-right: 3px solid $core-blue;
- padding: 4px 10px;
- }
+ @include breakpoint(smalldesk) {
+ border-right: 3px solid $core-blue;
}
.site-nav-item__name {
font-weight: $bold;
}
- .site-nav-item__icon {
+ .site-sub-item {
+ a {
+ padding: 0;
+
+ @at-root .site-nav--small & {
+ padding: 5px 14px;
+ }
+
+ @include breakpoint(smalldesk) {
+ padding: 5px 14px;
+ }
+ }
+
@at-root .site-nav--small & {
margin-right: 0;
+ display: flex;
+ justify-content: center;
}
@include breakpoint(smalldesk) {
margin-right: 0;
+ display: flex;
+ justify-content: center;
}
}
}
@@ -107,8 +138,16 @@
text-transform: none;
padding: 6px 0;
+ a {
+ padding: 0;
+ }
+
+ i {
+ color: $ui-medium-grey;
+ }
+
&--active {
- .site-sub-item__button {
+ .site-sub-item__link {
color: $white;
font-size: $x-small;
font-weight: $bold;
@@ -116,6 +155,10 @@
&:hover {
color: $white;
}
+
+ i {
+ color: $white;
+ }
}
&::before {
@@ -139,29 +182,6 @@
}
}
- &__button {
- transition: color 150ms ease-in-out;
- color: rgba($white, 0.75);
- font-size: $x-small;
- text-transform: none;
- cursor: pointer;
- font-weight: $regular;
- width: 100%;
- text-align: left;
-
- &:hover {
- color: rgba($white, 0.9);
- }
-
- @at-root .site-nav--small & {
- padding: 4px 10px;
- }
-
- @include breakpoint(smalldesk) {
- padding: 4px 10px;
- }
- }
-
&__name {
@at-root .site-nav--small & {
display: none;
@@ -225,20 +245,18 @@
}
&__list {
- padding: 12px 0 0 42px;
+ padding: 12px 0 0 64px;
margin: 0;
list-style: none;
@at-root .site-nav--small & {
padding: 0;
text-align: center;
- width: 100%;
}
@include breakpoint(smalldesk) {
padding: 0;
text-align: center;
- width: 100%;
}
&--expanded {
diff --git a/frontend/components/side_panels/SiteNavSidePanel/navItems.js b/frontend/components/side_panels/SiteNavSidePanel/navItems.js
index 2228a47374..3be6945960 100644
--- a/frontend/components/side_panels/SiteNavSidePanel/navItems.js
+++ b/frontend/components/side_panels/SiteNavSidePanel/navItems.js
@@ -6,6 +6,7 @@ export default (admin) => {
{
icon: 'admin',
name: 'Admin',
+ iconName: 'main-admin-white',
location: {
regex: new RegExp(`^${URL_PREFIX}/admin/`),
pathname: PATHS.ADMIN_USERS,
@@ -45,6 +46,7 @@ export default (admin) => {
{
icon: 'hosts',
name: 'Hosts',
+ iconName: 'main-hosts-white',
location: {
regex: new RegExp(`^${URL_PREFIX}/hosts/`),
pathname: PATHS.MANAGE_HOSTS,
@@ -54,6 +56,7 @@ export default (admin) => {
{
icon: 'query',
name: 'Queries',
+ iconName: 'main-query-white',
location: {
regex: new RegExp(`^${URL_PREFIX}/queries/`),
pathname: PATHS.MANAGE_QUERIES,
@@ -63,6 +66,7 @@ export default (admin) => {
{
icon: 'packs',
name: 'Packs',
+ iconName: 'main-packs-white',
location: {
regex: new RegExp(`^${URL_PREFIX}/packs/`),
pathname: PATHS.MANAGE_PACKS,
diff --git a/frontend/components/side_panels/UserMenu/UserMenu.jsx b/frontend/components/side_panels/UserMenu/UserMenu.jsx
index d2396a2540..4aab20573d 100644
--- a/frontend/components/side_panels/UserMenu/UserMenu.jsx
+++ b/frontend/components/side_panels/UserMenu/UserMenu.jsx
@@ -41,9 +41,9 @@ class UserMenu extends Component {
diff --git a/frontend/components/side_panels/UserMenu/_styles.scss b/frontend/components/side_panels/UserMenu/_styles.scss
index 189193b460..16686f932c 100644
--- a/frontend/components/side_panels/UserMenu/_styles.scss
+++ b/frontend/components/side_panels/UserMenu/_styles.scss
@@ -11,6 +11,7 @@
font-size: $x-small;
font-weight: $regular;
padding: 11px 20px;
+ cursor: pointer;
&:hover {
background-color: $core-black;
@@ -25,24 +26,20 @@
a {
transition: opacity 75ms $ease-in-quad, background 75ms $ease-in-quad;
color: $white;
- display: block;
+ display: flex;
+ align-items: center;
text-decoration: none;
text-transform: none;
+ }
- i {
- margin-right: 24px;
- font-size: $large;
- vertical-align: text-bottom;
- }
+ .icon {
+ margin-right: 24px;
}
@include breakpoint(smalldesk) {
padding: 11px 14px;
a {
- i {
- margin-right: 0;
- }
span {
display: none;
diff --git a/frontend/pages/UserSettingsPage/UserSettingsPage.jsx b/frontend/pages/UserSettingsPage/UserSettingsPage.jsx
index 93f68655fa..ddb280b23e 100644
--- a/frontend/pages/UserSettingsPage/UserSettingsPage.jsx
+++ b/frontend/pages/UserSettingsPage/UserSettingsPage.jsx
@@ -15,7 +15,7 @@ import Button from 'components/buttons/Button';
import ChangeEmailForm from 'components/forms/ChangeEmailForm';
import ChangePasswordForm from 'components/forms/ChangePasswordForm';
import deepDifference from 'utilities/deep_difference';
-import Icon from 'components/icons/Icon';
+import KolideIcon from 'components/icons/KolideIcon';
import InputField from 'components/forms/fields/InputField';
import { logoutUser, updateUser } from 'redux/nodes/auth/actions';
import Modal from 'components/modals/Modal';
@@ -258,7 +258,7 @@ export class UserSettingsPage extends Component {
className={`${baseClass}__secret-copy-icon`}
onClick={onCopySecret(`.${baseClass}__secret-input`)}
>
-
+
diff --git a/frontend/pages/admin/AppSettingsPage/AppSettingsPage.tests.jsx b/frontend/pages/admin/AppSettingsPage/AppSettingsPage.tests.jsx
index bdd5ed01fa..ad9aee3e78 100644
--- a/frontend/pages/admin/AppSettingsPage/AppSettingsPage.tests.jsx
+++ b/frontend/pages/admin/AppSettingsPage/AppSettingsPage.tests.jsx
@@ -40,7 +40,7 @@ describe('AppSettingsPage - component', () => {
const smtpWarning = page.find('WarningBanner');
expect(smtpWarning.length).toEqual(1);
- expect(smtpWarning.find('Icon').length).toEqual(1);
+ expect(smtpWarning.find('KolideIcon').length).toEqual(1);
expect(smtpWarning.text()).toContain('Warning:SMTP is not currently configured in Fleet. The "Add new user" feature requires that SMTP is configured in order to send invitation emails. Users may also be added with "fleetctl user create".');
});
diff --git a/frontend/pages/hosts/ManageHostsPage/_styles.scss b/frontend/pages/hosts/ManageHostsPage/_styles.scss
index 9cf09fc971..b24a22d91a 100644
--- a/frontend/pages/hosts/ManageHostsPage/_styles.scss
+++ b/frontend/pages/hosts/ManageHostsPage/_styles.scss
@@ -5,16 +5,9 @@
display: flex;
align-items: center;
justify-content: space-between;
- // We set this equal to the max-width of the host-container to preserve visual consistency
- max-width: 1206px;
margin-bottom: 16px;
}
- .ace-kolide {
- // We set this equal to the max-width of the host-container to preserve visual consistency
- max-width: 1206px;
- }
-
&__header {
display: flex;
align-items: center;
diff --git a/frontend/pages/packs/AllPacksPage/AllPacksPage.jsx b/frontend/pages/packs/AllPacksPage/AllPacksPage.jsx
index badc4a1c8b..d5fd89cc34 100644
--- a/frontend/pages/packs/AllPacksPage/AllPacksPage.jsx
+++ b/frontend/pages/packs/AllPacksPage/AllPacksPage.jsx
@@ -6,7 +6,7 @@ import { push } from 'react-router-redux';
import Button from 'components/buttons/Button';
import entityGetter from 'redux/utilities/entityGetter';
-import Icon from 'components/icons/Icon';
+import KolideIcon from 'components/icons/KolideIcon';
import InputField from 'components/forms/fields/InputField';
import Modal from 'components/modals/Modal';
import packActions from 'redux/nodes/entities/packs/actions';
@@ -227,21 +227,21 @@ export class AllPacksPage extends Component {
onClick={onBulkAction('disable')}
variant="unstyled"
>
- Disable
+ Disable
- Enable
+ Enable
- Delete
+ Delete
);
@@ -329,7 +329,7 @@ export class AllPacksPage extends Component {
placeholder="Filter packs"
value={packFilter}
/>
-
+
{packsTotalDisplay}
-
+
{queriesTotalDisplay}
diff --git a/frontend/utilities/icon_class_for_label.js b/frontend/utilities/icon_class_for_label.js
deleted file mode 100644
index 6324b0571f..0000000000
--- a/frontend/utilities/icon_class_for_label.js
+++ /dev/null
@@ -1,17 +0,0 @@
-export const iconClassForLabel = (label) => {
- const lowerType = label.type && label.type.toLowerCase();
- const lowerDisplayText = label.display_text && label.display_text.toLowerCase();
-
- if (lowerType === 'all') return 'hosts';
-
- switch (lowerDisplayText || label) {
- case 'offline': return 'offline';
- case 'online': return 'success-check';
- case 'mia': return 'mia';
- case 'new': return 'clock';
- case 'unknown': return 'single-host';
- default: return 'label';
- }
-};
-
-export default iconClassForLabel;
diff --git a/frontend/utilities/icon_name.js b/frontend/utilities/icon_name.js
new file mode 100644
index 0000000000..aa943bcc00
--- /dev/null
+++ b/frontend/utilities/icon_name.js
@@ -0,0 +1,38 @@
+export const iconNameForLabel = (label) => {
+ const lowerType = label.type && label.type.toLowerCase();
+ const lowerDisplayText = label.display_text && label.display_text.toLowerCase();
+
+ if (lowerType === 'all') return 'hosts-3';
+
+ switch (lowerDisplayText || label) {
+ case 'offline': return 'offline';
+ case 'online': return 'online';
+ case 'mia': return 'mia';
+ case 'new': return 'new';
+ case 'unknown': return 'hosts-2';
+ default: return 'label';
+ }
+};
+
+export const iconNameForPlatform = (platform = '') => {
+ if (!platform.name) return false;
+
+ const lowerPlatform = platform.name.toLowerCase();
+
+ switch (lowerPlatform) {
+ case 'macos': return 'apple-dark';
+ case 'mac os x': return 'apple-dark';
+ case 'mac osx': return 'apple-dark';
+ case 'mac os': return 'apple-dark';
+ case 'darwin': return 'apple-dark';
+ case 'apple': return 'apple-dark';
+ case 'centos': return 'centos-dark';
+ case 'centos linux': return 'centos-dark';
+ case 'ubuntu': return 'ubuntu-dark';
+ case 'ubuntu linux': return 'ubuntu-dark';
+ case 'linux': return 'linux-dark';
+ case 'windows': return 'windows-dark';
+ case 'ms windows': return 'windows-dark';
+ default: return false;
+ }
+};
diff --git a/frontend/utilities/platform_icon_class.js b/frontend/utilities/platform_icon_class.js
index 3f9a28491e..290cc99acc 100644
--- a/frontend/utilities/platform_icon_class.js
+++ b/frontend/utilities/platform_icon_class.js
@@ -4,19 +4,19 @@ export const platformIconClass = (platform = '') => {
const lowerPlatform = platform.toLowerCase();
switch (lowerPlatform) {
- case 'macos': return 'apple';
- case 'mac os x': return 'apple';
- case 'mac osx': return 'apple';
- case 'mac os': return 'apple';
- case 'darwin': return 'apple';
- case 'apple': return 'apple';
- case 'centos': return 'centos';
- case 'centos linux': return 'centos';
- case 'ubuntu': return 'ubuntu';
- case 'ubuntu linux': return 'ubuntu';
- case 'linux': return 'linux';
- case 'windows': return 'windows';
- case 'ms windows': return 'windows';
+ case 'macos': return 'icon-apple-dark-20x20@2x.png';
+ case 'mac os x': return 'icon-apple-dark-20x20@2x.png';
+ case 'mac osx': return 'icon-apple-dark-20x20@2x.png';
+ case 'mac os': return 'icon-apple-dark-20x20@2x.png';
+ case 'darwin': return 'icon-apple-dark-20x20@2x.png';
+ case 'apple': return 'icon-apple-dark-20x20@2x.png';
+ case 'centos': return 'icon-centos-dark-20x20@2x.png';
+ case 'centos linux': return 'icon-centos-dark-20x20@2x.png';
+ case 'ubuntu': return 'icon-ubuntu-dark-20x20@2x.png';
+ case 'ubuntu linux': return 'icon-ubuntu-dark-20x20@2x.png';
+ case 'linux': return 'icon-linux-dark-20x20@2x.png';
+ case 'windows': return 'icon-windows-dark-20x20@2x.png';
+ case 'ms windows': return 'icon-windows-dark-20x20@2x.png';
default: return false;
}
};