@fibery/ui-kit 1.29.0 → 1.29.2
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.
- package/package.json +2 -2
- package/src/actions-menu/actions-menu-confirmation.tsx +70 -0
- package/src/actions-menu/actions-menu-props.tsx +1 -0
- package/src/actions-menu/actions-menu-sub-command-menu.tsx +97 -142
- package/src/actions-menu/actions-menu-sub-menu.tsx +3 -1
- package/src/actions-menu/actions-menu.tsx +8 -1
- package/src/actions-menu/context-actions-menu.tsx +5 -1
- package/src/actions-menu/contexts/actions-menu-context.tsx +6 -2
- package/src/actions-menu/utils/insert-separators.tsx +1 -3
- package/src/design-system.ts +14 -11
- package/src/dropdown-menu/index.tsx +10 -4
- package/src/icons/ast/FieldUnit.ts +8 -0
- package/src/icons/ast/IntegrationsIntegrationDiscourseColor.ts +8 -0
- package/src/icons/ast/IntegrationsIntegrationIntercomColor.ts +8 -0
- package/src/icons/ast/IntegrationsIntegrationSlackColor.ts +8 -0
- package/src/icons/ast/IntegrationsIntegrationZendeskColor.ts +8 -0
- package/src/icons/ast/LayoutDouble.ts +8 -0
- package/src/icons/ast/LayoutSingle.ts +8 -0
- package/src/icons/ast/MoveBottom.ts +8 -0
- package/src/icons/ast/MoveLeft.ts +8 -0
- package/src/icons/ast/MoveRight.ts +8 -0
- package/src/icons/ast/MoveTop.ts +8 -0
- package/src/icons/ast/Pin.ts +8 -0
- package/src/icons/ast/UserRole.ts +8 -0
- package/src/icons/ast/index.tsx +13 -0
- package/src/icons/react/FieldUnit.tsx +12 -0
- package/src/icons/react/IntegrationsIntegrationDiscourseColor.tsx +12 -0
- package/src/icons/react/IntegrationsIntegrationIntercomColor.tsx +12 -0
- package/src/icons/react/IntegrationsIntegrationSlackColor.tsx +12 -0
- package/src/icons/react/IntegrationsIntegrationZendeskColor.tsx +12 -0
- package/src/icons/react/LayoutDouble.tsx +12 -0
- package/src/icons/react/LayoutSingle.tsx +12 -0
- package/src/icons/react/MoveBottom.tsx +12 -0
- package/src/icons/react/MoveLeft.tsx +12 -0
- package/src/icons/react/MoveRight.tsx +12 -0
- package/src/icons/react/MoveTop.tsx +12 -0
- package/src/icons/react/Pin.tsx +12 -0
- package/src/icons/react/UserRole.tsx +12 -0
- package/src/icons/react/index.tsx +13 -0
- package/src/item.tsx +1 -1
- package/src/select/select-in-popover.tsx +3 -2
- package/src/tooltip.tsx +3 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fibery/ui-kit",
|
|
3
|
-
"version": "1.29.
|
|
3
|
+
"version": "1.29.2",
|
|
4
4
|
"private": false,
|
|
5
5
|
"files": [
|
|
6
6
|
"src/antd/styles.ts",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"chroma-js": "2.1.2",
|
|
55
55
|
"chrono-node": "^2.7.5",
|
|
56
56
|
"classnames": "2.3.1",
|
|
57
|
-
"cmdk": "0.
|
|
57
|
+
"cmdk": "1.0.0",
|
|
58
58
|
"color-hash": "1.0.3",
|
|
59
59
|
"d3-shape": "1.3.7",
|
|
60
60
|
"date-fns": "2.29.2",
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import {css} from "@linaria/core";
|
|
2
|
+
import {AntModal} from "../antd/ant-modal";
|
|
3
|
+
import {border, space, themeVars} from "../design-system";
|
|
4
|
+
import {ActionsPanel} from "../actions-panel";
|
|
5
|
+
import {Button} from "../button";
|
|
6
|
+
import {useActionsMenuContext} from "./contexts/actions-menu-context";
|
|
7
|
+
|
|
8
|
+
const modalClass = css`
|
|
9
|
+
& .ant-modal-content {
|
|
10
|
+
box-shadow: ${themeVars.shadowModal};
|
|
11
|
+
margin-left: ${space.s6}px;
|
|
12
|
+
margin-right: ${space.s6}px;
|
|
13
|
+
background-color: ${themeVars.modalContentBg};
|
|
14
|
+
border-radius: ${border.radius6}px;
|
|
15
|
+
}
|
|
16
|
+
`;
|
|
17
|
+
|
|
18
|
+
export type ActionsMenuConfirmationProps = {
|
|
19
|
+
message: string;
|
|
20
|
+
onCancel?: () => void;
|
|
21
|
+
onConfirm: () => void;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export const ActionsMenuConfirmation: React.FC<ActionsMenuConfirmationProps> = ({message, onCancel, onConfirm}) => {
|
|
25
|
+
const {showConfirmation} = useActionsMenuContext();
|
|
26
|
+
|
|
27
|
+
// TODO: use radix dialog
|
|
28
|
+
return (
|
|
29
|
+
<AntModal
|
|
30
|
+
zIndex={1001} // ant vs radix -- round 1
|
|
31
|
+
open={true}
|
|
32
|
+
closable={false}
|
|
33
|
+
footer={null}
|
|
34
|
+
maskStyle={{backgroundColor: themeVars.modalBg}}
|
|
35
|
+
className={modalClass}
|
|
36
|
+
maskClosable
|
|
37
|
+
onCancel={() => showConfirmation(null)}
|
|
38
|
+
>
|
|
39
|
+
{message}
|
|
40
|
+
|
|
41
|
+
<div
|
|
42
|
+
className={css`
|
|
43
|
+
margin-top: ${space.s24}px;
|
|
44
|
+
display: flex;
|
|
45
|
+
gap: ${space.s6}px;
|
|
46
|
+
`}
|
|
47
|
+
>
|
|
48
|
+
<ActionsPanel inline>
|
|
49
|
+
<Button
|
|
50
|
+
primary
|
|
51
|
+
onClick={() => {
|
|
52
|
+
onConfirm();
|
|
53
|
+
showConfirmation(null);
|
|
54
|
+
}}
|
|
55
|
+
>
|
|
56
|
+
Proceed
|
|
57
|
+
</Button>
|
|
58
|
+
<Button
|
|
59
|
+
onClick={() => {
|
|
60
|
+
showConfirmation(null);
|
|
61
|
+
onCancel?.();
|
|
62
|
+
}}
|
|
63
|
+
>
|
|
64
|
+
Cancel
|
|
65
|
+
</Button>
|
|
66
|
+
</ActionsPanel>
|
|
67
|
+
</div>
|
|
68
|
+
</AntModal>
|
|
69
|
+
);
|
|
70
|
+
};
|
|
@@ -10,6 +10,7 @@ export type ActionsMenuProps = {
|
|
|
10
10
|
align?: ContentProps["align"];
|
|
11
11
|
disabled?: boolean;
|
|
12
12
|
portalled?: boolean;
|
|
13
|
+
container?: HTMLElement | null | undefined;
|
|
13
14
|
wide?: boolean;
|
|
14
15
|
/** The controlled open state of the ActionsMenu. Must be used in conjunction with onOpenChange. */
|
|
15
16
|
open?: boolean;
|
|
@@ -1,59 +1,41 @@
|
|
|
1
|
+
import {stopPropagation} from "@fibery/react/src/stop-propagation";
|
|
1
2
|
import {css, cx} from "@linaria/core";
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
import React, {RefObject, useMemo, useRef, useState} from "react";
|
|
4
|
+
import {
|
|
5
|
+
CommandMenuEmpty,
|
|
6
|
+
CommandMenuGroup,
|
|
7
|
+
CommandMenuInput,
|
|
8
|
+
CommandMenuItem,
|
|
9
|
+
CommandMenuList,
|
|
10
|
+
CommandMenuRoot,
|
|
11
|
+
} from "../command-menu";
|
|
6
12
|
import {ActionsMenuSubMenu} from "./actions-menu-sub-menu";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
/**
|
|
11
|
-
*
|
|
12
|
-
* Probably commands menu deserves to be extracted to a separate primitive component not connected to ActionsMenu
|
|
13
|
-
* but for now we don't have other use cases for it so no idea how a primitive should look like
|
|
14
|
-
*
|
|
15
|
-
* Feel free to extract it to a separate one
|
|
16
|
-
*
|
|
17
|
-
*/
|
|
18
|
-
|
|
19
|
-
const inputContainerCss = css`
|
|
20
|
-
display: flex;
|
|
21
|
-
padding: ${space.s8}px ${space.s12}px;
|
|
22
|
-
align-items: center;
|
|
23
|
-
border-bottom: 1px solid ${themeVars.separatorColor};
|
|
24
|
-
|
|
25
|
-
& input {
|
|
26
|
-
min-width: 120px;
|
|
27
|
-
width: 100%;
|
|
28
|
-
color: ${themeVars.textColor};
|
|
29
|
-
background-color: ${themeVars.transparent};
|
|
30
|
-
margin-left: ${space.s8}px;
|
|
31
|
-
font-size: 13px;
|
|
32
|
-
border: none;
|
|
33
|
-
outline: none;
|
|
34
|
-
resize: none;
|
|
35
|
-
}
|
|
13
|
+
import {useActionsMenuContext} from "./contexts/actions-menu-context";
|
|
14
|
+
import {createContext} from "@fibery/react/src/create-context";
|
|
15
|
+
import {composeEventHandlers} from "@fibery/react/src/compose-event-handlers";
|
|
36
16
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
17
|
+
const [ActionsMenuSubCommandMenuProvider, useActionsMenuSubCommandMenuCtx] = createContext<{
|
|
18
|
+
subMenuOpenRef: RefObject<boolean>;
|
|
19
|
+
subMenuTriggerRef: RefObject<HTMLDivElement>;
|
|
20
|
+
}>("ActionsMenuSubCommandMenu");
|
|
41
21
|
|
|
42
22
|
type ActionsMenuSubCommandMenuProps = React.PropsWithChildren<{
|
|
43
23
|
trigger?: React.ReactNode;
|
|
44
24
|
disabled?: boolean;
|
|
45
|
-
filter?: React.ComponentPropsWithoutRef<typeof CommandRoot>["filter"];
|
|
46
25
|
}>;
|
|
47
|
-
export const ActionsMenuSubCommandMenu: React.FC<ActionsMenuSubCommandMenuProps> = ({
|
|
48
|
-
disabled,
|
|
49
|
-
trigger,
|
|
50
|
-
filter,
|
|
51
|
-
children,
|
|
52
|
-
}) => {
|
|
26
|
+
export const ActionsMenuSubCommandMenu: React.FC<ActionsMenuSubCommandMenuProps> = ({disabled, trigger, children}) => {
|
|
53
27
|
const [open, onOpenChange] = useState(false);
|
|
54
28
|
const triggerRef = useRef(null);
|
|
55
29
|
const openRef = useRef(false);
|
|
56
30
|
|
|
31
|
+
const ctx = useMemo(
|
|
32
|
+
() => ({
|
|
33
|
+
subMenuOpenRef: openRef,
|
|
34
|
+
subMenuTriggerRef: triggerRef,
|
|
35
|
+
}),
|
|
36
|
+
[]
|
|
37
|
+
);
|
|
38
|
+
|
|
57
39
|
return (
|
|
58
40
|
<ActionsMenuSubMenu
|
|
59
41
|
disabled={disabled}
|
|
@@ -64,126 +46,99 @@ export const ActionsMenuSubCommandMenu: React.FC<ActionsMenuSubCommandMenuProps>
|
|
|
64
46
|
}}
|
|
65
47
|
trigger={trigger}
|
|
66
48
|
triggerRef={triggerRef}
|
|
49
|
+
contentClassName={css`
|
|
50
|
+
&:is(&) {
|
|
51
|
+
overflow: hidden;
|
|
52
|
+
display: flex;
|
|
53
|
+
flex-direction: column;
|
|
54
|
+
max-height: 400px; // we use fixed height instead of --radix-dropdown-menu-content-available-height because it doesn't restore well after filtering if submenu was opened near the bottom of viewport. https://the.fibery.io/SoftDev/bug/It's-impossible-to-place-cursor-in-search-input-in-Existing-views-and-Convert-to-popup-10357/comment=14877
|
|
55
|
+
}
|
|
56
|
+
`}
|
|
67
57
|
>
|
|
68
|
-
<
|
|
69
|
-
filter={filter}
|
|
70
|
-
onClick={stopPropagation}
|
|
71
|
-
onBlur={(e) => {
|
|
72
|
-
/**
|
|
73
|
-
* Submenu Trigger tries to steal the focus from input on every onPointerMove
|
|
74
|
-
* to avoid this we lock focus on input and do not let it move to back to triger while menu is still open
|
|
75
|
-
*
|
|
76
|
-
* We use openRef here because react state will be updated only on next render
|
|
77
|
-
*/
|
|
78
|
-
if (openRef.current && e.target.hasAttribute("cmdk-input") && e.relatedTarget === triggerRef.current) {
|
|
79
|
-
e.target.focus();
|
|
80
|
-
}
|
|
81
|
-
}}
|
|
82
|
-
>
|
|
83
|
-
{children}
|
|
84
|
-
</CommandRoot>
|
|
58
|
+
<ActionsMenuSubCommandMenuProvider value={ctx}>{children}</ActionsMenuSubCommandMenuProvider>
|
|
85
59
|
</ActionsMenuSubMenu>
|
|
86
60
|
);
|
|
87
61
|
};
|
|
88
62
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
63
|
+
export const ActionsMenuSubCommandMenuRoot: React.FC<React.ComponentPropsWithoutRef<typeof CommandMenuRoot>> = ({
|
|
64
|
+
className,
|
|
65
|
+
onClick,
|
|
66
|
+
onBlur,
|
|
67
|
+
...props
|
|
68
|
+
}) => {
|
|
69
|
+
const {subMenuOpenRef, subMenuTriggerRef} = useActionsMenuSubCommandMenuCtx();
|
|
70
|
+
|
|
71
|
+
return (
|
|
72
|
+
<CommandMenuRoot
|
|
73
|
+
className={cx(
|
|
74
|
+
css`
|
|
75
|
+
&:is(&) {
|
|
76
|
+
width: 250px;
|
|
77
|
+
}
|
|
78
|
+
`,
|
|
79
|
+
className
|
|
80
|
+
)}
|
|
81
|
+
onClick={composeEventHandlers(onClick, stopPropagation)}
|
|
82
|
+
onBlur={composeEventHandlers(onBlur, (e) => {
|
|
83
|
+
/**
|
|
84
|
+
* Submenu Trigger tries to steal the focus from input on every onPointerMove
|
|
85
|
+
* to avoid this we lock focus on input and do not let it move to back to triger while menu is still open
|
|
86
|
+
*
|
|
87
|
+
* setTimeout is needed for firefox https://the.fibery.io/SoftDev/bug/Automatically-place-the-cursor-in-the-search-input-in-the-list-of-spaces-in-'Move-to'-option-10524
|
|
88
|
+
*
|
|
89
|
+
* We use subMenuOpenRef here because react state will be updated only on next render. Alternatively we can try to use flushSync
|
|
90
|
+
*/
|
|
91
|
+
if (
|
|
92
|
+
subMenuOpenRef.current &&
|
|
93
|
+
e.target.hasAttribute("cmdk-input") &&
|
|
94
|
+
e.relatedTarget === subMenuTriggerRef.current
|
|
95
|
+
) {
|
|
96
|
+
setTimeout(() => {
|
|
97
|
+
e.target.focus();
|
|
98
|
+
}, 0);
|
|
99
|
+
}
|
|
100
|
+
})}
|
|
101
|
+
{...props}
|
|
102
|
+
/>
|
|
103
|
+
);
|
|
92
104
|
};
|
|
105
|
+
|
|
106
|
+
type ActionsMenuSubCommandMenuInputProps = React.ComponentPropsWithoutRef<typeof CommandMenuInput>;
|
|
93
107
|
export const ActionsMenuSubCommandMenuInput: React.FC<ActionsMenuSubCommandMenuInputProps> = ({
|
|
94
|
-
placeholder,
|
|
95
108
|
autoFocus = true,
|
|
109
|
+
onKeyDown,
|
|
110
|
+
...otherProps
|
|
96
111
|
}) => {
|
|
97
112
|
return (
|
|
98
|
-
<
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
/>
|
|
110
|
-
</div>
|
|
113
|
+
<CommandMenuInput
|
|
114
|
+
onKeyDown={(e) => {
|
|
115
|
+
// prevent submenu from closing if input is not empty
|
|
116
|
+
if ((e.target as HTMLInputElement).value.length > 0 && e.key === "ArrowLeft") {
|
|
117
|
+
e.stopPropagation();
|
|
118
|
+
}
|
|
119
|
+
onKeyDown?.(e);
|
|
120
|
+
}}
|
|
121
|
+
autoFocus={autoFocus}
|
|
122
|
+
{...otherProps}
|
|
123
|
+
/>
|
|
111
124
|
);
|
|
112
125
|
};
|
|
113
126
|
|
|
114
|
-
export const ActionsMenuSubCommandMenuList =
|
|
115
|
-
overflow-y: scroll;
|
|
116
|
-
width: 250px;
|
|
117
|
-
height: var(--cmdk-list-height);
|
|
118
|
-
max-height: 600px;
|
|
119
|
-
transition: height 100ms ease;
|
|
120
|
-
margin-top: ${space.s4}px;
|
|
121
|
-
`;
|
|
122
|
-
|
|
123
|
-
const commandItemCss = css`
|
|
124
|
-
display: flex;
|
|
125
|
-
align-items: center;
|
|
126
|
-
gap: ${space.s6}px;
|
|
127
|
-
padding: 0 ${space.s12}px;
|
|
128
|
-
cursor: pointer;
|
|
129
|
-
min-height: ${layout.menuItemHeight}px;
|
|
130
|
-
margin: 0 ${space.s4}px;
|
|
131
|
-
|
|
132
|
-
&[data-selected] {
|
|
133
|
-
margin: 0 4px;
|
|
134
|
-
background-color: ${themeVars.colorBgActionsMenuItemHover};
|
|
135
|
-
border-radius: ${border.radius6}px;
|
|
136
|
-
}
|
|
137
|
-
`;
|
|
138
|
-
const commandItemTitleCss = css`
|
|
139
|
-
white-space: nowrap;
|
|
140
|
-
text-overflow: ellipsis;
|
|
141
|
-
overflow: hidden;
|
|
142
|
-
`;
|
|
127
|
+
export const ActionsMenuSubCommandMenuList = CommandMenuList;
|
|
143
128
|
|
|
144
|
-
|
|
145
|
-
icon?: React.ReactNode;
|
|
146
|
-
};
|
|
147
|
-
|
|
148
|
-
export const ActionsMenuSubCommandMenuItem: React.FC<ActionsMenuSubCommandMenuItemProps> = ({
|
|
129
|
+
export const ActionsMenuSubCommandMenuItem: React.FC<React.ComponentPropsWithoutRef<typeof CommandMenuItem>> = ({
|
|
149
130
|
onSelect,
|
|
150
|
-
icon,
|
|
151
|
-
children,
|
|
152
|
-
className,
|
|
153
131
|
...props
|
|
154
132
|
}) => {
|
|
155
133
|
const {close} = useActionsMenuContext();
|
|
156
|
-
const [showTitle, setShowTitle] = useState(false);
|
|
157
|
-
|
|
158
134
|
const onSelectItem = (value: string) => {
|
|
159
135
|
onSelect?.(value);
|
|
160
136
|
close();
|
|
161
137
|
};
|
|
162
138
|
|
|
163
|
-
return
|
|
164
|
-
<CommandItem className={cx(commandItemCss, className)} onSelect={onSelectItem} {...props}>
|
|
165
|
-
{icon}
|
|
166
|
-
<span
|
|
167
|
-
title={showTitle ? (children as string) : ""}
|
|
168
|
-
onMouseEnter={(e) => {
|
|
169
|
-
const target = e.target as HTMLElement;
|
|
170
|
-
if (typeof children === "string" && target.offsetWidth < target.scrollWidth) {
|
|
171
|
-
setShowTitle(true);
|
|
172
|
-
}
|
|
173
|
-
}}
|
|
174
|
-
className={commandItemTitleCss}
|
|
175
|
-
>
|
|
176
|
-
{children}
|
|
177
|
-
</span>
|
|
178
|
-
</CommandItem>
|
|
179
|
-
);
|
|
139
|
+
return <CommandMenuItem onSelect={onSelectItem} {...props}></CommandMenuItem>;
|
|
180
140
|
};
|
|
181
141
|
|
|
182
|
-
export const ActionsMenuSubCommandMenuEmpty =
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
align-items: center;
|
|
186
|
-
padding: 0 ${space.s12}px;
|
|
187
|
-
min-height: ${layout.itemHeight}px;
|
|
188
|
-
color: ${themeVars.accentTextColor};
|
|
189
|
-
`;
|
|
142
|
+
export const ActionsMenuSubCommandMenuEmpty = CommandMenuEmpty;
|
|
143
|
+
|
|
144
|
+
export const ActionsMenuSubCommandMenuGroup = CommandMenuGroup;
|
|
@@ -22,6 +22,7 @@ type Props = React.PropsWithChildren<{
|
|
|
22
22
|
open?: boolean;
|
|
23
23
|
onOpenChange?: (v: boolean) => void;
|
|
24
24
|
disabled?: boolean;
|
|
25
|
+
contentClassName?: string;
|
|
25
26
|
}>;
|
|
26
27
|
|
|
27
28
|
export const ActionsMenuSubMenu: React.FC<Props> = ({
|
|
@@ -31,6 +32,7 @@ export const ActionsMenuSubMenu: React.FC<Props> = ({
|
|
|
31
32
|
triggerRef,
|
|
32
33
|
children,
|
|
33
34
|
disabled = false,
|
|
35
|
+
contentClassName,
|
|
34
36
|
}) => {
|
|
35
37
|
const {MenuPrimitive} = useActionsMenuContext();
|
|
36
38
|
|
|
@@ -51,7 +53,7 @@ export const ActionsMenuSubMenu: React.FC<Props> = ({
|
|
|
51
53
|
/>
|
|
52
54
|
</div>
|
|
53
55
|
</MenuPrimitive.SubTrigger>
|
|
54
|
-
<MenuPrimitive.SubContent>{children}</MenuPrimitive.SubContent>
|
|
56
|
+
<MenuPrimitive.SubContent className={contentClassName}>{children}</MenuPrimitive.SubContent>
|
|
55
57
|
</MenuPrimitive.Sub>
|
|
56
58
|
);
|
|
57
59
|
};
|
|
@@ -5,6 +5,8 @@ import {ActionsMenuContextProvider} from "./contexts/actions-menu-context";
|
|
|
5
5
|
import {ActionsMenuDangerousRowsProvider} from "./contexts/actions-menu-dangerous-rows";
|
|
6
6
|
import {ActionsMenuProps} from "./actions-menu-props";
|
|
7
7
|
import {preventDefault} from "@fibery/react/src/prevent-default";
|
|
8
|
+
import {useState} from "react";
|
|
9
|
+
import {ActionsMenuConfirmation, ActionsMenuConfirmationProps} from "./actions-menu-confirmation";
|
|
8
10
|
|
|
9
11
|
export const preventDefaultAndStopPropagation = (event: React.MouseEvent) => {
|
|
10
12
|
event.preventDefault();
|
|
@@ -27,6 +29,7 @@ export const ActionsMenu = ({
|
|
|
27
29
|
onOpenChange,
|
|
28
30
|
children,
|
|
29
31
|
portalled,
|
|
32
|
+
container,
|
|
30
33
|
disabled,
|
|
31
34
|
contentStyles,
|
|
32
35
|
modal,
|
|
@@ -34,9 +37,10 @@ export const ActionsMenu = ({
|
|
|
34
37
|
sticky,
|
|
35
38
|
}: ActionsMenuProps): JSX.Element => {
|
|
36
39
|
const [isOpen = false, setOpen] = useControllableState({value: open, onChange: onOpenChange});
|
|
40
|
+
const [confirmation, setConfirmation] = useState<ActionsMenuConfirmationProps | null>(null);
|
|
37
41
|
|
|
38
42
|
return (
|
|
39
|
-
<ActionsMenuContextProvider setOpen={setOpen} MenuPrimitive={DropdownMenu}>
|
|
43
|
+
<ActionsMenuContextProvider setOpen={setOpen} showConfirmation={setConfirmation} MenuPrimitive={DropdownMenu}>
|
|
40
44
|
<DropdownMenu.Root open={isOpen} onOpenChange={setOpen} modal={modal || false}>
|
|
41
45
|
<DropdownMenu.Trigger
|
|
42
46
|
// backward compatibility for dropdown styles
|
|
@@ -55,12 +59,15 @@ export const ActionsMenu = ({
|
|
|
55
59
|
sideOffset={sideOffset}
|
|
56
60
|
className={cx(wide && wideCss, contentStyles)}
|
|
57
61
|
portalled={portalled}
|
|
62
|
+
container={container}
|
|
58
63
|
collisionPadding={collisionPadding}
|
|
59
64
|
onCloseAutoFocus={autoFocusOnClose ? undefined : preventDefault}
|
|
60
65
|
>
|
|
61
66
|
<ActionsMenuDangerousRowsProvider open={isOpen}>{children}</ActionsMenuDangerousRowsProvider>
|
|
62
67
|
</DropdownMenu.Content>
|
|
63
68
|
</DropdownMenu.Root>
|
|
69
|
+
|
|
70
|
+
{confirmation ? <ActionsMenuConfirmation {...confirmation} /> : null}
|
|
64
71
|
</ActionsMenuContextProvider>
|
|
65
72
|
);
|
|
66
73
|
};
|
|
@@ -5,6 +5,8 @@ import * as ContextMenu from "../context-menu";
|
|
|
5
5
|
import {ActionsMenuDangerousRowsProvider} from "./contexts/actions-menu-dangerous-rows";
|
|
6
6
|
import {ActionsMenuProps} from "./actions-menu-props";
|
|
7
7
|
import {preventDefault} from "@fibery/react/src/prevent-default";
|
|
8
|
+
import {ActionsMenuConfirmation, ActionsMenuConfirmationProps} from "./actions-menu-confirmation";
|
|
9
|
+
import {useState} from "react";
|
|
8
10
|
|
|
9
11
|
export const ContextActionsMenu = ({
|
|
10
12
|
open,
|
|
@@ -15,9 +17,10 @@ export const ContextActionsMenu = ({
|
|
|
15
17
|
autoFocusOnClose = true,
|
|
16
18
|
}: ActionsMenuProps): JSX.Element => {
|
|
17
19
|
const [isOpen = false, setOpen] = useControllableState({value: open, onChange: onOpenChange});
|
|
20
|
+
const [confirmation, setConfirmation] = useState<ActionsMenuConfirmationProps | null>(null);
|
|
18
21
|
|
|
19
22
|
return (
|
|
20
|
-
<ActionsMenuContextProvider setOpen={setOpen} MenuPrimitive={ContextMenu}>
|
|
23
|
+
<ActionsMenuContextProvider setOpen={setOpen} showConfirmation={setConfirmation} MenuPrimitive={ContextMenu}>
|
|
21
24
|
<ContextMenu.Root onOpenChange={onOpenChange}>
|
|
22
25
|
<ContextMenu.Trigger disabled={disabled} asChild>
|
|
23
26
|
{trigger}
|
|
@@ -28,6 +31,7 @@ export const ContextActionsMenu = ({
|
|
|
28
31
|
</ContextMenu.Content>
|
|
29
32
|
</ContextMenu.Portal>
|
|
30
33
|
</ContextMenu.Root>
|
|
34
|
+
{confirmation ? <ActionsMenuConfirmation {...confirmation} /> : null}
|
|
31
35
|
</ActionsMenuContextProvider>
|
|
32
36
|
);
|
|
33
37
|
};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import {createContext} from "@fibery/react/src/create-context";
|
|
2
2
|
import {useMemo} from "react";
|
|
3
|
+
import {ActionsMenuConfirmationProps} from "../actions-menu-confirmation";
|
|
3
4
|
|
|
4
5
|
type MenuPrimitive = {
|
|
5
6
|
Item: React.ElementType;
|
|
@@ -13,6 +14,7 @@ type MenuPrimitive = {
|
|
|
13
14
|
|
|
14
15
|
type ActionsMenuContext = {
|
|
15
16
|
close: () => void;
|
|
17
|
+
showConfirmation: (args: ActionsMenuConfirmationProps | null) => void;
|
|
16
18
|
MenuPrimitive: MenuPrimitive;
|
|
17
19
|
};
|
|
18
20
|
|
|
@@ -20,16 +22,18 @@ const [Provider, useContext] = createContext<ActionsMenuContext>("ActionsMenuCon
|
|
|
20
22
|
|
|
21
23
|
type Props = React.PropsWithChildren<{
|
|
22
24
|
setOpen: (value: boolean) => void;
|
|
25
|
+
showConfirmation: (args: ActionsMenuConfirmationProps | null) => void;
|
|
23
26
|
MenuPrimitive: MenuPrimitive;
|
|
24
27
|
}>;
|
|
25
28
|
|
|
26
|
-
export const ActionsMenuContextProvider: React.FC<Props> = ({setOpen, MenuPrimitive, children}) => {
|
|
29
|
+
export const ActionsMenuContextProvider: React.FC<Props> = ({setOpen, showConfirmation, MenuPrimitive, children}) => {
|
|
27
30
|
const context = useMemo<ActionsMenuContext>(
|
|
28
31
|
() => ({
|
|
29
32
|
close: () => setOpen(false),
|
|
30
33
|
MenuPrimitive,
|
|
34
|
+
showConfirmation,
|
|
31
35
|
}),
|
|
32
|
-
[
|
|
36
|
+
[MenuPrimitive, showConfirmation, setOpen]
|
|
33
37
|
);
|
|
34
38
|
|
|
35
39
|
return <Provider value={context}>{children}</Provider>;
|
|
@@ -9,8 +9,7 @@ import {ActionsMenuSeparator} from "../actions-menu-separator";
|
|
|
9
9
|
*/
|
|
10
10
|
export const insertSeparators = (sections: (React.ReactNode[] | React.ReactNode)[]) => {
|
|
11
11
|
const nodes: React.ReactNode[] = [];
|
|
12
|
-
|
|
13
|
-
sections.forEach((section, idx) => {
|
|
12
|
+
sections.filter(Boolean).forEach((section, idx) => {
|
|
14
13
|
if (Array.isArray(section)) {
|
|
15
14
|
const filtered = section.filter(Boolean);
|
|
16
15
|
if (nodes.length > 0 && filtered.length > 0) {
|
|
@@ -23,6 +22,5 @@ export const insertSeparators = (sections: (React.ReactNode[] | React.ReactNode)
|
|
|
23
22
|
nodes.push(section);
|
|
24
23
|
}
|
|
25
24
|
});
|
|
26
|
-
|
|
27
25
|
return nodes;
|
|
28
26
|
};
|
package/src/design-system.ts
CHANGED
|
@@ -105,7 +105,7 @@ const brandColors = {
|
|
|
105
105
|
} as const;
|
|
106
106
|
|
|
107
107
|
export const getDarkenColor = _.memoize((color: string): string => {
|
|
108
|
-
return makeChromaColor(color).darken(0.
|
|
108
|
+
return makeChromaColor(color).darken(0.5).desaturate(0.8).css();
|
|
109
109
|
});
|
|
110
110
|
|
|
111
111
|
export const themeColors = {
|
|
@@ -114,6 +114,7 @@ export const themeColors = {
|
|
|
114
114
|
stateColors: [stateColors, stateColors],
|
|
115
115
|
colorAI: ["hsla(271, 57%, 61%, 1)", "hsla(272, 43%, 50%, 1)"],
|
|
116
116
|
colorBgAI: ["hsla(271, 57%, 61%, 0.1)", "hsla(272, 43%, 50%, 0.1)"],
|
|
117
|
+
colorSubtleBgAI: ["hsla(271, 57%, 61%, 0.05)", "hsla(272, 43%, 50%, 0.1)"],
|
|
117
118
|
actionMenuShadow: [
|
|
118
119
|
`0 0 0 1px ${getOpacities(slate.slate10).opacity10}, 0 12px 16px -4px ${getOpacities(slate.slate10).opacity30}`,
|
|
119
120
|
`0 0 0 1px ${getOpacities(slateDark.slate1).opacity10}, 0 12px 16px -4px ${
|
|
@@ -142,23 +143,24 @@ export const themeColors = {
|
|
|
142
143
|
`blur(24px) saturate(190%) contrast(50%) brightness(130%)`,
|
|
143
144
|
`blur(24px) saturate(180%) contrast(60%) brightness(70%)`,
|
|
144
145
|
],
|
|
145
|
-
primaryBlue: [indigo.indigo9, indigoDark.
|
|
146
|
+
primaryBlue: [indigo.indigo9, indigoDark.indigo9],
|
|
146
147
|
whiteColor: [whiteA.whiteA0, whiteA.whiteA0],
|
|
147
148
|
blackColor: [blackA.blackA0, blackA.blackA0],
|
|
148
|
-
mainBg: [slate.
|
|
149
|
+
mainBg: [slate.slate3, slateDark.slate1],
|
|
149
150
|
panelBg: [whiteA.whiteA0, slateDark.slate2],
|
|
150
151
|
panelContentBg: [slate.slate2, slateDark.slate2],
|
|
152
|
+
colorBgRelationContainer: [slate.slate2, slateDark.slate1],
|
|
151
153
|
pageBg: [whiteA.whiteA0, slateDark.slate1],
|
|
152
154
|
pageContentBg: [whiteA.whiteA0, slateDark.slate2],
|
|
153
155
|
colorBgPopup: [whiteA.whiteA0, slateDark.slate4],
|
|
154
156
|
colorBgSidebar: [whiteA.whiteA0, slateDark.slate3],
|
|
155
|
-
menuBg: [slate.
|
|
157
|
+
menuBg: [slate.slate3, slateDark.slate1],
|
|
156
158
|
menuTextColor: [slate.slate12, slate.slate8],
|
|
157
|
-
menuItemHoverColor: [slate.
|
|
159
|
+
menuItemHoverColor: [slate.slate5, slateDark.slate6],
|
|
158
160
|
menuSelectedTextColor: [slate.slate2, slate.slate2],
|
|
159
161
|
menuFooterColor: [getOpacities(whiteA.whiteA0).opacity20, getOpacities(slateDark.slate3).opacity40],
|
|
160
162
|
menuFooterHoverColor: [getOpacities(whiteA.whiteA0).opacity60, slateDark.slate4],
|
|
161
|
-
menuIconColor: [getOpacities(slate.
|
|
163
|
+
menuIconColor: [getOpacities(slate.slate11).opacity90, getOpacities(slateDark.slate11).opacity90],
|
|
162
164
|
menuSelectedIconColor: [getOpacities(slate.slate1).opacity90, getOpacities(slate.slate1).opacity90],
|
|
163
165
|
textColor: [slateDark.slate3, slate.slate6],
|
|
164
166
|
textSelectionColor: [getOpacities(blue.blue10).opacity20, getOpacities(blueDark.blue10).opacity40],
|
|
@@ -229,7 +231,7 @@ export const themeColors = {
|
|
|
229
231
|
`0 0 0 3px ${getOpacities(red.red11).opacity25}`,
|
|
230
232
|
`0 0 0 3px ${getOpacities(red.red7).opacity25}`,
|
|
231
233
|
],
|
|
232
|
-
buttonPrimaryColor: [indigo.
|
|
234
|
+
buttonPrimaryColor: [indigo.indigo9, indigoDark.indigo9],
|
|
233
235
|
buttonColor: [slate.slate10, slateDark.slate10],
|
|
234
236
|
buttonPrimaryTextColor: [slate.slate2, slate.slate6],
|
|
235
237
|
checkboxColor: [slate.slate10, slateDark.slate10],
|
|
@@ -262,7 +264,7 @@ export const themeColors = {
|
|
|
262
264
|
iconColor: [slate.slate10, slateDark.slate10],
|
|
263
265
|
appIconColor: [getOpacities(slate.slate2).opacity90, getOpacities(slate.slate2).opacity70],
|
|
264
266
|
appIconBgColor: [getOpacities(slate.slate1).opacity90, getOpacities(slate.slate2).opacity50],
|
|
265
|
-
mentionBgColor: [slate.
|
|
267
|
+
mentionBgColor: [getOpacities(slate.slate7).opacity30, getOpacities(slateDark.slate7).opacity40],
|
|
266
268
|
colorBgSelectMenu: [slate.slate1, slateDark.slate3],
|
|
267
269
|
shadowSelectMenu: [
|
|
268
270
|
`0 0 0 1px ${getOpacities(slate.slate10).opacity10}, 0 12px 16px -4px ${getOpacities(slate.slate10).opacity30}`,
|
|
@@ -366,14 +368,14 @@ export const themeColors = {
|
|
|
366
368
|
opacityMenuItemDragged: [`${opacity.opacity40}`, `${opacity.opacity40}`],
|
|
367
369
|
colorBgMenuItemSelectedDragged: [indigo.indigo6, indigoDark.indigo6],
|
|
368
370
|
// Default
|
|
369
|
-
colorTextMenuItem: [slate.slate12, slateDark.slate12],
|
|
371
|
+
colorTextMenuItem: [slate.slate12, getOpacities(slateDark.slate12).opacity90],
|
|
370
372
|
colorBgMenuItem: [transparent, transparent],
|
|
371
373
|
// :hover
|
|
372
|
-
colorBgMenuItemHover: [slate.
|
|
374
|
+
colorBgMenuItemHover: [slate.slate5, slateDark.slate4],
|
|
373
375
|
// :focus
|
|
374
376
|
colorBgMenuItemFocus: [slate.slate6, slateDark.slate6],
|
|
375
377
|
// Selected
|
|
376
|
-
colorBgMenuItemSelected: [indigo.
|
|
378
|
+
colorBgMenuItemSelected: [indigo.indigo5, indigoDark.indigo4],
|
|
377
379
|
// :hover
|
|
378
380
|
colorBgMenuItemSelectedHover: [indigo.indigo6, indigoDark.indigo6],
|
|
379
381
|
// :focus, :focus:hover
|
|
@@ -469,6 +471,7 @@ export const themeColors = {
|
|
|
469
471
|
progressBarBg: [getOpacities(indigo.indigo9).opacity25, getOpacities(indigoDark.indigo10).opacity25],
|
|
470
472
|
searchFiltersBg: [slate.slate1, slateDark.slate2],
|
|
471
473
|
colorPickerSwatchBorder: [blackA.blackA7, blackA.blackA7],
|
|
474
|
+
colorBorderRichTextMedia: [blackA.blackA7, blackA.blackA7],
|
|
472
475
|
richTextTableBorder: [blackA.blackA5, whiteA.whiteA7],
|
|
473
476
|
gridHeaderBgColor: [slate.slate2, slateDark.slate3],
|
|
474
477
|
gridHeaderHoverBgColor: [slate.slate3, slateDark.slate4],
|
|
@@ -98,6 +98,7 @@ const dropdownMenuContentStyles = css`
|
|
|
98
98
|
export type ContentProps = DropdownMenuPrimitive.DropdownMenuContentProps & {
|
|
99
99
|
/* render content in portal. NOTE: Changing this prop will lead to re-mount */
|
|
100
100
|
portalled?: boolean;
|
|
101
|
+
container?: HTMLElement | null | undefined;
|
|
101
102
|
collisionPadding?: number;
|
|
102
103
|
};
|
|
103
104
|
|
|
@@ -111,11 +112,11 @@ const onContentKeyDown = (e: React.KeyboardEvent) => {
|
|
|
111
112
|
};
|
|
112
113
|
|
|
113
114
|
export const Content = forwardRef<HTMLDivElement, ContentProps>(function DropdownMenuContent(
|
|
114
|
-
{className, portalled = true, collisionPadding = space.s12, ...rest},
|
|
115
|
+
{className, portalled = true, container, collisionPadding = space.s12, ...rest},
|
|
115
116
|
ref
|
|
116
117
|
) {
|
|
117
118
|
return (
|
|
118
|
-
<Wrap if={portalled} with={DropdownMenuPrimitive.Portal}>
|
|
119
|
+
<Wrap if={portalled} with={DropdownMenuPrimitive.Portal} container={container}>
|
|
119
120
|
<DropdownMenuPrimitive.Content
|
|
120
121
|
onKeyDown={onContentKeyDown}
|
|
121
122
|
ref={ref}
|
|
@@ -133,10 +134,15 @@ export const Content = forwardRef<HTMLDivElement, ContentProps>(function Dropdow
|
|
|
133
134
|
export const Sub = DropdownMenuPrimitive.Sub;
|
|
134
135
|
|
|
135
136
|
export const SubContent = forwardRef<HTMLDivElement, DropdownMenuPrimitive.DropdownMenuSubContentProps>(
|
|
136
|
-
function DropdownMenuSubContent({className, ...rest}, ref) {
|
|
137
|
+
function DropdownMenuSubContent({className, collisionPadding = space.s12, ...rest}, ref) {
|
|
137
138
|
return (
|
|
138
139
|
<DropdownMenuPrimitive.Portal>
|
|
139
|
-
<DropdownMenuPrimitive.SubContent
|
|
140
|
+
<DropdownMenuPrimitive.SubContent
|
|
141
|
+
ref={ref}
|
|
142
|
+
className={cx(dropdownMenuContentStyles, className)}
|
|
143
|
+
collisionPadding={collisionPadding}
|
|
144
|
+
{...rest}
|
|
145
|
+
/>
|
|
140
146
|
</DropdownMenuPrimitive.Portal>
|
|
141
147
|
);
|
|
142
148
|
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
|
|
2
|
+
// This icon file is generated automatically.
|
|
3
|
+
|
|
4
|
+
import { IconDefinition } from '../types';
|
|
5
|
+
|
|
6
|
+
const FieldUnit: 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.825 12.6A2.025 2.025 0 0 1 1.8 10.575v-3.15c0-1.118.907-2.025 2.025-2.025h10.35c1.118 0 2.025.907 2.025 2.025v3.15a2.025 2.025 0 0 1-2.025 2.025H3.825Zm0-1.35a.675.675 0 0 1-.675-.675v-3.15c0-.373.302-.675.675-.675h10.35c.373 0 .675.302.675.675v3.15a.675.675 0 0 1-.675.675H3.825ZM8.55 9c0-.373.302-.675.675-.675h3.15a.675.675 0 1 1 0 1.35h-3.15A.675.675 0 0 1 8.55 9ZM5.925 7.575a1.425 1.425 0 1 0 0 2.85 1.425 1.425 0 0 0 0-2.85Z"},"children":[]}],"metadata":""}]},"name":"field-unit"};
|
|
7
|
+
|
|
8
|
+
export default FieldUnit;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
|
|
2
|
+
// This icon file is generated automatically.
|
|
3
|
+
|
|
4
|
+
import { IconDefinition } from '../types';
|
|
5
|
+
|
|
6
|
+
const IntegrationsIntegrationDiscourseColor: IconDefinition = {"icon":{"type":"root","children":[{"type":"element","tagName":"svg","properties":{"width":20,"height":20,"fill":"none"},"children":[{"type":"element","tagName":"path","properties":{"d":"M10.067 2.223c-4.261 0-7.844 3.452-7.844 7.712v7.987l7.842-.007c4.259 0 7.713-3.586 7.713-7.845 0-4.258-3.457-7.847-7.711-7.847Z","fill":"#231F20"},"children":[]},{"type":"element","tagName":"path","properties":{"d":"M10.143 5.208a4.782 4.782 0 0 0-4.203 7.058l-.865 2.783 3.106-.702a4.782 4.782 0 1 0 1.967-9.139h-.005Z","fill":"#FFF9AE"},"children":[]},{"type":"element","tagName":"path","properties":{"d":"M13.936 7.08a4.779 4.779 0 0 1-5.755 7.259l-3.106.71 3.162-.373a4.778 4.778 0 0 0 5.698-7.597h.001Z","fill":"#00AEEF"},"children":[]},{"type":"element","tagName":"path","properties":{"d":"M13.056 6.198a4.78 4.78 0 0 1-4.965 7.82L5.075 15.05l3.106-.703a4.779 4.779 0 0 0 4.875-8.149Z","fill":"#00A94F"},"children":[]},{"type":"element","tagName":"path","properties":{"d":"M6.226 12.372a4.78 4.78 0 0 1 7.713-5.293 4.78 4.78 0 0 0-7.999 5.187l-.865 2.783 1.151-2.677Z","fill":"#F15D22"},"children":[]},{"type":"element","tagName":"path","properties":{"d":"M5.94 12.266a4.78 4.78 0 0 1 7.115-6.067 4.781 4.781 0 0 0-7.41 5.993l-.569 2.858.864-2.784Z","fill":"#E31B23"},"children":[]}],"metadata":""}]},"name":"integrations-integration-discourse-color"};
|
|
7
|
+
|
|
8
|
+
export default IntegrationsIntegrationDiscourseColor;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
|
|
2
|
+
// This icon file is generated automatically.
|
|
3
|
+
|
|
4
|
+
import { IconDefinition } from '../types';
|
|
5
|
+
|
|
6
|
+
const IntegrationsIntegrationIntercomColor: IconDefinition = {"icon":{"type":"root","children":[{"type":"element","tagName":"svg","properties":{"width":20,"height":20,"fill":"none"},"children":[{"type":"element","tagName":"path","properties":{"d":"M15.704 10.775a.519.519 0 0 1-1.037 0V6.112a.519.519 0 0 1 1.037 0v4.663Zm-.18 3.246c-.08.068-2.002 1.68-5.524 1.68-3.521 0-5.442-1.612-5.522-1.68a.519.519 0 0 1 .674-.789c.03.026 1.745 1.432 4.849 1.432 3.142 0 4.83-1.416 4.847-1.43a.518.518 0 1 1 .675.787ZM4.296 6.11a.519.519 0 0 1 1.037 0v4.664a.518.518 0 0 1-1.037 0V6.112Zm2.592-1.037a.519.519 0 0 1 1.037 0v6.928a.519.519 0 0 1-1.037 0V5.075Zm2.593-.262a.518.518 0 1 1 1.037 0v7.519a.52.52 0 0 1-1.037 0V4.812Zm2.593.262a.519.519 0 0 1 1.037 0v6.928a.518.518 0 0 1-1.037 0V5.075Zm3.759-2.851H4.167c-1.074 0-1.944.87-1.944 1.944v11.667c0 1.074.87 1.944 1.944 1.944h11.667c1.074 0 1.944-.87 1.944-1.944V4.167c0-1.074-.87-1.944-1.944-1.944Z","fill":"#1F8DED"},"children":[]}],"metadata":""}]},"name":"integrations-integration-intercom-color"};
|
|
7
|
+
|
|
8
|
+
export default IntegrationsIntegrationIntercomColor;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
|
|
2
|
+
// This icon file is generated automatically.
|
|
3
|
+
|
|
4
|
+
import { IconDefinition } from '../types';
|
|
5
|
+
|
|
6
|
+
const IntegrationsIntegrationSlackColor: IconDefinition = {"icon":{"type":"root","children":[{"type":"element","tagName":"svg","properties":{"width":20,"height":20,"fill":"none"},"children":[{"type":"element","tagName":"path","properties":{"d":"M5.222 12.052c0 .9-.734 1.634-1.634 1.634-.9 0-1.634-.735-1.634-1.634 0-.9.735-1.634 1.634-1.634h1.634v1.634ZM6.046 12.052c0-.9.735-1.634 1.634-1.634.9 0 1.634.735 1.634 1.634v4.092c0 .899-.735 1.634-1.634 1.634-.9 0-1.634-.735-1.634-1.634v-4.092Z","fill":"#E01E5A"},"children":[]},{"type":"element","tagName":"path","properties":{"d":"M7.68 5.49c-.9 0-1.634-.734-1.634-1.633 0-.9.735-1.634 1.634-1.634.9 0 1.634.734 1.634 1.634V5.49H7.68ZM7.68 6.314c.9 0 1.634.735 1.634 1.635 0 .899-.735 1.634-1.634 1.634H3.588c-.9 0-1.634-.735-1.634-1.634 0-.9.735-1.635 1.634-1.635H7.68Z","fill":"#36C5F0"},"children":[]},{"type":"element","tagName":"path","properties":{"d":"M14.241 7.949c0-.9.735-1.635 1.634-1.635.9 0 1.634.735 1.634 1.635 0 .899-.734 1.634-1.634 1.634h-1.634V7.949ZM13.418 7.948c0 .9-.735 1.634-1.634 1.634-.9 0-1.635-.734-1.635-1.634V3.857c0-.9.735-1.634 1.635-1.634.899 0 1.634.734 1.634 1.634v4.091Z","fill":"#2EB67D"},"children":[]},{"type":"element","tagName":"path","properties":{"d":"M11.784 14.51c.899 0 1.634.735 1.634 1.634 0 .9-.735 1.634-1.634 1.634-.9 0-1.635-.735-1.635-1.634V14.51h1.635ZM11.784 13.686c-.9 0-1.635-.735-1.635-1.634 0-.9.735-1.634 1.635-1.634h4.091c.9 0 1.634.735 1.634 1.634 0 .9-.735 1.634-1.634 1.634h-4.091Z","fill":"#ECB22E"},"children":[]}],"metadata":""}]},"name":"integrations-integration-slack-color"};
|
|
7
|
+
|
|
8
|
+
export default IntegrationsIntegrationSlackColor;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
|
|
2
|
+
// This icon file is generated automatically.
|
|
3
|
+
|
|
4
|
+
import { IconDefinition } from '../types';
|
|
5
|
+
|
|
6
|
+
const IntegrationsIntegrationZendeskColor: 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":"M9.14 7.21v8.7H1.954l7.186-8.7ZM9.14 4.089a3.598 3.598 0 0 1-3.593 3.603 3.597 3.597 0 0 1-3.593-3.603H9.14ZM10.324 15.91a3.598 3.598 0 0 1 3.593-3.602 3.597 3.597 0 0 1 3.593 3.603h-7.186ZM10.324 12.788v-8.7h7.186l-7.186 8.7Z","fill":"#03363D"},"children":[]}],"metadata":""}]},"name":"integrations-integration-zendesk-color"};
|
|
7
|
+
|
|
8
|
+
export default IntegrationsIntegrationZendeskColor;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
|
|
2
|
+
// This icon file is generated automatically.
|
|
3
|
+
|
|
4
|
+
import { IconDefinition } from '../types';
|
|
5
|
+
|
|
6
|
+
const LayoutDouble: 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":"M4.25 4.5a.75.75 0 0 0-.75.75v9.5c0 .414.336.75.75.75h11.5a.75.75 0 0 0 .75-.75v-9.5a.75.75 0 0 0-.75-.75H4.25ZM2 5.25A2.25 2.25 0 0 1 4.25 3h11.5A2.25 2.25 0 0 1 18 5.25v9.5A2.25 2.25 0 0 1 15.75 17H4.25A2.25 2.25 0 0 1 2 14.75v-9.5ZM12.75 6a.75.75 0 0 0 0 1.5h1.5a.75.75 0 0 0 0-1.5h-1.5ZM12 9.75a.75.75 0 0 1 .75-.75h1.5a.75.75 0 0 1 0 1.5h-1.5a.75.75 0 0 1-.75-.75ZM5.5 6a.5.5 0 0 0-.5.5v7a.5.5 0 0 0 .5.5H10a.5.5 0 0 0 .5-.5v-7A.5.5 0 0 0 10 6H5.5Z"},"children":[]}],"metadata":""}]},"name":"layout-double"};
|
|
7
|
+
|
|
8
|
+
export default LayoutDouble;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
|
|
2
|
+
// This icon file is generated automatically.
|
|
3
|
+
|
|
4
|
+
import { IconDefinition } from '../types';
|
|
5
|
+
|
|
6
|
+
const LayoutSingle: 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":"M4.25 4.5a.75.75 0 0 0-.75.75v9.5c0 .414.336.75.75.75h11.5a.75.75 0 0 0 .75-.75v-9.5a.75.75 0 0 0-.75-.75H4.25ZM2 5.25A2.25 2.25 0 0 1 4.25 3h11.5A2.25 2.25 0 0 1 18 5.25v9.5A2.25 2.25 0 0 1 15.75 17H4.25A2.25 2.25 0 0 1 2 14.75v-9.5Zm3 1.5A.75.75 0 0 1 5.75 6h2.5a.75.75 0 0 1 0 1.5h-2.5A.75.75 0 0 1 5 6.75ZM5.5 9a.5.5 0 0 0-.5.5v4a.5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5v-4a.5.5 0 0 0-.5-.5h-9Z"},"children":[]}],"metadata":""}]},"name":"layout-single"};
|
|
7
|
+
|
|
8
|
+
export default LayoutSingle;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
|
|
2
|
+
// This icon file is generated automatically.
|
|
3
|
+
|
|
4
|
+
import { IconDefinition } from '../types';
|
|
5
|
+
|
|
6
|
+
const MoveBottom: 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":"M5.175 16.65a2.025 2.025 0 0 1-2.025-2.025v-3.15c0-1.118.907-2.025 2.025-2.025h8.55c1.118 0 2.025.907 2.025 2.025v3.15a2.025 2.025 0 0 1-2.025 2.025h-8.55ZM4.5 14.625c0 .373.302.675.675.675h8.55a.675.675 0 0 0 .675-.675v-3.15a.675.675 0 0 0-.675-.675h-8.55a.675.675 0 0 0-.675.675v3.15ZM6.948 4.248a.675.675 0 0 1 .954 0L9 5.345v-3.32a.675.675 0 0 1 1.35 0v3.32l1.098-1.097a.675.675 0 0 1 .954.954l-2.25 2.25a.675.675 0 0 1-.954 0l-2.25-2.25a.675.675 0 0 1 0-.954Z"},"children":[]}],"metadata":""}]},"name":"move-bottom"};
|
|
7
|
+
|
|
8
|
+
export default MoveBottom;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
|
|
2
|
+
// This icon file is generated automatically.
|
|
3
|
+
|
|
4
|
+
import { IconDefinition } from '../types';
|
|
5
|
+
|
|
6
|
+
const MoveLeft: 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":"M1.8 4.725c0-1.118.907-2.025 2.025-2.025h3.15C8.093 2.7 9 3.607 9 4.725v8.55A2.025 2.025 0 0 1 6.975 15.3h-3.15A2.025 2.025 0 0 1 1.8 13.275v-8.55Zm2.025-.675a.675.675 0 0 0-.675.675v8.55c0 .373.302.675.675.675h3.15a.675.675 0 0 0 .675-.675v-8.55a.675.675 0 0 0-.675-.675h-3.15Zm10.377 2.448a.675.675 0 0 1 0 .954L13.105 8.55h3.32a.675.675 0 1 1 0 1.35h-3.32l1.097 1.098a.675.675 0 0 1-.954.954l-2.25-2.25a.675.675 0 0 1 0-.954l2.25-2.25a.675.675 0 0 1 .954 0Z"},"children":[]}],"metadata":""}]},"name":"move-left"};
|
|
7
|
+
|
|
8
|
+
export default MoveLeft;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
|
|
2
|
+
// This icon file is generated automatically.
|
|
3
|
+
|
|
4
|
+
import { IconDefinition } from '../types';
|
|
5
|
+
|
|
6
|
+
const MoveRight: 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 4.725C9 3.607 9.907 2.7 11.025 2.7h3.15c1.118 0 2.025.907 2.025 2.025v8.55a2.025 2.025 0 0 1-2.025 2.025h-3.15A2.025 2.025 0 0 1 9 13.275v-8.55Zm2.025-.675a.675.675 0 0 0-.675.675v8.55c0 .373.302.675.675.675h3.15a.675.675 0 0 0 .675-.675v-8.55a.675.675 0 0 0-.675-.675h-3.15Zm-7.227 7.902c.263.264.69.264.954 0l2.25-2.25a.675.675 0 0 0 0-.954l-2.25-2.25a.675.675 0 1 0-.954.954L4.895 8.55h-3.32a.675.675 0 0 0 0 1.35h3.32l-1.097 1.098a.675.675 0 0 0 0 .954Z"},"children":[]}],"metadata":""}]},"name":"move-right"};
|
|
7
|
+
|
|
8
|
+
export default MoveRight;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
|
|
2
|
+
// This icon file is generated automatically.
|
|
3
|
+
|
|
4
|
+
import { IconDefinition } from '../types';
|
|
5
|
+
|
|
6
|
+
const MoveTop: 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":"M4.275 8.55A2.025 2.025 0 0 1 2.25 6.525v-3.15c0-1.118.907-2.025 2.025-2.025h8.55c1.118 0 2.025.907 2.025 2.025v3.15a2.025 2.025 0 0 1-2.025 2.025h-8.55ZM3.6 6.525c0 .373.302.675.675.675h8.55a.675.675 0 0 0 .675-.675v-3.15a.675.675 0 0 0-.675-.675h-8.55a.675.675 0 0 0-.675.675v3.15Zm7.902 7.227a.675.675 0 0 0 0-.954l-2.25-2.25a.675.675 0 0 0-.954 0l-2.25 2.25a.675.675 0 0 0 .954.954L8.1 12.654v3.32a.675.675 0 1 0 1.35 0v-3.32l1.098 1.098a.675.675 0 0 0 .954 0Z"},"children":[]}],"metadata":""}]},"name":"move-top"};
|
|
7
|
+
|
|
8
|
+
export default MoveTop;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
|
|
2
|
+
// This icon file is generated automatically.
|
|
3
|
+
|
|
4
|
+
import { IconDefinition } from '../types';
|
|
5
|
+
|
|
6
|
+
const Pin: 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":"M11.254 1.8a.692.692 0 0 1 .513.198l4.232 4.165a.67.67 0 0 1-.041.992l-3.71 3.097.246 2.342a.669.669 0 0 1-.197.547l-1.228 1.208a.694.694 0 0 1-.97 0l-2.724-2.68-4.404 4.333a.694.694 0 0 1-.97 0 .667.667 0 0 1 0-.954l4.404-4.334-2.957-2.91a.67.67 0 0 1 0-.955l1.228-1.208a.692.692 0 0 1 .556-.194l2.379.243 3.147-3.652a.69.69 0 0 1 .496-.237Zm.07 1.67L8.422 6.835a.692.692 0 0 1-.594.234l-2.414-.246-.512.503 5.681 5.591.512-.503-.25-2.377a.67.67 0 0 1 .238-.585L14.503 6.6l-3.18-3.129Z"},"children":[]}],"metadata":""}]},"name":"pin"};
|
|
7
|
+
|
|
8
|
+
export default Pin;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
|
|
2
|
+
// This icon file is generated automatically.
|
|
3
|
+
|
|
4
|
+
import { IconDefinition } from '../types';
|
|
5
|
+
|
|
6
|
+
const UserRole: 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":"M6.804 1.75h6.392c.442 0 .818 0 1.126.025.325.027.64.085.942.238.455.232.824.602 1.056 1.057.154.301.212.617.238.94.025.31.025.686.025 1.127v9.726c0 .441 0 .817-.025 1.126-.026.324-.084.64-.238.941a2.417 2.417 0 0 1-1.056 1.057c-.302.153-.617.211-.942.238-.308.025-.684.025-1.126.025H6.804c-.442 0-.818 0-1.126-.025-.325-.027-.64-.085-.942-.238A2.417 2.417 0 0 1 3.68 16.93c-.154-.302-.212-.618-.238-.942-.025-.309-.025-.685-.025-1.126V5.137c0-.441 0-.817.025-1.126.026-.324.084-.64.238-.941a2.417 2.417 0 0 1 1.056-1.057c.302-.153.617-.211.942-.238.308-.025.684-.025 1.126-.025ZM5.8 3.27c-.232.02-.328.052-.383.08a.917.917 0 0 0-.4.4c-.028.055-.061.152-.08.383-.02.24-.02.555-.02 1.034v9.666c0 .48 0 .794.02 1.034.019.232.052.328.08.383a.917.917 0 0 0 .4.4c.055.028.151.06.383.08.24.02.554.02 1.033.02h6.334c.479 0 .793 0 1.033-.02.232-.02.328-.052.383-.08a.917.917 0 0 0 .4-.4c.028-.055.061-.151.08-.383.02-.24.02-.555.02-1.034V5.167c0-.48 0-.794-.02-1.034-.019-.231-.052-.328-.08-.382a.917.917 0 0 0-.4-.401c-.055-.028-.151-.06-.383-.08-.24-.02-.554-.02-1.033-.02H6.833c-.479 0-.793 0-1.033.02ZM7.583 5a.75.75 0 0 1 .75-.75h3.334a.75.75 0 0 1 0 1.5H8.333a.75.75 0 0 1-.75-.75Zm.834 4.167a1.583 1.583 0 1 1 3.166 0 1.583 1.583 0 0 1-3.166 0ZM10 13.25c-.982 0-1.64.563-1.772 1.098a.75.75 0 0 1-1.456-.362c.34-1.368 1.742-2.236 3.228-2.236 1.486 0 2.888.868 3.228 2.236a.75.75 0 0 1-1.456.362c-.133-.535-.79-1.098-1.772-1.098Z"},"children":[]}],"metadata":""}]},"name":"user-role"};
|
|
7
|
+
|
|
8
|
+
export default UserRole;
|
package/src/icons/ast/index.tsx
CHANGED
|
@@ -83,6 +83,7 @@ export { default as FavoritesChecked } from './FavoritesChecked';
|
|
|
83
83
|
export { default as FavoritesOff } from './FavoritesOff';
|
|
84
84
|
export { default as Favorites } from './Favorites';
|
|
85
85
|
export { default as FiberyMono } from './FiberyMono';
|
|
86
|
+
export { default as FieldUnit } from './FieldUnit';
|
|
86
87
|
export { default as Fields } from './Fields';
|
|
87
88
|
export { default as Figma } from './Figma';
|
|
88
89
|
export { default as FileUpload } from './FileUpload';
|
|
@@ -107,10 +108,16 @@ export { default as ImageXmark } from './ImageXmark';
|
|
|
107
108
|
export { default as Import } from './Import';
|
|
108
109
|
export { default as InfoCircleFilled } from './InfoCircleFilled';
|
|
109
110
|
export { default as Integration } from './Integration';
|
|
111
|
+
export { default as IntegrationsIntegrationDiscourseColor } from './IntegrationsIntegrationDiscourseColor';
|
|
112
|
+
export { default as IntegrationsIntegrationIntercomColor } from './IntegrationsIntegrationIntercomColor';
|
|
113
|
+
export { default as IntegrationsIntegrationSlackColor } from './IntegrationsIntegrationSlackColor';
|
|
114
|
+
export { default as IntegrationsIntegrationZendeskColor } from './IntegrationsIntegrationZendeskColor';
|
|
110
115
|
export { default as InvitePeople } from './InvitePeople';
|
|
111
116
|
export { default as Items } from './Items';
|
|
112
117
|
export { default as Jira } from './Jira';
|
|
113
118
|
export { default as Lab } from './Lab';
|
|
119
|
+
export { default as LayoutDouble } from './LayoutDouble';
|
|
120
|
+
export { default as LayoutSingle } from './LayoutSingle';
|
|
114
121
|
export { default as LeftPanel } from './LeftPanel';
|
|
115
122
|
export { default as Levels } from './Levels';
|
|
116
123
|
export { default as LineDivider } from './LineDivider';
|
|
@@ -128,6 +135,10 @@ export { default as Mixpanel } from './Mixpanel';
|
|
|
128
135
|
export { default as Monitor } from './Monitor';
|
|
129
136
|
export { default as MoreCompact } from './MoreCompact';
|
|
130
137
|
export { default as More } from './More';
|
|
138
|
+
export { default as MoveBottom } from './MoveBottom';
|
|
139
|
+
export { default as MoveLeft } from './MoveLeft';
|
|
140
|
+
export { default as MoveRight } from './MoveRight';
|
|
141
|
+
export { default as MoveTop } from './MoveTop';
|
|
131
142
|
export { default as MySpace } from './MySpace';
|
|
132
143
|
export { default as NetworkAdd } from './NetworkAdd';
|
|
133
144
|
export { default as Network } from './Network';
|
|
@@ -144,6 +155,7 @@ export { default as PageWideMode } from './PageWideMode';
|
|
|
144
155
|
export { default as Pencil } from './Pencil';
|
|
145
156
|
export { default as People } from './People';
|
|
146
157
|
export { default as Photo } from './Photo';
|
|
158
|
+
export { default as Pin } from './Pin';
|
|
147
159
|
export { default as Popup } from './Popup';
|
|
148
160
|
export { default as Posts } from './Posts';
|
|
149
161
|
export { default as Question } from './Question';
|
|
@@ -243,6 +255,7 @@ export { default as TypeText } from './TypeText';
|
|
|
243
255
|
export { default as TypeUrl } from './TypeUrl';
|
|
244
256
|
export { default as Upgrade } from './Upgrade';
|
|
245
257
|
export { default as UsbFlashDrive } from './UsbFlashDrive';
|
|
258
|
+
export { default as UserRole } from './UserRole';
|
|
246
259
|
export { default as ViewBoard } from './ViewBoard';
|
|
247
260
|
export { default as ViewCalendar } from './ViewCalendar';
|
|
248
261
|
export { default as ViewCanvas } from './ViewCanvas';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// This icon file is generated automatically.
|
|
2
|
+
|
|
3
|
+
import FieldUnitSvg from '../ast/FieldUnit';
|
|
4
|
+
import { Icon } from '../Icon';
|
|
5
|
+
import { IconBaseProps } from '../types';
|
|
6
|
+
|
|
7
|
+
const FieldUnit = (
|
|
8
|
+
props: IconBaseProps,
|
|
9
|
+
): JSX.Element => <Icon {...props} icon={FieldUnitSvg} />;
|
|
10
|
+
|
|
11
|
+
FieldUnit.displayName = 'FieldUnit';
|
|
12
|
+
export default FieldUnit;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// This icon file is generated automatically.
|
|
2
|
+
|
|
3
|
+
import IntegrationsIntegrationDiscourseColorSvg from '../ast/IntegrationsIntegrationDiscourseColor';
|
|
4
|
+
import { Icon } from '../Icon';
|
|
5
|
+
import { IconBaseProps } from '../types';
|
|
6
|
+
|
|
7
|
+
const IntegrationsIntegrationDiscourseColor = (
|
|
8
|
+
props: IconBaseProps,
|
|
9
|
+
): JSX.Element => <Icon {...props} icon={IntegrationsIntegrationDiscourseColorSvg} />;
|
|
10
|
+
|
|
11
|
+
IntegrationsIntegrationDiscourseColor.displayName = 'IntegrationsIntegrationDiscourseColor';
|
|
12
|
+
export default IntegrationsIntegrationDiscourseColor;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// This icon file is generated automatically.
|
|
2
|
+
|
|
3
|
+
import IntegrationsIntegrationIntercomColorSvg from '../ast/IntegrationsIntegrationIntercomColor';
|
|
4
|
+
import { Icon } from '../Icon';
|
|
5
|
+
import { IconBaseProps } from '../types';
|
|
6
|
+
|
|
7
|
+
const IntegrationsIntegrationIntercomColor = (
|
|
8
|
+
props: IconBaseProps,
|
|
9
|
+
): JSX.Element => <Icon {...props} icon={IntegrationsIntegrationIntercomColorSvg} />;
|
|
10
|
+
|
|
11
|
+
IntegrationsIntegrationIntercomColor.displayName = 'IntegrationsIntegrationIntercomColor';
|
|
12
|
+
export default IntegrationsIntegrationIntercomColor;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// This icon file is generated automatically.
|
|
2
|
+
|
|
3
|
+
import IntegrationsIntegrationSlackColorSvg from '../ast/IntegrationsIntegrationSlackColor';
|
|
4
|
+
import { Icon } from '../Icon';
|
|
5
|
+
import { IconBaseProps } from '../types';
|
|
6
|
+
|
|
7
|
+
const IntegrationsIntegrationSlackColor = (
|
|
8
|
+
props: IconBaseProps,
|
|
9
|
+
): JSX.Element => <Icon {...props} icon={IntegrationsIntegrationSlackColorSvg} />;
|
|
10
|
+
|
|
11
|
+
IntegrationsIntegrationSlackColor.displayName = 'IntegrationsIntegrationSlackColor';
|
|
12
|
+
export default IntegrationsIntegrationSlackColor;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// This icon file is generated automatically.
|
|
2
|
+
|
|
3
|
+
import IntegrationsIntegrationZendeskColorSvg from '../ast/IntegrationsIntegrationZendeskColor';
|
|
4
|
+
import { Icon } from '../Icon';
|
|
5
|
+
import { IconBaseProps } from '../types';
|
|
6
|
+
|
|
7
|
+
const IntegrationsIntegrationZendeskColor = (
|
|
8
|
+
props: IconBaseProps,
|
|
9
|
+
): JSX.Element => <Icon {...props} icon={IntegrationsIntegrationZendeskColorSvg} />;
|
|
10
|
+
|
|
11
|
+
IntegrationsIntegrationZendeskColor.displayName = 'IntegrationsIntegrationZendeskColor';
|
|
12
|
+
export default IntegrationsIntegrationZendeskColor;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// This icon file is generated automatically.
|
|
2
|
+
|
|
3
|
+
import LayoutDoubleSvg from '../ast/LayoutDouble';
|
|
4
|
+
import { Icon } from '../Icon';
|
|
5
|
+
import { IconBaseProps } from '../types';
|
|
6
|
+
|
|
7
|
+
const LayoutDouble = (
|
|
8
|
+
props: IconBaseProps,
|
|
9
|
+
): JSX.Element => <Icon {...props} icon={LayoutDoubleSvg} />;
|
|
10
|
+
|
|
11
|
+
LayoutDouble.displayName = 'LayoutDouble';
|
|
12
|
+
export default LayoutDouble;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// This icon file is generated automatically.
|
|
2
|
+
|
|
3
|
+
import LayoutSingleSvg from '../ast/LayoutSingle';
|
|
4
|
+
import { Icon } from '../Icon';
|
|
5
|
+
import { IconBaseProps } from '../types';
|
|
6
|
+
|
|
7
|
+
const LayoutSingle = (
|
|
8
|
+
props: IconBaseProps,
|
|
9
|
+
): JSX.Element => <Icon {...props} icon={LayoutSingleSvg} />;
|
|
10
|
+
|
|
11
|
+
LayoutSingle.displayName = 'LayoutSingle';
|
|
12
|
+
export default LayoutSingle;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// This icon file is generated automatically.
|
|
2
|
+
|
|
3
|
+
import MoveBottomSvg from '../ast/MoveBottom';
|
|
4
|
+
import { Icon } from '../Icon';
|
|
5
|
+
import { IconBaseProps } from '../types';
|
|
6
|
+
|
|
7
|
+
const MoveBottom = (
|
|
8
|
+
props: IconBaseProps,
|
|
9
|
+
): JSX.Element => <Icon {...props} icon={MoveBottomSvg} />;
|
|
10
|
+
|
|
11
|
+
MoveBottom.displayName = 'MoveBottom';
|
|
12
|
+
export default MoveBottom;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// This icon file is generated automatically.
|
|
2
|
+
|
|
3
|
+
import MoveLeftSvg from '../ast/MoveLeft';
|
|
4
|
+
import { Icon } from '../Icon';
|
|
5
|
+
import { IconBaseProps } from '../types';
|
|
6
|
+
|
|
7
|
+
const MoveLeft = (
|
|
8
|
+
props: IconBaseProps,
|
|
9
|
+
): JSX.Element => <Icon {...props} icon={MoveLeftSvg} />;
|
|
10
|
+
|
|
11
|
+
MoveLeft.displayName = 'MoveLeft';
|
|
12
|
+
export default MoveLeft;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// This icon file is generated automatically.
|
|
2
|
+
|
|
3
|
+
import MoveRightSvg from '../ast/MoveRight';
|
|
4
|
+
import { Icon } from '../Icon';
|
|
5
|
+
import { IconBaseProps } from '../types';
|
|
6
|
+
|
|
7
|
+
const MoveRight = (
|
|
8
|
+
props: IconBaseProps,
|
|
9
|
+
): JSX.Element => <Icon {...props} icon={MoveRightSvg} />;
|
|
10
|
+
|
|
11
|
+
MoveRight.displayName = 'MoveRight';
|
|
12
|
+
export default MoveRight;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// This icon file is generated automatically.
|
|
2
|
+
|
|
3
|
+
import MoveTopSvg from '../ast/MoveTop';
|
|
4
|
+
import { Icon } from '../Icon';
|
|
5
|
+
import { IconBaseProps } from '../types';
|
|
6
|
+
|
|
7
|
+
const MoveTop = (
|
|
8
|
+
props: IconBaseProps,
|
|
9
|
+
): JSX.Element => <Icon {...props} icon={MoveTopSvg} />;
|
|
10
|
+
|
|
11
|
+
MoveTop.displayName = 'MoveTop';
|
|
12
|
+
export default MoveTop;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// This icon file is generated automatically.
|
|
2
|
+
|
|
3
|
+
import PinSvg from '../ast/Pin';
|
|
4
|
+
import { Icon } from '../Icon';
|
|
5
|
+
import { IconBaseProps } from '../types';
|
|
6
|
+
|
|
7
|
+
const Pin = (
|
|
8
|
+
props: IconBaseProps,
|
|
9
|
+
): JSX.Element => <Icon {...props} icon={PinSvg} />;
|
|
10
|
+
|
|
11
|
+
Pin.displayName = 'Pin';
|
|
12
|
+
export default Pin;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// This icon file is generated automatically.
|
|
2
|
+
|
|
3
|
+
import UserRoleSvg from '../ast/UserRole';
|
|
4
|
+
import { Icon } from '../Icon';
|
|
5
|
+
import { IconBaseProps } from '../types';
|
|
6
|
+
|
|
7
|
+
const UserRole = (
|
|
8
|
+
props: IconBaseProps,
|
|
9
|
+
): JSX.Element => <Icon {...props} icon={UserRoleSvg} />;
|
|
10
|
+
|
|
11
|
+
UserRole.displayName = 'UserRole';
|
|
12
|
+
export default UserRole;
|
|
@@ -83,6 +83,7 @@ export { default as FavoritesChecked } from './FavoritesChecked';
|
|
|
83
83
|
export { default as FavoritesOff } from './FavoritesOff';
|
|
84
84
|
export { default as Favorites } from './Favorites';
|
|
85
85
|
export { default as FiberyMono } from './FiberyMono';
|
|
86
|
+
export { default as FieldUnit } from './FieldUnit';
|
|
86
87
|
export { default as Fields } from './Fields';
|
|
87
88
|
export { default as Figma } from './Figma';
|
|
88
89
|
export { default as FileUpload } from './FileUpload';
|
|
@@ -107,10 +108,16 @@ export { default as ImageXmark } from './ImageXmark';
|
|
|
107
108
|
export { default as Import } from './Import';
|
|
108
109
|
export { default as InfoCircleFilled } from './InfoCircleFilled';
|
|
109
110
|
export { default as Integration } from './Integration';
|
|
111
|
+
export { default as IntegrationsIntegrationDiscourseColor } from './IntegrationsIntegrationDiscourseColor';
|
|
112
|
+
export { default as IntegrationsIntegrationIntercomColor } from './IntegrationsIntegrationIntercomColor';
|
|
113
|
+
export { default as IntegrationsIntegrationSlackColor } from './IntegrationsIntegrationSlackColor';
|
|
114
|
+
export { default as IntegrationsIntegrationZendeskColor } from './IntegrationsIntegrationZendeskColor';
|
|
110
115
|
export { default as InvitePeople } from './InvitePeople';
|
|
111
116
|
export { default as Items } from './Items';
|
|
112
117
|
export { default as Jira } from './Jira';
|
|
113
118
|
export { default as Lab } from './Lab';
|
|
119
|
+
export { default as LayoutDouble } from './LayoutDouble';
|
|
120
|
+
export { default as LayoutSingle } from './LayoutSingle';
|
|
114
121
|
export { default as LeftPanel } from './LeftPanel';
|
|
115
122
|
export { default as Levels } from './Levels';
|
|
116
123
|
export { default as LineDivider } from './LineDivider';
|
|
@@ -128,6 +135,10 @@ export { default as Mixpanel } from './Mixpanel';
|
|
|
128
135
|
export { default as Monitor } from './Monitor';
|
|
129
136
|
export { default as MoreCompact } from './MoreCompact';
|
|
130
137
|
export { default as More } from './More';
|
|
138
|
+
export { default as MoveBottom } from './MoveBottom';
|
|
139
|
+
export { default as MoveLeft } from './MoveLeft';
|
|
140
|
+
export { default as MoveRight } from './MoveRight';
|
|
141
|
+
export { default as MoveTop } from './MoveTop';
|
|
131
142
|
export { default as MySpace } from './MySpace';
|
|
132
143
|
export { default as NetworkAdd } from './NetworkAdd';
|
|
133
144
|
export { default as Network } from './Network';
|
|
@@ -144,6 +155,7 @@ export { default as PageWideMode } from './PageWideMode';
|
|
|
144
155
|
export { default as Pencil } from './Pencil';
|
|
145
156
|
export { default as People } from './People';
|
|
146
157
|
export { default as Photo } from './Photo';
|
|
158
|
+
export { default as Pin } from './Pin';
|
|
147
159
|
export { default as Popup } from './Popup';
|
|
148
160
|
export { default as Posts } from './Posts';
|
|
149
161
|
export { default as Question } from './Question';
|
|
@@ -243,6 +255,7 @@ export { default as TypeText } from './TypeText';
|
|
|
243
255
|
export { default as TypeUrl } from './TypeUrl';
|
|
244
256
|
export { default as Upgrade } from './Upgrade';
|
|
245
257
|
export { default as UsbFlashDrive } from './UsbFlashDrive';
|
|
258
|
+
export { default as UserRole } from './UserRole';
|
|
246
259
|
export { default as ViewBoard } from './ViewBoard';
|
|
247
260
|
export { default as ViewCalendar } from './ViewCalendar';
|
|
248
261
|
export { default as ViewCanvas } from './ViewCanvas';
|
package/src/item.tsx
CHANGED
|
@@ -32,7 +32,8 @@ const popupContainerClassName = css`
|
|
|
32
32
|
z-index: 1050;
|
|
33
33
|
`;
|
|
34
34
|
const popupClassName = css`
|
|
35
|
-
|
|
35
|
+
min-width: 320px;
|
|
36
|
+
max-width: 440px;
|
|
36
37
|
padding-top: ${space.s8}px;
|
|
37
38
|
padding-bottom: ${space.s4}px;
|
|
38
39
|
padding-left: ${space.s8}px;
|
|
@@ -123,7 +124,7 @@ type Props<Option, IsMulti extends boolean, Group extends GroupBase<Option>> = {
|
|
|
123
124
|
virtualized?: boolean;
|
|
124
125
|
defaultMenuIsOpen?: boolean;
|
|
125
126
|
placeholder?: string;
|
|
126
|
-
noOptionsMessage
|
|
127
|
+
noOptionsMessage?: () => string | JSX.Element | null;
|
|
127
128
|
options: OptionsOrGroups<Option, Group>;
|
|
128
129
|
filterOption?: SelectProps<Option>["filterOption"];
|
|
129
130
|
inputValue?: string;
|
package/src/tooltip.tsx
CHANGED
|
@@ -98,6 +98,7 @@ export type TooltipProps = Omit<TooltipPrimitive.TooltipTriggerProps, "title"> &
|
|
|
98
98
|
description?: ReactNode;
|
|
99
99
|
setContentElement?: (el: HTMLDivElement | null) => void;
|
|
100
100
|
content?: ReactNode;
|
|
101
|
+
container?: HTMLElement | null | undefined;
|
|
101
102
|
side?: TooltipPrimitive.TooltipContentProps["side"];
|
|
102
103
|
sideOffset?: TooltipPrimitive.TooltipContentProps["sideOffset"];
|
|
103
104
|
align?: TooltipPrimitive.TooltipContentProps["align"];
|
|
@@ -144,6 +145,7 @@ export const Tooltip = forwardRef<HTMLButtonElement, TooltipProps>(
|
|
|
144
145
|
keepOnClick,
|
|
145
146
|
disabled,
|
|
146
147
|
setContentElement,
|
|
148
|
+
container,
|
|
147
149
|
...triggerProps
|
|
148
150
|
},
|
|
149
151
|
ref
|
|
@@ -170,7 +172,7 @@ export const Tooltip = forwardRef<HTMLButtonElement, TooltipProps>(
|
|
|
170
172
|
<TooltipPrimitive.Trigger ref={ref} {...triggerProps} {...keepOnClickProps} asChild>
|
|
171
173
|
{children}
|
|
172
174
|
</TooltipPrimitive.Trigger>
|
|
173
|
-
<TooltipPrimitive.Portal>
|
|
175
|
+
<TooltipPrimitive.Portal container={container}>
|
|
174
176
|
<TooltipPrimitive.Content
|
|
175
177
|
ref={setContentElement}
|
|
176
178
|
side={side}
|