Skip to content

Commit ced08bc

Browse files
committed
Add color scheme toggle to mobile app
1 parent 8aa844a commit ced08bc

30 files changed

+418
-260
lines changed

package-lock.json

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

packages/mobile-app/app/(tabs)/ui.tsx

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,22 @@
1-
import { Button } from "@ironfish/ui";
2-
import { View } from "react-native";
1+
import { Button } from "@ironfish/tackle-box";
2+
import { Appearance, useColorScheme, View } from "react-native";
33

44
export default function UiKit() {
5+
const scheme = useColorScheme();
56
return (
67
<View
78
style={{
89
gap: 10,
910
padding: 10,
11+
backgroundColor: scheme === "dark" ? "#333" : "#fff",
1012
}}
1113
>
14+
<Button
15+
label="Toggle color scheme"
16+
onPress={() => {
17+
Appearance.setColorScheme(scheme === "dark" ? "light" : "dark");
18+
}}
19+
/>
1220
{/* Solid */}
1321
<Button label="Click me" />
1422

packages/mobile-app/app/_layout.tsx

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
1010
import { useColorScheme } from "react-native";
1111
import { FacadeProvider, useFacade } from "../data/facades";
1212
import { useEffect, useState } from "react";
13+
import { ColorScheme } from "@ironfish/tackle-box";
1314

1415
const queryClient = new QueryClient();
1516

@@ -45,20 +46,22 @@ export default function Layout() {
4546
const scheme = useColorScheme();
4647
return (
4748
<ThemeProvider value={scheme === "dark" ? DarkTheme : DefaultTheme}>
48-
<QueryClientProvider client={queryClient}>
49-
<FacadeProvider>
50-
<DatabaseLoader loading={<Text>Loading databases...</Text>}>
51-
<Stack>
52-
<Stack.Screen
53-
name="(tabs)"
54-
options={{
55-
headerShown: false,
56-
}}
57-
/>
58-
</Stack>
59-
</DatabaseLoader>
60-
</FacadeProvider>
61-
</QueryClientProvider>
49+
<ColorScheme scheme={scheme === "dark" ? "_dark" : "_light"}>
50+
<QueryClientProvider client={queryClient}>
51+
<FacadeProvider>
52+
<DatabaseLoader loading={<Text>Loading databases...</Text>}>
53+
<Stack>
54+
<Stack.Screen
55+
name="(tabs)"
56+
options={{
57+
headerShown: false,
58+
}}
59+
/>
60+
</Stack>
61+
</DatabaseLoader>
62+
</FacadeProvider>
63+
</QueryClientProvider>
64+
</ColorScheme>
6265
</ThemeProvider>
6366
);
6467
}

packages/mobile-app/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
},
1313
"dependencies": {
1414
"@ironfish/sdk": "2.2.0",
15-
"@ironfish/ui": "*",
15+
"@ironfish/tackle-box": "*",
1616
"data-facade": "*",
1717
"expo": "51.0.18",
1818
"expo-constants": "~16.0.2",
File renamed without changes.
File renamed without changes.
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import React from "react";
2+
import type { Preview } from "@storybook/react";
3+
import { ColorScheme } from "../src/components/ColorScheme/ColorScheme";
4+
5+
const preview: Preview = {
6+
parameters: {
7+
controls: {
8+
matchers: {
9+
color: /(background|color)$/i,
10+
date: /Date$/i,
11+
},
12+
},
13+
},
14+
decorators: [
15+
(Story, { context }) => {
16+
const isDarkMode = context.globals?.backgrounds?.value === "#333333";
17+
return (
18+
<ColorScheme scheme={isDarkMode ? "_dark" : "_light"}>
19+
<Story />
20+
</ColorScheme>
21+
);
22+
},
23+
],
24+
};
25+
26+
export default preview;
File renamed without changes.

0 commit comments

Comments
 (0)