@fibery/ui-kit 1.38.1 → 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.
Files changed (38) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/package.json +11 -11
  3. package/src/button/button.tsx +1 -2
  4. package/src/card-container.tsx +1 -1
  5. package/src/collapsible/index.tsx +4 -2
  6. package/src/design-system.ts +2 -1
  7. package/src/fibermoji-placeholder.tsx +1 -2
  8. package/src/file-item-2.tsx +188 -30
  9. package/src/file-item.tsx +172 -189
  10. package/src/icons/ast/FileArchive.ts +8 -0
  11. package/src/icons/ast/FileBroken.ts +8 -0
  12. package/src/icons/ast/FileDocument.ts +8 -0
  13. package/src/icons/ast/FileImage.ts +8 -0
  14. package/src/icons/ast/FilePresentation.ts +8 -0
  15. package/src/icons/ast/FileTable.ts +8 -0
  16. package/src/icons/ast/FileVideo.ts +8 -0
  17. package/src/icons/ast/index.tsx +7 -0
  18. package/src/icons/react/FileArchive.tsx +13 -0
  19. package/src/icons/react/FileBroken.tsx +13 -0
  20. package/src/icons/react/FileDocument.tsx +13 -0
  21. package/src/icons/react/FileImage.tsx +13 -0
  22. package/src/icons/react/FilePresentation.tsx +13 -0
  23. package/src/icons/react/FileTable.tsx +13 -0
  24. package/src/icons/react/FileVideo.tsx +13 -0
  25. package/src/icons/react/index.tsx +7 -0
  26. package/src/icons/svg/file-archive.svg +3 -0
  27. package/src/icons/svg/file-broken.svg +3 -0
  28. package/src/icons/svg/file-document.svg +3 -0
  29. package/src/icons/svg/file-image.svg +3 -0
  30. package/src/icons/svg/file-presentation.svg +3 -0
  31. package/src/icons/svg/file-table.svg +3 -0
  32. package/src/icons/svg/file-video.svg +3 -0
  33. package/src/images-gallery-2/images-gallery-2.tsx +105 -25
  34. package/src/images-gallery-2/slide-buttons.tsx +99 -58
  35. package/src/kbd.tsx +1 -1
  36. package/src/loading-sausage.tsx +2 -2
  37. package/src/tooltip.tsx +1 -1
  38. package/src/use-is-phone.tsx +11 -4
package/src/file-item.tsx CHANGED
@@ -1,17 +1,18 @@
1
1
  import {css, cx} from "@linaria/core";
2
- import {PureComponent, useEffect, useState} from "react";
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";
13
9
  import FileDownload from "./icons/react/FileDownload";
14
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";
15
16
 
16
17
  const fileItemStyle = css`
17
18
  ${{
@@ -77,6 +78,7 @@ export type FileItemType = {
77
78
  type: "image" | "video" | "iframe";
78
79
  previewSrc: string | null;
79
80
  originalSrc: string;
81
+ contentType: string;
80
82
  };
81
83
  downloadUrl?: string | null;
82
84
  status?: string;
@@ -89,27 +91,38 @@ export type FileItemProps = {
89
91
  onRenameClick?: (p: {id: string; name: string}) => void;
90
92
  };
91
93
 
92
- function PreviewEntry({
93
- preview,
94
- actions,
95
- }: {
96
- preview: {type: "image" | "video" | "iframe"; originalSrc: string; previewSrc: string | null};
97
- actions: React.ReactNode;
98
- }) {
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
+
99
99
  const [zoomed, setZoomed] = useState(false);
100
100
  const imagesRegistry = useImagesGalleryRegistry();
101
101
  const galleryMethods = useImagesGalleryMethods();
102
102
 
103
103
  useEffect(() => {
104
+ if (!preview) {
105
+ return undefined;
106
+ }
107
+
104
108
  imagesRegistry.set(preview.originalSrc, {
105
109
  type: preview.type,
106
110
  src: preview.originalSrc,
111
+ contentType: preview.contentType,
107
112
  zoomed: false,
108
113
  setZoomed,
109
- actions,
114
+ actions: <FilePreviewActions url={preview.originalSrc} name={name} />,
110
115
  });
111
- }, [imagesRegistry, preview, actions]);
116
+ return () => {
117
+ imagesRegistry.delete(preview.originalSrc);
118
+ };
119
+ }, [imagesRegistry, name, preview]);
120
+
112
121
  useEffect(() => {
122
+ if (!preview) {
123
+ return;
124
+ }
125
+
113
126
  if (zoomed) {
114
127
  galleryMethods.setActivated(true);
115
128
  }
@@ -120,200 +133,170 @@ function PreviewEntry({
120
133
  imagesRegistry.set(preview.originalSrc, {
121
134
  type: preview.type,
122
135
  src: preview.originalSrc,
136
+ contentType: preview.contentType,
123
137
  zoomed,
124
138
  setZoomed,
125
- actions,
139
+ actions: <FilePreviewActions url={preview.originalSrc} name={name} />,
126
140
  });
127
141
  }
128
- }, [galleryMethods, zoomed, preview, imagesRegistry, actions]);
129
- return (
130
- <div
131
- className={css`
132
- position: relative;
133
- `}
134
- >
135
- <Zoom
136
- zoomImg={preview.previewSrc ? {src: preview.previewSrc} : undefined}
137
- openOnClick={true}
138
- className={css`
139
- position: absolute;
140
- outline: none;
141
- bottom: 0;
142
- top: 0;
143
- left: 0;
144
- right: 0;
145
- cursor: zoom-in;
146
- `}
147
- zoomed={zoomed}
148
- onZoomedChange={setZoomed}
149
- >
150
- <div role="img" style={{backgroundImage: `url(${preview.previewSrc})`, outline: "none"}} />
151
- </Zoom>
152
- <Tooltip title={"Zoom in"}>
153
- <IconButton
154
- style={makeButtonColors(colors.inversedTextColor, "ghost")}
155
- onClick={() => setZoomed(true)}
156
- size={"small"}
157
- supportMobile={true}
158
- >
159
- <ZoomIn />
160
- </IconButton>
161
- </Tooltip>
162
- </div>
163
- );
164
- }
142
+ }, [galleryMethods, zoomed, preview, imagesRegistry, name]);
165
143
 
166
- export class FileItem extends PureComponent<FileItemProps> {
167
- _renderStatus() {
168
- const {status} = this.props.data;
169
- if (status === "done" || status === "remove-error") {
170
- return "";
171
- }
172
- let statusText = `status=${status}`;
173
- if (status === "deleting") {
174
- statusText = "Deleting…";
175
- }
176
- if (status === "uploading") {
177
- statusText = "Uploading…";
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);
178
156
  }
179
- return <b>{statusText}</b>;
180
- }
157
+ }, [name, preview, url]);
181
158
 
182
- render() {
183
- const {name, url, thumbnailUrl, status, previewData} = this.props.data;
184
- const isActive = status === "uploading" || status === "deleting";
185
- const isBackgroundReady = thumbnailUrl && !isActive;
186
- return (
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 */}
187
177
  <div
178
+ style={isBackgroundReady ? {backgroundImage: `url(${thumbnailUrl})`} : {}}
179
+ onClick={onContainerClick}
188
180
  className={cx(
189
- css`
190
- position: relative;
191
- height: 100%;
192
- `,
193
- isBackgroundReady &&
181
+ fileItemStyle,
182
+ isActive &&
194
183
  css`
195
- &:hover .${overlayStyle} {
196
- background-position: 0 0;
197
- color: ${themeVars.inversedTextColor};
198
- }
184
+ ${{backgroundColor: themeVars.entityCardSelectedColor}}
199
185
  `
200
186
  )}
201
187
  >
202
- {/* eslint-disable-next-line jsx-a11y/anchor-has-content */}
203
- <a
204
- href={url}
205
- className={css`
206
- &::before {
207
- bottom: 0;
208
- content: "";
209
- display: block;
210
- left: 0;
211
- position: absolute;
212
- right: 0;
213
- top: 0;
214
- }
215
- `}
216
- rel="noopener noreferrer nofollow"
217
- target="_blank"
218
- />
219
- <div
220
- style={isBackgroundReady ? {backgroundImage: `url(${thumbnailUrl})`} : {}}
221
- className={cx(
222
- fileItemStyle,
223
- isActive &&
224
- css`
225
- ${{backgroundColor: themeVars.entityCardSelectedColor}}
226
- `
227
- )}
228
- >
229
- <div className={cx(overlayStyle, isBackgroundReady ? imageOverlayStyle : fileOverlayStyle)}>
230
- <Item
231
- multiline
232
- textClassName={nameStyle}
233
- rightContainer={
234
- <div
235
- className={css`
236
- display: flex;
237
- align-items: center;
238
- gap: ${space.s4}px;
239
- `}
240
- >
241
- {previewData ? (
242
- <PreviewEntry
243
- preview={previewData}
244
- actions={
245
- <>
246
- <a href={url} target="_blank" rel="noopener noreferrer">
247
- <ActionsMenuItem Icon={RicheditorOpenLink}>Open in new tab</ActionsMenuItem>
248
- </a>
249
- <a download={name} href={`${url}/attachment`}>
250
- <ActionsMenuItem Icon={FileDownload}>Download</ActionsMenuItem>
251
- </a>
252
- </>
253
- }
254
- />
255
- ) : null}
256
- <ActionsMenu
257
- trigger={
258
- <ActionsButtonCompact
259
- className={css`
260
- z-index: 1;
261
- `}
262
- style={isBackgroundReady ? makeButtonColors(colors.inversedTextColor, "ghost") : undefined}
263
- />
264
- }
265
- >
266
- <a download={name} href={this.props.data.downloadUrl ?? url}>
267
- <ActionsMenuItem>Download</ActionsMenuItem>
268
- </a>
269
- {this.props.onRenameClick && status === "done" ? (
270
- <ActionsMenuItem
271
- onSelect={() =>
272
- this.props.onRenameClick?.({id: this.props.data.uid, name: this.props.data.name})
273
- }
274
- >
275
- Rename
276
- </ActionsMenuItem>
277
- ) : null}
278
- <ActionsMenuItem
279
- onSelect={() => this.props.onRemoveClick?.(this.props.data)}
280
- dangerous
281
- disabled={this.props.disabled}
282
- >
283
- Delete
284
- </ActionsMenuItem>
285
- </ActionsMenu>
286
- </div>
287
- }
288
- >
188
+ <div className={cx(overlayStyle, isBackgroundReady ? imageOverlayStyle : fileOverlayStyle)}>
189
+ <Item
190
+ multiline
191
+ textClassName={nameStyle}
192
+ rightContainer={
289
193
  <div
290
194
  className={css`
291
- ${fontWeight}
195
+ display: flex;
196
+ align-items: center;
197
+ gap: ${space.s4}px;
292
198
  `}
293
199
  >
294
- {this._renderStatus()}
295
- </div>
296
- <a
297
- className={css`
298
- position: relative;
299
- z-index: 1;
300
- color: inherit;
301
- text-decoration: none;
302
- &:hover {
303
- text-decoration: none;
304
- 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
+ />
305
208
  }
306
- `}
307
- href={url}
308
- target={"_blank"}
309
- rel="noreferrer"
310
- >
311
- {name}
312
- </a>
313
- </Item>
314
- </div>
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>
315
255
  </div>
316
256
  </div>
317
- );
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…";
318
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
+ );
319
302
  }
@@ -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;
@@ -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;
@@ -129,8 +129,15 @@ export { default as FiberyMono } from './FiberyMono';
129
129
  export { default as FieldUnit } from './FieldUnit';
130
130
  export { default as Fields } from './Fields';
131
131
  export { default as Figma } from './Figma';
132
+ export { default as FileArchive } from './FileArchive';
133
+ export { default as FileBroken } from './FileBroken';
134
+ export { default as FileDocument } from './FileDocument';
132
135
  export { default as FileDownload } from './FileDownload';
136
+ export { default as FileImage } from './FileImage';
137
+ export { default as FilePresentation } from './FilePresentation';
138
+ export { default as FileTable } from './FileTable';
133
139
  export { default as FileUpload } from './FileUpload';
140
+ export { default as FileVideo } from './FileVideo';
134
141
  export { default as Filter } from './Filter';
135
142
  export { default as FitToScreen } from './FitToScreen';
136
143
  export { default as FocusModeOff } from './FocusModeOff';
@@ -0,0 +1,13 @@
1
+ // This icon file is generated automatically.
2
+
3
+ import {forwardRef} from 'react';
4
+ import FileArchiveSvg from '../ast/FileArchive';
5
+ import { Icon } from '../Icon';
6
+ import { IconBaseProps } from '../types';
7
+
8
+ const FileArchive = forwardRef<SVGSVGElement, IconBaseProps>(function FileArchive(
9
+ props: IconBaseProps,
10
+ ref: React.Ref<SVGSVGElement>
11
+ ) {return <Icon {...props} className={props.className} ref={ref} icon={FileArchiveSvg} />});
12
+
13
+ export default FileArchive;
@@ -0,0 +1,13 @@
1
+ // This icon file is generated automatically.
2
+
3
+ import {forwardRef} from 'react';
4
+ import FileBrokenSvg from '../ast/FileBroken';
5
+ import { Icon } from '../Icon';
6
+ import { IconBaseProps } from '../types';
7
+
8
+ const FileBroken = forwardRef<SVGSVGElement, IconBaseProps>(function FileBroken(
9
+ props: IconBaseProps,
10
+ ref: React.Ref<SVGSVGElement>
11
+ ) {return <Icon {...props} className={props.className} ref={ref} icon={FileBrokenSvg} />});
12
+
13
+ export default FileBroken;
@@ -0,0 +1,13 @@
1
+ // This icon file is generated automatically.
2
+
3
+ import {forwardRef} from 'react';
4
+ import FileDocumentSvg from '../ast/FileDocument';
5
+ import { Icon } from '../Icon';
6
+ import { IconBaseProps } from '../types';
7
+
8
+ const FileDocument = forwardRef<SVGSVGElement, IconBaseProps>(function FileDocument(
9
+ props: IconBaseProps,
10
+ ref: React.Ref<SVGSVGElement>
11
+ ) {return <Icon {...props} className={props.className} ref={ref} icon={FileDocumentSvg} />});
12
+
13
+ export default FileDocument;
@@ -0,0 +1,13 @@
1
+ // This icon file is generated automatically.
2
+
3
+ import {forwardRef} from 'react';
4
+ import FileImageSvg from '../ast/FileImage';
5
+ import { Icon } from '../Icon';
6
+ import { IconBaseProps } from '../types';
7
+
8
+ const FileImage = forwardRef<SVGSVGElement, IconBaseProps>(function FileImage(
9
+ props: IconBaseProps,
10
+ ref: React.Ref<SVGSVGElement>
11
+ ) {return <Icon {...props} className={props.className} ref={ref} icon={FileImageSvg} />});
12
+
13
+ export default FileImage;
@@ -0,0 +1,13 @@
1
+ // This icon file is generated automatically.
2
+
3
+ import {forwardRef} from 'react';
4
+ import FilePresentationSvg from '../ast/FilePresentation';
5
+ import { Icon } from '../Icon';
6
+ import { IconBaseProps } from '../types';
7
+
8
+ const FilePresentation = forwardRef<SVGSVGElement, IconBaseProps>(function FilePresentation(
9
+ props: IconBaseProps,
10
+ ref: React.Ref<SVGSVGElement>
11
+ ) {return <Icon {...props} className={props.className} ref={ref} icon={FilePresentationSvg} />});
12
+
13
+ export default FilePresentation;
@@ -0,0 +1,13 @@
1
+ // This icon file is generated automatically.
2
+
3
+ import {forwardRef} from 'react';
4
+ import FileTableSvg from '../ast/FileTable';
5
+ import { Icon } from '../Icon';
6
+ import { IconBaseProps } from '../types';
7
+
8
+ const FileTable = forwardRef<SVGSVGElement, IconBaseProps>(function FileTable(
9
+ props: IconBaseProps,
10
+ ref: React.Ref<SVGSVGElement>
11
+ ) {return <Icon {...props} className={props.className} ref={ref} icon={FileTableSvg} />});
12
+
13
+ export default FileTable;
@@ -0,0 +1,13 @@
1
+ // This icon file is generated automatically.
2
+
3
+ import {forwardRef} from 'react';
4
+ import FileVideoSvg from '../ast/FileVideo';
5
+ import { Icon } from '../Icon';
6
+ import { IconBaseProps } from '../types';
7
+
8
+ const FileVideo = forwardRef<SVGSVGElement, IconBaseProps>(function FileVideo(
9
+ props: IconBaseProps,
10
+ ref: React.Ref<SVGSVGElement>
11
+ ) {return <Icon {...props} className={props.className} ref={ref} icon={FileVideoSvg} />});
12
+
13
+ export default FileVideo;
@@ -129,8 +129,15 @@ export { default as FiberyMono } from './FiberyMono';
129
129
  export { default as FieldUnit } from './FieldUnit';
130
130
  export { default as Fields } from './Fields';
131
131
  export { default as Figma } from './Figma';
132
+ export { default as FileArchive } from './FileArchive';
133
+ export { default as FileBroken } from './FileBroken';
134
+ export { default as FileDocument } from './FileDocument';
132
135
  export { default as FileDownload } from './FileDownload';
136
+ export { default as FileImage } from './FileImage';
137
+ export { default as FilePresentation } from './FilePresentation';
138
+ export { default as FileTable } from './FileTable';
133
139
  export { default as FileUpload } from './FileUpload';
140
+ export { default as FileVideo } from './FileVideo';
134
141
  export { default as Filter } from './Filter';
135
142
  export { default as FitToScreen } from './FitToScreen';
136
143
  export { default as FocusModeOff } from './FocusModeOff';
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20">
2
+ <path d="M14.75 2C15.9926 2 17 3.0074 17 4.25V15.75C17 16.9926 15.9926 18 14.75 18H5.25C4.00736 18 3 16.9926 3 15.75V4.25C3 3.0074 4.00736 2 5.25 2H14.75ZM5.25 3.5C4.83579 3.5 4.5 3.8358 4.5 4.25V15.75C4.5 16.1642 4.83579 16.5 5.25 16.5H14.75C15.1642 16.5 15.5 16.1642 15.5 15.75V4.25C15.5 3.8358 15.1642 3.5 14.75 3.5H5.25ZM13.25 5C13.6642 5 14 5.33579 14 5.75C14 6.16421 13.6642 6.5 13.25 6.5H11C11 6.63132 10.9741 6.76149 10.9238 6.88281C10.8736 7.00409 10.7999 7.11421 10.707 7.20703C10.6142 7.29986 10.5041 7.37357 10.3828 7.42383C10.2615 7.47408 10.1313 7.5 10 7.5C9.86868 7.5 9.73851 7.47408 9.61719 7.42383C9.49591 7.37357 9.38579 7.29986 9.29297 7.20703C9.20014 7.11421 9.12643 7.00409 9.07617 6.88281C9.02592 6.76149 9 6.63132 9 6.5H6.75C6.33579 6.5 6 6.16421 6 5.75C6 5.33579 6.33579 5 6.75 5H13.25Z" />
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20">
2
+ <path d="M11.7422 1.5C11.9405 1.5 12.131 1.5787 12.2715 1.71875L16.7764 6.21582C16.9173 6.35652 16.9971 6.54787 16.9971 6.74707V15.75C16.9971 17.2687 15.766 18.4999 14.248 18.5H5.74512C4.22716 18.4999 2.99708 17.2687 2.99707 15.75V4.25C2.99707 2.73127 4.22713 1.50008 5.74512 1.5H11.7422ZM5.74512 3C5.05516 3.00008 4.49609 3.55969 4.49609 4.25V15.75C4.4961 16.4403 5.05519 16.9999 5.74512 17H14.248C14.938 16.9999 15.4971 16.4403 15.4971 15.75V7.49707H12.5752C12.1555 7.49702 11.7528 7.33009 11.4561 7.0332C11.1593 6.73627 10.9932 6.33301 10.9932 5.91309V3H5.74512ZM11.7197 9.21973C12.0126 8.92684 12.4874 8.92683 12.7803 9.21973C13.0732 9.51262 13.0732 9.98738 12.7803 10.2803L11.0605 12L12.7803 13.7197C13.0732 14.0126 13.0732 14.4874 12.7803 14.7803C12.4874 15.0732 12.0126 15.0732 11.7197 14.7803L10 13.0605L8.28027 14.7803C7.98738 15.0732 7.51262 15.0732 7.21973 14.7803C6.92683 14.4874 6.92683 14.0126 7.21973 13.7197L8.93945 12L7.21973 10.2803C6.92683 9.98738 6.92683 9.51262 7.21973 9.21973C7.51262 8.92683 7.98738 8.92683 8.28027 9.21973L10 10.9395L11.7197 9.21973ZM12.4922 5.91309C12.4922 5.93519 12.501 5.95703 12.5166 5.97266C12.5322 5.98808 12.5533 5.99702 12.5752 5.99707H14.4346L12.4922 4.05762V5.91309Z" />
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20">
2
+ <path d="M11.7422 1.5C11.9405 1.5 12.131 1.5787 12.2715 1.71875L16.7764 6.21582C16.9173 6.35652 16.9971 6.54787 16.9971 6.74707V15.75C16.9971 17.2687 15.766 18.4999 14.248 18.5H5.74512C4.22716 18.4999 2.99708 17.2687 2.99707 15.75V4.25C2.99707 2.73127 4.22713 1.50008 5.74512 1.5H11.7422ZM5.74512 3C5.05516 3.00008 4.49609 3.55969 4.49609 4.25V15.75C4.4961 16.4403 5.05519 16.9999 5.74512 17H14.248C14.938 16.9999 15.4971 16.4403 15.4971 15.75V7.49707H12.5752C12.1555 7.49702 11.7528 7.33009 11.4561 7.0332C11.1593 6.73627 10.9932 6.33301 10.9932 5.91309V3H5.74512ZM12.25 13C12.6642 13 13 13.3358 13 13.75C13 14.1642 12.6642 14.5 12.25 14.5H6.75C6.33579 14.5 6 14.1642 6 13.75C6 13.3358 6.33579 13 6.75 13H12.25ZM10.25 10C10.6642 10 11 10.3358 11 10.75C11 11.1642 10.6642 11.5 10.25 11.5H6.75C6.33579 11.5 6 11.1642 6 10.75C6 10.3358 6.33579 10 6.75 10H10.25ZM12.4922 5.91309C12.4922 5.93519 12.501 5.95703 12.5166 5.97266C12.5322 5.98808 12.5533 5.99702 12.5752 5.99707H14.4346L12.4922 4.05762V5.91309Z" />
3
+ </svg>