- {metric.data.chart.map((item, i) =>
+ {data.chart.map((item, i) =>
{
- const isMoreThanK = count >= 1000;
- return numberWithCommas(isMoreThanK ? Math.trunc(count / 1000) + 'k' : count);
+ const isMoreThanK = count >= 1000;
+ return numberWithCommas(isMoreThanK ? Math.trunc(count / 1000) + 'k' : count);
}
export default {
- customMetricColors,
- colors,
- colorsTeal,
- colorsPie,
- colorsx,
- compareColors,
- compareColorsx,
- lineColor: '#2A7B7F',
- lineColorCompare: '#394EFF',
- strokeColor: colors[2],
- xaxis: {
- axisLine: { stroke: '#CCCCCC' },
- interval: 0,
- dataKey: "time",
- tick: { fill: '#999999', fontSize: 9 },
- tickLine: { stroke: '#CCCCCC' },
- strokeWidth: 0.5
- },
- yaxis: {
- axisLine: { stroke: '#CCCCCC' },
- tick: { fill: '#999999', fontSize: 9 },
- tickLine: { stroke: '#CCCCCC' },
- },
- axisLabelLeft: {
- angle: -90,
- fill: '#999999',
- offset: 10,
- style: { textAnchor: 'middle' },
- position: 'insideLeft',
- fontSize: 11
- },
- tickFormatter: val => `${countView(val)}`,
- tickFormatterBytes: val => Math.round(val / 1024 / 1024),
- chartMargins: { left: 0, right: 20, top: 10, bottom: 5 },
- tooltip: {
- cursor: {
- fill: '#f6f6f6'
+ customMetricColors,
+ colors,
+ colorsTeal,
+ colorsPie,
+ colorsx,
+ compareColors,
+ compareColorsx,
+ lineColor: '#2A7B7F',
+ lineColorCompare: '#394EFF',
+ strokeColor: compareColors[2],
+ xaxis: {
+ axisLine: {stroke: '#CCCCCC'},
+ interval: 0,
+ dataKey: "time",
+ tick: {fill: '#999999', fontSize: 9},
+ tickLine: {stroke: '#CCCCCC'},
+ strokeWidth: 0.5
},
- contentStyle: {
- padding: '5px',
- background: 'white',
- border: '1px solid #DDD',
- borderRadius: '3px',
- lineHeight: '1.25rem',
- color: '#888',
- fontSize: '10px'
+ yaxis: {
+ axisLine: {stroke: '#CCCCCC'},
+ tick: {fill: '#999999', fontSize: 9},
+ tickLine: {stroke: '#CCCCCC'},
},
- labelStyle: {},
- formatter: (value, name, { unit }) => {
- if (unit && unit.trim() === 'mb') {
- return numberWithCommas(Math.round(value / 1024 / 1024))
- }
- return numberWithCommas(Math.round(value))
+ axisLabelLeft: {
+ angle: -90,
+ fill: '#999999',
+ offset: 10,
+ style: {textAnchor: 'middle'},
+ position: 'insideLeft',
+ fontSize: 11
},
- itemStyle: {
- lineHeight: '0.75rem',
- color: '#000',
- fontSize: '12px'
- }
- },
- gradientDef: () => (
-
-
-
-
-
-
-
-
-
-
- )
-};
\ No newline at end of file
+ tickFormatter: val => `${countView(val)}`,
+ tickFormatterBytes: val => Math.round(val / 1024 / 1024),
+ chartMargins: {left: 0, right: 20, top: 10, bottom: 5},
+ tooltip: {
+ cursor: {
+ fill: '#f6f6f6'
+ },
+ contentStyle: {
+ padding: '5px',
+ background: 'white',
+ border: '1px solid #DDD',
+ borderRadius: '3px',
+ lineHeight: '1.25rem',
+ color: '#888',
+ fontSize: '10px'
+ },
+ labelStyle: {},
+ formatter: (value, name, {unit}) => {
+ if (unit && unit.trim() === 'mb') {
+ return numberWithCommas(Math.round(value / 1024 / 1024))
+ }
+ return numberWithCommas(Math.round(value))
+ },
+ itemStyle: {
+ lineHeight: '0.75rem',
+ color: '#000',
+ fontSize: '12px'
+ }
+ },
+ gradientDef: () => (
+
+
+
+
+
+
+
+
+
+
+ )
+};
diff --git a/frontend/app/components/Dashboard/components/CreateDashboardButton.tsx b/frontend/app/components/Dashboard/components/CreateDashboardButton.tsx
index d5731517d..639c63903 100644
--- a/frontend/app/components/Dashboard/components/CreateDashboardButton.tsx
+++ b/frontend/app/components/Dashboard/components/CreateDashboardButton.tsx
@@ -8,7 +8,7 @@ interface Props {
}
function CreateDashboardButton({disabled = false}: Props) {
- const [showModal, setShowModal] = React.useState(false);
+ const [showModal, setShowModal] = React.useState(true);
return <>
+ )}
+ description={(
+
+ )}
+ />
+
+ )}
+ />
+
+ );
+}
+
+export default Bars;
diff --git a/frontend/app/components/Dashboard/components/DashboardList/NewDashModal/Examples/ExCard.tsx b/frontend/app/components/Dashboard/components/DashboardList/NewDashModal/Examples/ExCard.tsx
index 92a7db1f4..b055c81fd 100644
--- a/frontend/app/components/Dashboard/components/DashboardList/NewDashModal/Examples/ExCard.tsx
+++ b/frontend/app/components/Dashboard/components/DashboardList/NewDashModal/Examples/ExCard.tsx
@@ -1,25 +1,27 @@
import React from 'react'
function ExCard({
- title,
- children,
- type,
- onCard,
-}: {
- title: React.ReactNode;
- children: React.ReactNode;
- type: string;
- onCard: (card: string) => void;
+ title,
+ children,
+ type,
+ onCard,
+ height,
+ }: {
+ title: React.ReactNode;
+ children: React.ReactNode;
+ type: string;
+ onCard: (card: string) => void;
+ height?: number;
}) {
- return (
-
-
{title}
-
onCard(type)}>{children}
-
- );
+ return (
+
+
{title}
+
onCard(type)}>{children}
+
+ );
}
export default ExCard
diff --git a/frontend/app/components/Dashboard/components/DashboardList/NewDashModal/Examples/SessionsBy/ByIssues.tsx b/frontend/app/components/Dashboard/components/DashboardList/NewDashModal/Examples/SessionsBy/ByIssues.tsx
new file mode 100644
index 000000000..a8af2fd31
--- /dev/null
+++ b/frontend/app/components/Dashboard/components/DashboardList/NewDashModal/Examples/SessionsBy/ByIssues.tsx
@@ -0,0 +1,46 @@
+import React from 'react';
+
+import {Icon} from 'UI';
+
+import ExCard from '../ExCard';
+import ByComponent from './Component';
+
+function ByIssues(props: any) {
+ const rows = [
+ {
+ label: 'Dead Click',
+ progress: 85,
+ value: '2.5K',
+ icon: ,
+ },
+ {
+ label: 'Click Rage',
+ progress: 25,
+ value: '405',
+ icon: ,
+ },
+ {
+ label: 'Bad Request',
+ progress: 5,
+ value: '302',
+ icon: ,
+ },
+ {
+ label: 'Mouse Thrashing',
+ progress: 3,
+ value: '194',
+ icon: ,
+ },
+ ];
+
+ const lineWidth = 200;
+ return (
+
+ );
+}
+
+export default ByIssues;
diff --git a/frontend/app/components/Dashboard/components/DashboardList/NewDashModal/Examples/WebVital.tsx b/frontend/app/components/Dashboard/components/DashboardList/NewDashModal/Examples/WebVital.tsx
new file mode 100644
index 000000000..c15e3d86a
--- /dev/null
+++ b/frontend/app/components/Dashboard/components/DashboardList/NewDashModal/Examples/WebVital.tsx
@@ -0,0 +1,55 @@
+import React from 'react';
+import CustomMetricOverviewChart from "Components/Dashboard/Widgets/CustomMetricsWidgets/CustomMetricOverviewChart";
+import ExCard from "Components/Dashboard/components/DashboardList/NewDashModal/Examples/ExCard";
+
+interface Props {
+ title: string;
+ type: string;
+ onCard: (card: string) => void;
+}
+
+function WebVital(props: Props) {
+ const data = {
+ "value": 8.33316146432396,
+ "chart": [
+ {
+ "timestamp": 1718755200000,
+ "value": 9.37317620650954
+ },
+ {
+ "timestamp": 1718870399833,
+ "value": 6.294931643881294
+ },
+ {
+ "timestamp": 1718985599666,
+ "value": 7.103504928806133
+ },
+ {
+ "timestamp": 1719100799499,
+ "value": 7.946568201563857
+ },
+ {
+ "timestamp": 1719215999332,
+ "value": 8.941158674935712
+ },
+ {
+ "timestamp": 1719331199165,
+ "value": 10.180191693290734
+ },
+ {
+ "timestamp": 1719446398998,
+ "value": 0
+ }
+ ],
+ "unit": "%"
+ }
+ return (
+
+
+
+ );
+}
+
+export default WebVital;
diff --git a/frontend/app/components/Dashboard/components/DashboardList/NewDashModal/SelectCard.tsx b/frontend/app/components/Dashboard/components/DashboardList/NewDashModal/SelectCard.tsx
index 6483f9a44..39c6be85f 100644
--- a/frontend/app/components/Dashboard/components/DashboardList/NewDashModal/SelectCard.tsx
+++ b/frontend/app/components/Dashboard/components/DashboardList/NewDashModal/SelectCard.tsx
@@ -22,6 +22,7 @@ const SelectCard: React.FC = (props: SelectCardProps) => {
const handleCardSelection = (card: string) => {
+ console.log('card', card);
const selectedCard = CARD_LIST.find((c) => c.key === card) as CardType;
metricStore.merge({
metricType: selectedCard.cardType,
@@ -33,8 +34,8 @@ const SelectCard: React.FC = (props: SelectCardProps) => {
const cardItems = useMemo(() => {
return CARD_LIST.filter((card) => card.category === selected).map((card) => (
-
-
+
+
));
}, [selected]);
@@ -133,7 +134,7 @@ interface ExampleCardsGridProps {
const ExampleCardsGrid: React.FC = ({items}) => (
{items}
diff --git a/frontend/app/components/Dashboard/components/DashboardView/DashboardView.tsx b/frontend/app/components/Dashboard/components/DashboardView/DashboardView.tsx
index 6018ef5f7..ffea3f484 100644
--- a/frontend/app/components/Dashboard/components/DashboardView/DashboardView.tsx
+++ b/frontend/app/components/Dashboard/components/DashboardView/DashboardView.tsx
@@ -1,111 +1,114 @@
-import React, { useEffect } from 'react';
-import { observer } from 'mobx-react-lite';
-import { useStore } from 'App/mstore';
-import { Loader } from 'UI';
-import { withSiteId } from 'App/routes';
+import React, {useEffect} from 'react';
+import {observer} from 'mobx-react-lite';
+import {useStore} from 'App/mstore';
+import {Loader} from 'UI';
+import {withSiteId} from 'App/routes';
import withModal from 'App/components/Modal/withModal';
import DashboardWidgetGrid from '../DashboardWidgetGrid';
-import { withRouter, RouteComponentProps } from 'react-router-dom';
-import { useModal } from 'App/components/Modal';
+import {withRouter, RouteComponentProps} from 'react-router-dom';
+import {useModal} from 'App/components/Modal';
import DashboardModal from '../DashboardModal';
import AlertFormModal from 'App/components/Alerts/AlertFormModal';
import withPageTitle from 'HOCs/withPageTitle';
import withReport from 'App/components/hocs/withReport';
import DashboardHeader from '../DashboardHeader';
+import {useHistory} from "react-router";
interface IProps {
- siteId: string;
- dashboardId: any;
- renderReport?: any;
+ siteId: string;
+ dashboardId: any;
+ renderReport?: any;
}
type Props = IProps & RouteComponentProps;
function DashboardView(props: Props) {
- const { siteId, dashboardId } = props;
- const { dashboardStore } = useStore();
- const { showModal, hideModal } = useModal();
+ const {siteId, dashboardId} = props;
+ const {dashboardStore} = useStore();
+ const {showModal, hideModal} = useModal();
+ const history = useHistory();
- const showAlertModal = dashboardStore.showAlertModal;
- const loading = dashboardStore.fetchingDashboard;
- const dashboard: any = dashboardStore.selectedDashboard;
+ const showAlertModal = dashboardStore.showAlertModal;
+ const loading = dashboardStore.fetchingDashboard;
+ const dashboard: any = dashboardStore.selectedDashboard;
- const queryParams = new URLSearchParams(props.location.search);
+ const queryParams = new URLSearchParams(location.search);
- const trimQuery = () => {
- if (!queryParams.has('modal')) return;
- queryParams.delete('modal');
- props.history.replace({
- search: queryParams.toString(),
- });
- };
+ const trimQuery = () => {
+ if (!queryParams.has('modal')) return;
+ queryParams.delete('modal');
+ history.replace({
+ search: queryParams.toString(),
+ });
+ };
- useEffect(() => {
- if (showAlertModal) {
- showModal(
-
{
- hideModal();
- dashboardStore.toggleAlertModal(false)
- }}
- />,
- { right: false, width: 580 },
- () => dashboardStore.toggleAlertModal(false)
- )
- }
- }, [showAlertModal])
+ useEffect(() => {
+ if (showAlertModal) {
+ showModal(
+ {
+ hideModal();
+ dashboardStore.toggleAlertModal(false)
+ }}
+ />,
+ {right: false, width: 580},
+ () => dashboardStore.toggleAlertModal(false)
+ )
+ }
+ }, [showAlertModal])
- const pushQuery = () => {
- if (!queryParams.has('modal')) props.history.push('?modal=addMetric');
- };
+ const pushQuery = () => {
+ if (!queryParams.has('modal')) history.push('?modal=addMetric');
+ };
- useEffect(() => {
- if (queryParams.has('modal')) {
- onAddWidgets();
- trimQuery();
- }
- }, []);
+ useEffect(() => {
+ if (queryParams.has('modal')) {
+ onAddWidgets();
+ trimQuery();
+ }
+ }, []);
- useEffect(() => {
- const isExists = dashboardStore.getDashboardById(dashboardId);
- if (!isExists) {
- props.history.push(withSiteId(`/dashboard`, siteId));
- }
- }, [dashboardId]);
+ useEffect(() => {
+ const isExists = dashboardStore.getDashboardById(dashboardId);
+ if (!isExists) {
+ history.push(withSiteId(`/dashboard`, siteId));
+ }
+ }, [dashboardId]);
- useEffect(() => {
- if (!dashboard || !dashboard.dashboardId) return;
- dashboardStore.fetch(dashboard.dashboardId);
- }, [dashboard]);
+ useEffect(() => {
+ if (!dashboard || !dashboard.dashboardId) return;
+ dashboardStore.fetch(dashboard.dashboardId);
+ }, [dashboard]);
- const onAddWidgets = () => {
- dashboardStore.initDashboard(dashboard);
- showModal(
- ,
- { right: true }
+ const onAddWidgets = () => {
+ dashboardStore.initDashboard(dashboard);
+ showModal(
+ ,
+ {right: true}
+ );
+ };
+
+ if (!dashboard) return null;
+
+ return (
+
+
+ {/* @ts-ignore */}
+
+
+
+
+
);
- };
-
- if (!dashboard) return null;
-
- return (
-
-
- {/* @ts-ignore */}
-
-
-
-
-
- );
}
+
// @ts-ignore
export default withPageTitle('Dashboards - OpenReplay')(
- withReport(withRouter(withModal(observer(DashboardView))))
+ withReport(withModal(observer(DashboardView)))
);
diff --git a/frontend/app/components/Dashboard/components/DashboardWidgetGrid/DashboardWidgetGrid.tsx b/frontend/app/components/Dashboard/components/DashboardWidgetGrid/DashboardWidgetGrid.tsx
index 4f26f2d32..bbd945f0b 100644
--- a/frontend/app/components/Dashboard/components/DashboardWidgetGrid/DashboardWidgetGrid.tsx
+++ b/frontend/app/components/Dashboard/components/DashboardWidgetGrid/DashboardWidgetGrid.tsx
@@ -1,113 +1,117 @@
import React from 'react';
-import { useStore } from 'App/mstore';
+import {useStore} from 'App/mstore';
import WidgetWrapper from '../WidgetWrapper';
-import { NoContent, Loader, Icon } from 'UI';
-import { useObserver } from 'mobx-react-lite';
+import {NoContent, Loader, Icon} from 'UI';
+import {useObserver} from 'mobx-react-lite';
import Widget from 'App/mstore/types/widget';
import MetricTypeList from '../MetricTypeList';
import WidgetWrapperNew from "Components/Dashboard/components/WidgetWrapper/WidgetWrapperNew";
+import {Empty} from "antd";
interface Props {
- siteId: string;
- dashboardId: string;
- onEditHandler: () => void;
- id?: string;
+ siteId: string;
+ dashboardId: string;
+ onEditHandler: () => void;
+ id?: string;
}
+
function DashboardWidgetGrid(props: Props) {
- const { dashboardId, siteId } = props;
- const { dashboardStore } = useStore();
- const loading = useObserver(() => dashboardStore.isLoading);
- const dashboard = dashboardStore.selectedDashboard;
- const list = useObserver(() => dashboard?.widgets);
- const smallWidgets: Widget[] = [];
- const regularWidgets: Widget[] = [];
+ const {dashboardId, siteId} = props;
+ const {dashboardStore} = useStore();
+ const loading = useObserver(() => dashboardStore.isLoading);
+ const dashboard = dashboardStore.selectedDashboard;
+ const list = useObserver(() => dashboard?.widgets);
+ const smallWidgets: Widget[] = [];
+ const regularWidgets: Widget[] = [];
- list.forEach((item) => {
- if (item.config.col === 1) {
- smallWidgets.push(item);
- } else {
- regularWidgets.push(item);
- }
- });
-
- const smallWidgetsLen = smallWidgets.length;
-
- return useObserver(() => (
- // @ts-ignore
-
-
-
-
- There are no cards in this dashboard
-
-
- Create a card from any of the below types or pick an existing one from your library.
-
-
-
-
-
-
+ list?.forEach((item) => {
+ if (item.config.col === 1) {
+ smallWidgets.push(item);
+ } else {
+ regularWidgets.push(item);
}
- >
- {smallWidgets.length > 0 ? (
- <>
-
-
- Web Vitals
-
+ });
- {smallWidgets &&
- smallWidgets.map((item: any, index: any) => (
-
-
- dashboard.swapWidgetPosition(dragIndex, hoverIndex)
+ const smallWidgetsLen = smallWidgets.length;
- }dashboardId={dashboardId}
- siteId={siteId}
- isWidget={true}
- grid="vitals"
- />
-
- ))}
+ return useObserver(() => (
+ // @ts-ignore
+ list?.length === 0 ?
: (
+
+
+
+
+ There are no cards in this dashboard
+
+
+ Create a card from any of the below types or pick an existing one from your library.
+
+
+ {/**/}
+ {/* */}
+ {/*
*/}
+
+ }
+ >
+ {smallWidgets.length > 0 ? (
+ <>
+
+
+ Web Vitals
+
- >
- ) : null}
+ {smallWidgets &&
+ smallWidgets.map((item: any, index: any) => (
+
+
+ dashboard?.swapWidgetPosition(dragIndex, hoverIndex)
- {smallWidgets.length > 0 && regularWidgets.length > 0 ? (
-
-
- All Cards
-
- ) : null}
+ } dashboardId={dashboardId}
+ siteId={siteId}
+ isWidget={true}
+ grid="vitals"
+ />
+
+ ))}
- {regularWidgets &&
- regularWidgets.map((item: any, index: any) => (
-
-
- dashboard.swapWidgetPosition(dragIndex, hoverIndex)
- }
- dashboardId={dashboardId}
- siteId={siteId}
- isWidget={true}
- grid="other"
- />
-
- ))}
-
-
-
- ));
+ >
+ ) : null}
+
+ {smallWidgets.length > 0 && regularWidgets.length > 0 ? (
+
+
+ All Cards
+
+ ) : null}
+
+ {regularWidgets &&
+ regularWidgets.map((item: any, index: any) => (
+
+
+ dashboard?.swapWidgetPosition(dragIndex, hoverIndex)
+ }
+ dashboardId={dashboardId}
+ siteId={siteId}
+ isWidget={true}
+ grid="other"
+ />
+
+ ))}
+
+
+
+ )
+ ));
}
export default DashboardWidgetGrid;
diff --git a/frontend/app/components/Dashboard/components/WidgetPredefinedChart/WidgetPredefinedChart.tsx b/frontend/app/components/Dashboard/components/WidgetPredefinedChart/WidgetPredefinedChart.tsx
index 88da5d888..0cfb02c2b 100644
--- a/frontend/app/components/Dashboard/components/WidgetPredefinedChart/WidgetPredefinedChart.tsx
+++ b/frontend/app/components/Dashboard/components/WidgetPredefinedChart/WidgetPredefinedChart.tsx
@@ -42,7 +42,7 @@ function WidgetPredefinedChart(props: Props) {
case FilterKey.ERRORS_PER_TYPE:
return
case FilterKey.ERRORS_PER_DOMAINS:
- return
+ return
case FilterKey.RESOURCES_BY_PARTY:
return
case FilterKey.IMPACTED_SESSIONS_BY_JS_ERRORS:
diff --git a/frontend/app/components/ui/Icons/color_issues_bad_request.tsx b/frontend/app/components/ui/Icons/color_issues_bad_request.tsx
new file mode 100644
index 000000000..dc00e7aa0
--- /dev/null
+++ b/frontend/app/components/ui/Icons/color_issues_bad_request.tsx
@@ -0,0 +1,28 @@
+
+/* Auto-generated, do not edit */
+import React from 'react';
+
+interface Props {
+ size?: number | string;
+ width?: number | string;
+ height?: number | string;
+ fill?: string;
+}
+
+function Color_issues_bad_request(props: Props) {
+ const { size = 14, width = size, height = size, fill = '' } = props;
+ return (
+
+ );
+}
+
+export default Color_issues_bad_request;
diff --git a/frontend/app/components/ui/Icons/color_issues_click_rage.tsx b/frontend/app/components/ui/Icons/color_issues_click_rage.tsx
new file mode 100644
index 000000000..3d6081055
--- /dev/null
+++ b/frontend/app/components/ui/Icons/color_issues_click_rage.tsx
@@ -0,0 +1,25 @@
+
+/* Auto-generated, do not edit */
+import React from 'react';
+
+interface Props {
+ size?: number | string;
+ width?: number | string;
+ height?: number | string;
+ fill?: string;
+}
+
+function Color_issues_click_rage(props: Props) {
+ const { size = 14, width = size, height = size, fill = '' } = props;
+ return (
+
+ );
+}
+
+export default Color_issues_click_rage;
diff --git a/frontend/app/components/ui/Icons/color_issues_cpu.tsx b/frontend/app/components/ui/Icons/color_issues_cpu.tsx
new file mode 100644
index 000000000..55ec1444c
--- /dev/null
+++ b/frontend/app/components/ui/Icons/color_issues_cpu.tsx
@@ -0,0 +1,31 @@
+
+/* Auto-generated, do not edit */
+import React from 'react';
+
+interface Props {
+ size?: number | string;
+ width?: number | string;
+ height?: number | string;
+ fill?: string;
+}
+
+function Color_issues_cpu(props: Props) {
+ const { size = 14, width = size, height = size, fill = '' } = props;
+ return (
+
+ );
+}
+
+export default Color_issues_cpu;
diff --git a/frontend/app/components/ui/Icons/color_issues_crash.tsx b/frontend/app/components/ui/Icons/color_issues_crash.tsx
new file mode 100644
index 000000000..8568cc3b7
--- /dev/null
+++ b/frontend/app/components/ui/Icons/color_issues_crash.tsx
@@ -0,0 +1,26 @@
+
+/* Auto-generated, do not edit */
+import React from 'react';
+
+interface Props {
+ size?: number | string;
+ width?: number | string;
+ height?: number | string;
+ fill?: string;
+}
+
+function Color_issues_crash(props: Props) {
+ const { size = 14, width = size, height = size, fill = '' } = props;
+ return (
+
+ );
+}
+
+export default Color_issues_crash;
diff --git a/frontend/app/components/ui/Icons/color_issues_custom.tsx b/frontend/app/components/ui/Icons/color_issues_custom.tsx
new file mode 100644
index 000000000..d9cca3880
--- /dev/null
+++ b/frontend/app/components/ui/Icons/color_issues_custom.tsx
@@ -0,0 +1,25 @@
+
+/* Auto-generated, do not edit */
+import React from 'react';
+
+interface Props {
+ size?: number | string;
+ width?: number | string;
+ height?: number | string;
+ fill?: string;
+}
+
+function Color_issues_custom(props: Props) {
+ const { size = 14, width = size, height = size, fill = '' } = props;
+ return (
+
+ );
+}
+
+export default Color_issues_custom;
diff --git a/frontend/app/components/ui/Icons/color_issues_dead_click.tsx b/frontend/app/components/ui/Icons/color_issues_dead_click.tsx
new file mode 100644
index 000000000..21d3aef23
--- /dev/null
+++ b/frontend/app/components/ui/Icons/color_issues_dead_click.tsx
@@ -0,0 +1,31 @@
+
+/* Auto-generated, do not edit */
+import React from 'react';
+
+interface Props {
+ size?: number | string;
+ width?: number | string;
+ height?: number | string;
+ fill?: string;
+}
+
+function Color_issues_dead_click(props: Props) {
+ const { size = 14, width = size, height = size, fill = '' } = props;
+ return (
+
+ );
+}
+
+export default Color_issues_dead_click;
diff --git a/frontend/app/components/ui/Icons/color_issues_errors.tsx b/frontend/app/components/ui/Icons/color_issues_errors.tsx
new file mode 100644
index 000000000..0cd4c3ca2
--- /dev/null
+++ b/frontend/app/components/ui/Icons/color_issues_errors.tsx
@@ -0,0 +1,24 @@
+
+/* Auto-generated, do not edit */
+import React from 'react';
+
+interface Props {
+ size?: number | string;
+ width?: number | string;
+ height?: number | string;
+ fill?: string;
+}
+
+function Color_issues_errors(props: Props) {
+ const { size = 14, width = size, height = size, fill = '' } = props;
+ return (
+
+ );
+}
+
+export default Color_issues_errors;
diff --git a/frontend/app/components/ui/Icons/color_issues_excessive_scrolling.tsx b/frontend/app/components/ui/Icons/color_issues_excessive_scrolling.tsx
new file mode 100644
index 000000000..51cceb591
--- /dev/null
+++ b/frontend/app/components/ui/Icons/color_issues_excessive_scrolling.tsx
@@ -0,0 +1,24 @@
+
+/* Auto-generated, do not edit */
+import React from 'react';
+
+interface Props {
+ size?: number | string;
+ width?: number | string;
+ height?: number | string;
+ fill?: string;
+}
+
+function Color_issues_excessive_scrolling(props: Props) {
+ const { size = 14, width = size, height = size, fill = '' } = props;
+ return (
+
+ );
+}
+
+export default Color_issues_excessive_scrolling;
diff --git a/frontend/app/components/ui/Icons/color_issues_js_exception.tsx b/frontend/app/components/ui/Icons/color_issues_js_exception.tsx
new file mode 100644
index 000000000..31b11070f
--- /dev/null
+++ b/frontend/app/components/ui/Icons/color_issues_js_exception.tsx
@@ -0,0 +1,24 @@
+
+/* Auto-generated, do not edit */
+import React from 'react';
+
+interface Props {
+ size?: number | string;
+ width?: number | string;
+ height?: number | string;
+ fill?: string;
+}
+
+function Color_issues_js_exception(props: Props) {
+ const { size = 14, width = size, height = size, fill = '' } = props;
+ return (
+
+ );
+}
+
+export default Color_issues_js_exception;
diff --git a/frontend/app/components/ui/Icons/color_issues_memory.tsx b/frontend/app/components/ui/Icons/color_issues_memory.tsx
new file mode 100644
index 000000000..0c93aacd9
--- /dev/null
+++ b/frontend/app/components/ui/Icons/color_issues_memory.tsx
@@ -0,0 +1,30 @@
+
+/* Auto-generated, do not edit */
+import React from 'react';
+
+interface Props {
+ size?: number | string;
+ width?: number | string;
+ height?: number | string;
+ fill?: string;
+}
+
+function Color_issues_memory(props: Props) {
+ const { size = 14, width = size, height = size, fill = '' } = props;
+ return (
+
+ );
+}
+
+export default Color_issues_memory;
diff --git a/frontend/app/components/ui/Icons/color_issues_missing_resource.tsx b/frontend/app/components/ui/Icons/color_issues_missing_resource.tsx
new file mode 100644
index 000000000..09fe666b4
--- /dev/null
+++ b/frontend/app/components/ui/Icons/color_issues_missing_resource.tsx
@@ -0,0 +1,27 @@
+
+/* Auto-generated, do not edit */
+import React from 'react';
+
+interface Props {
+ size?: number | string;
+ width?: number | string;
+ height?: number | string;
+ fill?: string;
+}
+
+function Color_issues_missing_resource(props: Props) {
+ const { size = 14, width = size, height = size, fill = '' } = props;
+ return (
+
+ );
+}
+
+export default Color_issues_missing_resource;
diff --git a/frontend/app/components/ui/Icons/color_issues_mouse_thrashing.tsx b/frontend/app/components/ui/Icons/color_issues_mouse_thrashing.tsx
new file mode 100644
index 000000000..6ea8b4dee
--- /dev/null
+++ b/frontend/app/components/ui/Icons/color_issues_mouse_thrashing.tsx
@@ -0,0 +1,23 @@
+
+/* Auto-generated, do not edit */
+import React from 'react';
+
+interface Props {
+ size?: number | string;
+ width?: number | string;
+ height?: number | string;
+ fill?: string;
+}
+
+function Color_issues_mouse_thrashing(props: Props) {
+ const { size = 14, width = size, height = size, fill = '' } = props;
+ return (
+
+ );
+}
+
+export default Color_issues_mouse_thrashing;
diff --git a/frontend/app/components/ui/Icons/color_issues_mouse_trashing.tsx b/frontend/app/components/ui/Icons/color_issues_mouse_trashing.tsx
new file mode 100644
index 000000000..cd8257212
--- /dev/null
+++ b/frontend/app/components/ui/Icons/color_issues_mouse_trashing.tsx
@@ -0,0 +1,23 @@
+
+/* Auto-generated, do not edit */
+import React from 'react';
+
+interface Props {
+ size?: number | string;
+ width?: number | string;
+ height?: number | string;
+ fill?: string;
+}
+
+function Color_issues_mouse_trashing(props: Props) {
+ const { size = 14, width = size, height = size, fill = '' } = props;
+ return (
+
+ );
+}
+
+export default Color_issues_mouse_trashing;
diff --git a/frontend/app/components/ui/Icons/color_issues_slow_page_load.tsx b/frontend/app/components/ui/Icons/color_issues_slow_page_load.tsx
new file mode 100644
index 000000000..074c74c86
--- /dev/null
+++ b/frontend/app/components/ui/Icons/color_issues_slow_page_load.tsx
@@ -0,0 +1,38 @@
+
+/* Auto-generated, do not edit */
+import React from 'react';
+
+interface Props {
+ size?: number | string;
+ width?: number | string;
+ height?: number | string;
+ fill?: string;
+}
+
+function Color_issues_slow_page_load(props: Props) {
+ const { size = 14, width = size, height = size, fill = '' } = props;
+ return (
+
+ );
+}
+
+export default Color_issues_slow_page_load;
diff --git a/frontend/app/components/ui/Icons/index.ts b/frontend/app/components/ui/Icons/index.ts
index 6fc2a46b3..2f57a0ebd 100644
--- a/frontend/app/components/ui/Icons/index.ts
+++ b/frontend/app/components/ui/Icons/index.ts
@@ -159,6 +159,19 @@ export { default as Color_firefox } from './color_firefox';
export { default as Color_fr } from './color_fr';
export { default as Color_gb } from './color_gb';
export { default as Color_in } from './color_in';
+export { default as Color_issues_bad_request } from './color_issues_bad_request';
+export { default as Color_issues_click_rage } from './color_issues_click_rage';
+export { default as Color_issues_cpu } from './color_issues_cpu';
+export { default as Color_issues_crash } from './color_issues_crash';
+export { default as Color_issues_custom } from './color_issues_custom';
+export { default as Color_issues_dead_click } from './color_issues_dead_click';
+export { default as Color_issues_errors } from './color_issues_errors';
+export { default as Color_issues_excessive_scrolling } from './color_issues_excessive_scrolling';
+export { default as Color_issues_js_exception } from './color_issues_js_exception';
+export { default as Color_issues_memory } from './color_issues_memory';
+export { default as Color_issues_missing_resource } from './color_issues_missing_resource';
+export { default as Color_issues_mouse_thrashing } from './color_issues_mouse_thrashing';
+export { default as Color_issues_slow_page_load } from './color_issues_slow_page_load';
export { default as Color_microsoft } from './color_microsoft';
export { default as Color_opera } from './color_opera';
export { default as Color_os_android } from './color_os_android';
diff --git a/frontend/app/components/ui/SVG.tsx b/frontend/app/components/ui/SVG.tsx
index 4fdadcbe1..b46650f1f 100644
--- a/frontend/app/components/ui/SVG.tsx
+++ b/frontend/app/components/ui/SVG.tsx
@@ -161,6 +161,19 @@ import {
Color_fr,
Color_gb,
Color_in,
+ Color_issues_bad_request,
+ Color_issues_click_rage,
+ Color_issues_cpu,
+ Color_issues_crash,
+ Color_issues_custom,
+ Color_issues_dead_click,
+ Color_issues_errors,
+ Color_issues_excessive_scrolling,
+ Color_issues_js_exception,
+ Color_issues_memory,
+ Color_issues_missing_resource,
+ Color_issues_mouse_thrashing,
+ Color_issues_slow_page_load,
Color_microsoft,
Color_opera,
Color_os_android,
@@ -542,7 +555,7 @@ import {
Zoom_in
} from './Icons'
-export type IconNames = 'activity' | 'alarm-clock' | 'alarm-plus' | 'all-sessions' | 'analytics' | 'anchor' | 'arrow-alt-square-right' | 'arrow-bar-left' | 'arrow-clockwise' | 'arrow-counterclockwise' | 'arrow-down-short' | 'arrow-down-up' | 'arrow-down' | 'arrow-repeat' | 'arrow-right-short' | 'arrow-square-left' | 'arrow-square-right' | 'arrow-up-short' | 'arrow-up' | 'arrows-angle-extend' | 'avatar/icn_avatar1' | 'avatar/icn_avatar10' | 'avatar/icn_avatar11' | 'avatar/icn_avatar12' | 'avatar/icn_avatar13' | 'avatar/icn_avatar14' | 'avatar/icn_avatar15' | 'avatar/icn_avatar16' | 'avatar/icn_avatar17' | 'avatar/icn_avatar18' | 'avatar/icn_avatar19' | 'avatar/icn_avatar2' | 'avatar/icn_avatar20' | 'avatar/icn_avatar21' | 'avatar/icn_avatar22' | 'avatar/icn_avatar23' | 'avatar/icn_avatar3' | 'avatar/icn_avatar4' | 'avatar/icn_avatar5' | 'avatar/icn_avatar6' | 'avatar/icn_avatar7' | 'avatar/icn_avatar8' | 'avatar/icn_avatar9' | 'ban' | 'bar-chart-line' | 'bar-pencil' | 'battery-charging' | 'battery' | 'bell-fill' | 'bell-plus' | 'bell-slash' | 'bell' | 'binoculars' | 'book-doc' | 'book' | 'bookmark' | 'broadcast' | 'browser/browser' | 'browser/chrome' | 'browser/edge' | 'browser/electron' | 'browser/facebook' | 'browser/firefox' | 'browser/ie' | 'browser/opera' | 'browser/safari' | 'buildings' | 'bullhorn' | 'business-time' | 'calendar-alt' | 'calendar-check' | 'calendar-day' | 'calendar' | 'call' | 'camera-alt' | 'camera-video-off' | 'camera-video' | 'camera' | 'card-checklist' | 'card-list' | 'card-text' | 'caret-down-fill' | 'caret-left-fill' | 'caret-right-fill' | 'caret-up-fill' | 'chat-dots' | 'chat-left-text' | 'chat-right-text' | 'chat-square-quote' | 'check-circle-fill' | 'check-circle' | 'check' | 'chevron-double-left' | 'chevron-double-right' | 'chevron-down' | 'chevron-left' | 'chevron-right' | 'chevron-up' | 'circle-fill' | 'circle' | 'click-hesitation' | 'click-rage' | 'clipboard-check' | 'clipboard-list-check' | 'clock-history' | 'clock' | 'close' | 'cloud-fog2-fill' | 'code' | 'cog' | 'cogs' | 'collection-play' | 'collection' | 'color/apple' | 'color/browser/Tor' | 'color/browser/applebot' | 'color/browser/chrome' | 'color/browser/chrome_mobile' | 'color/browser/chrome_mobile_ios' | 'color/browser/duck_duck_go' | 'color/browser/duckduckgo_mobile' | 'color/browser/edge' | 'color/browser/edge_mobile' | 'color/browser/facebook' | 'color/browser/firefox' | 'color/browser/firefox_ios' | 'color/browser/firefox_mobile' | 'color/browser/google' | 'color/browser/googlebot' | 'color/browser/huawei_browser' | 'color/browser/internet_explorer' | 'color/browser/miui_browser' | 'color/browser/mobile_safari' | 'color/browser/mobile_safari_ui' | 'color/browser/opera' | 'color/browser/safari' | 'color/browser/samsung_internet' | 'color/browser/uc_browser' | 'color/browser/unknown' | 'color/browser/whale' | 'color/browser/yandex_browser' | 'color/chrome' | 'color/country/de' | 'color/country/fr' | 'color/country/gb' | 'color/country/in' | 'color/country/us' | 'color/de' | 'color/device/desktop' | 'color/device/mobile' | 'color/device/other_phone' | 'color/device/tablet' | 'color/device/unkown' | 'color/edge' | 'color/fedora' | 'color/firefox' | 'color/fr' | 'color/gb' | 'color/in' | 'color/microsoft' | 'color/opera' | 'color/os/android' | 'color/os/apple' | 'color/os/blackberry' | 'color/os/chrome_os' | 'color/os/elementary' | 'color/os/fedora' | 'color/os/freebsd' | 'color/os/gnome' | 'color/os/ios' | 'color/os/linux' | 'color/os/linux_mint' | 'color/os/macos' | 'color/os/microsoft' | 'color/os/ubuntu' | 'color/os/unkown' | 'color/safari' | 'color/ubuntu' | 'color/us' | 'columns-gap-filled' | 'columns-gap' | 'console/error' | 'console/exception' | 'console/info' | 'console/warning' | 'console' | 'controller' | 'cookies' | 'copy' | 'credit-card-2-back' | 'credit-card-front' | 'cross' | 'cubes' | 'cursor-trash' | 'dash' | 'dashboard-icn' | 'db-icons/icn-card-clickMap' | 'db-icons/icn-card-errors' | 'db-icons/icn-card-funnel' | 'db-icons/icn-card-funnels' | 'db-icons/icn-card-insights' | 'db-icons/icn-card-library' | 'db-icons/icn-card-mapchart' | 'db-icons/icn-card-pathAnalysis' | 'db-icons/icn-card-performance' | 'db-icons/icn-card-resources' | 'db-icons/icn-card-table' | 'db-icons/icn-card-timeseries' | 'db-icons/icn-card-webVitals' | 'desktop' | 'device' | 'diagram-3' | 'dice-3' | 'dizzy' | 'door-closed' | 'doublecheck' | 'download' | 'drag' | 'edit' | 'ellipsis-v' | 'emoji-dizzy' | 'enter' | 'envelope-check' | 'envelope-paper' | 'envelope-x' | 'envelope' | 'errors-icon' | 'event/click' | 'event/click_hesitation' | 'event/clickrage' | 'event/code' | 'event/i-cursor' | 'event/input' | 'event/input_hesitation' | 'event/link' | 'event/location' | 'event/mouse_thrashing' | 'event/resize' | 'event/view' | 'exclamation-circle-fill' | 'exclamation-circle' | 'exclamation-triangle' | 'expand-wide' | 'explosion' | 'external-link-alt' | 'eye-slash-fill' | 'eye-slash' | 'eye' | 'fetch' | 'fflag-multi' | 'fflag-single' | 'file-bar-graph' | 'file-code' | 'file-medical-alt' | 'file-pdf' | 'file' | 'files' | 'filetype-js' | 'filetype-pdf' | 'filter' | 'filters/arrow-return-right' | 'filters/browser' | 'filters/click' | 'filters/clickrage' | 'filters/code' | 'filters/console' | 'filters/country' | 'filters/cpu-load' | 'filters/custom' | 'filters/device' | 'filters/dom-complete' | 'filters/duration' | 'filters/error' | 'filters/fetch-failed' | 'filters/fetch' | 'filters/file-code' | 'filters/graphql' | 'filters/i-cursor' | 'filters/input' | 'filters/lcpt' | 'filters/link' | 'filters/location' | 'filters/memory-load' | 'filters/metadata' | 'filters/os' | 'filters/perfromance-network-request' | 'filters/platform' | 'filters/referrer' | 'filters/resize' | 'filters/rev-id' | 'filters/state-action' | 'filters/tag-element' | 'filters/ttfb' | 'filters/user-alt' | 'filters/userid' | 'filters/view' | 'flag-na' | 'folder-plus' | 'folder2' | 'fullscreen' | 'funnel/cpu-fill' | 'funnel/cpu' | 'funnel/dizzy' | 'funnel/emoji-angry-fill' | 'funnel/emoji-angry' | 'funnel/emoji-dizzy-fill' | 'funnel/exclamation-circle-fill' | 'funnel/exclamation-circle' | 'funnel/file-earmark-break-fill' | 'funnel/file-earmark-break' | 'funnel/file-earmark-minus-fill' | 'funnel/file-earmark-minus' | 'funnel/file-medical-alt' | 'funnel/file-x' | 'funnel/hdd-fill' | 'funnel/hourglass-top' | 'funnel/image-fill' | 'funnel/image' | 'funnel/microchip' | 'funnel/mouse' | 'funnel/patch-exclamation-fill' | 'funnel/sd-card' | 'funnel-fill' | 'funnel-new' | 'funnel' | 'gear-fill' | 'gear' | 'geo-alt-fill-custom' | 'github' | 'graph-up-arrow' | 'graph-up' | 'grid-1x2' | 'grid-3x3' | 'grid-check' | 'grid-horizontal' | 'grid' | 'grip-horizontal' | 'hash' | 'hdd-stack' | 'headset' | 'heart-rate' | 'high-engagement' | 'history' | 'hourglass-start' | 'ic-errors' | 'ic-network' | 'ic-rage' | 'ic-resources' | 'id-card' | 'image' | 'info-circle-fill' | 'info-circle' | 'info-square' | 'info' | 'input-hesitation' | 'inspect' | 'integrations/assist' | 'integrations/bugsnag-text' | 'integrations/bugsnag' | 'integrations/cloudwatch-text' | 'integrations/cloudwatch' | 'integrations/datadog' | 'integrations/elasticsearch-text' | 'integrations/elasticsearch' | 'integrations/github' | 'integrations/graphql' | 'integrations/jira-text' | 'integrations/jira' | 'integrations/mobx' | 'integrations/newrelic-text' | 'integrations/newrelic' | 'integrations/ngrx' | 'integrations/openreplay-text' | 'integrations/openreplay' | 'integrations/redux' | 'integrations/rollbar-text' | 'integrations/rollbar' | 'integrations/segment' | 'integrations/sentry-text' | 'integrations/sentry' | 'integrations/slack-bw' | 'integrations/slack' | 'integrations/stackdriver' | 'integrations/sumologic-text' | 'integrations/sumologic' | 'integrations/teams-white' | 'integrations/teams' | 'integrations/vuejs' | 'integrations/zustand' | 'journal-code' | 'key' | 'keyboard' | 'layer-group' | 'layers-half' | 'lightbulb-on' | 'lightbulb' | 'link-45deg' | 'list-alt' | 'list-arrow' | 'list-ul' | 'list' | 'lock-alt' | 'low-disc-space' | 'magic' | 'map-marker-alt' | 'memory-ios' | 'memory' | 'mic-mute' | 'mic' | 'minus' | 'mobile' | 'mouse-alt' | 'mouse-pointer-click' | 'network' | 'next1' | 'no-dashboard' | 'no-metrics-chart' | 'no-metrics' | 'no-recordings' | 'os/android' | 'os/chrome_os' | 'os/fedora' | 'os/ios' | 'os/linux' | 'os/mac_os_x' | 'os/other' | 'os/ubuntu' | 'os/windows' | 'os' | 'pause-circle-fill' | 'pause-fill' | 'pause' | 'pdf-download' | 'pencil-stop' | 'pencil' | 'people' | 'percent' | 'performance-icon' | 'person-border' | 'person-fill' | 'person' | 'pie-chart-fill' | 'pin-fill' | 'play-circle-bold' | 'play-circle-light' | 'play-circle' | 'play-fill-new' | 'play-fill' | 'play-hover' | 'play' | 'plug' | 'plus-circle' | 'plus-lg' | 'plus' | 'pointer-sessions-search' | 'prev1' | 'pulse' | 'puzzle-piece' | 'puzzle' | 'question-circle' | 'question-lg' | 'quote-left' | 'quote-right' | 'quotes' | 'record-btn' | 'record-circle-fill' | 'record-circle' | 'record2' | 'redo-back' | 'redo' | 'redux' | 'remote-control' | 'replay-10' | 'resources-icon' | 'safe-fill' | 'safe' | 'sandglass' | 'search' | 'search_notification' | 'server' | 'share-alt' | 'shield-lock' | 'side_menu_closed' | 'side_menu_open' | 'signpost-split' | 'signup' | 'skip-forward-fill' | 'skip-forward' | 'slack' | 'slash-circle' | 'sleep' | 'sliders' | 'social/slack' | 'social/trello' | 'sparkles' | 'speedometer2' | 'spinner' | 'star-solid' | 'star' | 'step-forward' | 'stickies' | 'stop-record-circle' | 'stopwatch' | 'store' | 'sync-alt' | 'table-new' | 'table' | 'tablet-android' | 'tachometer-slow' | 'tachometer-slowest' | 'tags' | 'team-funnel' | 'telephone-fill' | 'telephone' | 'terminal' | 'text-paragraph' | 'thermometer-sun' | 'toggles' | 'tools' | 'trash' | 'turtle' | 'user-alt' | 'user-circle' | 'user-friends' | 'user-switch' | 'users' | 'vendors/graphql' | 'vendors/mobx' | 'vendors/ngrx' | 'vendors/redux' | 'vendors/vuex' | 'web-vitals' | 'wifi' | 'window-alt' | 'window-restore' | 'window-x' | 'window' | 'zoom-in';
+export type IconNames = 'activity' | 'alarm-clock' | 'alarm-plus' | 'all-sessions' | 'analytics' | 'anchor' | 'arrow-alt-square-right' | 'arrow-bar-left' | 'arrow-clockwise' | 'arrow-counterclockwise' | 'arrow-down-short' | 'arrow-down-up' | 'arrow-down' | 'arrow-repeat' | 'arrow-right-short' | 'arrow-square-left' | 'arrow-square-right' | 'arrow-up-short' | 'arrow-up' | 'arrows-angle-extend' | 'avatar/icn_avatar1' | 'avatar/icn_avatar10' | 'avatar/icn_avatar11' | 'avatar/icn_avatar12' | 'avatar/icn_avatar13' | 'avatar/icn_avatar14' | 'avatar/icn_avatar15' | 'avatar/icn_avatar16' | 'avatar/icn_avatar17' | 'avatar/icn_avatar18' | 'avatar/icn_avatar19' | 'avatar/icn_avatar2' | 'avatar/icn_avatar20' | 'avatar/icn_avatar21' | 'avatar/icn_avatar22' | 'avatar/icn_avatar23' | 'avatar/icn_avatar3' | 'avatar/icn_avatar4' | 'avatar/icn_avatar5' | 'avatar/icn_avatar6' | 'avatar/icn_avatar7' | 'avatar/icn_avatar8' | 'avatar/icn_avatar9' | 'ban' | 'bar-chart-line' | 'bar-pencil' | 'battery-charging' | 'battery' | 'bell-fill' | 'bell-plus' | 'bell-slash' | 'bell' | 'binoculars' | 'book-doc' | 'book' | 'bookmark' | 'broadcast' | 'browser/browser' | 'browser/chrome' | 'browser/edge' | 'browser/electron' | 'browser/facebook' | 'browser/firefox' | 'browser/ie' | 'browser/opera' | 'browser/safari' | 'buildings' | 'bullhorn' | 'business-time' | 'calendar-alt' | 'calendar-check' | 'calendar-day' | 'calendar' | 'call' | 'camera-alt' | 'camera-video-off' | 'camera-video' | 'camera' | 'card-checklist' | 'card-list' | 'card-text' | 'caret-down-fill' | 'caret-left-fill' | 'caret-right-fill' | 'caret-up-fill' | 'chat-dots' | 'chat-left-text' | 'chat-right-text' | 'chat-square-quote' | 'check-circle-fill' | 'check-circle' | 'check' | 'chevron-double-left' | 'chevron-double-right' | 'chevron-down' | 'chevron-left' | 'chevron-right' | 'chevron-up' | 'circle-fill' | 'circle' | 'click-hesitation' | 'click-rage' | 'clipboard-check' | 'clipboard-list-check' | 'clock-history' | 'clock' | 'close' | 'cloud-fog2-fill' | 'code' | 'cog' | 'cogs' | 'collection-play' | 'collection' | 'color/apple' | 'color/browser/Tor' | 'color/browser/applebot' | 'color/browser/chrome' | 'color/browser/chrome_mobile' | 'color/browser/chrome_mobile_ios' | 'color/browser/duck_duck_go' | 'color/browser/duckduckgo_mobile' | 'color/browser/edge' | 'color/browser/edge_mobile' | 'color/browser/facebook' | 'color/browser/firefox' | 'color/browser/firefox_ios' | 'color/browser/firefox_mobile' | 'color/browser/google' | 'color/browser/googlebot' | 'color/browser/huawei_browser' | 'color/browser/internet_explorer' | 'color/browser/miui_browser' | 'color/browser/mobile_safari' | 'color/browser/mobile_safari_ui' | 'color/browser/opera' | 'color/browser/safari' | 'color/browser/samsung_internet' | 'color/browser/uc_browser' | 'color/browser/unknown' | 'color/browser/whale' | 'color/browser/yandex_browser' | 'color/chrome' | 'color/country/de' | 'color/country/fr' | 'color/country/gb' | 'color/country/in' | 'color/country/us' | 'color/de' | 'color/device/desktop' | 'color/device/mobile' | 'color/device/other_phone' | 'color/device/tablet' | 'color/device/unkown' | 'color/edge' | 'color/fedora' | 'color/firefox' | 'color/fr' | 'color/gb' | 'color/in' | 'color/issues/bad_request' | 'color/issues/click_rage' | 'color/issues/cpu' | 'color/issues/crash' | 'color/issues/custom' | 'color/issues/dead_click' | 'color/issues/errors' | 'color/issues/excessive_scrolling' | 'color/issues/js_exception' | 'color/issues/memory' | 'color/issues/missing_resource' | 'color/issues/mouse_thrashing' | 'color/issues/slow_page_load' | 'color/microsoft' | 'color/opera' | 'color/os/android' | 'color/os/apple' | 'color/os/blackberry' | 'color/os/chrome_os' | 'color/os/elementary' | 'color/os/fedora' | 'color/os/freebsd' | 'color/os/gnome' | 'color/os/ios' | 'color/os/linux' | 'color/os/linux_mint' | 'color/os/macos' | 'color/os/microsoft' | 'color/os/ubuntu' | 'color/os/unkown' | 'color/safari' | 'color/ubuntu' | 'color/us' | 'columns-gap-filled' | 'columns-gap' | 'console/error' | 'console/exception' | 'console/info' | 'console/warning' | 'console' | 'controller' | 'cookies' | 'copy' | 'credit-card-2-back' | 'credit-card-front' | 'cross' | 'cubes' | 'cursor-trash' | 'dash' | 'dashboard-icn' | 'db-icons/icn-card-clickMap' | 'db-icons/icn-card-errors' | 'db-icons/icn-card-funnel' | 'db-icons/icn-card-funnels' | 'db-icons/icn-card-insights' | 'db-icons/icn-card-library' | 'db-icons/icn-card-mapchart' | 'db-icons/icn-card-pathAnalysis' | 'db-icons/icn-card-performance' | 'db-icons/icn-card-resources' | 'db-icons/icn-card-table' | 'db-icons/icn-card-timeseries' | 'db-icons/icn-card-webVitals' | 'desktop' | 'device' | 'diagram-3' | 'dice-3' | 'dizzy' | 'door-closed' | 'doublecheck' | 'download' | 'drag' | 'edit' | 'ellipsis-v' | 'emoji-dizzy' | 'enter' | 'envelope-check' | 'envelope-paper' | 'envelope-x' | 'envelope' | 'errors-icon' | 'event/click' | 'event/click_hesitation' | 'event/clickrage' | 'event/code' | 'event/i-cursor' | 'event/input' | 'event/input_hesitation' | 'event/link' | 'event/location' | 'event/mouse_thrashing' | 'event/resize' | 'event/view' | 'exclamation-circle-fill' | 'exclamation-circle' | 'exclamation-triangle' | 'expand-wide' | 'explosion' | 'external-link-alt' | 'eye-slash-fill' | 'eye-slash' | 'eye' | 'fetch' | 'fflag-multi' | 'fflag-single' | 'file-bar-graph' | 'file-code' | 'file-medical-alt' | 'file-pdf' | 'file' | 'files' | 'filetype-js' | 'filetype-pdf' | 'filter' | 'filters/arrow-return-right' | 'filters/browser' | 'filters/click' | 'filters/clickrage' | 'filters/code' | 'filters/console' | 'filters/country' | 'filters/cpu-load' | 'filters/custom' | 'filters/device' | 'filters/dom-complete' | 'filters/duration' | 'filters/error' | 'filters/fetch-failed' | 'filters/fetch' | 'filters/file-code' | 'filters/graphql' | 'filters/i-cursor' | 'filters/input' | 'filters/lcpt' | 'filters/link' | 'filters/location' | 'filters/memory-load' | 'filters/metadata' | 'filters/os' | 'filters/perfromance-network-request' | 'filters/platform' | 'filters/referrer' | 'filters/resize' | 'filters/rev-id' | 'filters/state-action' | 'filters/tag-element' | 'filters/ttfb' | 'filters/user-alt' | 'filters/userid' | 'filters/view' | 'flag-na' | 'folder-plus' | 'folder2' | 'fullscreen' | 'funnel/cpu-fill' | 'funnel/cpu' | 'funnel/dizzy' | 'funnel/emoji-angry-fill' | 'funnel/emoji-angry' | 'funnel/emoji-dizzy-fill' | 'funnel/exclamation-circle-fill' | 'funnel/exclamation-circle' | 'funnel/file-earmark-break-fill' | 'funnel/file-earmark-break' | 'funnel/file-earmark-minus-fill' | 'funnel/file-earmark-minus' | 'funnel/file-medical-alt' | 'funnel/file-x' | 'funnel/hdd-fill' | 'funnel/hourglass-top' | 'funnel/image-fill' | 'funnel/image' | 'funnel/microchip' | 'funnel/mouse' | 'funnel/patch-exclamation-fill' | 'funnel/sd-card' | 'funnel-fill' | 'funnel-new' | 'funnel' | 'gear-fill' | 'gear' | 'geo-alt-fill-custom' | 'github' | 'graph-up-arrow' | 'graph-up' | 'grid-1x2' | 'grid-3x3' | 'grid-check' | 'grid-horizontal' | 'grid' | 'grip-horizontal' | 'hash' | 'hdd-stack' | 'headset' | 'heart-rate' | 'high-engagement' | 'history' | 'hourglass-start' | 'ic-errors' | 'ic-network' | 'ic-rage' | 'ic-resources' | 'id-card' | 'image' | 'info-circle-fill' | 'info-circle' | 'info-square' | 'info' | 'input-hesitation' | 'inspect' | 'integrations/assist' | 'integrations/bugsnag-text' | 'integrations/bugsnag' | 'integrations/cloudwatch-text' | 'integrations/cloudwatch' | 'integrations/datadog' | 'integrations/elasticsearch-text' | 'integrations/elasticsearch' | 'integrations/github' | 'integrations/graphql' | 'integrations/jira-text' | 'integrations/jira' | 'integrations/mobx' | 'integrations/newrelic-text' | 'integrations/newrelic' | 'integrations/ngrx' | 'integrations/openreplay-text' | 'integrations/openreplay' | 'integrations/redux' | 'integrations/rollbar-text' | 'integrations/rollbar' | 'integrations/segment' | 'integrations/sentry-text' | 'integrations/sentry' | 'integrations/slack-bw' | 'integrations/slack' | 'integrations/stackdriver' | 'integrations/sumologic-text' | 'integrations/sumologic' | 'integrations/teams-white' | 'integrations/teams' | 'integrations/vuejs' | 'integrations/zustand' | 'journal-code' | 'key' | 'keyboard' | 'layer-group' | 'layers-half' | 'lightbulb-on' | 'lightbulb' | 'link-45deg' | 'list-alt' | 'list-arrow' | 'list-ul' | 'list' | 'lock-alt' | 'low-disc-space' | 'magic' | 'map-marker-alt' | 'memory-ios' | 'memory' | 'mic-mute' | 'mic' | 'minus' | 'mobile' | 'mouse-alt' | 'mouse-pointer-click' | 'network' | 'next1' | 'no-dashboard' | 'no-metrics-chart' | 'no-metrics' | 'no-recordings' | 'os/android' | 'os/chrome_os' | 'os/fedora' | 'os/ios' | 'os/linux' | 'os/mac_os_x' | 'os/other' | 'os/ubuntu' | 'os/windows' | 'os' | 'pause-circle-fill' | 'pause-fill' | 'pause' | 'pdf-download' | 'pencil-stop' | 'pencil' | 'people' | 'percent' | 'performance-icon' | 'person-border' | 'person-fill' | 'person' | 'pie-chart-fill' | 'pin-fill' | 'play-circle-bold' | 'play-circle-light' | 'play-circle' | 'play-fill-new' | 'play-fill' | 'play-hover' | 'play' | 'plug' | 'plus-circle' | 'plus-lg' | 'plus' | 'pointer-sessions-search' | 'prev1' | 'pulse' | 'puzzle-piece' | 'puzzle' | 'question-circle' | 'question-lg' | 'quote-left' | 'quote-right' | 'quotes' | 'record-btn' | 'record-circle-fill' | 'record-circle' | 'record2' | 'redo-back' | 'redo' | 'redux' | 'remote-control' | 'replay-10' | 'resources-icon' | 'safe-fill' | 'safe' | 'sandglass' | 'search' | 'search_notification' | 'server' | 'share-alt' | 'shield-lock' | 'side_menu_closed' | 'side_menu_open' | 'signpost-split' | 'signup' | 'skip-forward-fill' | 'skip-forward' | 'slack' | 'slash-circle' | 'sleep' | 'sliders' | 'social/slack' | 'social/trello' | 'sparkles' | 'speedometer2' | 'spinner' | 'star-solid' | 'star' | 'step-forward' | 'stickies' | 'stop-record-circle' | 'stopwatch' | 'store' | 'sync-alt' | 'table-new' | 'table' | 'tablet-android' | 'tachometer-slow' | 'tachometer-slowest' | 'tags' | 'team-funnel' | 'telephone-fill' | 'telephone' | 'terminal' | 'text-paragraph' | 'thermometer-sun' | 'toggles' | 'tools' | 'trash' | 'turtle' | 'user-alt' | 'user-circle' | 'user-friends' | 'user-switch' | 'users' | 'vendors/graphql' | 'vendors/mobx' | 'vendors/ngrx' | 'vendors/redux' | 'vendors/vuex' | 'web-vitals' | 'wifi' | 'window-alt' | 'window-restore' | 'window-x' | 'window' | 'zoom-in';
interface Props {
name: IconNames;
@@ -1034,6 +1047,45 @@ const SVG = (props: Props) => {
// case 'color/in':
case 'color/in': return ;
+ // case 'color/issues/bad_request':
+ case 'color/issues/bad_request': return ;
+
+ // case 'color/issues/click_rage':
+ case 'color/issues/click_rage': return ;
+
+ // case 'color/issues/cpu':
+ case 'color/issues/cpu': return ;
+
+ // case 'color/issues/crash':
+ case 'color/issues/crash': return ;
+
+ // case 'color/issues/custom':
+ case 'color/issues/custom': return ;
+
+ // case 'color/issues/dead_click':
+ case 'color/issues/dead_click': return ;
+
+ // case 'color/issues/errors':
+ case 'color/issues/errors': return ;
+
+ // case 'color/issues/excessive_scrolling':
+ case 'color/issues/excessive_scrolling': return ;
+
+ // case 'color/issues/js_exception':
+ case 'color/issues/js_exception': return ;
+
+ // case 'color/issues/memory':
+ case 'color/issues/memory': return ;
+
+ // case 'color/issues/missing_resource':
+ case 'color/issues/missing_resource': return ;
+
+ // case 'color/issues/mouse_thrashing':
+ case 'color/issues/mouse_thrashing': return ;
+
+ // case 'color/issues/slow_page_load':
+ case 'color/issues/slow_page_load': return ;
+
// case 'color/microsoft':
case 'color/microsoft': return ;
diff --git a/frontend/app/mstore/types/IconProvider.tsx b/frontend/app/mstore/types/IconProvider.tsx
index a4654633d..e792fd87f 100644
--- a/frontend/app/mstore/types/IconProvider.tsx
+++ b/frontend/app/mstore/types/IconProvider.tsx
@@ -46,17 +46,20 @@ class CountryIconProvider implements IconProvider {
class IssueIconProvider implements IconProvider {
getIcon(name: string): React.ReactNode {
const s = name.toLowerCase();
- // let icon = 'event/' + s; // TODO use this line
- let icon = 'event/clickrage';
+ let icon = 'color/issues/' + s; // TODO use this line
- if (s.includes('dead_click')) {
- icon = 'event/clickrage';
- } else if (s.includes('click_rage')) {
- icon = 'event/clickrage';
- } else if (s.includes('mouse_thrashing')) {
- icon = 'event/clickrage';
- }
+ // if (s.includes('dead_click')) {
+ // icon = 'color/issues/dead_click';
+ // } else if (s.includes('click_rage')) {
+ // icon = 'color/issues/click_rage';
+ // } else if (s.includes('mouse_thrashing')) {
+ // icon = 'color/issues/mouse_thrashing';
+ // } else if (s.includes('bad_request')) {
+ // icon = 'color/issues/bad_request';
+ // } else if (s.includes('crash')) {
+ // icon = 'color/issues/crash';
+ // }
return
}
}
diff --git a/frontend/app/svg/icons/color/issues/bad_request.svg b/frontend/app/svg/icons/color/issues/bad_request.svg
new file mode 100644
index 000000000..fcfc41af5
--- /dev/null
+++ b/frontend/app/svg/icons/color/issues/bad_request.svg
@@ -0,0 +1,10 @@
+
\ No newline at end of file
diff --git a/frontend/app/svg/icons/color/issues/click_rage.svg b/frontend/app/svg/icons/color/issues/click_rage.svg
new file mode 100644
index 000000000..4a0ca78c2
--- /dev/null
+++ b/frontend/app/svg/icons/color/issues/click_rage.svg
@@ -0,0 +1,7 @@
+
\ No newline at end of file
diff --git a/frontend/app/svg/icons/color/issues/cpu.svg b/frontend/app/svg/icons/color/issues/cpu.svg
new file mode 100644
index 000000000..a1cfdc71c
--- /dev/null
+++ b/frontend/app/svg/icons/color/issues/cpu.svg
@@ -0,0 +1,13 @@
+
\ No newline at end of file
diff --git a/frontend/app/svg/icons/color/issues/crash.svg b/frontend/app/svg/icons/color/issues/crash.svg
new file mode 100644
index 000000000..bcd81ac45
--- /dev/null
+++ b/frontend/app/svg/icons/color/issues/crash.svg
@@ -0,0 +1,8 @@
+
\ No newline at end of file
diff --git a/frontend/app/svg/icons/color/issues/custom.svg b/frontend/app/svg/icons/color/issues/custom.svg
new file mode 100644
index 000000000..b9553e452
--- /dev/null
+++ b/frontend/app/svg/icons/color/issues/custom.svg
@@ -0,0 +1,7 @@
+
\ No newline at end of file
diff --git a/frontend/app/svg/icons/color/issues/dead_click.svg b/frontend/app/svg/icons/color/issues/dead_click.svg
new file mode 100644
index 000000000..b4961ffed
--- /dev/null
+++ b/frontend/app/svg/icons/color/issues/dead_click.svg
@@ -0,0 +1,13 @@
+
\ No newline at end of file
diff --git a/frontend/app/svg/icons/color/issues/errors.svg b/frontend/app/svg/icons/color/issues/errors.svg
new file mode 100644
index 000000000..be7dc9917
--- /dev/null
+++ b/frontend/app/svg/icons/color/issues/errors.svg
@@ -0,0 +1,6 @@
+
\ No newline at end of file
diff --git a/frontend/app/svg/icons/color/issues/excessive_scrolling.svg b/frontend/app/svg/icons/color/issues/excessive_scrolling.svg
new file mode 100644
index 000000000..5170cea16
--- /dev/null
+++ b/frontend/app/svg/icons/color/issues/excessive_scrolling.svg
@@ -0,0 +1,6 @@
+
\ No newline at end of file
diff --git a/frontend/app/svg/icons/color/issues/js_exception.svg b/frontend/app/svg/icons/color/issues/js_exception.svg
new file mode 100644
index 000000000..be7dc9917
--- /dev/null
+++ b/frontend/app/svg/icons/color/issues/js_exception.svg
@@ -0,0 +1,6 @@
+
\ No newline at end of file
diff --git a/frontend/app/svg/icons/color/issues/memory.svg b/frontend/app/svg/icons/color/issues/memory.svg
new file mode 100644
index 000000000..12ea0fa9e
--- /dev/null
+++ b/frontend/app/svg/icons/color/issues/memory.svg
@@ -0,0 +1,12 @@
+
\ No newline at end of file
diff --git a/frontend/app/svg/icons/color/issues/missing_resource.svg b/frontend/app/svg/icons/color/issues/missing_resource.svg
new file mode 100644
index 000000000..23197f14d
--- /dev/null
+++ b/frontend/app/svg/icons/color/issues/missing_resource.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/frontend/app/svg/icons/color/issues/mouse_thrashing.svg b/frontend/app/svg/icons/color/issues/mouse_thrashing.svg
new file mode 100644
index 000000000..318e9b8fc
--- /dev/null
+++ b/frontend/app/svg/icons/color/issues/mouse_thrashing.svg
@@ -0,0 +1,5 @@
+
\ No newline at end of file
diff --git a/frontend/app/svg/icons/color/issues/slow_page_load.svg b/frontend/app/svg/icons/color/issues/slow_page_load.svg
new file mode 100644
index 000000000..4206af9cf
--- /dev/null
+++ b/frontend/app/svg/icons/color/issues/slow_page_load.svg
@@ -0,0 +1,20 @@
+
\ No newline at end of file