@hazelcast/ui 4.0.4 → 4.0.5

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.
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import { ThemePreference } from '../utils/colorScheme';
3
+ export interface ThemeSwitcherProps {
4
+ value: ThemePreference;
5
+ onChange: (preference: ThemePreference) => void;
6
+ disabled?: boolean;
7
+ className?: string;
8
+ 'aria-label'?: string;
9
+ 'data-test'?: string;
10
+ }
11
+ export declare const ThemeSwitcher: ({ value, onChange, disabled, className, "aria-label": ariaLabel, "data-test": dataTest, }: ThemeSwitcherProps) => React.JSX.Element;
@@ -0,0 +1,88 @@
1
+ import React, { useEffect, useId, useRef, useState } from 'react';
2
+ import { Check, Moon, Sun } from 'react-feather';
3
+ import cn from 'classnames';
4
+ import { Icon } from './Icon';
5
+ import { Popover } from './Popover';
6
+ import { HalfCircle } from '../icons/HalfCircle';
7
+ import styles from './ThemeSwitcher.module.css';
8
+ const options = [
9
+ { value: 'light', label: 'Light', icon: Sun },
10
+ { value: 'dark', label: 'Dark', icon: Moon },
11
+ { value: 'system', label: 'System', icon: HalfCircle },
12
+ ];
13
+ export const ThemeSwitcher = ({ value, onChange, disabled = false, className, 'aria-label': ariaLabel = 'Color theme', 'data-test': dataTest = 'theme-switcher', }) => {
14
+ var _a;
15
+ const [open, setOpen] = useState(false);
16
+ const trigger = useRef(null);
17
+ const items = useRef([]);
18
+ const initialFocus = useRef(0);
19
+ const menuId = useId();
20
+ const selected = (_a = options.find((option) => option.value === value)) !== null && _a !== void 0 ? _a : options[0];
21
+ useEffect(() => {
22
+ var _a;
23
+ if (open && !disabled)
24
+ (_a = items.current[initialFocus.current]) === null || _a === void 0 ? void 0 : _a.focus();
25
+ }, [open, disabled]);
26
+ const close = () => setOpen(false);
27
+ const show = (index) => {
28
+ initialFocus.current = index;
29
+ setOpen(true);
30
+ };
31
+ const select = (preference) => {
32
+ var _a;
33
+ close();
34
+ (_a = trigger.current) === null || _a === void 0 ? void 0 : _a.focus();
35
+ onChange(preference);
36
+ };
37
+ const onMenuKeyDown = (event) => {
38
+ var _a, _b, _c;
39
+ const index = items.current.findIndex((item) => item === document.activeElement);
40
+ let nextIndex;
41
+ switch (event.key) {
42
+ case 'ArrowDown':
43
+ nextIndex = (index + 1) % options.length;
44
+ break;
45
+ case 'ArrowUp':
46
+ nextIndex = (index + options.length - 1) % options.length;
47
+ break;
48
+ case 'Home':
49
+ nextIndex = 0;
50
+ break;
51
+ case 'End':
52
+ nextIndex = options.length - 1;
53
+ break;
54
+ case 'Escape':
55
+ event.stopPropagation();
56
+ event.preventDefault();
57
+ close();
58
+ (_a = trigger.current) === null || _a === void 0 ? void 0 : _a.focus();
59
+ return;
60
+ case 'Tab':
61
+ close();
62
+ (_b = trigger.current) === null || _b === void 0 ? void 0 : _b.focus();
63
+ return;
64
+ default:
65
+ nextIndex = options.findIndex((option) => option.label.toLowerCase().startsWith(event.key.toLowerCase()));
66
+ if (nextIndex < 0 || event.key.length !== 1)
67
+ return;
68
+ }
69
+ event.preventDefault();
70
+ (_c = items.current[nextIndex]) === null || _c === void 0 ? void 0 : _c.focus();
71
+ };
72
+ return (React.createElement(React.Fragment, null,
73
+ React.createElement("button", { ref: trigger, type: "button", className: cn(styles.trigger, className), "aria-label": `${ariaLabel}: ${selected.label}`, title: `${ariaLabel}: ${selected.label}`, "aria-haspopup": "menu", "aria-expanded": open && !disabled, "aria-controls": open && !disabled ? menuId : undefined, disabled: disabled, "data-test": dataTest, onClick: () => (open ? close() : show(options.indexOf(selected))), onKeyDown: (event) => {
74
+ if (event.key !== 'ArrowDown' && event.key !== 'ArrowUp')
75
+ return;
76
+ event.preventDefault();
77
+ show(event.key === 'ArrowDown' ? 0 : options.length - 1);
78
+ } },
79
+ React.createElement(Icon, { icon: selected.icon, size: "smallMedium", ariaHidden: true })),
80
+ React.createElement(Popover, { open: open && !disabled, anchorElement: trigger.current, onClose: close, offset: 4, className: styles.popover },
81
+ React.createElement("div", { id: menuId, role: "menu", "aria-label": ariaLabel, onKeyDown: onMenuKeyDown, onMouseDown: (event) => event.stopPropagation(), onTouchStart: (event) => event.stopPropagation() }, options.map((option, index) => (React.createElement("button", { key: option.value, ref: (element) => {
82
+ items.current[index] = element;
83
+ }, type: "button", role: "menuitemradio", "aria-checked": value === option.value, tabIndex: -1, className: styles.option, onClick: () => select(option.value) },
84
+ React.createElement(Icon, { icon: option.icon, size: "small", ariaHidden: true }),
85
+ React.createElement("span", null, option.label),
86
+ React.createElement("span", { className: styles.check }, value === option.value && React.createElement(Icon, { icon: Check, size: "small", ariaHidden: true })))))))));
87
+ };
88
+ //# sourceMappingURL=ThemeSwitcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeSwitcher.js","sourceRoot":"","sources":["../../src/components/ThemeSwitcher.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ .trigger {
2
+ display: inline-flex;
3
+ align-items: center;
4
+ justify-content: center;
5
+ width: calc(var(--hive-grid) * 9);
6
+ height: calc(var(--hive-grid) * 9);
7
+ padding: 0;
8
+ border: none;
9
+ border-radius: var(--hive-border-radius);
10
+ background: transparent;
11
+ color: var(--hive-color-text-v4);
12
+ cursor: pointer;
13
+ }
14
+
15
+ .trigger:hover,
16
+ .trigger[aria-expanded='true'],
17
+ .option:hover {
18
+ background: var(--hive-color-surface-hover-v4);
19
+ }
20
+
21
+ .trigger:focus-visible,
22
+ .option:focus-visible {
23
+ outline: var(--hive-outline-width) solid var(--hive-color-primary-v4);
24
+ outline-offset: -2px;
25
+ }
26
+
27
+ .trigger:disabled {
28
+ opacity: 0.5;
29
+ cursor: not-allowed;
30
+ }
31
+
32
+ .popover {
33
+ padding: var(--hive-grid);
34
+ border: var(--hive-border-width) solid var(--hive-color-border-v4);
35
+ border-radius: var(--hive-border-radius);
36
+ z-index: var(--hive-z-index-2000);
37
+ }
38
+
39
+ .option {
40
+ display: flex;
41
+ align-items: center;
42
+ gap: calc(var(--hive-grid) * 3);
43
+ width: 100%;
44
+ min-width: calc(var(--hive-grid) * 40);
45
+ height: calc(var(--hive-grid) * 9);
46
+ padding: 0 calc(var(--hive-grid) * 3);
47
+ border: none;
48
+ border-radius: var(--hive-grid);
49
+ background: transparent;
50
+ color: var(--hive-color-text-v4);
51
+ font-family: var(--hive-font-family-text);
52
+ font-size: var(--hive-font-size-body-small);
53
+ text-align: left;
54
+ cursor: pointer;
55
+ }
56
+
57
+ .check {
58
+ display: flex;
59
+ width: var(--hive-icon-size-small);
60
+ margin-left: auto;
61
+ }
@@ -5,3 +5,5 @@ export { useOpenCloseState } from './useOpenCloseState';
5
5
  export * from './usePersistedState';
6
6
  export { applyColorScheme, COLOR_SCHEME_STORAGE_KEY, getColorSchemeBootstrapScript, getSystemColorScheme, initializeColorScheme, useColorScheme, } from './useColorScheme';
7
7
  export type { ColorScheme } from './useColorScheme';
8
+ export { useThemePreference } from './useThemePreference';
9
+ export type { ThemePreference } from '../utils/colorScheme';
@@ -5,4 +5,5 @@ export { useRefValue } from './useRefValue';
5
5
  export { useOpenCloseState } from './useOpenCloseState';
6
6
  export * from './usePersistedState';
7
7
  export { applyColorScheme, COLOR_SCHEME_STORAGE_KEY, getColorSchemeBootstrapScript, getSystemColorScheme, initializeColorScheme, useColorScheme, } from './useColorScheme';
8
+ export { useThemePreference } from './useThemePreference';
8
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,cAAc,qBAAqB,CAAA;AACnC,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,6BAA6B,EAC7B,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,GACf,MAAM,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,cAAc,qBAAqB,CAAA;AACnC,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,6BAA6B,EAC7B,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,GACf,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA"}
@@ -1,23 +1,19 @@
1
- import { useEffect } from 'react';
2
- import { createPersistedState } from './usePersistedState';
3
- import { COLOR_SCHEME_STORAGE_KEY, getSystemColorScheme } from '../utils/colorScheme';
1
+ import { useRef } from 'react';
2
+ import { useThemePreference } from './useThemePreference';
4
3
  export { COLOR_SCHEME_STORAGE_KEY, getColorSchemeBootstrapScript, getSystemColorScheme, initializeColorScheme } from '../utils/colorScheme';
5
- const usePersistedColorScheme = createPersistedState(COLOR_SCHEME_STORAGE_KEY);
6
4
  export const applyColorScheme = (scheme) => {
7
5
  document.documentElement.style.colorScheme = scheme;
8
6
  };
9
7
  /** First visit follows the OS; once the user picks a scheme it is stored and wins from then on. */
10
8
  export const useColorScheme = () => {
11
- const [stored, setStoredScheme] = usePersistedColorScheme(getSystemColorScheme());
12
- const scheme = stored === 'light' || stored === 'dark' ? stored : getSystemColorScheme();
9
+ const { scheme, setPreference } = useThemePreference();
10
+ const currentScheme = useRef(scheme);
11
+ currentScheme.current = scheme;
13
12
  const setScheme = (nextScheme) => {
14
- const nextValue = typeof nextScheme === 'function' ? nextScheme(scheme) : nextScheme;
15
- applyColorScheme(nextValue);
16
- setStoredScheme(nextValue);
13
+ const nextValue = typeof nextScheme === 'function' ? nextScheme(currentScheme.current) : nextScheme;
14
+ currentScheme.current = nextValue;
15
+ setPreference(nextValue);
17
16
  };
18
- useEffect(() => {
19
- applyColorScheme(scheme);
20
- }, [scheme]);
21
17
  return [scheme, setScheme];
22
18
  };
23
19
  //# sourceMappingURL=useColorScheme.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useColorScheme.js","sourceRoot":"","sources":["../../src/hooks/useColorScheme.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,SAAS,EAAE,MAAM,OAAO,CAAA;AAE3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAE,wBAAwB,EAAE,oBAAoB,EAAoB,MAAM,sBAAsB,CAAA;AAEvG,OAAO,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAG3I,MAAM,uBAAuB,GAAG,oBAAoB,CAAc,wBAAwB,CAAC,CAAA;AAE3F,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAmB,EAAE,EAAE;IACtD,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAA;AACrD,CAAC,CAAA;AAED,mGAAmG;AACnG,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE;IACjC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,uBAAuB,CAAC,oBAAoB,EAAE,CAAC,CAAA;IACjF,MAAM,MAAM,GAAgB,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,oBAAoB,EAAE,CAAA;IAErG,MAAM,SAAS,GAA0C,CAAC,UAAU,EAAE,EAAE;QACtE,MAAM,SAAS,GAAG,OAAO,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAA;QACpF,gBAAgB,CAAC,SAAS,CAAC,CAAA;QAC3B,eAAe,CAAC,SAAS,CAAC,CAAA;IAC5B,CAAC,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACb,gBAAgB,CAAC,MAAM,CAAC,CAAA;IAC1B,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAEZ,OAAO,CAAC,MAAM,EAAE,SAAS,CAAU,CAAA;AACrC,CAAC,CAAA"}
1
+ {"version":3,"file":"useColorScheme.js","sourceRoot":"","sources":["../../src/hooks/useColorScheme.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,MAAM,EAAE,MAAM,OAAO,CAAA;AAExD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAGzD,OAAO,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAG3I,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAmB,EAAE,EAAE;IACtD,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAA;AACrD,CAAC,CAAA;AAED,mGAAmG;AACnG,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE;IACjC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,kBAAkB,EAAE,CAAA;IACtD,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;IACpC,aAAa,CAAC,OAAO,GAAG,MAAM,CAAA;IAE9B,MAAM,SAAS,GAA0C,CAAC,UAAU,EAAE,EAAE;QACtE,MAAM,SAAS,GAAG,OAAO,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAA;QACnG,aAAa,CAAC,OAAO,GAAG,SAAS,CAAA;QACjC,aAAa,CAAC,SAAS,CAAC,CAAA;IAC1B,CAAC,CAAA;IAED,OAAO,CAAC,MAAM,EAAE,SAAS,CAAU,CAAA;AACrC,CAAC,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { type ThemePreference } from '../utils/colorScheme';
2
+ export declare const useThemePreference: () => {
3
+ readonly preference: ThemePreference;
4
+ readonly scheme: import("../utils/colorScheme").ColorScheme;
5
+ readonly setPreference: (nextPreference: ThemePreference) => void;
6
+ };
@@ -0,0 +1,41 @@
1
+ import { useEffect, useRef, useState } from 'react';
2
+ import { COLOR_SCHEME_STORAGE_KEY, getSystemColorScheme, getThemePreference } from '../utils/colorScheme';
3
+ export const useThemePreference = () => {
4
+ const [preference, setPreferenceState] = useState(getThemePreference);
5
+ const [systemScheme, setSystemScheme] = useState(getSystemColorScheme);
6
+ const currentPreference = useRef(preference);
7
+ const scheme = preference === 'system' ? systemScheme : preference;
8
+ const setPreference = (nextPreference) => {
9
+ currentPreference.current = nextPreference;
10
+ const nextSystemScheme = getSystemColorScheme();
11
+ document.documentElement.style.colorScheme = nextPreference === 'system' ? nextSystemScheme : nextPreference;
12
+ setSystemScheme(nextSystemScheme);
13
+ setPreferenceState(nextPreference);
14
+ try {
15
+ window.localStorage.setItem(COLOR_SCHEME_STORAGE_KEY, JSON.stringify(nextPreference));
16
+ }
17
+ catch (_a) {
18
+ return;
19
+ }
20
+ };
21
+ useEffect(() => {
22
+ document.documentElement.style.colorScheme = scheme;
23
+ }, [scheme]);
24
+ useEffect(() => {
25
+ var _a, _b;
26
+ const media = (_a = window.matchMedia) === null || _a === void 0 ? void 0 : _a.call(window, '(prefers-color-scheme: dark)');
27
+ if (!media)
28
+ return;
29
+ const updateSystemScheme = () => {
30
+ const nextScheme = media.matches ? 'dark' : 'light';
31
+ setSystemScheme(nextScheme);
32
+ if (currentPreference.current === 'system')
33
+ document.documentElement.style.colorScheme = nextScheme;
34
+ };
35
+ updateSystemScheme();
36
+ (_b = media.addEventListener) === null || _b === void 0 ? void 0 : _b.call(media, 'change', updateSystemScheme);
37
+ return () => { var _a; return (_a = media.removeEventListener) === null || _a === void 0 ? void 0 : _a.call(media, 'change', updateSystemScheme); };
38
+ }, []);
39
+ return { preference, scheme, setPreference };
40
+ };
41
+ //# sourceMappingURL=useThemePreference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useThemePreference.js","sourceRoot":"","sources":["../../src/hooks/useThemePreference.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEnD,OAAO,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,kBAAkB,EAAwB,MAAM,sBAAsB,CAAA;AAE/H,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,EAAE;IACrC,MAAM,CAAC,UAAU,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAA;IACrE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CAAA;IACtE,MAAM,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;IAC5C,MAAM,MAAM,GAAG,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAA;IAElE,MAAM,aAAa,GAAG,CAAC,cAA+B,EAAE,EAAE;QACxD,iBAAiB,CAAC,OAAO,GAAG,cAAc,CAAA;QAC1C,MAAM,gBAAgB,GAAG,oBAAoB,EAAE,CAAA;QAC/C,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,GAAG,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,cAAc,CAAA;QAC5G,eAAe,CAAC,gBAAgB,CAAC,CAAA;QACjC,kBAAkB,CAAC,cAAc,CAAC,CAAA;QAClC,IAAI,CAAC;YACH,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,wBAAwB,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAA;QACvF,CAAC;QAAC,WAAM,CAAC;YACP,OAAM;QACR,CAAC;IACH,CAAC,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACb,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAA;IACrD,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAEZ,SAAS,CAAC,GAAG,EAAE;;QACb,MAAM,KAAK,GAAG,MAAA,MAAM,CAAC,UAAU,uDAAG,8BAA8B,CAAC,CAAA;QACjE,IAAI,CAAC,KAAK;YAAE,OAAM;QAClB,MAAM,kBAAkB,GAAG,GAAG,EAAE;YAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAA;YACnD,eAAe,CAAC,UAAU,CAAC,CAAA;YAC3B,IAAI,iBAAiB,CAAC,OAAO,KAAK,QAAQ;gBAAE,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,GAAG,UAAU,CAAA;QACrG,CAAC,CAAA;QACD,kBAAkB,EAAE,CAAA;QACpB,MAAA,KAAK,CAAC,gBAAgB,sDAAG,QAAQ,EAAE,kBAAkB,CAAC,CAAA;QACtD,OAAO,GAAG,EAAE,WAAC,OAAA,MAAA,KAAK,CAAC,mBAAmB,sDAAG,QAAQ,EAAE,kBAAkB,CAAC,CAAA,EAAA,CAAA;IACxE,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAW,CAAA;AACvD,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ import { FC, SVGAttributes } from 'react';
2
+ export declare const HalfCircle: FC<SVGAttributes<SVGElement>>;
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ export const HalfCircle = ({ width = 24, height = 24, strokeWidth = 1.5, ...rest }) => (React.createElement("svg", { width: width, height: height, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...rest },
3
+ React.createElement("circle", { cx: "12", cy: "12", r: "9", stroke: "currentColor", strokeWidth: strokeWidth }),
4
+ React.createElement("path", { d: "M12 3a9 9 0 0 0 0 18V3Z", fill: "currentColor" })));
5
+ //# sourceMappingURL=HalfCircle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HalfCircle.js","sourceRoot":"","sources":["../../src/icons/HalfCircle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAA;AAEhD,MAAM,CAAC,MAAM,UAAU,GAAkC,CAAC,EAAE,KAAK,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,EAAE,WAAW,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,CACpH,6BAAK,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,4BAA4B,KAAK,IAAI;IAC5G,gCAAQ,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,GAAG,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAE,WAAW,GAAI;IAChF,8BAAM,CAAC,EAAC,yBAAyB,EAAC,IAAI,EAAC,cAAc,GAAG,CACpD,CACP,CAAA"}
package/lib/index.d.ts CHANGED
@@ -52,6 +52,10 @@ export { Toggle } from './components/Toggle';
52
52
  export { ToggleFormik } from './components/ToggleFormik';
53
53
  export { Tooltip } from './components/Tooltip';
54
54
  export { TruncatedText } from './components/TruncatedText';
55
+ export { ThemeSwitcher } from './components/ThemeSwitcher';
56
+ export type { ThemeSwitcherProps } from './components/ThemeSwitcher';
57
+ export { useThemePreference } from './hooks';
58
+ export type { ThemePreference } from './hooks';
55
59
  export { useOpenCloseState, useRefValue, useIsMounted, useOnClickOutside, containsElement, applyColorScheme, COLOR_SCHEME_STORAGE_KEY, getColorSchemeBootstrapScript, getSystemColorScheme, initializeColorScheme, useColorScheme, } from './hooks';
56
60
  export type { ColorScheme } from './hooks';
57
61
  export { Cluster } from './icons/Cluster';
package/lib/index.js CHANGED
@@ -51,6 +51,8 @@ export { Toggle } from './components/Toggle';
51
51
  export { ToggleFormik } from './components/ToggleFormik';
52
52
  export { Tooltip } from './components/Tooltip';
53
53
  export { TruncatedText } from './components/TruncatedText';
54
+ export { ThemeSwitcher } from './components/ThemeSwitcher';
55
+ export { useThemePreference } from './hooks';
54
56
  export { useOpenCloseState, useRefValue, useIsMounted, useOnClickOutside, containsElement, applyColorScheme, COLOR_SCHEME_STORAGE_KEY, getColorSchemeBootstrapScript, getSystemColorScheme, initializeColorScheme, useColorScheme, } from './hooks';
55
57
  // icons
56
58
  export { Cluster } from './icons/Cluster';
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  export type ColorScheme = 'light' | 'dark';
2
+ export type ThemePreference = ColorScheme | 'system';
2
3
  export declare const COLOR_SCHEME_STORAGE_KEY = "hive-color-scheme";
3
4
  export declare const getSystemColorScheme: () => ColorScheme;
5
+ export declare const getThemePreference: () => ThemePreference;
4
6
  export declare const initializeColorScheme: () => ColorScheme;
5
7
  export declare const getColorSchemeBootstrapScript: () => string;
@@ -1,5 +1,17 @@
1
1
  export const COLOR_SCHEME_STORAGE_KEY = 'hive-color-scheme';
2
2
  export const getSystemColorScheme = () => { var _a; return typeof window !== 'undefined' && ((_a = window.matchMedia) === null || _a === void 0 ? void 0 : _a.call(window, '(prefers-color-scheme: dark)').matches) ? 'dark' : 'light'; };
3
+ export const getThemePreference = () => {
4
+ var _a;
5
+ try {
6
+ const stored = JSON.parse((_a = window.localStorage.getItem(COLOR_SCHEME_STORAGE_KEY)) !== null && _a !== void 0 ? _a : 'null');
7
+ if (stored === 'light' || stored === 'dark' || stored === 'system')
8
+ return stored;
9
+ }
10
+ catch (_b) {
11
+ return 'system';
12
+ }
13
+ return 'system';
14
+ };
3
15
  const initializeColorSchemeForKey = (storageKey) => {
4
16
  var _a, _b;
5
17
  let storedScheme;
@@ -1 +1 @@
1
- {"version":3,"file":"colorScheme.js","sourceRoot":"","sources":["../../src/utils/colorScheme.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,wBAAwB,GAAG,mBAAmB,CAAA;AAE3D,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAgB,EAAE,WACpD,OAAA,OAAO,MAAM,KAAK,WAAW,KAAI,MAAA,MAAM,CAAC,UAAU,uDAAG,8BAA8B,EAAE,OAAO,CAAA,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAA,EAAA,CAAA;AAEjH,MAAM,2BAA2B,GAAG,CAAC,UAAkB,EAAe,EAAE;;IACtE,IAAI,YAAqB,CAAA;IAEzB,IAAI,CAAC;QACH,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAA,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,mCAAI,MAAM,CAAY,CAAA;IACzF,CAAC;IAAC,WAAM,CAAC;QACP,YAAY,GAAG,SAAS,CAAA;IAC1B,CAAC;IAED,IAAI,MAAM,GAAgB,OAAO,CAAA;IACjC,IAAI,YAAY,KAAK,OAAO,IAAI,YAAY,KAAK,MAAM,EAAE,CAAC;QACxD,MAAM,GAAG,YAAY,CAAA;IACvB,CAAC;SAAM,IAAI,MAAA,MAAM,CAAC,UAAU,uDAAG,8BAA8B,EAAE,OAAO,EAAE,CAAC;QACvE,MAAM,GAAG,MAAM,CAAA;IACjB,CAAC;IAED,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAA;IACnD,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAgB,EAAE,CAAC,2BAA2B,CAAC,wBAAwB,CAAC,CAAA;AAE7G,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAW,EAAE,CACxD,IAAI,2BAA2B,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,IAAI,CAAA"}
1
+ {"version":3,"file":"colorScheme.js","sourceRoot":"","sources":["../../src/utils/colorScheme.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,wBAAwB,GAAG,mBAAmB,CAAA;AAE3D,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAgB,EAAE,WACpD,OAAA,OAAO,MAAM,KAAK,WAAW,KAAI,MAAA,MAAM,CAAC,UAAU,uDAAG,8BAA8B,EAAE,OAAO,CAAA,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAA,EAAA,CAAA;AAEjH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAoB,EAAE;;IACtD,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,MAAA,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,wBAAwB,CAAC,mCAAI,MAAM,CAAC,CAAA;QACnG,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAA;IACnF,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,QAAQ,CAAA;IACjB,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA;AAED,MAAM,2BAA2B,GAAG,CAAC,UAAkB,EAAe,EAAE;;IACtE,IAAI,YAAqB,CAAA;IAEzB,IAAI,CAAC;QACH,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAA,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,mCAAI,MAAM,CAAY,CAAA;IACzF,CAAC;IAAC,WAAM,CAAC;QACP,YAAY,GAAG,SAAS,CAAA;IAC1B,CAAC;IAED,IAAI,MAAM,GAAgB,OAAO,CAAA;IACjC,IAAI,YAAY,KAAK,OAAO,IAAI,YAAY,KAAK,MAAM,EAAE,CAAC;QACxD,MAAM,GAAG,YAAY,CAAA;IACvB,CAAC;SAAM,IAAI,MAAA,MAAM,CAAC,UAAU,uDAAG,8BAA8B,EAAE,OAAO,EAAE,CAAC;QACvE,MAAM,GAAG,MAAM,CAAA;IACjB,CAAC;IAED,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAA;IACnD,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAgB,EAAE,CAAC,2BAA2B,CAAC,wBAAwB,CAAC,CAAA;AAE7G,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAW,EAAE,CACxD,IAAI,2BAA2B,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,IAAI,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hazelcast/ui",
3
- "version": "4.0.4",
3
+ "version": "4.0.5",
4
4
  "description": "Hazelcast design system components and utilities",
5
5
  "homepage": "https://github.com/hazelcast/hive#readme",
6
6
  "bugs": {