@uxf/ui 1.0.0-beta.95 → 1.0.0-beta.97

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.
@@ -1,9 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getProviderConfig = void 0;
4
+ const color_scheme_1 = require("../color-scheme");
4
5
  const icons_1 = require("../config/icons");
5
6
  const tw_screens_1 = require("../tw-tokens/tw-screens");
6
7
  const getProviderConfig = () => ({
8
+ colorScheme: {
9
+ ...color_scheme_1.COLOR_SCHEME_DEFAULTS,
10
+ respectSystemSetting: false,
11
+ respectUserSettings: false,
12
+ },
7
13
  icon: { spriteFilePath: "/icons-generated/_icon-sprite.svg", iconsConfig: icons_1.ICONS },
8
14
  rasterImage: {
9
15
  breakpoints: tw_screens_1.twScreens,
@@ -0,0 +1,8 @@
1
+ import { ColorScheme } from "../types";
2
+ export declare const COLOR_SCHEME_DEFAULTS: {
3
+ readonly defaultColorScheme: "light";
4
+ readonly getUserSettings: () => ColorScheme;
5
+ readonly respectSystemSetting: true;
6
+ readonly respectUserSettings: true;
7
+ readonly setUserSettings: (colorScheme: ColorScheme) => void;
8
+ };
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.COLOR_SCHEME_DEFAULTS = void 0;
4
+ exports.COLOR_SCHEME_DEFAULTS = {
5
+ defaultColorScheme: "light",
6
+ getUserSettings: () => localStorage.getItem("theme"),
7
+ respectSystemSetting: true,
8
+ respectUserSettings: true,
9
+ setUserSettings: (colorScheme) => localStorage.setItem("theme", colorScheme),
10
+ };
@@ -0,0 +1,2 @@
1
+ export { COLOR_SCHEME_DEFAULTS } from "./color-scheme-defaults";
2
+ export { useToggleColorScheme } from "./use-toggle-color-scheme";
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useToggleColorScheme = exports.COLOR_SCHEME_DEFAULTS = void 0;
4
+ var color_scheme_defaults_1 = require("./color-scheme-defaults");
5
+ Object.defineProperty(exports, "COLOR_SCHEME_DEFAULTS", { enumerable: true, get: function () { return color_scheme_defaults_1.COLOR_SCHEME_DEFAULTS; } });
6
+ var use_toggle_color_scheme_1 = require("./use-toggle-color-scheme");
7
+ Object.defineProperty(exports, "useToggleColorScheme", { enumerable: true, get: function () { return use_toggle_color_scheme_1.useToggleColorScheme; } });
@@ -0,0 +1,9 @@
1
+ import { ColorScheme } from "../types";
2
+ export interface ColorSchemeOptions {
3
+ defaultColorScheme?: ColorScheme;
4
+ getUserSettings: () => ColorScheme;
5
+ respectSystemSetting?: boolean;
6
+ respectUserSettings?: boolean;
7
+ setUserSettings: (colorScheme: ColorScheme) => void;
8
+ }
9
+ export declare function useHandleColorScheme(props: ColorSchemeOptions): void;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useHandleColorScheme = void 0;
4
+ const react_1 = require("react");
5
+ const color_scheme_defaults_1 = require("./color-scheme-defaults");
6
+ function useHandleColorScheme(props) {
7
+ const { defaultColorScheme = color_scheme_defaults_1.COLOR_SCHEME_DEFAULTS.defaultColorScheme, getUserSettings, respectSystemSetting, respectUserSettings, setUserSettings, } = props;
8
+ (0, react_1.useEffect)(() => {
9
+ const inverseColorScheme = defaultColorScheme === "light" ? "dark" : "light";
10
+ if ((respectUserSettings && getUserSettings() === inverseColorScheme) ||
11
+ (respectSystemSetting &&
12
+ !("theme" in localStorage) &&
13
+ window.matchMedia(`(prefers-color-scheme: ${inverseColorScheme})`).matches)) {
14
+ document.body.classList.remove(defaultColorScheme);
15
+ document.body.classList.add(inverseColorScheme);
16
+ }
17
+ else {
18
+ document.body.classList.remove(inverseColorScheme);
19
+ document.body.classList.add(defaultColorScheme);
20
+ }
21
+ }, [defaultColorScheme, getUserSettings, respectSystemSetting, respectUserSettings, setUserSettings]);
22
+ }
23
+ exports.useHandleColorScheme = useHandleColorScheme;
@@ -0,0 +1 @@
1
+ export declare function useToggleColorScheme(): () => void;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useToggleColorScheme = void 0;
4
+ const isServer_1 = require("@uxf/core/utils/isServer");
5
+ const react_1 = require("react");
6
+ const context_1 = require("../context");
7
+ function useToggleColorScheme() {
8
+ const { getUserSettings, setUserSettings } = (0, context_1.useComponentContext)("colorScheme");
9
+ return (0, react_1.useCallback)(() => {
10
+ if (isServer_1.isServer) {
11
+ return;
12
+ }
13
+ const currentColorSchema = getUserSettings();
14
+ const inverseColorScheme = currentColorSchema === "light" ? "dark" : "light";
15
+ document.body.classList.remove(currentColorSchema);
16
+ document.body.classList.add(inverseColorScheme);
17
+ setUserSettings(inverseColorScheme);
18
+ }, [getUserSettings, setUserSettings]);
19
+ }
20
+ exports.useToggleColorScheme = useToggleColorScheme;
@@ -1,6 +1,8 @@
1
1
  /// <reference types="react" />
2
+ import { ColorSchemeOptions } from "../color-scheme/use-handle-color-scheme";
2
3
  import { IconName } from "../icon/types";
3
4
  export declare type UiContextType = {
5
+ colorScheme: ColorSchemeOptions;
4
6
  icon: {
5
7
  spriteFilePath: string;
6
8
  iconsConfig: Record<IconName, {
@@ -7,7 +7,11 @@ exports.UiContextProvider = void 0;
7
7
  const dayjs_1 = require("dayjs");
8
8
  const localizedFormat_1 = __importDefault(require("dayjs/plugin/localizedFormat"));
9
9
  const react_1 = __importDefault(require("react"));
10
+ const use_handle_color_scheme_1 = require("../color-scheme/use-handle-color-scheme");
10
11
  const context_1 = require("./context");
11
12
  (0, dayjs_1.extend)(localizedFormat_1.default);
12
- const UiContextProvider = (props) => (react_1.default.createElement(context_1.UiContext.Provider, { value: props.value }, props.children));
13
+ const UiContextProvider = (props) => {
14
+ (0, use_handle_color_scheme_1.useHandleColorScheme)(props.value.colorScheme);
15
+ return react_1.default.createElement(context_1.UiContext.Provider, { value: props.value }, props.children);
16
+ };
13
17
  exports.UiContextProvider = UiContextProvider;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uxf/ui",
3
- "version": "1.0.0-beta.95",
3
+ "version": "1.0.0-beta.97",
4
4
  "description": "",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -41,7 +41,7 @@ const RasterImage = (props) => {
41
41
  ? props.heights[i]
42
42
  : props.width && props.height
43
43
  ? Math.ceil((props.height / props.width) * w)
44
- : "auto", key: w, options: props.options, quality: props.quality, src: props.src, width: w }))).reverse()) !== null && _f !== void 0 ? _f : (react_1.default.createElement(image_1.ImgSources, { height: (_g = props.height) !== null && _g !== void 0 ? _g : "auto", options: props.options, quality: props.quality, src: props.src, width: (_h = props.width) !== null && _h !== void 0 ? _h : "auto" })),
44
+ : "auto", key: `${w}-${i}`, options: props.options, quality: props.quality, src: props.src, width: w }))).reverse()) !== null && _f !== void 0 ? _f : (react_1.default.createElement(image_1.ImgSources, { height: (_g = props.height) !== null && _g !== void 0 ? _g : "auto", options: props.options, quality: props.quality, src: props.src, width: (_h = props.width) !== null && _h !== void 0 ? _h : "auto" })),
45
45
  react_1.default.createElement("img", { alt: props.alt, className: (0, cx_1.cx)(imgClassName), height: props.height, loading: props.loading, src: resizerSrc, width: props.width })));
46
46
  };
47
47
  exports.RasterImage = RasterImage;
package/types/color.d.ts CHANGED
@@ -1 +1,2 @@
1
+ export declare type ColorScheme = "dark" | "light";
1
2
  export declare type HexColor = `#${string}`;
@@ -4,10 +4,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.snapTest = void 0;
7
- const react_test_renderer_1 = require("react-test-renderer");
8
7
  const react_1 = __importDefault(require("react"));
9
- const context_1 = require("../context");
8
+ const react_test_renderer_1 = require("react-test-renderer");
10
9
  const get_provider_config_1 = require("../_private-utils/get-provider-config");
10
+ const context_1 = require("../context");
11
11
  const snapTest = (name, component) => {
12
12
  it(name, () => {
13
13
  const tree = (0, react_test_renderer_1.create)(react_1.default.createElement(context_1.UiContextProvider, { value: (0, get_provider_config_1.getProviderConfig)() }, component)).toJSON();
@@ -23,6 +23,7 @@ const SCREENS = {
23
23
  /** @type {import('tailwindcss').Config} */
24
24
  module.exports = {
25
25
  content: [],
26
+ darkMode: "class",
26
27
  theme: {
27
28
  containers: CONTAINERS,
28
29
  screens: SCREENS,