This repository has been archived on 2022-08-14. You can view files and clone it, but cannot push or open issues or pull requests.
outline/app/types/index.js

115 lines
2.1 KiB
JavaScript

// @flow
import { type Location } from "react-router-dom";
import theme from "shared/theme";
import Document from "models/Document";
export type Theme = typeof theme;
export type LocationWithState = Location & {
state: {
[key: string]: string,
},
};
export type Toast = {|
id: string,
createdAt: string,
message: string,
type: "warning" | "error" | "info" | "success",
timeout?: number,
reoccurring?: number,
action?: {
text: string,
onClick: () => void,
},
|};
export type FetchOptions = {
prefetch?: boolean,
revisionId?: string,
shareId?: string,
force?: boolean,
};
export type NavigationNode = {|
id: string,
title: string,
url: string,
children: NavigationNode[],
|};
// Pagination response in an API call
export type Pagination = {
limit: number,
nextPath: string,
offset: number,
};
// Pagination request params
export type PaginationParams = {|
limit?: number,
offset?: number,
sort?: string,
direction?: "ASC" | "DESC",
|};
export type SearchResult = {
ranking: number,
context: string,
document: Document,
};
export type MenuItem =
| {|
title: React.Node,
to: string,
visible?: boolean,
selected?: boolean,
disabled?: boolean,
icon?: React.Node,
|}
| {|
title: React.Node,
onClick: (event: SyntheticEvent<>) => void | Promise<void>,
visible?: boolean,
selected?: boolean,
disabled?: boolean,
icon?: React.Node,
|}
| {|
title: React.Node,
href: string,
visible?: boolean,
selected?: boolean,
disabled?: boolean,
level?: number,
icon?: React.Node,
|}
| {|
title: React.Node,
visible?: boolean,
disabled?: boolean,
style?: Object,
hover?: boolean,
items: MenuItem[],
icon?: React.Node,
|}
| {|
type: "separator",
visible?: boolean,
|}
| {|
type: "heading",
visible?: boolean,
title: React.Node,
|};
export type ToastOptions = {|
type: "warning" | "error" | "info" | "success",
timeout?: number,
action?: {
text: string,
onClick: () => void,
},
|};