@fibery/ui-kit 1.0.6 → 1.2.1

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,12 @@
1
+ // This icon file is generated automatically.
2
+
3
+ import SlackIconSvg from '../ast/SlackIcon';
4
+ import { Icon } from '../Icon';
5
+ import { IconBaseProps } from '../types';
6
+
7
+ const SlackIcon = (
8
+ props: IconBaseProps,
9
+ ): JSX.Element => <Icon {...props} icon={SlackIconSvg} />;
10
+
11
+ SlackIcon.displayName = 'SlackIcon';
12
+ export default SlackIcon;
@@ -0,0 +1,12 @@
1
+ // This icon file is generated automatically.
2
+
3
+ import SlideMenuSvg from '../ast/SlideMenu';
4
+ import { Icon } from '../Icon';
5
+ import { IconBaseProps } from '../types';
6
+
7
+ const SlideMenu = (
8
+ props: IconBaseProps,
9
+ ): JSX.Element => <Icon {...props} icon={SlideMenuSvg} />;
10
+
11
+ SlideMenu.displayName = 'SlideMenu';
12
+ export default SlideMenu;
@@ -0,0 +1,12 @@
1
+ // This icon file is generated automatically.
2
+
3
+ import SlideMenuOpenedSvg from '../ast/SlideMenuOpened';
4
+ import { Icon } from '../Icon';
5
+ import { IconBaseProps } from '../types';
6
+
7
+ const SlideMenuOpened = (
8
+ props: IconBaseProps,
9
+ ): JSX.Element => <Icon {...props} icon={SlideMenuOpenedSvg} />;
10
+
11
+ SlideMenuOpened.displayName = 'SlideMenuOpened';
12
+ export default SlideMenuOpened;
@@ -40,6 +40,7 @@ export { default as DoubleArrowLeft } from './DoubleArrowLeft';
40
40
  export { default as DoubleArrowRight } from './DoubleArrowRight';
41
41
  export { default as DragBlockHandle } from './DragBlockHandle';
42
42
  export { default as DragHandle } from './DragHandle';
43
+ export { default as Email } from './Email';
43
44
  export { default as ExtensionAssignments } from './ExtensionAssignments';
44
45
  export { default as ExtensionAvatar } from './ExtensionAvatar';
45
46
  export { default as ExtensionComments } from './ExtensionComments';
@@ -131,8 +132,13 @@ export { default as SelfReferenceOn } from './SelfReferenceOn';
131
132
  export { default as Settings } from './Settings';
132
133
  export { default as Share } from './Share';
133
134
  export { default as Shared } from './Shared';
135
+ export { default as SidebarFieldsOpened } from './SidebarFieldsOpened';
136
+ export { default as SidebarFields } from './SidebarFields';
134
137
  export { default as Sidebar } from './Sidebar';
138
+ export { default as SlackIcon } from './SlackIcon';
135
139
  export { default as Slack } from './Slack';
140
+ export { default as SlideMenuOpened } from './SlideMenuOpened';
141
+ export { default as SlideMenu } from './SlideMenu';
136
142
  export { default as SmartFolder } from './SmartFolder';
137
143
  export { default as SortOnBottom } from './SortOnBottom';
138
144
  export { default as SortOnTop } from './SortOnTop';
@@ -2,7 +2,7 @@ import {css} from "@linaria/core";
2
2
  import {styled} from "@linaria/react";
3
3
  import cn from "classnames";
4
4
  import _ from "lodash";
5
- import {useRef, memo} from "react";
5
+ import {memo, useRef} from "react";
6
6
  import {space, themeVars} from "./designSystem";
7
7
 
8
8
  const getRandomWithSeed = _.memoize((seed: number) => {
@@ -101,7 +101,7 @@ const Container = styled.div<{height: number}>`
101
101
  }
102
102
  `;
103
103
 
104
- type Props = {
104
+ export type LoadingSausageProps = {
105
105
  minWidth?: number;
106
106
  maxWidth?: number;
107
107
  height?: number;
@@ -119,7 +119,7 @@ export const LoadingSausage = memo(function LoadingSausage({
119
119
  inverted = false,
120
120
  margins = true,
121
121
  animateAppearance = false,
122
- }: Props): JSX.Element {
122
+ }: LoadingSausageProps): JSX.Element {
123
123
  const widthRef = useRef(getRandomInt(minWidth, maxWidth, index));
124
124
  return (
125
125
  <Container
@@ -139,8 +139,8 @@ type SausageListProps = {
139
139
  amount?: number;
140
140
  minAmount?: number;
141
141
  maxAmount?: number;
142
- WrapperComponent?: ({children}: {children: JSX.Element}) => JSX.Element;
143
- } & Omit<Props, "index">;
142
+ WrapperComponent?: ({children}: {children: JSX.Element}) => JSX.Element | null;
143
+ } & Omit<LoadingSausageProps, "index">;
144
144
  export const LoadingSausageList = memo<SausageListProps>(function LoadingSausageList({
145
145
  amount,
146
146
  minAmount = 1,
@@ -2,12 +2,15 @@ import {getMediaQueryList, subscribeOnChange as subscribeOnMediaQueryChange} fro
2
2
 
3
3
  const listenersThemeMode = new Map();
4
4
  const listenersThemePreference = new Map();
5
+ const listenersThemeMenuPreference = new Map();
5
6
 
6
7
  const themePreferenceKey = "theme-preference";
8
+ const themeMenuPreferenceKey = "theme-menu-preference";
7
9
 
8
10
  export type ThemePreference = "dark" | "light" | "auto";
11
+ export type ThemeMenuPreference = "dark" | "auto";
9
12
 
10
- export type ThemeMode = "dark" | "light" | "old";
13
+ export type ThemeMode = "dark" | "light" | "light2";
11
14
 
12
15
  export function getThemePreference(): ThemePreference {
13
16
  try {
@@ -19,6 +22,18 @@ export function getThemePreference(): ThemePreference {
19
22
  } else if (item === "light") {
20
23
  return "light";
21
24
  }
25
+ } catch (e) {
26
+ return "light";
27
+ }
28
+ return "light";
29
+ }
30
+
31
+ export function getThemeMenuPreference(): ThemeMenuPreference {
32
+ try {
33
+ const item = localStorage.getItem(themeMenuPreferenceKey);
34
+ if (item === "dark") {
35
+ return "dark";
36
+ }
22
37
  } catch (e) {
23
38
  return "auto";
24
39
  }
@@ -33,15 +48,42 @@ function getDarkMediaQuery() {
33
48
 
34
49
  export function getThemeMode(): ThemeMode {
35
50
  const preference = getThemePreference();
51
+ const menuPreference = getThemeMenuPreference();
36
52
 
37
53
  if (preference === "auto") {
38
- return getDarkMediaQuery().matches ? "dark" : "light";
54
+ const matches = getDarkMediaQuery().matches;
55
+ if (matches) {
56
+ return "dark";
57
+ }
58
+ if (menuPreference === "dark") {
59
+ return "light2";
60
+ }
61
+ return "light";
39
62
  } else if (preference === "dark") {
40
63
  return "dark";
41
64
  }
65
+ if (menuPreference === "dark") {
66
+ return "light2";
67
+ }
42
68
  return "light";
43
69
  }
44
70
 
71
+ export function setThemeMenuPreference(menuPreference: ThemeMenuPreference) {
72
+ try {
73
+ if (getThemeMenuPreference() !== menuPreference) {
74
+ localStorage.setItem(themeMenuPreferenceKey, menuPreference);
75
+ listenersThemeMode.forEach((cb) => {
76
+ cb(getThemeMode());
77
+ });
78
+ listenersThemeMenuPreference.forEach((cb) => {
79
+ cb(menuPreference);
80
+ });
81
+ }
82
+ } catch (e) {
83
+ // skip error
84
+ }
85
+ }
86
+
45
87
  export function setThemePreference(preference: ThemePreference) {
46
88
  try {
47
89
  if (getThemePreference() !== preference) {
@@ -58,6 +100,25 @@ export function setThemePreference(preference: ThemePreference) {
58
100
  }
59
101
  }
60
102
 
103
+ export function subscribeOnThemeMenuPreferenceChange(
104
+ cb: (themeMenuPreference: ThemeMenuPreference) => void
105
+ ): () => void {
106
+ listenersThemeMenuPreference.set(cb, cb);
107
+ let currentPref = getThemeMenuPreference();
108
+ const storageListener = () => {
109
+ const newMenuPref = getThemeMenuPreference();
110
+ if (currentPref !== newMenuPref) {
111
+ currentPref = newMenuPref;
112
+ cb(newMenuPref);
113
+ }
114
+ };
115
+ window.addEventListener("storage", storageListener);
116
+ return () => {
117
+ listenersThemeMenuPreference.delete(cb);
118
+ window.removeEventListener("storage", storageListener);
119
+ };
120
+ }
121
+
61
122
  export function subscribeOnThemePreferenceChange(cb: (themePreference: ThemePreference) => void): () => void {
62
123
  listenersThemePreference.set(cb, cb);
63
124
  let currentPref = getThemePreference();
@@ -78,11 +139,14 @@ export function subscribeOnThemePreferenceChange(cb: (themePreference: ThemePref
78
139
  export function subscribeOnThemeModeChange(cb: (themeMode: ThemeMode) => void): () => void {
79
140
  listenersThemeMode.set(cb, cb);
80
141
  let currentPref = getThemePreference();
142
+ let currentMenuPref = getThemeMenuPreference();
81
143
  const darkMediaQuery = getDarkMediaQuery();
82
144
  const storageListener = () => {
83
145
  const newPref = getThemePreference();
84
- if (currentPref !== newPref) {
146
+ const newMenuPref = getThemeMenuPreference();
147
+ if (currentPref !== newPref || currentMenuPref !== newMenuPref) {
85
148
  currentPref = newPref;
149
+ currentMenuPref = newMenuPref;
86
150
  cb(getThemeMode());
87
151
  }
88
152
  };
@@ -0,0 +1,18 @@
1
+ import {css} from "@linaria/core";
2
+ import {createInlineTheme, getThemeColors, colors} from "./designSystem";
3
+ const lightTheme = getThemeColors(colors.brandColors.blue, "light");
4
+ const darkTheme = getThemeColors(colors.brandColors.blue, "dark");
5
+ const light2Theme = getThemeColors(colors.brandColors.blue, "light2");
6
+ export const themeStyles = css`
7
+ :global(html) {
8
+ &:root {
9
+ ${createInlineTheme(lightTheme, [])}
10
+ }
11
+ &.dark-theme:root {
12
+ ${createInlineTheme(darkTheme, [])}
13
+ }
14
+ &.light-theme-and-dark-menu:root {
15
+ ${createInlineTheme(light2Theme, [])}
16
+ }
17
+ }
18
+ `;