@firecms/core 3.0.0-canary.184 → 3.0.0-canary.186

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@firecms/core",
3
3
  "type": "module",
4
- "version": "3.0.0-canary.184",
4
+ "version": "3.0.0-canary.186",
5
5
  "description": "Awesome Firebase/Firestore-based headless open-source CMS",
6
6
  "funding": {
7
7
  "url": "https://github.com/sponsors/firecmsco"
@@ -50,9 +50,9 @@
50
50
  "./package.json": "./package.json"
51
51
  },
52
52
  "dependencies": {
53
- "@firecms/editor": "^3.0.0-canary.184",
54
- "@firecms/formex": "^3.0.0-canary.184",
55
- "@firecms/ui": "^3.0.0-canary.184",
53
+ "@firecms/editor": "^3.0.0-canary.186",
54
+ "@firecms/formex": "^3.0.0-canary.186",
55
+ "@firecms/ui": "^3.0.0-canary.186",
56
56
  "@hello-pangea/dnd": "^17.0.0",
57
57
  "@radix-ui/react-portal": "^1.1.3",
58
58
  "clsx": "^2.1.1",
@@ -104,7 +104,7 @@
104
104
  "dist",
105
105
  "src"
106
106
  ],
107
- "gitHead": "ece7ace38466826a58d560fcebd154e74ecedd6b",
107
+ "gitHead": "968beff28cddecbacc6740dc5e75288bf423746e",
108
108
  "publishConfig": {
109
109
  "access": "public"
110
110
  },
@@ -3,10 +3,8 @@ import { ModeController } from "../hooks";
3
3
 
4
4
  const DEFAULT_MODE_STATE: ModeController = {
5
5
  mode: "light",
6
- setMode: (mode: "light" | "dark") => {
6
+ setMode: (mode: "light" | "dark" | "system") => {
7
7
  },
8
- toggleMode: () => {
9
- }
10
8
  };
11
9
  export const ModeControllerContext = React.createContext<ModeController>(DEFAULT_MODE_STATE);
12
10
 
@@ -4,6 +4,7 @@ import { Link, useNavigate } from "react-router-dom";
4
4
  import { ErrorBoundary, FireCMSLogo } from "../components";
5
5
  import {
6
6
  Avatar,
7
+ BrightnessMediumIcon,
7
8
  cls,
8
9
  DarkModeIcon,
9
10
  IconButton,
@@ -71,7 +72,7 @@ export const DefaultAppBar = function DefaultAppBar({
71
72
  const authController = useAuthController();
72
73
  const {
73
74
  mode,
74
- toggleMode
75
+ setMode
75
76
  } = useModeController();
76
77
 
77
78
  const navigate = useNavigate();
@@ -163,15 +164,20 @@ export const DefaultAppBar = function DefaultAppBar({
163
164
  {endAdornment}
164
165
  </ErrorBoundary>}
165
166
 
166
- {includeModeToggle && <IconButton
167
- color="inherit"
168
- aria-label="Open drawer"
169
- onClick={toggleMode}
170
- size="large">
171
- {mode === "dark"
172
- ? <DarkModeIcon/>
173
- : <LightModeIcon/>}
174
- </IconButton>}
167
+ {includeModeToggle &&
168
+ <Menu
169
+ trigger={<IconButton
170
+ color="inherit"
171
+ aria-label="Open drawer"
172
+ size="large">
173
+ {mode === "dark"
174
+ ? <DarkModeIcon/>
175
+ : <LightModeIcon/>}
176
+ </IconButton>}>
177
+ <MenuItem onClick={() => setMode("dark")}><DarkModeIcon size={"smallest"}/> Dark</MenuItem>
178
+ <MenuItem onClick={() => setMode("light")}><LightModeIcon size={"smallest"}/> Light </MenuItem>
179
+ <MenuItem onClick={() => setMode("system")}> <BrightnessMediumIcon size={"smallest"}/>System</MenuItem>
180
+ </Menu>}
175
181
 
176
182
  <Menu trigger={avatarComponent}>
177
183
  {user && <div className={"px-4 py-2 mb-2"}>
@@ -16,7 +16,7 @@ export function useBuildModeController(): ModeController {
16
16
  }, []);
17
17
 
18
18
  const prefersDarkModeStorage: boolean | null = localStorage.getItem("prefers-dark-mode") != null ? localStorage.getItem("prefers-dark-mode") === "true" : null;
19
- const prefersDarkMode = prefersDarkModeStorage ?? prefersDarkModeQuery;
19
+ const prefersDarkMode = prefersDarkModeStorage ?? prefersDarkModeQuery();
20
20
  const [mode, setMode] = useState<"light" | "dark">(prefersDarkMode ? "dark" : "light");
21
21
 
22
22
  useEffect(() => {
@@ -24,43 +24,30 @@ export function useBuildModeController(): ModeController {
24
24
  setDocumentMode(prefersDarkMode ? "dark" : "light");
25
25
  }, [prefersDarkMode]);
26
26
 
27
- // color-scheme: dark;
28
- const setDarkMode = useCallback(() => {
29
- setMode("dark");
30
- setDocumentMode("dark");
31
- }, []);
32
-
33
- const setLightMode = useCallback(() => {
34
- setMode("light");
35
- setDocumentMode("light");
36
- }, []);
37
-
38
27
  const setDocumentMode = (mode: "light" | "dark") => {
39
28
  document.body.style.setProperty("color-scheme", mode);
40
29
  document.documentElement.dataset.theme = mode;
41
30
  };
42
31
 
43
- const toggleMode = useCallback(() => {
44
-
45
- const prefersDarkModeQueryResult = prefersDarkModeQuery();
32
+ const setModeInternal = useCallback((mode: "light" | "dark" | "system") => {
46
33
  if (mode === "light") {
47
- if (!prefersDarkModeQueryResult)
48
- localStorage.setItem("prefers-dark-mode", "true");
49
- else
50
- localStorage.removeItem("prefers-dark-mode");
51
- setDarkMode();
34
+ setDocumentMode("light");
35
+ localStorage.setItem("prefers-dark-mode", "false");
36
+ setMode("light");
37
+ } else if (mode === "dark") {
38
+ setDocumentMode("dark");
39
+ localStorage.setItem("prefers-dark-mode", "true");
40
+ setMode("dark");
52
41
  } else {
53
- if (prefersDarkModeQueryResult)
54
- localStorage.setItem("prefers-dark-mode", "false");
55
- else
56
- localStorage.removeItem("prefers-dark-mode");
57
- setLightMode();
42
+ const preferredMode = prefersDarkModeQuery() ? "dark" : "light";
43
+ setDocumentMode(preferredMode);
44
+ localStorage.removeItem("prefers-dark-mode");
45
+ setMode(preferredMode);
58
46
  }
59
- }, [mode, prefersDarkModeQuery]);
47
+ }, [prefersDarkModeQuery]);
60
48
 
61
49
  return {
62
50
  mode,
63
- setMode,
64
- toggleMode
51
+ setMode: setModeInternal
65
52
  };
66
53
  }
@@ -7,8 +7,7 @@ import { useContext } from "react";
7
7
  */
8
8
  export interface ModeController {
9
9
  mode: "light" | "dark";
10
- setMode: (mode: "light" | "dark") => void;
11
- toggleMode: () => void;
10
+ setMode: (mode: "light" | "dark" | "system") => void;
12
11
  }
13
12
 
14
13
  /**