@fibery/ui-kit 1.38.0 → 1.38.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/CHANGELOG.md +19 -0
- package/config/jest/testFrameworkSetup.js +1 -1
- package/package.json +23 -22
- package/src/abbreviate-name.ts +42 -0
- package/src/actions-menu/actions-menu-item.tsx +14 -5
- package/src/actions-menu/actions-menu-props.tsx +1 -0
- package/src/actions-menu/actions-menu.tsx +4 -1
- package/src/actions-menu/context-actions-menu.tsx +22 -0
- package/src/animated-height-container.tsx +24 -5
- package/src/antd/ant-upload.tsx +1 -1
- package/src/antd/input.tsx +4 -0
- package/src/avatar.tsx +1 -27
- package/src/button/base-button.tsx +2 -0
- package/src/button/button.tsx +4 -4
- package/src/button/icon-button.tsx +3 -3
- package/src/card-container.tsx +3 -2
- package/src/checkbox.tsx +17 -0
- package/src/collapsible/index.tsx +4 -2
- package/src/collapsible-section.tsx +3 -1
- package/src/date-picker/autocomplete.tsx +11 -5
- package/src/date-picker/date-range-input.tsx +5 -1
- package/src/date-picker/date-range-picker-popup-content.tsx +31 -13
- package/src/date-picker/single-date-input.tsx +5 -1
- package/src/date-picker/styles.ts +20 -0
- package/src/design-system.ts +26 -1
- package/src/dropdown-menu/index.tsx +11 -1
- package/src/emoji-picker/emoji-picker-preview-footer.tsx +4 -0
- package/src/emoji-picker/emoji.tsx +4 -3
- package/src/emoji-picker/primitives/emoji.tsx +49 -51
- package/src/emoji-picker/primitives/footer.tsx +6 -0
- package/src/emoji-picker/primitives/search.tsx +8 -0
- package/src/emoji-picker/primitives/skin-tone.tsx +12 -2
- package/src/fibermoji-placeholder.tsx +2 -29
- package/src/file-item-2.tsx +566 -0
- package/src/file-item.tsx +196 -162
- package/src/header-layout.tsx +11 -0
- package/src/html-styles.ts +13 -4
- package/src/icons/ast/Back.ts +1 -1
- package/src/icons/ast/ExtensionFiles.ts +1 -1
- package/src/icons/ast/FileArchive.ts +8 -0
- package/src/icons/ast/FileBroken.ts +8 -0
- package/src/icons/ast/FileDocument.ts +8 -0
- package/src/icons/ast/FileImage.ts +8 -0
- package/src/icons/ast/FilePresentation.ts +8 -0
- package/src/icons/ast/FileTable.ts +8 -0
- package/src/icons/ast/FileUpload.ts +1 -1
- package/src/icons/ast/FileVideo.ts +8 -0
- package/src/icons/ast/SwitchToMention.ts +8 -0
- package/src/icons/ast/SwitchToText.ts +8 -0
- package/src/icons/ast/SwitchToWidget.ts +8 -0
- package/src/icons/ast/ViewGallery.ts +8 -0
- package/src/icons/ast/index.tsx +11 -0
- package/src/icons/react/FileArchive.tsx +13 -0
- package/src/icons/react/FileBroken.tsx +13 -0
- package/src/icons/react/FileDocument.tsx +13 -0
- package/src/icons/react/FileImage.tsx +13 -0
- package/src/icons/react/FilePresentation.tsx +13 -0
- package/src/icons/react/FileTable.tsx +13 -0
- package/src/icons/react/FileVideo.tsx +13 -0
- package/src/icons/react/SwitchToMention.tsx +13 -0
- package/src/icons/react/SwitchToText.tsx +13 -0
- package/src/icons/react/SwitchToWidget.tsx +13 -0
- package/src/icons/react/ViewGallery.tsx +13 -0
- package/src/icons/react/index.tsx +11 -0
- package/src/icons/svg/back.svg +3 -1
- package/src/icons/svg/extension/files.svg +3 -1
- package/src/icons/svg/file-archive.svg +3 -0
- package/src/icons/svg/file-broken.svg +3 -0
- package/src/icons/svg/file-document.svg +3 -0
- package/src/icons/svg/file-image.svg +3 -0
- package/src/icons/svg/file-presentation.svg +3 -0
- package/src/icons/svg/file-table.svg +3 -0
- package/src/icons/svg/file-upload.svg +3 -6
- package/src/icons/svg/file-video.svg +3 -0
- package/src/icons/svg/switch-to-mention.svg +3 -0
- package/src/icons/svg/switch-to-text.svg +4 -0
- package/src/icons/svg/switch-to-widget.svg +4 -0
- package/src/icons/svg/view-gallery.svg +4 -0
- package/src/images-gallery/images-gallery-fall-through-provider.tsx +11 -0
- package/src/images-gallery/images-gallery.tsx +13 -10
- package/src/images-gallery/zoom.tsx +13 -2
- package/src/images-gallery-2/images-gallery-2.tsx +522 -0
- package/src/images-gallery-2/slide-buttons.tsx +271 -0
- package/src/images-gallery-2/zoom.tsx +35 -0
- package/src/kbd.tsx +46 -0
- package/src/loading-sausage.tsx +2 -2
- package/src/modal-menu/modal-menu-item.tsx +10 -2
- package/src/modal-menu/modal-menu-trigger.tsx +19 -2
- package/src/notification-dot.tsx +16 -7
- package/src/platform-symbols.ts +9 -0
- package/src/platform.ts +2 -0
- package/src/popover/index.tsx +31 -8
- package/src/popover/modifiers.tsx +26 -19
- package/src/reactions/reaction-button.tsx +323 -101
- package/src/reactions/reaction-picker.tsx +14 -1
- package/src/reactions/reactions.tsx +11 -1
- package/src/reactions/tootltip.tsx +55 -0
- package/src/rich-text-embed-error.tsx +2 -1
- package/src/select/components/group-heading.tsx +8 -0
- package/src/select/components/menu-list-virtualized.tsx +6 -2
- package/src/select/components/option.tsx +4 -0
- package/src/select/select-control-settings-context.tsx +11 -2
- package/src/select/select-in-popover.tsx +10 -7
- package/src/select/styles.ts +21 -1
- package/src/tab-nav/tab-nav.tsx +1 -1
- package/src/toggle.tsx +8 -0
- package/src/tooltip.tsx +28 -19
- package/src/type-badge.tsx +5 -2
- package/src/unit/unit-with-tooltip.tsx +1 -1
- package/src/use-is-phone.tsx +34 -6
- package/src/shortcut-badge.tsx +0 -29
package/src/file-item.tsx
CHANGED
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import {css, cx} from "@linaria/core";
|
|
2
|
-
import {
|
|
2
|
+
import {useCallback, useEffect, useState} from "react";
|
|
3
3
|
import {ActionsMenu, ActionsMenuItem} from "./actions-menu";
|
|
4
4
|
import {ActionsButtonCompact} from "./button/actions-button-compact";
|
|
5
5
|
import {Item} from "./item";
|
|
6
6
|
import {border, colors, fontWeight, space, textStyles, themeVars} from "./design-system";
|
|
7
7
|
import {makeButtonColors} from "./button/make-button-colors";
|
|
8
|
-
import {IconButton} from "./button/icon-button";
|
|
9
|
-
import ZoomIn from "./icons/react/RicheditorImageZoom";
|
|
10
|
-
import {Tooltip} from "./tooltip";
|
|
11
|
-
import {Zoom} from "./images-gallery/zoom";
|
|
12
8
|
import {useImagesGalleryMethods, useImagesGalleryRegistry} from "./images-gallery/images-gallery";
|
|
9
|
+
import FileDownload from "./icons/react/FileDownload";
|
|
10
|
+
import RicheditorOpenLink from "./icons/react/RicheditorOpenLink";
|
|
11
|
+
import Delete from "./icons/react/Delete";
|
|
12
|
+
import Link from "./icons/react/Link";
|
|
13
|
+
import Pencil from "./icons/react/Pencil";
|
|
14
|
+
import {copyToClipboard} from "./copy-to-clipboard";
|
|
15
|
+
import {useToast} from "./toast/toast-provider";
|
|
13
16
|
|
|
14
17
|
const fileItemStyle = css`
|
|
15
18
|
${{
|
|
@@ -67,10 +70,17 @@ const fileOverlayStyle = css`
|
|
|
67
70
|
`;
|
|
68
71
|
|
|
69
72
|
export type FileItemType = {
|
|
73
|
+
uid: string;
|
|
70
74
|
name: string;
|
|
71
75
|
url: string;
|
|
72
76
|
thumbnailUrl: string | null;
|
|
73
|
-
|
|
77
|
+
previewData: null | {
|
|
78
|
+
type: "image" | "video" | "iframe";
|
|
79
|
+
previewSrc: string | null;
|
|
80
|
+
originalSrc: string;
|
|
81
|
+
contentType: string;
|
|
82
|
+
};
|
|
83
|
+
downloadUrl?: string | null;
|
|
74
84
|
status?: string;
|
|
75
85
|
};
|
|
76
86
|
|
|
@@ -78,191 +88,215 @@ export type FileItemProps = {
|
|
|
78
88
|
data: FileItemType;
|
|
79
89
|
onRemoveClick?: (x: FileItemType) => void;
|
|
80
90
|
disabled?: boolean;
|
|
91
|
+
onRenameClick?: (p: {id: string; name: string}) => void;
|
|
81
92
|
};
|
|
82
93
|
|
|
83
|
-
function
|
|
94
|
+
export function FileItem(props: FileItemProps) {
|
|
95
|
+
const {name, url, thumbnailUrl, status, previewData: preview} = props.data;
|
|
96
|
+
const isActive = status === "uploading" || status === "deleting";
|
|
97
|
+
const isBackgroundReady = thumbnailUrl && !isActive;
|
|
98
|
+
|
|
84
99
|
const [zoomed, setZoomed] = useState(false);
|
|
85
100
|
const imagesRegistry = useImagesGalleryRegistry();
|
|
86
101
|
const galleryMethods = useImagesGalleryMethods();
|
|
102
|
+
|
|
87
103
|
useEffect(() => {
|
|
88
|
-
|
|
89
|
-
|
|
104
|
+
if (!preview) {
|
|
105
|
+
return undefined;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
imagesRegistry.set(preview.originalSrc, {
|
|
109
|
+
type: preview.type,
|
|
110
|
+
src: preview.originalSrc,
|
|
111
|
+
contentType: preview.contentType,
|
|
112
|
+
zoomed: false,
|
|
113
|
+
setZoomed,
|
|
114
|
+
actions: <FilePreviewActions url={preview.originalSrc} name={name} />,
|
|
115
|
+
});
|
|
116
|
+
return () => {
|
|
117
|
+
imagesRegistry.delete(preview.originalSrc);
|
|
118
|
+
};
|
|
119
|
+
}, [imagesRegistry, name, preview]);
|
|
120
|
+
|
|
90
121
|
useEffect(() => {
|
|
122
|
+
if (!preview) {
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
|
|
91
126
|
if (zoomed) {
|
|
92
127
|
galleryMethods.setActivated(true);
|
|
93
128
|
}
|
|
94
|
-
const imageData = imagesRegistry.get(
|
|
129
|
+
const imageData = imagesRegistry.get(preview.originalSrc);
|
|
95
130
|
if (imageData) {
|
|
96
131
|
imageData.zoomed = zoomed;
|
|
97
132
|
} else {
|
|
98
|
-
imagesRegistry.set(
|
|
133
|
+
imagesRegistry.set(preview.originalSrc, {
|
|
134
|
+
type: preview.type,
|
|
135
|
+
src: preview.originalSrc,
|
|
136
|
+
contentType: preview.contentType,
|
|
137
|
+
zoomed,
|
|
138
|
+
setZoomed,
|
|
139
|
+
actions: <FilePreviewActions url={preview.originalSrc} name={name} />,
|
|
140
|
+
});
|
|
99
141
|
}
|
|
100
|
-
}, [galleryMethods, zoomed,
|
|
101
|
-
return (
|
|
102
|
-
<div
|
|
103
|
-
className={css`
|
|
104
|
-
position: relative;
|
|
105
|
-
`}
|
|
106
|
-
>
|
|
107
|
-
<Zoom
|
|
108
|
-
zoomImg={{src: url}}
|
|
109
|
-
openOnClick={true}
|
|
110
|
-
className={css`
|
|
111
|
-
position: absolute;
|
|
112
|
-
outline: none;
|
|
113
|
-
bottom: 0;
|
|
114
|
-
top: 0;
|
|
115
|
-
left: 0;
|
|
116
|
-
right: 0;
|
|
117
|
-
cursor: zoom-in;
|
|
118
|
-
`}
|
|
119
|
-
zoomed={zoomed}
|
|
120
|
-
onZoomedChange={setZoomed}
|
|
121
|
-
>
|
|
122
|
-
<div role="img" style={{backgroundImage: `url(${thumbnailUrl})`, outline: "none"}} />
|
|
123
|
-
</Zoom>
|
|
124
|
-
<Tooltip title={"Zoom in"}>
|
|
125
|
-
<IconButton
|
|
126
|
-
style={makeButtonColors(colors.inversedTextColor, "ghost")}
|
|
127
|
-
onClick={() => setZoomed(true)}
|
|
128
|
-
size={"small"}
|
|
129
|
-
supportMobile={true}
|
|
130
|
-
>
|
|
131
|
-
<ZoomIn />
|
|
132
|
-
</IconButton>
|
|
133
|
-
</Tooltip>
|
|
134
|
-
</div>
|
|
135
|
-
);
|
|
136
|
-
}
|
|
142
|
+
}, [galleryMethods, zoomed, preview, imagesRegistry, name]);
|
|
137
143
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
144
|
+
const onContainerClick = useCallback(() => {
|
|
145
|
+
if (preview) {
|
|
146
|
+
setZoomed(true);
|
|
147
|
+
} else {
|
|
148
|
+
const a = document.createElement("a");
|
|
149
|
+
a.href = `${url}?attachment`;
|
|
150
|
+
a.download = name;
|
|
151
|
+
a.style.display = "none";
|
|
152
|
+
|
|
153
|
+
document.body.appendChild(a);
|
|
154
|
+
a.click();
|
|
155
|
+
document.body.removeChild(a);
|
|
150
156
|
}
|
|
151
|
-
|
|
152
|
-
}
|
|
157
|
+
}, [name, preview, url]);
|
|
153
158
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
+
return (
|
|
160
|
+
<div
|
|
161
|
+
className={cx(
|
|
162
|
+
css`
|
|
163
|
+
position: relative;
|
|
164
|
+
height: 100%;
|
|
165
|
+
cursor: pointer;
|
|
166
|
+
`,
|
|
167
|
+
isBackgroundReady &&
|
|
168
|
+
css`
|
|
169
|
+
&:hover .${overlayStyle} {
|
|
170
|
+
background-position: 0 0;
|
|
171
|
+
color: ${themeVars.inversedTextColor};
|
|
172
|
+
}
|
|
173
|
+
`
|
|
174
|
+
)}
|
|
175
|
+
>
|
|
176
|
+
{/* eslint-disable-next-line jsx-a11y/anchor-has-content */}
|
|
159
177
|
<div
|
|
178
|
+
style={isBackgroundReady ? {backgroundImage: `url(${thumbnailUrl})`} : {}}
|
|
179
|
+
onClick={onContainerClick}
|
|
160
180
|
className={cx(
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
height: 100%;
|
|
164
|
-
`,
|
|
165
|
-
isBackgroundReady &&
|
|
181
|
+
fileItemStyle,
|
|
182
|
+
isActive &&
|
|
166
183
|
css`
|
|
167
|
-
|
|
168
|
-
background-position: 0 0;
|
|
169
|
-
color: ${themeVars.inversedTextColor};
|
|
170
|
-
}
|
|
184
|
+
${{backgroundColor: themeVars.entityCardSelectedColor}}
|
|
171
185
|
`
|
|
172
186
|
)}
|
|
173
187
|
>
|
|
174
|
-
{
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
bottom: 0;
|
|
180
|
-
content: "";
|
|
181
|
-
display: block;
|
|
182
|
-
left: 0;
|
|
183
|
-
position: absolute;
|
|
184
|
-
right: 0;
|
|
185
|
-
top: 0;
|
|
186
|
-
}
|
|
187
|
-
`}
|
|
188
|
-
rel="noopener noreferrer nofollow"
|
|
189
|
-
target="_blank"
|
|
190
|
-
/>
|
|
191
|
-
<div
|
|
192
|
-
style={isBackgroundReady ? {backgroundImage: `url(${thumbnailUrl})`} : {}}
|
|
193
|
-
className={cx(
|
|
194
|
-
fileItemStyle,
|
|
195
|
-
isActive &&
|
|
196
|
-
css`
|
|
197
|
-
${{backgroundColor: themeVars.entityCardSelectedColor}}
|
|
198
|
-
`
|
|
199
|
-
)}
|
|
200
|
-
>
|
|
201
|
-
<div className={cx(overlayStyle, isBackgroundReady ? imageOverlayStyle : fileOverlayStyle)}>
|
|
202
|
-
<Item
|
|
203
|
-
multiline
|
|
204
|
-
textClassName={nameStyle}
|
|
205
|
-
rightContainer={
|
|
206
|
-
<div
|
|
207
|
-
className={css`
|
|
208
|
-
display: flex;
|
|
209
|
-
align-items: center;
|
|
210
|
-
gap: ${space.s4}px;
|
|
211
|
-
`}
|
|
212
|
-
>
|
|
213
|
-
{previewUrl ? <ImageZoom url={url} thumbnailUrl={previewUrl} /> : null}
|
|
214
|
-
<ActionsMenu
|
|
215
|
-
trigger={
|
|
216
|
-
<ActionsButtonCompact
|
|
217
|
-
className={css`
|
|
218
|
-
z-index: 1;
|
|
219
|
-
`}
|
|
220
|
-
style={isBackgroundReady ? makeButtonColors(colors.inversedTextColor, "ghost") : undefined}
|
|
221
|
-
/>
|
|
222
|
-
}
|
|
223
|
-
>
|
|
224
|
-
<a download={name} href={url}>
|
|
225
|
-
<ActionsMenuItem>Download</ActionsMenuItem>
|
|
226
|
-
</a>
|
|
227
|
-
<ActionsMenuItem
|
|
228
|
-
onSelect={() => this.props.onRemoveClick?.(this.props.data)}
|
|
229
|
-
dangerous
|
|
230
|
-
disabled={this.props.disabled}
|
|
231
|
-
>
|
|
232
|
-
Delete
|
|
233
|
-
</ActionsMenuItem>
|
|
234
|
-
</ActionsMenu>
|
|
235
|
-
</div>
|
|
236
|
-
}
|
|
237
|
-
>
|
|
188
|
+
<div className={cx(overlayStyle, isBackgroundReady ? imageOverlayStyle : fileOverlayStyle)}>
|
|
189
|
+
<Item
|
|
190
|
+
multiline
|
|
191
|
+
textClassName={nameStyle}
|
|
192
|
+
rightContainer={
|
|
238
193
|
<div
|
|
239
194
|
className={css`
|
|
240
|
-
|
|
195
|
+
display: flex;
|
|
196
|
+
align-items: center;
|
|
197
|
+
gap: ${space.s4}px;
|
|
241
198
|
`}
|
|
242
199
|
>
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
&:hover {
|
|
252
|
-
text-decoration: none;
|
|
253
|
-
color: inherit;
|
|
200
|
+
<ActionsMenu
|
|
201
|
+
trigger={
|
|
202
|
+
<ActionsButtonCompact
|
|
203
|
+
className={css`
|
|
204
|
+
z-index: 1;
|
|
205
|
+
`}
|
|
206
|
+
style={isBackgroundReady ? makeButtonColors(colors.inversedTextColor, "ghost") : undefined}
|
|
207
|
+
/>
|
|
254
208
|
}
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
209
|
+
>
|
|
210
|
+
<CopyFileUrlActionMenuItem url={url} />
|
|
211
|
+
<a href={url} target="_blank" rel="noopener noreferrer">
|
|
212
|
+
<ActionsMenuItem Icon={RicheditorOpenLink}>Open in new tab</ActionsMenuItem>
|
|
213
|
+
</a>
|
|
214
|
+
<a download={name} href={props.data.downloadUrl ?? url}>
|
|
215
|
+
<ActionsMenuItem Icon={FileDownload}>Download</ActionsMenuItem>
|
|
216
|
+
</a>
|
|
217
|
+
{props.onRenameClick && status === "done" ? (
|
|
218
|
+
<ActionsMenuItem
|
|
219
|
+
Icon={Pencil}
|
|
220
|
+
onSelect={() => props.onRenameClick?.({id: props.data.uid, name: props.data.name})}
|
|
221
|
+
>
|
|
222
|
+
Rename
|
|
223
|
+
</ActionsMenuItem>
|
|
224
|
+
) : null}
|
|
225
|
+
<ActionsMenuItem
|
|
226
|
+
Icon={Delete}
|
|
227
|
+
onSelect={() => props.onRemoveClick?.(props.data)}
|
|
228
|
+
dangerous
|
|
229
|
+
disabled={props.disabled}
|
|
230
|
+
>
|
|
231
|
+
Delete
|
|
232
|
+
</ActionsMenuItem>
|
|
233
|
+
</ActionsMenu>
|
|
234
|
+
</div>
|
|
235
|
+
}
|
|
236
|
+
>
|
|
237
|
+
<div
|
|
238
|
+
className={css`
|
|
239
|
+
${fontWeight}
|
|
240
|
+
`}
|
|
241
|
+
>
|
|
242
|
+
<b>{resolveStatusText(props.data.status)}</b>
|
|
243
|
+
</div>
|
|
244
|
+
<span
|
|
245
|
+
className={css`
|
|
246
|
+
position: relative;
|
|
247
|
+
z-index: 1;
|
|
248
|
+
color: inherit;
|
|
249
|
+
text-decoration: none;
|
|
250
|
+
`}
|
|
251
|
+
>
|
|
252
|
+
{name}
|
|
253
|
+
</span>
|
|
254
|
+
</Item>
|
|
264
255
|
</div>
|
|
265
256
|
</div>
|
|
266
|
-
|
|
257
|
+
</div>
|
|
258
|
+
);
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
function CopyFileUrlActionMenuItem({url}: {url: string}) {
|
|
262
|
+
const toast = useToast();
|
|
263
|
+
return (
|
|
264
|
+
<ActionsMenuItem
|
|
265
|
+
Icon={Link}
|
|
266
|
+
onSelect={() => {
|
|
267
|
+
copyToClipboard(new URL(url, `${window.location}`).href)
|
|
268
|
+
.then(() => toast.success({title: "Link copied to clipboard"}))
|
|
269
|
+
.catch((error) => toast.error({title: "Unable to copy link to clipboard", subTitle: error.message}));
|
|
270
|
+
}}
|
|
271
|
+
>
|
|
272
|
+
Copy file URL
|
|
273
|
+
</ActionsMenuItem>
|
|
274
|
+
);
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
function resolveStatusText(status?: string) {
|
|
278
|
+
if (status === "done" || status === "remove-error") {
|
|
279
|
+
return "";
|
|
280
|
+
}
|
|
281
|
+
let statusText = `status=${status}`;
|
|
282
|
+
if (status === "deleting") {
|
|
283
|
+
statusText = "Deleting…";
|
|
267
284
|
}
|
|
285
|
+
if (status === "uploading") {
|
|
286
|
+
statusText = "Uploading…";
|
|
287
|
+
}
|
|
288
|
+
return statusText;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
function FilePreviewActions({url, name}: {url: string; name: string}) {
|
|
292
|
+
return (
|
|
293
|
+
<>
|
|
294
|
+
<a href={url} target="_blank" rel="noopener noreferrer">
|
|
295
|
+
<ActionsMenuItem Icon={RicheditorOpenLink}>Open in new tab</ActionsMenuItem>
|
|
296
|
+
</a>
|
|
297
|
+
<a download={name} href={`${url}/attachment`}>
|
|
298
|
+
<ActionsMenuItem Icon={FileDownload}>Download</ActionsMenuItem>
|
|
299
|
+
</a>
|
|
300
|
+
</>
|
|
301
|
+
);
|
|
268
302
|
}
|
package/src/header-layout.tsx
CHANGED
|
@@ -1,14 +1,22 @@
|
|
|
1
1
|
import {css} from "@linaria/core";
|
|
2
2
|
import {ReactNode} from "react";
|
|
3
3
|
import {space, textStyles, themeVars} from "./design-system";
|
|
4
|
+
import {mobileRootSelector} from "./mobile-styles";
|
|
4
5
|
|
|
5
6
|
const containerStyle = css`
|
|
6
7
|
padding: ${space.s8}px;
|
|
8
|
+
display: flex;
|
|
9
|
+
align-items: center;
|
|
7
10
|
border-bottom: 1px solid ${themeVars.separatorColor};
|
|
11
|
+
${mobileRootSelector} & {
|
|
12
|
+
padding: ${space.s12}px;
|
|
13
|
+
min-height: ${space.s60}px;
|
|
14
|
+
}
|
|
8
15
|
`;
|
|
9
16
|
|
|
10
17
|
const topGridCompactStyle = css`
|
|
11
18
|
${textStyles.regular}
|
|
19
|
+
width: 100%;
|
|
12
20
|
display: flex;
|
|
13
21
|
align-items: center;
|
|
14
22
|
justify-content: space-between;
|
|
@@ -22,6 +30,9 @@ export function HeaderLayout({actions, children}: {actions?: ReactNode; children
|
|
|
22
30
|
className={css`
|
|
23
31
|
${textStyles.heading4}
|
|
24
32
|
position: relative;
|
|
33
|
+
${mobileRootSelector} & {
|
|
34
|
+
${textStyles.heading3}
|
|
35
|
+
}
|
|
25
36
|
`}
|
|
26
37
|
>
|
|
27
38
|
{children}
|
package/src/html-styles.ts
CHANGED
|
@@ -3,6 +3,7 @@ import {css} from "@linaria/core";
|
|
|
3
3
|
import {
|
|
4
4
|
border,
|
|
5
5
|
fontFamily,
|
|
6
|
+
fontSize,
|
|
6
7
|
fontWeight,
|
|
7
8
|
lineHeight,
|
|
8
9
|
space,
|
|
@@ -11,6 +12,7 @@ import {
|
|
|
11
12
|
transition,
|
|
12
13
|
typeSizes,
|
|
13
14
|
} from "./design-system";
|
|
15
|
+
import {mobileRootSelector} from "./mobile-styles";
|
|
14
16
|
|
|
15
17
|
export const linkStyles = {
|
|
16
18
|
color: themeVars.linkColor,
|
|
@@ -252,7 +254,10 @@ const htmlStyles = {
|
|
|
252
254
|
Used in comments and view descriptions
|
|
253
255
|
*/
|
|
254
256
|
const smallHtmlStyles = {
|
|
255
|
-
fontSize:
|
|
257
|
+
fontSize: fontSize.xs,
|
|
258
|
+
[`${mobileRootSelector} &`]: {
|
|
259
|
+
fontSize: fontSize.md,
|
|
260
|
+
},
|
|
256
261
|
"& h1": {
|
|
257
262
|
fontFamily,
|
|
258
263
|
fontSize: 24,
|
|
@@ -453,11 +458,12 @@ const smallHtmlStyles = {
|
|
|
453
458
|
/*
|
|
454
459
|
Used in chat
|
|
455
460
|
*/
|
|
456
|
-
|
|
457
|
-
Used in chat
|
|
458
|
-
*/
|
|
461
|
+
|
|
459
462
|
const chatHtmlStyles = {
|
|
460
463
|
fontSize: typeSizes[4],
|
|
464
|
+
[`${mobileRootSelector} &`]: {
|
|
465
|
+
fontSize: typeSizes[3],
|
|
466
|
+
},
|
|
461
467
|
"& h1": {
|
|
462
468
|
fontFamily,
|
|
463
469
|
fontSize: 20,
|
|
@@ -549,6 +555,9 @@ const chatHtmlStyles = {
|
|
|
549
555
|
paddingBottom: space.s2,
|
|
550
556
|
...textStyles.regular,
|
|
551
557
|
lineHeight: lineHeight.text,
|
|
558
|
+
[`${mobileRootSelector} &`]: {
|
|
559
|
+
...textStyles.big,
|
|
560
|
+
},
|
|
552
561
|
},
|
|
553
562
|
"& .fibery-rich-text-check-item": {
|
|
554
563
|
marginTop: space.s2,
|
package/src/icons/ast/Back.ts
CHANGED
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
|
|
4
4
|
import { IconDefinition } from '../types';
|
|
5
5
|
|
|
6
|
-
const Back: IconDefinition = {"icon":{"type":"root","children":[{"type":"element","tagName":"svg","properties":{"viewBox":"0 0 20 20"},"children":[{"type":"element","tagName":"path","properties":{"
|
|
6
|
+
const Back: IconDefinition = {"icon":{"type":"root","children":[{"type":"element","tagName":"svg","properties":{"viewBox":"0 0 20 20"},"children":[{"type":"element","tagName":"path","properties":{"d":"M7.47 5.22a.75.75 0 0 1 1.06 1.06L5.56 9.25h10.69a.75.75 0 0 1 0 1.5H5.56l2.97 2.97a.75.75 0 1 1-1.06 1.06l-4.25-4.25a.748.748 0 0 1 0-1.06l4.25-4.25Z"},"children":[]}],"metadata":""}]},"name":"back"};
|
|
7
7
|
|
|
8
8
|
export default Back;
|
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
|
|
4
4
|
import { IconDefinition } from '../types';
|
|
5
5
|
|
|
6
|
-
const ExtensionFiles: IconDefinition = {"icon":{"type":"root","children":[{"type":"element","tagName":"svg","properties":{"viewBox":"0 0 20 20"},"children":[{"type":"element","tagName":"path","properties":{"d":"
|
|
6
|
+
const ExtensionFiles: IconDefinition = {"icon":{"type":"root","children":[{"type":"element","tagName":"svg","properties":{"viewBox":"0 0 20 20"},"children":[{"type":"element","tagName":"path","properties":{"d":"M15.03 6.032c0-.695-.294-1.362-.817-1.854a2.886 2.886 0 0 0-1.974-.767c-.647 0-1.271.212-1.768.594l-.205.173-5.427 5.097c-.855.803-1.336 1.893-1.336 3.03 0 1.136.48 2.225 1.336 3.029a4.718 4.718 0 0 0 3.226 1.255l.226-.006a4.705 4.705 0 0 0 3-1.25l5.426-5.096a.786.786 0 0 1 1.063 0 .676.676 0 0 1 0 .998l-5.426 5.096c-1.067 1.002-2.49 1.592-3.988 1.662l-.3.007c-1.61 0-3.152-.6-4.29-1.669C2.64 15.263 2 13.815 2 12.304c0-1.51.64-2.959 1.777-4.027l5.426-5.096.155-.138A4.454 4.454 0 0 1 12.239 2a4.44 4.44 0 0 1 3.036 1.18 3.913 3.913 0 0 1 1.258 2.852l-.005.2a3.923 3.923 0 0 1-1.253 2.65L9.85 13.98a2.595 2.595 0 0 1-1.535.683l-.249.011c-.669 0-1.31-.25-1.783-.694a2.299 2.299 0 0 1-.74-1.675c0-.628.267-1.23.74-1.675l5.426-5.096a.787.787 0 0 1 1.062 0 .676.676 0 0 1 0 .998l-5.426 5.096a.93.93 0 0 0-.3.677.93.93 0 0 0 .3.678c.191.179.45.28.721.28l.101-.005a1.05 1.05 0 0 0 .62-.275l5.427-5.097c.458-.43.74-.994.804-1.594l.014-.26Z"},"children":[]}],"metadata":""}]},"name":"extension-files"};
|
|
7
7
|
|
|
8
8
|
export default ExtensionFiles;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
|
|
2
|
+
// This icon file is generated automatically.
|
|
3
|
+
|
|
4
|
+
import { IconDefinition } from '../types';
|
|
5
|
+
|
|
6
|
+
const FileArchive: IconDefinition = {"icon":{"type":"root","children":[{"type":"element","tagName":"svg","properties":{"viewBox":"0 0 20 20"},"children":[{"type":"element","tagName":"path","properties":{"d":"M14.75 2A2.25 2.25 0 0 1 17 4.25v11.5A2.25 2.25 0 0 1 14.75 18h-9.5A2.25 2.25 0 0 1 3 15.75V4.25A2.25 2.25 0 0 1 5.25 2h9.5Zm-9.5 1.5a.75.75 0 0 0-.75.75v11.5c0 .414.336.75.75.75h9.5a.75.75 0 0 0 .75-.75V4.25a.75.75 0 0 0-.75-.75h-9.5Zm8 1.5a.75.75 0 0 1 0 1.5H11a1 1 0 0 1-2 0H6.75a.75.75 0 0 1 0-1.5h6.5Z"},"children":[]}],"metadata":""}]},"name":"file-archive"};
|
|
7
|
+
|
|
8
|
+
export default FileArchive;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
|
|
2
|
+
// This icon file is generated automatically.
|
|
3
|
+
|
|
4
|
+
import { IconDefinition } from '../types';
|
|
5
|
+
|
|
6
|
+
const FileBroken: IconDefinition = {"icon":{"type":"root","children":[{"type":"element","tagName":"svg","properties":{"viewBox":"0 0 20 20"},"children":[{"type":"element","tagName":"path","properties":{"d":"M11.742 1.5a.75.75 0 0 1 .53.219l4.504 4.497c.141.14.221.332.221.531v9.003a2.75 2.75 0 0 1-2.749 2.75H5.745a2.749 2.749 0 0 1-2.748-2.75V4.25c0-1.519 1.23-2.75 2.748-2.75h5.997ZM5.745 3c-.69 0-1.249.56-1.249 1.25v11.5c0 .69.56 1.25 1.25 1.25h8.502c.69 0 1.25-.56 1.25-1.25V7.497h-2.923a1.583 1.583 0 0 1-1.582-1.584V3H5.745Zm5.975 6.22a.75.75 0 1 1 1.06 1.06L11.06 12l1.72 1.72a.75.75 0 1 1-1.06 1.06L10 13.06l-1.72 1.72a.75.75 0 1 1-1.06-1.06L8.94 12l-1.72-1.72a.75.75 0 1 1 1.06-1.06L10 10.94l1.72-1.72Zm.772-3.307a.084.084 0 0 0 .083.084h1.86l-1.943-1.94v1.856Z"},"children":[]}],"metadata":""}]},"name":"file-broken"};
|
|
7
|
+
|
|
8
|
+
export default FileBroken;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
|
|
2
|
+
// This icon file is generated automatically.
|
|
3
|
+
|
|
4
|
+
import { IconDefinition } from '../types';
|
|
5
|
+
|
|
6
|
+
const FileDocument: IconDefinition = {"icon":{"type":"root","children":[{"type":"element","tagName":"svg","properties":{"viewBox":"0 0 20 20"},"children":[{"type":"element","tagName":"path","properties":{"d":"M11.742 1.5a.75.75 0 0 1 .53.219l4.504 4.497c.141.14.221.332.221.531v9.003a2.75 2.75 0 0 1-2.749 2.75H5.745a2.749 2.749 0 0 1-2.748-2.75V4.25c0-1.519 1.23-2.75 2.748-2.75h5.997ZM5.745 3c-.69 0-1.249.56-1.249 1.25v11.5c0 .69.56 1.25 1.25 1.25h8.502c.69 0 1.25-.56 1.25-1.25V7.497h-2.923a1.583 1.583 0 0 1-1.582-1.584V3H5.745Zm6.505 10a.75.75 0 0 1 0 1.5h-5.5a.75.75 0 0 1 0-1.5h5.5Zm-2-3a.75.75 0 0 1 0 1.5h-3.5a.75.75 0 0 1 0-1.5h3.5Zm2.242-4.087a.084.084 0 0 0 .083.084h1.86l-1.943-1.94v1.856Z"},"children":[]}],"metadata":""}]},"name":"file-document"};
|
|
7
|
+
|
|
8
|
+
export default FileDocument;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
|
|
2
|
+
// This icon file is generated automatically.
|
|
3
|
+
|
|
4
|
+
import { IconDefinition } from '../types';
|
|
5
|
+
|
|
6
|
+
const FileImage: IconDefinition = {"icon":{"type":"root","children":[{"type":"element","tagName":"svg","properties":{"viewBox":"0 0 16 14"},"children":[{"type":"element","tagName":"path","properties":{"d":"M13.75 0A2.25 2.25 0 0 1 16 2.25v9.5A2.25 2.25 0 0 1 13.75 14H2.25A2.25 2.25 0 0 1 0 11.75v-9.5A2.25 2.25 0 0 1 2.25 0h11.5ZM2.25 1.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-.75H2.25Zm9.896 8.646a.5.5 0 0 1-.353.854H4.207a.5.5 0 0 1-.353-.854L6 8l1 1 2-2 3.146 3.146ZM12 3a1 1 0 1 1 0 2 1 1 0 0 1 0-2Z"},"children":[]}],"metadata":""}]},"name":"file-image"};
|
|
7
|
+
|
|
8
|
+
export default FileImage;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
|
|
2
|
+
// This icon file is generated automatically.
|
|
3
|
+
|
|
4
|
+
import { IconDefinition } from '../types';
|
|
5
|
+
|
|
6
|
+
const FilePresentation: IconDefinition = {"icon":{"type":"root","children":[{"type":"element","tagName":"svg","properties":{"viewBox":"0 0 20 20"},"children":[{"type":"element","tagName":"path","properties":{"d":"m12.762 16.572.056.063a.851.851 0 0 1-.056 1.12.806.806 0 0 1-1.096.058l-.062-.058-1.603-1.64-1.604 1.64a.805.805 0 0 1-1.156 0 .85.85 0 0 1 0-1.183L8.778 15H4.25A2.25 2.25 0 0 1 2 12.75v-7.5A2.25 2.25 0 0 1 4.25 3h11.5A2.25 2.25 0 0 1 18 5.25v7.5A2.25 2.25 0 0 1 15.75 15h-4.526l1.538 1.572ZM4.25 4.5a.75.75 0 0 0-.75.75v7.5c0 .414.336.75.75.75h11.5a.75.75 0 0 0 .75-.75v-7.5a.75.75 0 0 0-.75-.75H4.25ZM10 9h2a2 2 0 1 1-2-2v2Z"},"children":[]}],"metadata":""}]},"name":"file-presentation"};
|
|
7
|
+
|
|
8
|
+
export default FilePresentation;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
|
|
2
|
+
// This icon file is generated automatically.
|
|
3
|
+
|
|
4
|
+
import { IconDefinition } from '../types';
|
|
5
|
+
|
|
6
|
+
const FileTable: IconDefinition = {"icon":{"type":"root","children":[{"type":"element","tagName":"svg","properties":{"viewBox":"0 0 20 20"},"children":[{"type":"element","tagName":"path","properties":{"d":"M11.742 1.5a.75.75 0 0 1 .53.219l4.504 4.497c.141.14.221.332.221.531v3.194L17 10c0 .02-.002.039-.003.058v3.883L17 14c0 .02-.002.039-.003.058v1.692a2.75 2.75 0 0 1-2.749 2.75H5.745a2.749 2.749 0 0 1-2.748-2.75V4.25c0-1.519 1.23-2.75 2.748-2.75h5.997ZM8.75 17h5.498c.69 0 1.25-.56 1.25-1.25v-1H8.75V17Zm-4.254-1.25c0 .69.56 1.25 1.25 1.25H7.25v-2.25H4.496v1Zm4.254-2.5h6.747v-2.5H8.75v2.5Zm-4.254 0H7.25v-2.5H4.496v2.5ZM5.746 3c-.69 0-1.25.56-1.25 1.25v5h11.001V7.497h-2.922a1.583 1.583 0 0 1-1.582-1.584V3H5.745Zm6.746 2.913a.084.084 0 0 0 .083.084h1.86l-1.943-1.94v1.856Z"},"children":[]}],"metadata":""}]},"name":"file-table"};
|
|
7
|
+
|
|
8
|
+
export default FileTable;
|
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
|
|
4
4
|
import { IconDefinition } from '../types';
|
|
5
5
|
|
|
6
|
-
const FileUpload: IconDefinition = {"icon":{"type":"root","children":[{"type":"element","tagName":"svg","properties":{"viewBox":"0 0
|
|
6
|
+
const FileUpload: IconDefinition = {"icon":{"type":"root","children":[{"type":"element","tagName":"svg","properties":{"viewBox":"0 0 20 20"},"children":[{"type":"element","tagName":"path","properties":{"d":"m13.029 10.72-2.499-2.5a.75.75 0 0 0-1.06 0l-2.499 2.5a.75.75 0 0 0 1.06 1.06l1.22-1.22v3.94a.75.75 0 1 0 1.499 0v-3.94l1.219 1.22a.75.75 0 1 0 1.06-1.06Z"},"children":[]},{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","clipRule":"evenodd","d":"M5.745 1.5a2.75 2.75 0 0 0-2.748 2.75v11.5a2.75 2.75 0 0 0 2.748 2.75h8.503a2.75 2.75 0 0 0 2.749-2.75V6.747c0-.2-.08-.39-.22-.531l-4.505-4.497a.75.75 0 0 0-.53-.219H5.745Zm-1.25 2.75c0-.69.56-1.25 1.25-1.25h5.248v2.913a1.584 1.584 0 0 0 1.582 1.584h2.922v8.253c0 .69-.56 1.25-1.25 1.25H5.746c-.69 0-1.25-.56-1.25-1.25V4.25Zm9.94 1.747-1.943-1.94v1.856a.083.083 0 0 0 .083.084h1.86Z"},"children":[]}],"metadata":""}]},"name":"file-upload"};
|
|
7
7
|
|
|
8
8
|
export default FileUpload;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
|
|
2
|
+
// This icon file is generated automatically.
|
|
3
|
+
|
|
4
|
+
import { IconDefinition } from '../types';
|
|
5
|
+
|
|
6
|
+
const FileVideo: IconDefinition = {"icon":{"type":"root","children":[{"type":"element","tagName":"svg","properties":{"viewBox":"0 0 20 20"},"children":[{"type":"element","tagName":"path","properties":{"d":"M15.75 4A2.25 2.25 0 0 1 18 6.25v7.5A2.25 2.25 0 0 1 15.75 16H4.25A2.25 2.25 0 0 1 2 13.75v-7.5A2.25 2.25 0 0 1 4.25 4h11.5ZM4.25 5.5a.75.75 0 0 0-.75.75v7.5c0 .414.336.75.75.75h11.5a.75.75 0 0 0 .75-.75v-7.5a.75.75 0 0 0-.75-.75H4.25ZM7.5 7.809a.5.5 0 0 1 .724-.448l4.381 2.192a.5.5 0 0 1 0 .894l-4.381 2.19a.5.5 0 0 1-.724-.446V7.81Z"},"children":[]}],"metadata":""}]},"name":"file-video"};
|
|
7
|
+
|
|
8
|
+
export default FileVideo;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
|
|
2
|
+
// This icon file is generated automatically.
|
|
3
|
+
|
|
4
|
+
import { IconDefinition } from '../types';
|
|
5
|
+
|
|
6
|
+
const SwitchToMention: 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 12.75A2.25 2.25 0 0 0 4.25 15h11.5A2.25 2.25 0 0 0 18 12.75v-5.5A2.25 2.25 0 0 0 15.75 5H4.25A2.25 2.25 0 0 0 2 7.25v5.5Zm1.5 0c0 .414.336.75.75.75h11.5a.75.75 0 0 0 .75-.75v-5.5a.75.75 0 0 0-.75-.75H4.25a.75.75 0 0 0-.75.75v5.5Zm6.75-3.5a.75.75 0 0 0 0 1.5h3.5a.75.75 0 0 0 0-1.5h-3.5ZM6 8.5a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-1a1 1 0 0 0-1-1H6Z"},"children":[]}],"metadata":""}]},"name":"switch-to-mention"};
|
|
7
|
+
|
|
8
|
+
export default SwitchToMention;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
|
|
2
|
+
// This icon file is generated automatically.
|
|
3
|
+
|
|
4
|
+
import { IconDefinition } from '../types';
|
|
5
|
+
|
|
6
|
+
const SwitchToText: 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.75 7.25c.305 0 .581.185.696.468l3.25 8a.751.751 0 0 1-1.39.564l-.623-1.532H4.318l-.622 1.532a.751.751 0 0 1-1.39-.564l3.25-8a.75.75 0 0 1 .694-.468h.5Zm-1.823 6h3.147L6.5 9.378 4.927 13.25Z"},"children":[]},{"type":"element","tagName":"path","properties":{"d":"M12.14 2.2a.7.7 0 0 1 .702.713.69.69 0 0 1-.224.508l-.948.93-.117.093.316-.01h2.489c.95 0 1.786.297 2.388.851.603.556.954 1.355.954 2.326 0 .967-.354 1.77-.957 2.328-.602.558-1.44.86-2.385.86h-1.114a.785.785 0 0 1-.518-.173.663.663 0 0 1-.224-.519c0-.211.078-.393.217-.52a.743.743 0 0 1 .505-.183h1.134c.575 0 1.053-.183 1.385-.497.33-.312.533-.77.533-1.355 0-.561-.204-.988-.534-1.277-.334-.29-.814-.456-1.384-.456h-2.495l-.293-.01 1.058 1.023a.696.696 0 0 1 .214.508.698.698 0 0 1-.692.713.698.698 0 0 1-.513-.21l-.002-.001-2.087-2.143a.794.794 0 0 1 0-1.156l2.085-2.12c.137-.149.3-.223.507-.223Z"},"children":[]}],"metadata":""}]},"name":"switch-to-text"};
|
|
7
|
+
|
|
8
|
+
export default SwitchToText;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
|
|
2
|
+
// This icon file is generated automatically.
|
|
3
|
+
|
|
4
|
+
import { IconDefinition } from '../types';
|
|
5
|
+
|
|
6
|
+
const SwitchToWidget: IconDefinition = {"icon":{"type":"root","children":[{"type":"element","tagName":"svg","properties":{},"children":[{"type":"element","tagName":"path","properties":{"d":"M14.166 5.639a.75.75 0 0 1 .75.75v3.333a.75.75 0 0 1-.75.75H5.833a.75.75 0 0 1-.75-.75V6.389a.75.75 0 0 1 .75-.75h8.333Z"},"children":[]},{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","clipRule":"evenodd","d":"M15.277 2.306a2.973 2.973 0 0 1 2.973 2.972v9.445a2.972 2.972 0 0 1-2.973 2.971H4.723a2.972 2.972 0 0 1-2.97-2.82l-.003-.152V5.278a2.973 2.973 0 0 1 2.973-2.972h10.554Zm-10.554 1.5c-.813 0-1.473.66-1.473 1.472v9.445l.008.15a1.472 1.472 0 0 0 1.465 1.321h10.554c.813 0 1.473-.658 1.473-1.471V5.277c0-.813-.66-1.472-1.473-1.472H4.723Z"},"children":[]}],"metadata":""}]},"name":"switch-to-widget"};
|
|
7
|
+
|
|
8
|
+
export default SwitchToWidget;
|