@fibery/ui-kit 1.33.5 → 1.33.6

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.
Files changed (37) hide show
  1. package/package.json +13 -12
  2. package/src/actions-menu/actions-menu-open-state-tracker.tsx +66 -0
  3. package/src/actions-menu/actions-menu.tsx +11 -1
  4. package/src/button/button.tsx +3 -1
  5. package/src/design-system.ts +5 -2
  6. package/src/emoji-picker/emoji-picker.tsx +0 -1
  7. package/src/emoji-picker/icon-emoji-picker.tsx +13 -0
  8. package/src/icons/ast/BringForward.ts +8 -0
  9. package/src/icons/ast/BringToFront.ts +8 -0
  10. package/src/icons/ast/Create.ts +8 -0
  11. package/src/icons/ast/EntityMerge.ts +8 -0
  12. package/src/icons/ast/GlobeSimple.ts +1 -1
  13. package/src/icons/ast/LoupeZoom.ts +8 -0
  14. package/src/icons/ast/LoupeZoomIn.ts +8 -0
  15. package/src/icons/ast/LoupeZoomOut.ts +8 -0
  16. package/src/icons/ast/SendBackward.ts +8 -0
  17. package/src/icons/ast/SendToBack.ts +8 -0
  18. package/src/icons/ast/SlideMenu.ts +1 -1
  19. package/src/icons/ast/SlideMenuClose.ts +8 -0
  20. package/src/icons/ast/SlideMenuOpen.ts +8 -0
  21. package/src/icons/ast/index.tsx +11 -1
  22. package/src/icons/react/{SlideMenuOpened.tsx → BringForward.tsx} +4 -4
  23. package/src/icons/react/BringToFront.tsx +13 -0
  24. package/src/icons/react/Create.tsx +13 -0
  25. package/src/icons/react/EntityMerge.tsx +13 -0
  26. package/src/icons/react/LoupeZoom.tsx +13 -0
  27. package/src/icons/react/LoupeZoomIn.tsx +13 -0
  28. package/src/icons/react/LoupeZoomOut.tsx +13 -0
  29. package/src/icons/react/SendBackward.tsx +13 -0
  30. package/src/icons/react/SendToBack.tsx +13 -0
  31. package/src/icons/react/SlideMenuClose.tsx +13 -0
  32. package/src/icons/react/SlideMenuOpen.tsx +13 -0
  33. package/src/icons/react/index.tsx +11 -1
  34. package/src/select/select-in-popover.tsx +3 -2
  35. package/src/toast/toast-queue.ts +1 -1
  36. package/src/tooltip.tsx +7 -1
  37. package/src/icons/ast/SlideMenuOpened.ts +0 -8
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fibery/ui-kit",
3
- "version": "1.33.5",
3
+ "version": "1.33.6",
4
4
  "private": false,
5
5
  "files": [
6
6
  "src/antd/styles.ts",
@@ -41,12 +41,12 @@
41
41
  "@radix-ui/react-collapsible": "1.1.0",
42
42
  "@radix-ui/react-context-menu": "2.2.1",
43
43
  "@radix-ui/react-dropdown-menu": "2.1.1",
44
- "@radix-ui/react-navigation-menu": "1.2.0",
45
- "@radix-ui/react-toast": "1.2.1",
46
- "@radix-ui/react-tooltip": "1.1.2",
47
- "@types/d3-shape": "^3.1.3",
48
- "@types/react-select-country-list": "^2.2.1",
49
- "@types/setimmediate": "^1.0.2",
44
+ "@radix-ui/react-navigation-menu": "1.2.1",
45
+ "@radix-ui/react-toast": "1.2.2",
46
+ "@radix-ui/react-tooltip": "1.1.3",
47
+ "@types/d3-shape": "^3.1.6",
48
+ "@types/react-select-country-list": "^2.2.3",
49
+ "@types/setimmediate": "^1.0.4",
50
50
  "@types/ua-parser-js": "0.7.36",
51
51
  "antd": "4.24.7",
52
52
  "chroma-js": "2.1.2",
@@ -72,10 +72,11 @@
72
72
  "react-select-country-list": "2.2.1",
73
73
  "react-virtuoso": "4.6.0",
74
74
  "screenfull": "6.0.1",
75
- "ua-parser-js": "0.7.24",
75
+ "tabbable": "5.2.1",
76
+ "ua-parser-js": "1.0.39",
77
+ "@fibery/react": "1.4.0",
76
78
  "@fibery/helpers": "1.3.0",
77
- "@fibery/emoji-data": "2.6.0",
78
- "@fibery/react": "1.4.0"
79
+ "@fibery/emoji-data": "2.6.0"
79
80
  },
80
81
  "peerDependencies": {
81
82
  "react": "^18.2.0",
@@ -109,8 +110,8 @@
109
110
  "svgo": "2.8.0",
110
111
  "typescript": "5.4.3",
111
112
  "unist-util-reduce": "0.2.2",
112
- "@fibery/eslint-config": "8.6.0",
113
- "@fibery/babel-preset": "7.4.0"
113
+ "@fibery/babel-preset": "7.4.0",
114
+ "@fibery/eslint-config": "8.6.0"
114
115
  },
115
116
  "jest": {
116
117
  "testEnvironment": "jsdom",
@@ -0,0 +1,66 @@
1
+ import {createContext} from "@fibery/react/src/create-context";
2
+ import {ReactNode, useCallback, useEffect, useId, useMemo, useState} from "react";
3
+
4
+ type ContextValue = {
5
+ openMenus: Set<string>;
6
+ setOpenMenus: (value: Set<string>) => void;
7
+ };
8
+
9
+ const [Provider, useContext] = createContext<ContextValue>("ActionsMenuOpenStateTrackerContext", {
10
+ openMenus: new Set(),
11
+ setOpenMenus: () => {},
12
+ });
13
+
14
+ export const ActionsMenuOpenStateTrackerProvider = ({children}: {children: ReactNode}) => {
15
+ const [openMenus, setOpenMenus] = useState<Set<string>>(new Set());
16
+
17
+ const value = useMemo(() => {
18
+ return {
19
+ openMenus,
20
+ setOpenMenus,
21
+ };
22
+ }, [openMenus, setOpenMenus]);
23
+
24
+ return <Provider value={value}>{children}</Provider>;
25
+ };
26
+
27
+ export const useActionsMenuOpenStateTracker = () => {
28
+ const {openMenus, setOpenMenus} = useContext();
29
+
30
+ const menuId = useId();
31
+
32
+ const onAddMenu = useCallback(() => {
33
+ openMenus.add(menuId);
34
+ setOpenMenus(new Set(openMenus));
35
+ }, [menuId, openMenus, setOpenMenus]);
36
+
37
+ const onRemoveMenu = useCallback(() => {
38
+ if (openMenus.has(menuId)) {
39
+ openMenus.delete(menuId);
40
+ setOpenMenus(new Set(openMenus));
41
+ }
42
+ }, [menuId, openMenus, setOpenMenus]);
43
+
44
+ useEffect(() => {
45
+ return () => {
46
+ onRemoveMenu();
47
+ };
48
+ // eslint-disable-next-line react-hooks/exhaustive-deps
49
+ }, []);
50
+
51
+ const onMenuOpenChange = useCallback(
52
+ (open: boolean) => {
53
+ if (open) {
54
+ onAddMenu();
55
+ } else {
56
+ onRemoveMenu();
57
+ }
58
+ },
59
+ [onAddMenu, onRemoveMenu]
60
+ );
61
+
62
+ return {
63
+ hasOpenMenu: openMenus.size > 0,
64
+ onMenuOpenChange,
65
+ };
66
+ };
@@ -7,6 +7,7 @@ import {ActionsMenuProps} from "./actions-menu-props";
7
7
  import {preventDefault} from "@fibery/react/src/prevent-default";
8
8
  import {useState} from "react";
9
9
  import {ActionsMenuConfirmation, ActionsMenuConfirmationProps} from "./actions-menu-confirmation";
10
+ import {useActionsMenuOpenStateTracker} from "./actions-menu-open-state-tracker";
10
11
 
11
12
  export const preventDefaultAndStopPropagation = (event: React.MouseEvent) => {
12
13
  event.preventDefault();
@@ -37,7 +38,16 @@ export const ActionsMenu = ({
37
38
  autoFocusOnClose,
38
39
  sticky,
39
40
  }: ActionsMenuProps): JSX.Element => {
40
- const [isOpen = false, setOpen] = useControllableState({value: open, onChange: onOpenChange});
41
+ const {onMenuOpenChange} = useActionsMenuOpenStateTracker();
42
+ const [isOpen = false, setOpen] = useControllableState({
43
+ value: open,
44
+ onChange: (value) => {
45
+ if (onOpenChange) {
46
+ onOpenChange(value);
47
+ }
48
+ onMenuOpenChange(value);
49
+ },
50
+ });
41
51
  const [confirmation, setConfirmation] = useState<ActionsMenuConfirmationProps | null>(null);
42
52
 
43
53
  return (
@@ -4,6 +4,7 @@ import {border, fontWeight, space, textStyles} from "../design-system";
4
4
  import {iconSizeVar} from "../icons/Icon";
5
5
  import SpinnerIcon from "../icons/react/Spinner";
6
6
  import {BaseButtonProps, BaseButton, ButtonSize} from "./base-button";
7
+ import {useIsSupportHardwareKeyboard} from "../use-is-support-hardware-keyboard";
7
8
 
8
9
  export type ButtonProps = {
9
10
  size?: ButtonSize;
@@ -88,6 +89,7 @@ export const Button = forwardRef<HTMLButtonElement, ButtonProps>(
88
89
  {size = "medium", iconStart, iconEnd, className, children, pending, disabled, shortcut, fullWidth, ...buttonProps},
89
90
  ref
90
91
  ) => {
92
+ const isSupportHardwareKeyboard = useIsSupportHardwareKeyboard();
91
93
  return (
92
94
  <BaseButton
93
95
  ref={ref}
@@ -98,7 +100,7 @@ export const Button = forwardRef<HTMLButtonElement, ButtonProps>(
98
100
  {pending ? <SpinnerIcon /> : iconStart}
99
101
  {children}
100
102
  {iconEnd}
101
- {shortcut ? <span className={shortcutContainer}>{shortcut}</span> : null}
103
+ {shortcut && isSupportHardwareKeyboard ? <span className={shortcutContainer}>{shortcut}</span> : null}
102
104
  </BaseButton>
103
105
  );
104
106
  }
@@ -632,6 +632,9 @@ export const themeColors = {
632
632
  colorBgEntityAvatarHover: [indigo.indigo3, indigoDark.indigo3],
633
633
  colorTextEntityAvatarDefault: [indigo.indigo8, indigoDark.indigo8],
634
634
  colorTextEntityAvatarHover: [indigo.indigo9, indigoDark.indigo9],
635
+
636
+ // Text editor
637
+ colorBgEditorImageZoomed: [getOpacities(slate.slate3).opacity90, getOpacities(slateDark.slate6).opacity90],
635
638
  } as const;
636
639
 
637
640
  type ThemeDefs = typeof themeColors;
@@ -919,14 +922,14 @@ export const layout = {
919
922
  viewSetupWidth: "30vw",
920
923
  viewSetupMinWidth: 380,
921
924
  inputHeight: 36, //TODO: merge input and item height?
922
- timelineToolbarHeight: 60,
925
+ timelineToolbarHeight: 48,
923
926
  timelineLineHeight: 48,
924
927
  timelineGroupPadding: 0,
925
928
  timelineItemHeightRatio: 36 / 48,
926
929
  timelineHeaderHeight: 48,
927
930
  calendarEventHeight: 30,
928
931
  calendarHeaderHeight: 30,
929
- calendarToolbarHeight: 60,
932
+ calendarToolbarHeight: 48,
930
933
  checkboxSize: 17,
931
934
  fakeBoardWidth: 260,
932
935
  fakeBoardHeight: 160,
@@ -18,7 +18,6 @@ export type EmojiPickerProps = {
18
18
  onAddCustomEmoji?: () => void;
19
19
  onSelect: (emoji: EmojiItem) => void;
20
20
  showSkinTones?: boolean;
21
-
22
21
  searchRef?: React.RefObject<HTMLInputElement>;
23
22
  };
24
23
  export const EmojiPicker: React.FC<EmojiPickerProps> = ({
@@ -31,10 +31,13 @@ export type IconEmojiPickerProps = React.PropsWithChildren<{
31
31
  defaultTab?: TabKey;
32
32
  showColorPickerOnTabs?: TabKey[];
33
33
  color?: string;
34
+ emojiSize?: number;
34
35
  getHoverColor?: (color: string) => string | undefined;
35
36
  }>;
37
+
36
38
  export const IconEmojiPicker: React.FC<IconEmojiPickerProps> = ({
37
39
  onIconSelect,
40
+ emojiSize,
38
41
  onEmojiSelect,
39
42
  onColorSelect,
40
43
  onCreateClick,
@@ -48,6 +51,15 @@ export const IconEmojiPicker: React.FC<IconEmojiPickerProps> = ({
48
51
  }) => {
49
52
  return (
50
53
  <AntTabs
54
+ wrapClassName={css`
55
+ height: 100%;
56
+ & .ant-tabs,
57
+ & .ant-tabs-content,
58
+ & .ant-tabs-tabpane,
59
+ & .ant-tabs-content-holder {
60
+ height: 100%;
61
+ }
62
+ `}
51
63
  animated={false}
52
64
  destroyInactiveTabPane
53
65
  defaultActiveKey={defaultTab}
@@ -58,6 +70,7 @@ export const IconEmojiPicker: React.FC<IconEmojiPickerProps> = ({
58
70
  children: (
59
71
  <>
60
72
  <EmojiPicker
73
+ emojiSize={emojiSize}
61
74
  color={color}
62
75
  onColorSelect={showColorPickerOnTabs.includes("emojis") ? onColorSelect : undefined}
63
76
  onCustomCategorySettings={onCustomEmojisSettings}
@@ -0,0 +1,8 @@
1
+
2
+ // This icon file is generated automatically.
3
+
4
+ import { IconDefinition } from '../types';
5
+
6
+ const BringForward: IconDefinition = {"icon":{"type":"root","children":[{"type":"element","tagName":"svg","properties":{"viewBox":"0 0 20 20"},"children":[{"type":"element","tagName":"path","properties":{"d":"M10 17.75a.75.75 0 0 1-.75-.75v-5.856l-1.22 1.22a.75.75 0 1 1-1.06-1.061l2.5-2.5a.75.75 0 0 1 1.06 0l2.5 2.5a.75.75 0 0 1-1.06 1.06l-1.22-1.219V17a.75.75 0 0 1-.75.75ZM17.75 3a.75.75 0 0 1-.75.75H3a.75.75 0 0 1 0-1.5h14a.75.75 0 0 1 .75.75ZM16 6.75a.75.75 0 0 0 0-1.5h-.75a.75.75 0 0 0 0 1.5H16ZM12.25 6.75a.75.75 0 0 0 0-1.5h-.75a.75.75 0 0 0 0 1.5h.75ZM8.5 6.75a.75.75 0 0 0 0-1.5h-.75a.75.75 0 0 0 0 1.5h.75ZM4.75 6.75a.75.75 0 0 0 0-1.5H4a.75.75 0 0 0 0 1.5h.75Z"},"children":[]}],"metadata":""}]},"name":"bring-forward"};
7
+
8
+ export default BringForward;
@@ -0,0 +1,8 @@
1
+
2
+ // This icon file is generated automatically.
3
+
4
+ import { IconDefinition } from '../types';
5
+
6
+ const BringToFront: IconDefinition = {"icon":{"type":"root","children":[{"type":"element","tagName":"svg","properties":{"viewBox":"0 0 20 20"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","clipRule":"evenodd","d":"M9.25 17a.75.75 0 0 0 1.5 0V7.977l1.22 1.22a.75.75 0 1 0 1.06-1.06l-2.5-2.5a.75.75 0 0 0-1.06 0l-2.5 2.5a.75.75 0 1 0 1.06 1.06l1.22-1.22V17ZM17 3.75a.75.75 0 0 0 0-1.5H3a.75.75 0 0 0 0 1.5h14Z"},"children":[]}],"metadata":""}]},"name":"bring-to-front"};
7
+
8
+ export default BringToFront;
@@ -0,0 +1,8 @@
1
+
2
+ // This icon file is generated automatically.
3
+
4
+ import { IconDefinition } from '../types';
5
+
6
+ const Create: IconDefinition = {"icon":{"type":"root","children":[{"type":"element","tagName":"svg","properties":{"width":20,"height":20,"fill":"none"},"children":[{"type":"element","tagName":"path","properties":{"clipRule":"evenodd","d":"M4.25 2A2.25 2.25 0 0 0 2 4.25v11.5A2.25 2.25 0 0 0 4.25 18h11.5A2.25 2.25 0 0 0 18 15.75v-6a.75.75 0 0 0-1.5 0v6a.75.75 0 0 1-.75.75H4.25a.75.75 0 0 1-.75-.75V4.25a.75.75 0 0 1 .75-.75h6a.75.75 0 0 0 0-1.5h-6Zm9.675.7A2.387 2.387 0 0 1 17.3 6.074l-5.727 5.727a.676.676 0 0 1-.478.198H8.838A.838.838 0 0 1 8 11.162V8.904c0-.18.071-.351.198-.478l5.727-5.727Zm2.42.956a1.035 1.035 0 0 0-1.464 0l-.224.224 1.463 1.463.224-.224a1.035 1.035 0 0 0 0-1.463ZM9.352 9.184v1.464h1.463l4.462-4.463-1.463-1.463-4.463 4.462Z"},"children":[]}],"metadata":""}]},"name":"create"};
7
+
8
+ export default Create;
@@ -0,0 +1,8 @@
1
+
2
+ // This icon file is generated automatically.
3
+
4
+ import { IconDefinition } from '../types';
5
+
6
+ const EntityMerge: IconDefinition = {"icon":{"type":"root","children":[{"type":"element","tagName":"svg","properties":{"width":20,"height":20,"fill":"none"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","clipRule":"evenodd","d":"M13.03 5.22a.75.75 0 1 1-1.06 1.06l-1.22-1.22v4.596a12.667 12.667 0 0 0 5.585 5.509.75.75 0 1 1-.67 1.341A14.167 14.167 0 0 1 10 11.364a14.167 14.167 0 0 1-5.665 5.142.75.75 0 0 1-.67-1.341c2.399-1.2 4.354-3.13 5.585-5.51V5.062L8.03 6.28A.75.75 0 0 1 6.97 5.22l2.5-2.5a.75.75 0 0 1 1.06 0l2.5 2.5Z","fill":"currentColor"},"children":[]}],"metadata":""}]},"name":"entity-merge"};
7
+
8
+ export default EntityMerge;
@@ -3,6 +3,6 @@
3
3
 
4
4
  import { IconDefinition } from '../types';
5
5
 
6
- const GlobeSimple: IconDefinition = {"icon":{"type":"root","children":[{"type":"element","tagName":"svg","properties":{"viewBox":"0 0 20 20"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","clipRule":"evenodd","d":"M2.537 9.25h3.064c.023-.397.068-.787.131-1.168.356-2.137 1.303-3.967 2.342-5.332a7.506 7.506 0 0 0-5.537 6.5ZM10 2.795c-1.16 1.22-2.394 3.17-2.788 5.534-.05.3-.086.607-.108.921h5.792a9.458 9.458 0 0 0-.108-.921C12.395 5.965 11.16 4.016 10 2.795Zm2.876 7.955H7.124c.184 1.948 1.002 4.107 2.876 6.36 1.874-2.253 2.692-4.412 2.876-6.36Zm-4.641 6.541c-1.678-2.263-2.45-4.482-2.616-6.541H2.537a7.506 7.506 0 0 0 5.698 6.541Zm3.53 0c1.678-2.263 2.45-4.482 2.616-6.541h3.082a7.506 7.506 0 0 1-5.698 6.541Zm5.698-8.041h-3.064a10.976 10.976 0 0 0-.131-1.168c-.356-2.137-1.303-3.967-2.342-5.332a7.506 7.506 0 0 1 5.537 6.5ZM1 10a9 9 0 1 1 18 0 9 9 0 0 1-18 0Z"},"children":[]}],"metadata":""}]},"name":"globe-simple"};
6
+ const GlobeSimple: IconDefinition = {"icon":{"type":"root","children":[{"type":"element","tagName":"svg","properties":{"viewBox":"0 0 20 20"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","clipRule":"evenodd","d":"M3.669 9.25h2.436c.022-.313.058-.621.108-.923.29-1.74 1.028-3.245 1.862-4.406A6.381 6.381 0 0 0 3.669 9.25ZM10 3.927c-.968 1.046-1.98 2.679-2.307 4.646-.037.221-.065.447-.084.677h4.782a8.089 8.089 0 0 0-.084-.677c-.328-1.967-1.339-3.6-2.307-4.646Zm2.37 6.823H7.63c.173 1.605.855 3.377 2.37 5.23 1.515-1.853 2.197-3.625 2.37-5.23Zm-4.146 5.374c-1.32-1.854-1.947-3.674-2.102-5.374H3.67a6.381 6.381 0 0 0 4.555 5.374Zm3.552 0c1.32-1.854 1.947-3.674 2.102-5.374h2.453a6.381 6.381 0 0 1-4.555 5.374Zm4.555-6.874h-2.436a9.586 9.586 0 0 0-.108-.923c-.29-1.74-1.028-3.245-1.862-4.406a6.381 6.381 0 0 1 4.406 5.329ZM2.125 10a7.875 7.875 0 1 1 15.75 0 7.875 7.875 0 0 1-15.75 0Z"},"children":[]}],"metadata":""}]},"name":"globe-simple"};
7
7
 
8
8
  export default GlobeSimple;
@@ -0,0 +1,8 @@
1
+
2
+ // This icon file is generated automatically.
3
+
4
+ import { IconDefinition } from '../types';
5
+
6
+ const LoupeZoom: IconDefinition = {"icon":{"type":"root","children":[{"type":"element","tagName":"svg","properties":{"viewBox":"0 0 20 20"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","clipRule":"evenodd","d":"M13.128 14.32a7.085 7.085 0 1 1 1.182-1.18l3.78 3.769a.835.835 0 1 1-1.18 1.182l-3.782-3.77ZM8.75 3.335a5.415 5.415 0 1 0 0 10.83 5.415 5.415 0 0 0 0-10.83Z"},"children":[]}],"metadata":""}]},"name":"loupe-zoom"};
7
+
8
+ export default LoupeZoom;
@@ -0,0 +1,8 @@
1
+
2
+ // This icon file is generated automatically.
3
+
4
+ import { IconDefinition } from '../types';
5
+
6
+ const LoupeZoomIn: IconDefinition = {"icon":{"type":"root","children":[{"type":"element","tagName":"svg","properties":{"viewBox":"0 0 20 20"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","clipRule":"evenodd","d":"M8.75 15.835a7.055 7.055 0 0 0 4.378-1.515l3.782 3.771a.835.835 0 0 0 1.18-1.182l-3.78-3.768a7.085 7.085 0 1 0-5.56 2.694ZM3.335 8.75a5.415 5.415 0 1 1 10.83 0 5.415 5.415 0 0 1-10.83 0ZM9.55 6.5a.75.75 0 1 0-1.5 0v1.55H6.5a.75.75 0 1 0 0 1.5h1.55V11a.75.75 0 0 0 1.5 0V9.55H11a.75.75 0 0 0 0-1.5H9.55V6.5Z"},"children":[]}],"metadata":""}]},"name":"loupe-zoom-in"};
7
+
8
+ export default LoupeZoomIn;
@@ -0,0 +1,8 @@
1
+
2
+ // This icon file is generated automatically.
3
+
4
+ import { IconDefinition } from '../types';
5
+
6
+ const LoupeZoomOut: IconDefinition = {"icon":{"type":"root","children":[{"type":"element","tagName":"svg","properties":{"viewBox":"0 0 20 20"},"children":[{"type":"element","tagName":"path","properties":{"d":"M6.5 8.05a.75.75 0 1 0 0 1.5H11a.75.75 0 0 0 0-1.5H6.5Z"},"children":[]},{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","clipRule":"evenodd","d":"M8.75 15.835a7.055 7.055 0 0 0 4.378-1.515l3.782 3.771a.835.835 0 0 0 1.18-1.182l-3.78-3.768a7.085 7.085 0 1 0-5.56 2.694ZM3.335 8.75a5.415 5.415 0 1 1 10.83 0 5.415 5.415 0 0 1-10.83 0Z"},"children":[]}],"metadata":""}]},"name":"loupe-zoom-out"};
7
+
8
+ export default LoupeZoomOut;
@@ -0,0 +1,8 @@
1
+
2
+ // This icon file is generated automatically.
3
+
4
+ import { IconDefinition } from '../types';
5
+
6
+ const SendBackward: IconDefinition = {"icon":{"type":"root","children":[{"type":"element","tagName":"svg","properties":{"viewBox":"0 0 20 20"},"children":[{"type":"element","tagName":"path","properties":{"d":"M10 2.25a.75.75 0 0 1 .75.75v5.856l1.22-1.22a.75.75 0 1 1 1.06 1.061l-2.5 2.5a.75.75 0 0 1-1.06 0l-2.5-2.5a.75.75 0 1 1 1.06-1.06l1.22 1.219V3a.75.75 0 0 1 .75-.75ZM2.25 17a.75.75 0 0 1 .75-.75h14a.75.75 0 0 1 0 1.5H3a.75.75 0 0 1-.75-.75ZM4 13.25a.75.75 0 0 0 0 1.5h.75a.75.75 0 0 0 0-1.5H4ZM7.75 13.25a.75.75 0 0 0 0 1.5h.75a.75.75 0 0 0 0-1.5h-.75ZM11.5 13.25a.75.75 0 0 0 0 1.5h.75a.75.75 0 0 0 0-1.5h-.75ZM15.25 13.25a.75.75 0 0 0 0 1.5H16a.75.75 0 0 0 0-1.5h-.75Z"},"children":[]}],"metadata":""}]},"name":"send-backward"};
7
+
8
+ export default SendBackward;
@@ -0,0 +1,8 @@
1
+
2
+ // This icon file is generated automatically.
3
+
4
+ import { IconDefinition } from '../types';
5
+
6
+ const SendToBack: IconDefinition = {"icon":{"type":"root","children":[{"type":"element","tagName":"svg","properties":{"viewBox":"0 0 20 20"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","clipRule":"evenodd","d":"M10 2.25a.75.75 0 0 1 .75.75v9.023l1.22-1.22a.75.75 0 1 1 1.06 1.06l-2.5 2.5a.75.75 0 0 1-1.06 0l-2.5-2.5a.75.75 0 1 1 1.06-1.06l1.22 1.22V3a.75.75 0 0 1 .75-.75ZM2.25 17a.75.75 0 0 1 .75-.75h14a.75.75 0 0 1 0 1.5H3a.75.75 0 0 1-.75-.75Z"},"children":[]}],"metadata":""}]},"name":"send-to-back"};
7
+
8
+ export default SendToBack;
@@ -3,6 +3,6 @@
3
3
 
4
4
  import { IconDefinition } from '../types';
5
5
 
6
- const SlideMenu: IconDefinition = {"icon":{"type":"root","children":[{"type":"element","tagName":"svg","properties":{"width":20,"height":20},"children":[{"type":"element","tagName":"path","properties":{"d":"M6.331 7.877H4.984c-.233 0-.384-.143-.384-.368V6.176c0-.233.143-.376.384-.376H6.33c.226 0 .369.143.369.376V7.51c0 .225-.15.368-.369.368ZM6.331 10.956H4.984c-.233 0-.384-.15-.384-.369v-1.34c0-.225.143-.376.384-.376H6.33c.226 0 .369.15.369.376v1.34c0 .218-.15.369-.369.369ZM4.984 14.02H6.33c.218 0 .369-.144.369-.37v-1.332c0-.226-.143-.376-.369-.376H4.984c-.241 0-.384.15-.384.376v1.333c0 .225.15.368.384.368Z"},"children":[]},{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","clipRule":"evenodd","d":"M15.447 17H4.553C2.872 17 2 16.136 2 14.492V5.508C2 3.857 2.872 3 4.553 3h10.894C17.128 3 18 3.857 18 5.508v8.984C18 16.143 17.128 17 15.447 17Zm-.093-1.513c.724 0 1.12-.378 1.12-1.127V5.633c0-.749-.396-1.12-1.12-1.12H9.12v10.975h6.233ZM4.646 4.513c-.716 0-1.12.37-1.12 1.119v8.729c0 .748.404 1.126 1.12 1.126h3.028V4.513H4.646Z"},"children":[]}],"metadata":""}]},"name":"slide-menu"};
6
+ const SlideMenu: IconDefinition = {"icon":{"type":"root","children":[{"type":"element","tagName":"svg","properties":{"viewBox":"0 0 20 20"},"children":[{"type":"element","tagName":"path","properties":{"d":"M7.25 9.5a.75.75 0 0 0-.75-.75h-1a.75.75 0 0 0 0 1.5h1a.75.75 0 0 0 .75-.75Z"},"children":[]},{"type":"element","tagName":"path","properties":{"d":"M6.5 6.25a.75.75 0 0 1 0 1.5h-1a.75.75 0 0 1 0-1.5h1Z","style":"fill:#000;fill-opacity:1"},"children":[]},{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","clipRule":"evenodd","d":"M15.25 3A2.75 2.75 0 0 1 18 5.75v8.5A2.75 2.75 0 0 1 15.25 17H4.75A2.75 2.75 0 0 1 2 14.25v-8.5A2.75 2.75 0 0 1 4.75 3h10.5Zm1.25 2.75c0-.69-.56-1.25-1.25-1.25h-5.5v11h5.5c.69 0 1.25-.56 1.25-1.25v-8.5ZM8.25 15.5v-11h-3.5c-.69 0-1.25.56-1.25 1.25v8.5c0 .69.56 1.25 1.25 1.25h3.5Z"},"children":[]}],"metadata":""}]},"name":"slide-menu"};
7
7
 
8
8
  export default SlideMenu;
@@ -0,0 +1,8 @@
1
+
2
+ // This icon file is generated automatically.
3
+
4
+ import { IconDefinition } from '../types';
5
+
6
+ const SlideMenuClose: IconDefinition = {"icon":{"type":"root","children":[{"type":"element","tagName":"svg","properties":{"viewBox":"0 0 20 20"},"children":[{"type":"element","tagName":"path","properties":{"d":"M14.161 8.828a.7.7 0 1 0-.99-.99l-1.666 1.667a.7.7 0 0 0 0 .99l1.666 1.667a.7.7 0 1 0 .99-.99L12.99 10l1.171-1.172Z"},"children":[]},{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","clipRule":"evenodd","d":"M18 5.75A2.75 2.75 0 0 0 15.25 3H4.75A2.75 2.75 0 0 0 2 5.75v8.5A2.75 2.75 0 0 0 4.75 17h10.5A2.75 2.75 0 0 0 18 14.25v-8.5ZM15.25 4.5c.69 0 1.25.56 1.25 1.25v8.5c0 .69-.56 1.25-1.25 1.25h-6.5v-11h6.5Zm-8 0v11h-2.5c-.69 0-1.25-.56-1.25-1.25v-8.5c0-.69.56-1.25 1.25-1.25h2.5Z"},"children":[]}],"metadata":""}]},"name":"slide-menu-close"};
7
+
8
+ export default SlideMenuClose;
@@ -0,0 +1,8 @@
1
+
2
+ // This icon file is generated automatically.
3
+
4
+ import { IconDefinition } from '../types';
5
+
6
+ const SlideMenuOpen: IconDefinition = {"icon":{"type":"root","children":[{"type":"element","tagName":"svg","properties":{"viewBox":"0 0 20 20"},"children":[{"type":"element","tagName":"path","properties":{"d":"M11.505 8.828a.7.7 0 1 1 .99-.99l1.666 1.667a.7.7 0 0 1 0 .99l-1.666 1.667a.7.7 0 1 1-.99-.99L12.676 10l-1.171-1.172Z"},"children":[]},{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","clipRule":"evenodd","d":"M18 5.75A2.75 2.75 0 0 0 15.25 3H4.75A2.75 2.75 0 0 0 2 5.75v8.5A2.75 2.75 0 0 0 4.75 17h10.5A2.75 2.75 0 0 0 18 14.25v-8.5ZM15.25 4.5c.69 0 1.25.56 1.25 1.25v8.5c0 .69-.56 1.25-1.25 1.25h-6.5v-11h6.5Zm-8 0v11h-2.5c-.69 0-1.25-.56-1.25-1.25v-8.5c0-.69.56-1.25 1.25-1.25h2.5Z"},"children":[]}],"metadata":""}]},"name":"slide-menu-open"};
7
+
8
+ export default SlideMenuOpen;
@@ -44,6 +44,8 @@ export { default as BellOff } from './BellOff';
44
44
  export { default as BellRinging } from './BellRinging';
45
45
  export { default as BellX } from './BellX';
46
46
  export { default as Bolt } from './Bolt';
47
+ export { default as BringForward } from './BringForward';
48
+ export { default as BringToFront } from './BringToFront';
47
49
  export { default as Cards } from './Cards';
48
50
  export { default as ChatAi } from './ChatAi';
49
51
  export { default as Chat } from './Chat';
@@ -63,6 +65,7 @@ export { default as Columns2 } from './Columns2';
63
65
  export { default as Columns4 } from './Columns4';
64
66
  export { default as Columns } from './Columns';
65
67
  export { default as Copy } from './Copy';
68
+ export { default as Create } from './Create';
66
69
  export { default as DatabaseStroke } from './DatabaseStroke';
67
70
  export { default as Database } from './Database';
68
71
  export { default as Delete } from './Delete';
@@ -76,6 +79,7 @@ export { default as Duplicate } from './Duplicate';
76
79
  export { default as DynamicFilterValue } from './DynamicFilterValue';
77
80
  export { default as Email } from './Email';
78
81
  export { default as EmojiDelete } from './EmojiDelete';
82
+ export { default as EntityMerge } from './EntityMerge';
79
83
  export { default as Export } from './Export';
80
84
  export { default as ExtensionAssignments } from './ExtensionAssignments';
81
85
  export { default as ExtensionAvatar } from './ExtensionAvatar';
@@ -138,6 +142,9 @@ export { default as LineDivider } from './LineDivider';
138
142
  export { default as Link } from './Link';
139
143
  export { default as Lock } from './Lock';
140
144
  export { default as Loom } from './Loom';
145
+ export { default as LoupeZoomIn } from './LoupeZoomIn';
146
+ export { default as LoupeZoomOut } from './LoupeZoomOut';
147
+ export { default as LoupeZoom } from './LoupeZoom';
141
148
  export { default as MapMode } from './MapMode';
142
149
  export { default as MenuCollapser } from './MenuCollapser';
143
150
  export { default as MessagePlusSquare } from './MessagePlusSquare';
@@ -233,6 +240,8 @@ export { default as Search } from './Search';
233
240
  export { default as SelfReferenceOff } from './SelfReferenceOff';
234
241
  export { default as SelfReferenceOn } from './SelfReferenceOn';
235
242
  export { default as SendArrow } from './SendArrow';
243
+ export { default as SendBackward } from './SendBackward';
244
+ export { default as SendToBack } from './SendToBack';
236
245
  export { default as Settings } from './Settings';
237
246
  export { default as Share } from './Share';
238
247
  export { default as Shared } from './Shared';
@@ -243,7 +252,8 @@ export { default as Sidebar } from './Sidebar';
243
252
  export { default as SimpleCompass } from './SimpleCompass';
244
253
  export { default as SlackIcon } from './SlackIcon';
245
254
  export { default as Slack } from './Slack';
246
- export { default as SlideMenuOpened } from './SlideMenuOpened';
255
+ export { default as SlideMenuClose } from './SlideMenuClose';
256
+ export { default as SlideMenuOpen } from './SlideMenuOpen';
247
257
  export { default as SlideMenu } from './SlideMenu';
248
258
  export { default as SmartFolder } from './SmartFolder';
249
259
  export { default as SortOnBottom } from './SortOnBottom';
@@ -1,13 +1,13 @@
1
1
  // This icon file is generated automatically.
2
2
 
3
3
  import {forwardRef} from 'react';
4
- import SlideMenuOpenedSvg from '../ast/SlideMenuOpened';
4
+ import BringForwardSvg from '../ast/BringForward';
5
5
  import { Icon } from '../Icon';
6
6
  import { IconBaseProps } from '../types';
7
7
 
8
- const SlideMenuOpened = forwardRef<SVGSVGElement, IconBaseProps>(function SlideMenuOpened(
8
+ const BringForward = forwardRef<SVGSVGElement, IconBaseProps>(function BringForward(
9
9
  props: IconBaseProps,
10
10
  ref: React.Ref<SVGSVGElement>
11
- ) {return <Icon {...props} className={props.className} ref={ref} icon={SlideMenuOpenedSvg} />});
11
+ ) {return <Icon {...props} className={props.className} ref={ref} icon={BringForwardSvg} />});
12
12
 
13
- export default SlideMenuOpened;
13
+ export default BringForward;
@@ -0,0 +1,13 @@
1
+ // This icon file is generated automatically.
2
+
3
+ import {forwardRef} from 'react';
4
+ import BringToFrontSvg from '../ast/BringToFront';
5
+ import { Icon } from '../Icon';
6
+ import { IconBaseProps } from '../types';
7
+
8
+ const BringToFront = forwardRef<SVGSVGElement, IconBaseProps>(function BringToFront(
9
+ props: IconBaseProps,
10
+ ref: React.Ref<SVGSVGElement>
11
+ ) {return <Icon {...props} className={props.className} ref={ref} icon={BringToFrontSvg} />});
12
+
13
+ export default BringToFront;
@@ -0,0 +1,13 @@
1
+ // This icon file is generated automatically.
2
+
3
+ import {forwardRef} from 'react';
4
+ import CreateSvg from '../ast/Create';
5
+ import { Icon } from '../Icon';
6
+ import { IconBaseProps } from '../types';
7
+
8
+ const Create = forwardRef<SVGSVGElement, IconBaseProps>(function Create(
9
+ props: IconBaseProps,
10
+ ref: React.Ref<SVGSVGElement>
11
+ ) {return <Icon {...props} className={props.className} ref={ref} icon={CreateSvg} />});
12
+
13
+ export default Create;
@@ -0,0 +1,13 @@
1
+ // This icon file is generated automatically.
2
+
3
+ import {forwardRef} from 'react';
4
+ import EntityMergeSvg from '../ast/EntityMerge';
5
+ import { Icon } from '../Icon';
6
+ import { IconBaseProps } from '../types';
7
+
8
+ const EntityMerge = forwardRef<SVGSVGElement, IconBaseProps>(function EntityMerge(
9
+ props: IconBaseProps,
10
+ ref: React.Ref<SVGSVGElement>
11
+ ) {return <Icon {...props} className={props.className} ref={ref} icon={EntityMergeSvg} />});
12
+
13
+ export default EntityMerge;
@@ -0,0 +1,13 @@
1
+ // This icon file is generated automatically.
2
+
3
+ import {forwardRef} from 'react';
4
+ import LoupeZoomSvg from '../ast/LoupeZoom';
5
+ import { Icon } from '../Icon';
6
+ import { IconBaseProps } from '../types';
7
+
8
+ const LoupeZoom = forwardRef<SVGSVGElement, IconBaseProps>(function LoupeZoom(
9
+ props: IconBaseProps,
10
+ ref: React.Ref<SVGSVGElement>
11
+ ) {return <Icon {...props} className={props.className} ref={ref} icon={LoupeZoomSvg} />});
12
+
13
+ export default LoupeZoom;
@@ -0,0 +1,13 @@
1
+ // This icon file is generated automatically.
2
+
3
+ import {forwardRef} from 'react';
4
+ import LoupeZoomInSvg from '../ast/LoupeZoomIn';
5
+ import { Icon } from '../Icon';
6
+ import { IconBaseProps } from '../types';
7
+
8
+ const LoupeZoomIn = forwardRef<SVGSVGElement, IconBaseProps>(function LoupeZoomIn(
9
+ props: IconBaseProps,
10
+ ref: React.Ref<SVGSVGElement>
11
+ ) {return <Icon {...props} className={props.className} ref={ref} icon={LoupeZoomInSvg} />});
12
+
13
+ export default LoupeZoomIn;
@@ -0,0 +1,13 @@
1
+ // This icon file is generated automatically.
2
+
3
+ import {forwardRef} from 'react';
4
+ import LoupeZoomOutSvg from '../ast/LoupeZoomOut';
5
+ import { Icon } from '../Icon';
6
+ import { IconBaseProps } from '../types';
7
+
8
+ const LoupeZoomOut = forwardRef<SVGSVGElement, IconBaseProps>(function LoupeZoomOut(
9
+ props: IconBaseProps,
10
+ ref: React.Ref<SVGSVGElement>
11
+ ) {return <Icon {...props} className={props.className} ref={ref} icon={LoupeZoomOutSvg} />});
12
+
13
+ export default LoupeZoomOut;
@@ -0,0 +1,13 @@
1
+ // This icon file is generated automatically.
2
+
3
+ import {forwardRef} from 'react';
4
+ import SendBackwardSvg from '../ast/SendBackward';
5
+ import { Icon } from '../Icon';
6
+ import { IconBaseProps } from '../types';
7
+
8
+ const SendBackward = forwardRef<SVGSVGElement, IconBaseProps>(function SendBackward(
9
+ props: IconBaseProps,
10
+ ref: React.Ref<SVGSVGElement>
11
+ ) {return <Icon {...props} className={props.className} ref={ref} icon={SendBackwardSvg} />});
12
+
13
+ export default SendBackward;
@@ -0,0 +1,13 @@
1
+ // This icon file is generated automatically.
2
+
3
+ import {forwardRef} from 'react';
4
+ import SendToBackSvg from '../ast/SendToBack';
5
+ import { Icon } from '../Icon';
6
+ import { IconBaseProps } from '../types';
7
+
8
+ const SendToBack = forwardRef<SVGSVGElement, IconBaseProps>(function SendToBack(
9
+ props: IconBaseProps,
10
+ ref: React.Ref<SVGSVGElement>
11
+ ) {return <Icon {...props} className={props.className} ref={ref} icon={SendToBackSvg} />});
12
+
13
+ export default SendToBack;
@@ -0,0 +1,13 @@
1
+ // This icon file is generated automatically.
2
+
3
+ import {forwardRef} from 'react';
4
+ import SlideMenuCloseSvg from '../ast/SlideMenuClose';
5
+ import { Icon } from '../Icon';
6
+ import { IconBaseProps } from '../types';
7
+
8
+ const SlideMenuClose = forwardRef<SVGSVGElement, IconBaseProps>(function SlideMenuClose(
9
+ props: IconBaseProps,
10
+ ref: React.Ref<SVGSVGElement>
11
+ ) {return <Icon {...props} className={props.className} ref={ref} icon={SlideMenuCloseSvg} />});
12
+
13
+ export default SlideMenuClose;
@@ -0,0 +1,13 @@
1
+ // This icon file is generated automatically.
2
+
3
+ import {forwardRef} from 'react';
4
+ import SlideMenuOpenSvg from '../ast/SlideMenuOpen';
5
+ import { Icon } from '../Icon';
6
+ import { IconBaseProps } from '../types';
7
+
8
+ const SlideMenuOpen = forwardRef<SVGSVGElement, IconBaseProps>(function SlideMenuOpen(
9
+ props: IconBaseProps,
10
+ ref: React.Ref<SVGSVGElement>
11
+ ) {return <Icon {...props} className={props.className} ref={ref} icon={SlideMenuOpenSvg} />});
12
+
13
+ export default SlideMenuOpen;
@@ -44,6 +44,8 @@ export { default as BellOff } from './BellOff';
44
44
  export { default as BellRinging } from './BellRinging';
45
45
  export { default as BellX } from './BellX';
46
46
  export { default as Bolt } from './Bolt';
47
+ export { default as BringForward } from './BringForward';
48
+ export { default as BringToFront } from './BringToFront';
47
49
  export { default as Cards } from './Cards';
48
50
  export { default as ChatAi } from './ChatAi';
49
51
  export { default as Chat } from './Chat';
@@ -63,6 +65,7 @@ export { default as Columns2 } from './Columns2';
63
65
  export { default as Columns4 } from './Columns4';
64
66
  export { default as Columns } from './Columns';
65
67
  export { default as Copy } from './Copy';
68
+ export { default as Create } from './Create';
66
69
  export { default as DatabaseStroke } from './DatabaseStroke';
67
70
  export { default as Database } from './Database';
68
71
  export { default as Delete } from './Delete';
@@ -76,6 +79,7 @@ export { default as Duplicate } from './Duplicate';
76
79
  export { default as DynamicFilterValue } from './DynamicFilterValue';
77
80
  export { default as Email } from './Email';
78
81
  export { default as EmojiDelete } from './EmojiDelete';
82
+ export { default as EntityMerge } from './EntityMerge';
79
83
  export { default as Export } from './Export';
80
84
  export { default as ExtensionAssignments } from './ExtensionAssignments';
81
85
  export { default as ExtensionAvatar } from './ExtensionAvatar';
@@ -138,6 +142,9 @@ export { default as LineDivider } from './LineDivider';
138
142
  export { default as Link } from './Link';
139
143
  export { default as Lock } from './Lock';
140
144
  export { default as Loom } from './Loom';
145
+ export { default as LoupeZoomIn } from './LoupeZoomIn';
146
+ export { default as LoupeZoomOut } from './LoupeZoomOut';
147
+ export { default as LoupeZoom } from './LoupeZoom';
141
148
  export { default as MapMode } from './MapMode';
142
149
  export { default as MenuCollapser } from './MenuCollapser';
143
150
  export { default as MessagePlusSquare } from './MessagePlusSquare';
@@ -233,6 +240,8 @@ export { default as Search } from './Search';
233
240
  export { default as SelfReferenceOff } from './SelfReferenceOff';
234
241
  export { default as SelfReferenceOn } from './SelfReferenceOn';
235
242
  export { default as SendArrow } from './SendArrow';
243
+ export { default as SendBackward } from './SendBackward';
244
+ export { default as SendToBack } from './SendToBack';
236
245
  export { default as Settings } from './Settings';
237
246
  export { default as Share } from './Share';
238
247
  export { default as Shared } from './Shared';
@@ -243,7 +252,8 @@ export { default as Sidebar } from './Sidebar';
243
252
  export { default as SimpleCompass } from './SimpleCompass';
244
253
  export { default as SlackIcon } from './SlackIcon';
245
254
  export { default as Slack } from './Slack';
246
- export { default as SlideMenuOpened } from './SlideMenuOpened';
255
+ export { default as SlideMenuClose } from './SlideMenuClose';
256
+ export { default as SlideMenuOpen } from './SlideMenuOpen';
247
257
  export { default as SlideMenu } from './SlideMenu';
248
258
  export { default as SmartFolder } from './SmartFolder';
249
259
  export { default as SortOnBottom } from './SortOnBottom';
@@ -65,7 +65,7 @@ const mobileClassName = css`
65
65
  `;
66
66
 
67
67
  const valueClassName = css`
68
- border-radius: ${border.radius4}px;
68
+ border-radius: ${border.radius6}px;
69
69
 
70
70
  &:focus {
71
71
  outline: none;
@@ -307,7 +307,8 @@ function SelectInPopoverInner<Option, IsMulti extends boolean, Group extends Gro
307
307
 
308
308
  const onTriggerKeyDown: React.KeyboardEventHandler = useCallback(
309
309
  (event) => {
310
- if ((event.key === "Enter" || event.key === " ") && !visible) {
310
+ const cmdKeyPressed = event.metaKey || event.ctrlKey;
311
+ if (((event.key === "Enter" && !cmdKeyPressed) || event.key === " ") && !visible) {
311
312
  event.preventDefault();
312
313
  onShow();
313
314
  }
@@ -3,7 +3,7 @@ import type {ToastProps} from "./toast";
3
3
 
4
4
  export type AddToastProps = Pick<
5
5
  ToastProps,
6
- "type" | "title" | "subTitle" | "icon" | "action" | "duration" | "open"
6
+ "type" | "title" | "subTitle" | "icon" | "action" | "duration" | "open" | "dismissable"
7
7
  > & {
8
8
  id?: string;
9
9
  };
package/src/tooltip.tsx CHANGED
@@ -2,6 +2,7 @@ import {css, cx} from "@linaria/core";
2
2
  import * as TooltipPrimitive from "@radix-ui/react-tooltip";
3
3
  import {forwardRef, type ReactNode, type SyntheticEvent} from "react";
4
4
  import {border, fontWeight, lineHeight, space, themeVars, tooltipDelay} from "./design-system";
5
+ import {ShortcutBadge} from "./shortcut-badge";
5
6
 
6
7
  const preventDefaultAndStopPropagation = (e: SyntheticEvent) => {
7
8
  e.preventDefault();
@@ -82,10 +83,15 @@ export const TooltipContent = ({title, shortcut}: {title: string; shortcut?: str
82
83
  display: flex;
83
84
  flex-direction: column;
84
85
  align-items: center;
86
+ gap: ${space.s4}px;
85
87
  `}
86
88
  >
87
89
  <TooltipTitle>{title}</TooltipTitle>
88
- {shortcut ? <TooltipDescription>{shortcut}</TooltipDescription> : null}
90
+ {shortcut ? (
91
+ <TooltipDescription>
92
+ <ShortcutBadge shortcut={shortcut} />
93
+ </TooltipDescription>
94
+ ) : null}
89
95
  </div>
90
96
  );
91
97
 
@@ -1,8 +0,0 @@
1
-
2
- // This icon file is generated automatically.
3
-
4
- import { IconDefinition } from '../types';
5
-
6
- const SlideMenuOpened: IconDefinition = {"icon":{"type":"root","children":[{"type":"element","tagName":"svg","properties":{"width":20,"height":20},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","clipRule":"evenodd","d":"M4.553 17h10.894C17.128 17 18 16.143 18 14.492V5.508C18 3.857 17.128 3 15.447 3H4.553C2.872 3 2 3.857 2 5.508v8.984C2 16.136 2.872 17 4.553 17Zm11.922-2.64c0 .75-.397 1.127-1.121 1.127H9.12V4.513h6.233c.724 0 1.12.37 1.12 1.119v8.729ZM6.33 7.878H4.984c-.233 0-.384-.143-.384-.368V6.176c0-.233.143-.376.384-.376H6.33c.226 0 .369.143.369.376V7.51c0 .225-.15.368-.369.368Zm0 3.079H4.984c-.233 0-.384-.15-.384-.369v-1.34c0-.225.143-.376.384-.376H6.33c.226 0 .369.15.369.376v1.34c0 .218-.15.369-.369.369Zm0 3.063H4.984c-.233 0-.384-.143-.384-.368v-1.333c0-.226.143-.376.384-.376H6.33c.226 0 .369.15.369.376v1.333c0 .225-.15.368-.369.368Z"},"children":[]}],"metadata":""}]},"name":"slide-menu-opened"};
7
-
8
- export default SlideMenuOpened;