Skip to content

Commit bc98950

Browse files
committed
refactor: use shared app modes provider from build-tools
1 parent 488a05f commit bc98950

4 files changed

Lines changed: 77 additions & 82 deletions

File tree

package-lock.json

Lines changed: 54 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pages/app/index.tsx

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,27 @@
22
// SPDX-License-Identifier: Apache-2.0
33
import { HashRouter, Link, Route, Routes, useLocation } from "react-router-dom";
44

5+
import { AppModesProvider, type AppUrlParams } from "@cloudscape-design/build-tools/lib/dev-pages-utils";
6+
import { applyDensity, applyMode, Density, disableMotion, Mode } from "@cloudscape-design/global-styles";
7+
58
import { pages } from "../pages";
69
import Page from "./page";
710

11+
function applyModes(params: AppUrlParams, target?: Element) {
12+
applyMode(params.mode as Mode, target);
13+
applyDensity(params.density as Density, target);
14+
disableMotion(params.motionDisabled, target);
15+
}
16+
817
export default function App() {
918
return (
1019
<HashRouter>
11-
<Routes>
12-
<Route path="/" element={<Start />} />
13-
<Route path="/*" element={<PageWithFallback />} />
14-
</Routes>
20+
<AppModesProvider applyModes={applyModes}>
21+
<Routes>
22+
<Route path="/" element={<Start />} />
23+
<Route path="/*" element={<PageWithFallback />} />
24+
</Routes>
25+
</AppModesProvider>
1526
</HashRouter>
1627
);
1728
}

pages/app/page.tsx

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,20 @@
22
// SPDX-License-Identifier: Apache-2.0
33
import { Suspense } from "react";
44

5+
import { useAppModes } from "@cloudscape-design/build-tools/lib/dev-pages-utils";
56
import { SpaceBetween, Toggle } from "@cloudscape-design/components";
67
import { Density, Mode } from "@cloudscape-design/global-styles";
78

89
import { pagesMap } from "../pages";
910
import PageLayout from "./page-layout";
10-
import useModes from "./use-modes";
1111

1212
export interface PageProps {
1313
pageId: string;
1414
}
1515

1616
export default function Page({ pageId }: PageProps) {
1717
const Component = pagesMap[pageId];
18-
const { mode, density, setParams } = useModes();
18+
const { urlParams, setUrlParams } = useAppModes();
1919

2020
return (
2121
<PageLayout>
@@ -24,14 +24,16 @@ export default function Page({ pageId }: PageProps) {
2424
<a href="/index.html#">Back to all pages</a>
2525
<SpaceBetween direction="horizontal" size="m">
2626
<Toggle
27-
checked={mode === Mode.Dark}
28-
onChange={(event) => setParams({ mode: event.detail.checked ? Mode.Dark : Mode.Light })}
27+
checked={urlParams.mode === Mode.Dark}
28+
onChange={(event) => setUrlParams({ mode: event.detail.checked ? Mode.Dark : Mode.Light })}
2929
>
3030
Dark mode
3131
</Toggle>
3232
<Toggle
33-
checked={density === Density.Compact}
34-
onChange={(event) => setParams({ density: event.detail.checked ? Density.Compact : Density.Comfortable })}
33+
checked={urlParams.density === Density.Compact}
34+
onChange={(event) =>
35+
setUrlParams({ density: event.detail.checked ? Density.Compact : Density.Comfortable })
36+
}
3537
>
3638
Compact mode
3739
</Toggle>

pages/app/use-modes.tsx

Lines changed: 0 additions & 72 deletions
This file was deleted.

0 commit comments

Comments
 (0)