@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.
@@ -4,8 +4,7 @@
4
4
  */
5
5
  export interface ModeController {
6
6
  mode: "light" | "dark";
7
- setMode: (mode: "light" | "dark") => void;
8
- toggleMode: () => void;
7
+ setMode: (mode: "light" | "dark" | "system") => void;
9
8
  }
10
9
  /**
11
10
  * Hook to retrieve the current mode ("light" | "dark"), and `setMode`
package/dist/index.es.js CHANGED
@@ -2,7 +2,7 @@ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
2
  import { c } from "react-compiler-runtime";
3
3
  import * as React from "react";
4
4
  import React__default, { forwardRef, useState, useRef, useEffect, useContext, useCallback, useMemo, createRef, createContext, useLayoutEffect, useDeferredValue, createElement } from "react";
5
- import { getColorSchemeForSeed, CHIP_COLORS, Tooltip, IconButton, InfoIcon, Typography, cls, ContentCopyIcon, CircleIcon, FunctionsIcon, iconKeys, coolIconKeys, Icon, ErrorIcon, defaultBorderMixin, OpenInNewIcon, TextareaAutosize, focusedDisabled, MultiSelect, MultiSelectItem, Select, SelectItem, BooleanSwitch, DateTimeField, Skeleton, paperMixin, EditIcon, KeyboardTabIcon, DoNotDisturbOnIcon, Menu, MoreVertIcon, MenuItem, Checkbox, Chip, CircularProgress, SearchBar, Badge, ArrowUpwardIcon, Popover, FilterListIcon, Button, CenteredView, AssignmentIcon, Label, CloseIcon, TextField, BooleanSwitchWithLabel, useOutsideAlerter, Dialog, DialogTitle, DialogContent, DialogActions, FileCopyIcon, DeleteIcon, AddIcon, ExpandablePanel, Markdown, ArrowForwardIcon, Card, cardMixin, cardClickableMixin, StarIcon, Collapse, Container, NotesIcon, Alert, Tab, Tabs, LoadingButton, CheckIcon, FilterListOffIcon, SearchIcon, Avatar, DarkModeIcon, LightModeIcon, LogoutIcon, HandleIcon, RemoveIcon, KeyboardArrowUpIcon, KeyboardArrowDownIcon, debounce, DescriptionIcon, fieldBackgroundMixin, fieldBackgroundHoverMixin, fieldBackgroundDisabledMixin, ArrowDropDownIcon, ShortTextIcon, SubjectIcon, FormatQuoteIcon, HttpIcon, MailIcon, FlagIcon, ListIcon, ListAltIcon, NumbersIcon, FormatListNumberedIcon, UploadFileIcon, DriveFolderUploadIcon, LinkIcon, AddLinkIcon, ScheduleIcon, BallotIcon, RepeatIcon, ViewStreamIcon, Sheet, OpenInFullIcon, MenuIcon, ChevronLeftIcon } from "@firecms/ui";
5
+ import { getColorSchemeForSeed, CHIP_COLORS, Tooltip, IconButton, InfoIcon, Typography, cls, ContentCopyIcon, CircleIcon, FunctionsIcon, iconKeys, coolIconKeys, Icon, ErrorIcon, defaultBorderMixin, OpenInNewIcon, TextareaAutosize, focusedDisabled, MultiSelect, MultiSelectItem, Select, SelectItem, BooleanSwitch, DateTimeField, Skeleton, paperMixin, EditIcon, KeyboardTabIcon, DoNotDisturbOnIcon, Menu, MoreVertIcon, MenuItem, Checkbox, Chip, CircularProgress, SearchBar, Badge, ArrowUpwardIcon, Popover, FilterListIcon, Button, CenteredView, AssignmentIcon, Label, CloseIcon, TextField, BooleanSwitchWithLabel, useOutsideAlerter, Dialog, DialogTitle, DialogContent, DialogActions, FileCopyIcon, DeleteIcon, AddIcon, ExpandablePanel, Markdown, ArrowForwardIcon, Card, cardMixin, cardClickableMixin, StarIcon, Collapse, Container, NotesIcon, Alert, Tab, Tabs, LoadingButton, CheckIcon, FilterListOffIcon, SearchIcon, Avatar, DarkModeIcon, LightModeIcon, BrightnessMediumIcon, LogoutIcon, HandleIcon, RemoveIcon, KeyboardArrowUpIcon, KeyboardArrowDownIcon, debounce, DescriptionIcon, fieldBackgroundMixin, fieldBackgroundHoverMixin, fieldBackgroundDisabledMixin, ArrowDropDownIcon, ShortTextIcon, SubjectIcon, FormatQuoteIcon, HttpIcon, MailIcon, FlagIcon, ListIcon, ListAltIcon, NumbersIcon, FormatListNumberedIcon, UploadFileIcon, DriveFolderUploadIcon, LinkIcon, AddLinkIcon, ScheduleIcon, BallotIcon, RepeatIcon, ViewStreamIcon, Sheet, OpenInFullIcon, MenuIcon, ChevronLeftIcon } from "@firecms/ui";
6
6
  import { SnackbarProvider as SnackbarProvider$1, useSnackbar } from "notistack";
7
7
  import hash from "object-hash";
8
8
  import { useFormex, setIn, getIn, useCreateFormex, Formex, Field } from "@firecms/formex";
@@ -38,8 +38,6 @@ const SnackbarProvider = (t0) => {
38
38
  const DEFAULT_MODE_STATE = {
39
39
  mode: "light",
40
40
  setMode: (mode) => {
41
- },
42
- toggleMode: () => {
43
41
  }
44
42
  };
45
43
  const ModeControllerContext = React__default.createContext(DEFAULT_MODE_STATE);
@@ -13586,7 +13584,7 @@ const DefaultAppBar = function DefaultAppBar2(t0) {
13586
13584
  const authController = useAuthController();
13587
13585
  const {
13588
13586
  mode,
13589
- toggleMode
13587
+ setMode
13590
13588
  } = useModeController();
13591
13589
  const navigate = useNavigate();
13592
13590
  const largeLayout = useLargeLayout();
@@ -13686,11 +13684,25 @@ const DefaultAppBar = function DefaultAppBar2(t0) {
13686
13684
  t9 = $[22];
13687
13685
  }
13688
13686
  let t10;
13689
- if ($[23] !== includeModeToggle || $[24] !== mode || $[25] !== toggleMode) {
13690
- t10 = includeModeToggle && /* @__PURE__ */ jsx(IconButton, { color: "inherit", "aria-label": "Open drawer", onClick: toggleMode, size: "large", children: mode === "dark" ? /* @__PURE__ */ jsx(DarkModeIcon, {}) : /* @__PURE__ */ jsx(LightModeIcon, {}) });
13687
+ if ($[23] !== includeModeToggle || $[24] !== mode || $[25] !== setMode) {
13688
+ t10 = includeModeToggle && /* @__PURE__ */ jsxs(Menu, { trigger: /* @__PURE__ */ jsx(IconButton, { color: "inherit", "aria-label": "Open drawer", size: "large", children: mode === "dark" ? /* @__PURE__ */ jsx(DarkModeIcon, {}) : /* @__PURE__ */ jsx(LightModeIcon, {}) }), children: [
13689
+ /* @__PURE__ */ jsxs(MenuItem, { onClick: () => setMode("dark"), children: [
13690
+ /* @__PURE__ */ jsx(DarkModeIcon, { size: "smallest" }),
13691
+ " Dark"
13692
+ ] }),
13693
+ /* @__PURE__ */ jsxs(MenuItem, { onClick: () => setMode("light"), children: [
13694
+ /* @__PURE__ */ jsx(LightModeIcon, { size: "smallest" }),
13695
+ " Light "
13696
+ ] }),
13697
+ /* @__PURE__ */ jsxs(MenuItem, { onClick: () => setMode("system"), children: [
13698
+ " ",
13699
+ /* @__PURE__ */ jsx(BrightnessMediumIcon, { size: "smallest" }),
13700
+ "System"
13701
+ ] })
13702
+ ] });
13691
13703
  $[23] = includeModeToggle;
13692
13704
  $[24] = mode;
13693
- $[25] = toggleMode;
13705
+ $[25] = setMode;
13694
13706
  $[26] = t10;
13695
13707
  } else {
13696
13708
  t10 = $[26];
@@ -14824,40 +14836,35 @@ function useBuildModeController() {
14824
14836
  return mediaQueryList.matches;
14825
14837
  }, []);
14826
14838
  const prefersDarkModeStorage = localStorage.getItem("prefers-dark-mode") != null ? localStorage.getItem("prefers-dark-mode") === "true" : null;
14827
- const prefersDarkMode = prefersDarkModeStorage ?? prefersDarkModeQuery;
14839
+ const prefersDarkMode = prefersDarkModeStorage ?? prefersDarkModeQuery();
14828
14840
  const [mode, setMode] = useState(prefersDarkMode ? "dark" : "light");
14829
14841
  useEffect(() => {
14830
14842
  setMode(prefersDarkMode ? "dark" : "light");
14831
14843
  setDocumentMode(prefersDarkMode ? "dark" : "light");
14832
14844
  }, [prefersDarkMode]);
14833
- const setDarkMode = useCallback(() => {
14834
- setMode("dark");
14835
- setDocumentMode("dark");
14836
- }, []);
14837
- const setLightMode = useCallback(() => {
14838
- setMode("light");
14839
- setDocumentMode("light");
14840
- }, []);
14841
14845
  const setDocumentMode = (mode_0) => {
14842
14846
  document.body.style.setProperty("color-scheme", mode_0);
14843
14847
  document.documentElement.dataset.theme = mode_0;
14844
14848
  };
14845
- const toggleMode = useCallback(() => {
14846
- const prefersDarkModeQueryResult = prefersDarkModeQuery();
14847
- if (mode === "light") {
14848
- if (!prefersDarkModeQueryResult) localStorage.setItem("prefers-dark-mode", "true");
14849
- else localStorage.removeItem("prefers-dark-mode");
14850
- setDarkMode();
14849
+ const setModeInternal = useCallback((mode_1) => {
14850
+ if (mode_1 === "light") {
14851
+ setDocumentMode("light");
14852
+ localStorage.setItem("prefers-dark-mode", "false");
14853
+ setMode("light");
14854
+ } else if (mode_1 === "dark") {
14855
+ setDocumentMode("dark");
14856
+ localStorage.setItem("prefers-dark-mode", "true");
14857
+ setMode("dark");
14851
14858
  } else {
14852
- if (prefersDarkModeQueryResult) localStorage.setItem("prefers-dark-mode", "false");
14853
- else localStorage.removeItem("prefers-dark-mode");
14854
- setLightMode();
14859
+ const preferredMode = prefersDarkModeQuery() ? "dark" : "light";
14860
+ setDocumentMode(preferredMode);
14861
+ localStorage.removeItem("prefers-dark-mode");
14862
+ setMode(preferredMode);
14855
14863
  }
14856
- }, [mode, prefersDarkModeQuery]);
14864
+ }, [prefersDarkModeQuery]);
14857
14865
  return {
14858
14866
  mode,
14859
- setMode,
14860
- toggleMode
14867
+ setMode: setModeInternal
14861
14868
  };
14862
14869
  }
14863
14870
  function useValidateAuthenticator(t0) {