diff --git a/modules/slowzones/SystemSlowZonesDetails.tsx b/modules/slowzones/SystemSlowZonesDetails.tsx
index 133cda3cd..99aa0fff7 100644
--- a/modules/slowzones/SystemSlowZonesDetails.tsx
+++ b/modules/slowzones/SystemSlowZonesDetails.tsx
@@ -39,6 +39,7 @@ export function SystemSlowZonesDetails({ showTitle = false }: SystemSlowZonesDet
const [lineShort, setLineShort] = useState
('Red');
const line = `line-${lineShort.toLowerCase()}` as Line;
const canShowSlowZonesMap = lineShort === 'Red' || lineShort === 'Blue' || lineShort === 'Orange';
+ const isDesktop = useBreakpoint('lg');
const {
query: { startDate, endDate },
@@ -100,7 +101,7 @@ export function SystemSlowZonesDetails({ showTitle = false }: SystemSlowZonesDet
slowZones={isArray(allData.data) ? allData.data : allData.data.data}
speedRestrictions={speedRestrictions.data}
lineName={lineShort}
- direction="horizontal-on-desktop"
+ direction={isDesktop ? 'horizontal' : 'vertical'}
/>
) : (
diff --git a/modules/slowzones/map/SlowZonesMap.tsx b/modules/slowzones/map/SlowZonesMap.tsx
index 96c804435..4954076d8 100644
--- a/modules/slowzones/map/SlowZonesMap.tsx
+++ b/modules/slowzones/map/SlowZonesMap.tsx
@@ -1,12 +1,13 @@
import React, { useMemo } from 'react';
+import type { SegmentLocation, SegmentLabel, TooltipSide } from '@transitmatters/stripmap';
+import { LineMap, createDefaultDiagramForLine } from '@transitmatters/stripmap';
+
+import '@transitmatters/stripmap/dist/style.css';
import { LINE_OBJECTS } from '../../../common/constants/lines';
-import type { SegmentLocation } from '../../../common/components/maps';
-import { LineMap, createDefaultDiagramForLine } from '../../../common/components/maps';
import type { SlowZoneResponse, SpeedRestriction } from '../../../common/types/dataPoints';
import type { SlowZonesLineName } from '../types';
-import type { SegmentLabel, TooltipSide } from '../../../common/components/maps/LineMap';
import { getSlowZoneOpacity } from '../../../common/utils/slowZoneUtils';
import { useDelimitatedRoute } from '../../../common/utils/router';
import { TODAY_STRING } from '../../../common/constants/dates';
diff --git a/modules/slowzones/map/SlowZonesTooltip.tsx b/modules/slowzones/map/SlowZonesTooltip.tsx
index 4bc0234d0..81e95cd75 100644
--- a/modules/slowzones/map/SlowZonesTooltip.tsx
+++ b/modules/slowzones/map/SlowZonesTooltip.tsx
@@ -1,11 +1,11 @@
import React, { useMemo } from 'react';
import classNames from 'classnames';
+import type { TooltipSide } from '@transitmatters/stripmap';
import { getParentStationForStopId } from '../../../common/utils/stations';
import { BasicWidgetDataLayout } from '../../../common/components/widgets/internal/BasicWidgetDataLayout';
import { DeltaTimeWidgetValue } from '../../../common/types/basicWidgets';
-import type { TooltipSide } from '../../../common/components/maps/LineMap';
import type { SlowZoneResponse, SpeedRestriction } from '../../../common/types/dataPoints';
import { prettyDate } from '../../../common/utils/date';
diff --git a/modules/slowzones/map/segment.ts b/modules/slowzones/map/segment.ts
index a7ed07ff1..3b13aa5ab 100644
--- a/modules/slowzones/map/segment.ts
+++ b/modules/slowzones/map/segment.ts
@@ -1,4 +1,5 @@
-import type { Diagram, SegmentLocation } from '../../../common/components/maps';
+import type { Diagram, SegmentLocation } from '@transitmatters/stripmap';
+
import type { SlowZoneResponse, SpeedRestriction } from '../../../common/types/dataPoints';
import type { LineShort } from '../../../common/types/lines';
import type { Station } from '../../../common/types/stations';
diff --git a/package-lock.json b/package-lock.json
index 45568af3e..481f4b1c2 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -19,6 +19,7 @@
"@tanstack/react-query": "^5.32.0",
"@tanstack/react-query-devtools": "^5.32.0",
"@tippyjs/react": "^4.2.6",
+ "@transitmatters/stripmap": "^0.1.9",
"@types/react-flatpickr": "^3.8.11",
"bezier-js": "^6.1.4",
"chart.js": "4.4.3",
@@ -2120,6 +2121,11 @@
"tslib": "^2.4.0"
}
},
+ "node_modules/@emotion/hash": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz",
+ "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ=="
+ },
"node_modules/@emotion/use-insertion-effect-with-fallbacks": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz",
@@ -6171,6 +6177,18 @@
"react-dom": ">=16.8"
}
},
+ "node_modules/@transitmatters/stripmap": {
+ "version": "0.1.9",
+ "resolved": "https://registry.npmjs.org/@transitmatters/stripmap/-/stripmap-0.1.9.tgz",
+ "integrity": "sha512-ccD1wmbsOjCM6GY9vddqKeFXQrClcn5qUahpiYVU0I141Xq86SsuYPBR90za0EK1Se1rfD6fh3ubH1yShAkQ9Q==",
+ "dependencies": {
+ "@vanilla-extract/css": "^1.15.3",
+ "bezier-js": "^6.1.4"
+ },
+ "peerDependencies": {
+ "react": "^17.0.0 || ^18.0.0"
+ }
+ },
"node_modules/@trysound/sax": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz",
@@ -6739,6 +6757,42 @@
"integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
"dev": true
},
+ "node_modules/@vanilla-extract/css": {
+ "version": "1.15.3",
+ "resolved": "https://registry.npmjs.org/@vanilla-extract/css/-/css-1.15.3.tgz",
+ "integrity": "sha512-mxoskDAxdQAspbkmQRxBvolUi1u1jnyy9WZGm+GeH8V2wwhEvndzl1QoK7w8JfA0WFevTxbev5d+i+xACZlPhA==",
+ "dependencies": {
+ "@emotion/hash": "^0.9.0",
+ "@vanilla-extract/private": "^1.0.5",
+ "css-what": "^6.1.0",
+ "cssesc": "^3.0.0",
+ "csstype": "^3.0.7",
+ "dedent": "^1.5.3",
+ "deep-object-diff": "^1.1.9",
+ "deepmerge": "^4.2.2",
+ "media-query-parser": "^2.0.2",
+ "modern-ahocorasick": "^1.0.0",
+ "picocolors": "^1.0.0"
+ }
+ },
+ "node_modules/@vanilla-extract/css/node_modules/dedent": {
+ "version": "1.5.3",
+ "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz",
+ "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==",
+ "peerDependencies": {
+ "babel-plugin-macros": "^3.1.0"
+ },
+ "peerDependenciesMeta": {
+ "babel-plugin-macros": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vanilla-extract/private": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@vanilla-extract/private/-/private-1.0.5.tgz",
+ "integrity": "sha512-6YXeOEKYTA3UV+RC8DeAjFk+/okoNz/h88R+McnzA2zpaVqTR/Ep+vszkWYlGBcMNO7vEkqbq5nT/JMMvhi+tw=="
+ },
"node_modules/@vitest/expect": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.3.1.tgz",
@@ -9754,7 +9808,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
"integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
- "dev": true,
"bin": {
"cssesc": "bin/cssesc"
},
@@ -9977,6 +10030,11 @@
"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
"dev": true
},
+ "node_modules/deep-object-diff": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/deep-object-diff/-/deep-object-diff-1.1.9.tgz",
+ "integrity": "sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA=="
+ },
"node_modules/deepmerge": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
@@ -15193,6 +15251,14 @@
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
"integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA=="
},
+ "node_modules/media-query-parser": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/media-query-parser/-/media-query-parser-2.0.2.tgz",
+ "integrity": "sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==",
+ "dependencies": {
+ "@babel/runtime": "^7.12.5"
+ }
+ },
"node_modules/media-typer": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
@@ -15454,6 +15520,11 @@
"integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
"dev": true
},
+ "node_modules/modern-ahocorasick": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/modern-ahocorasick/-/modern-ahocorasick-1.0.1.tgz",
+ "integrity": "sha512-yoe+JbhTClckZ67b2itRtistFKf8yPYelHLc7e5xAwtNAXxM6wJTUx2C7QeVSJFDzKT7bCIFyBVybPMKvmB9AA=="
+ },
"node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
diff --git a/package.json b/package.json
index f36d53d62..b772c420a 100644
--- a/package.json
+++ b/package.json
@@ -13,6 +13,7 @@
"@tanstack/react-query": "^5.32.0",
"@tanstack/react-query-devtools": "^5.32.0",
"@tippyjs/react": "^4.2.6",
+ "@transitmatters/stripmap": "^0.1.9",
"@types/react-flatpickr": "^3.8.11",
"bezier-js": "^6.1.4",
"chart.js": "4.4.3",