///
export interface fetchDataProps {
searchText: string;
searchType: string;
skip: number;
limit: number;
startIndex?: number;
stopIndex?: number;
ai_suggestions?: AISuggestions;
sortBy?: {
id: string;
sortingDirection: 'asc' | 'desc';
};
queryBuilder?: Record;
searchTermsOperator?: 'and' | 'or';
objectType?: string;
fields?: string[];
searchField?: string;
}
export interface AISuggestions {
space_uids: string[];
ai_weighted_query: {
query: string;
weightage: number;
}[];
color: string[];
}
export interface AssetThumbnailRefreshProps {
count: number | undefined;
reFetchAssetData: () => void;
}
export interface AssetThumbnailProps {
data: AssetData;
rowIndex: number;
spaceUid: string;
navigate: (url: string) => void;
updateShouldFetchAsset: (shouldFetchAsset: boolean) => void;
location: Location;
setSelectedFolder: (folderUid: string) => void;
}
export interface AssetLoaderProps {
fetch: () => void;
shouldLoad: boolean;
requesting?: boolean;
}
export type SetSortByData = (sortData: {
id: string;
sortingDirection: string;
} | ((prev: {
id: string;
sortingDirection: string;
}) => {
id: string;
sortingDirection: string;
})) => void;
interface DropdownOption {
label: React.ReactNode;
action: () => void;
default?: boolean;
}
export interface CustomDropdownOption {
label: string | React.ReactNode;
value: string | React.ReactNode;
icon?: string;
activeIcon?: string;
className?: string;
list?: DropdownOption[];
key?: string;
action?: () => void;
default?: boolean;
disable?: boolean;
testId?: string;
toBeActive?: boolean;
}
export type Dimension = {
height?: number;
width?: number;
};
export type GenericType = {
[key: string]: any;
};
export interface AssetTypeInfo {
uid: string;
title: string;
preview_image_url?: string;
}
export type AssetData = {
parent_uid: string | null;
uid: string;
created_by: string;
updated_by: string;
created_at: string;
updated_at: string;
content_type: string;
file_size?: number;
file_name?: string;
dimension?: Dimension;
dimensions?: Dimension;
assetId?: string;
_version?: number;
is_dir: boolean;
tags: string[];
title?: string;
lower_name?: string;
url?: string;
description?: string | null;
name?: string;
type?: string;
path?: Array<{
uid: string;
title: string;
}>;
space_uid?: string;
locale?: string;
asset_type?: AssetTypeInfo;
invalid_asset?: boolean;
errorMessage?: string;
[key: string]: unknown;
};
export type ModalSearchParams = {
PAGE: string;
ROWS_PER_PAGE: string;
SEARCH: string;
SEARCH_TYPE: string;
};
export type SearchTypes = {
SUGGESTIONS: string;
ALL: string;
TITLE: string;
URL: string;
[key: string]: string;
};
export interface SearchDropDownList {
label: string | React.ReactNode;
testId: string;
value: string | React.ReactNode;
disable?: boolean;
default?: boolean;
}
export interface SpaceSearchOptions {
searchType: string;
searchText: string;
}
export type SpaceAssetsModalSearchProps = {
searchFor: string;
searchDropDownList: SearchDropDownList[];
searchTypes: SearchTypes;
spaceAssetsSearchOptions: SpaceSearchOptions;
setSpaceAssetsSearchOptions: (config: SpaceSearchOptions) => void;
shouldDisabled: boolean;
setIsSuggestions: (isSuggestions: boolean) => void;
shouldClearSearchFilters: boolean;
setShouldClearSearchFilters: (shouldClearSearchFilters: boolean) => void;
setShowSelectedAssets: (showSelectedAssets: boolean) => void;
isResponsive?: boolean;
};
export interface StackSettings {
version?: string;
rte_version?: number;
blockAuthQueryParams?: boolean;
allowedCDNTokens?: string[];
branches?: boolean;
localesOptimization?: boolean;
webhook_enabled?: boolean;
live_preview?: Record;
stack_variables?: Record;
discrete_variables?: {
cms?: boolean;
_version?: number;
secret_key?: string;
};
am_v2?: {
spaces?: string[];
};
language_fallback?: boolean;
}
export interface UserMetadata {
idp_user?: boolean;
}
export interface UserPreferences {
global?: unknown[];
stack?: unknown[];
}
export interface UserSettings {
preferences?: UserPreferences;
}
export interface StackCollaborator {
uid: string;
email: string;
username?: string;
first_name?: string;
last_name?: string;
active?: boolean;
is_owner?: boolean;
accepted?: boolean;
invited_at?: string;
invited_by?: string;
created_at?: string;
updated_at?: string;
tfa_status?: string;
metadata?: UserMetadata;
settings?: UserSettings;
}
export interface SubAcl {
create?: boolean;
read?: boolean;
update?: boolean;
delete?: boolean;
publish?: boolean;
}
export interface RoleAcl {
uid: string;
name?: string;
invite?: boolean;
read?: boolean;
update?: boolean;
delete?: boolean;
sub_acl?: SubAcl;
}
export interface OthersAcl {
invite?: boolean;
read?: boolean;
create?: boolean;
update?: boolean;
delete?: boolean;
sub_acl?: SubAcl;
}
export interface SysAcl {
roles?: RoleAcl[];
others?: OthersAcl;
}
export interface StackBranch {
uid: string;
source: string;
api_key: string;
alias?: string[];
}
export interface StackUsage {
content_types?: number;
entries?: number;
assets?: number;
environments?: number;
locales?: number;
roles?: number;
webhooks?: number;
extensions?: number;
saved_searches?: number;
global_fields?: number;
branches?: number;
branch_aliases?: number;
taxonomies?: number;
taxonomy_data?: Record;
terms?: number;
}
export interface StackData {
uid: string;
name: string;
api_key: string;
org_uid: string;
master_locale: string;
owner_uid?: string;
is_asset_download_public?: boolean;
user_uids?: string[];
settings?: StackSettings;
master_key?: string;
collaborators?: StackCollaborator[];
branches?: StackBranch[];
created_at?: string;
updated_at?: string;
SYS_ACL?: SysAcl;
stack_variables?: Record;
discrete_variables?: {
cms?: boolean;
_version?: number;
secret_key?: string;
};
global_search?: boolean;
usage?: StackUsage;
}
export interface StackSecurityRole {
uid: string;
name: string;
description?: string;
api_key?: string;
created_by?: string;
updated_by?: string;
created_at?: string;
updated_at?: string;
roles?: string[];
users?: string[];
owner?: string;
stack?: StackData;
SYS_ACL?: SysAcl;
}
export interface OrgRole {
uid: string;
name: string;
description?: string;
org_uid?: string;
owner_uid?: string;
admin?: boolean;
default?: boolean;
permissions?: string[];
domain?: string;
}
export interface Organization {
uid: string;
name: string;
plan_id: string;
expires_on?: string;
enabled?: boolean;
is_over_usage_allowed?: boolean;
created_at?: string;
updated_at?: string;
tags?: string[];
org_roles?: OrgRole[];
}
export interface StackSecurityUser {
uid: string;
email: string;
username?: string;
first_name?: string;
last_name?: string;
active?: boolean;
is_owner?: boolean;
accepted?: boolean;
invited_at?: string;
invited_by?: string;
created_at?: string;
updated_at?: string;
tfa_status?: string;
metadata?: UserMetadata;
settings?: UserSettings;
}
export interface EnvironmentUrl {
url: string;
locale: string;
}
export interface Environment {
uid: string;
name: string;
color?: string;
urls?: EnvironmentUrl[];
created_by?: string;
updated_by?: string;
created_at?: string;
updated_at?: string;
ACL?: unknown[];
_version?: number;
}
export interface Locale {
code: string;
name: string;
uid: string;
fallback_locale: string | null;
created_by?: string;
updated_by?: string;
created_at?: string;
updated_at?: string;
ACL?: unknown[];
_version?: number;
}
export interface ContentTypeField {
data_type: string;
display_name: string;
uid: string;
field_metadata?: Record;
mandatory?: boolean;
multiple?: boolean;
non_localizable?: boolean;
unique?: boolean;
format?: string;
error_messages?: Record;
schema?: ContentTypeField[];
blocks?: Array<{
title: string;
uid: string;
schema: ContentTypeField[];
}>;
reference_to?: string[];
extensions?: string[];
}
export interface ContentTypeOptions {
is_page?: boolean;
singleton?: boolean;
sub_title?: string[];
title?: string;
url_pattern?: boolean | string;
url_prefix?: string;
}
export interface ContentTypeAbilities {
get_one_object?: boolean;
get_all_objects?: boolean;
create_object?: boolean;
update_object?: boolean;
delete_object?: boolean;
delete_all_objects?: boolean;
}
export interface ContentType {
uid: string;
title: string;
description?: string;
schema: ContentTypeField[];
options?: ContentTypeOptions;
abilities?: ContentTypeAbilities;
created_at?: string;
updated_at?: string;
_version?: number;
inbuilt_class?: boolean;
last_activity?: Record;
maintain_revisions?: boolean;
DEFAULT_ACL?: {
others?: OthersAcl;
users?: Array<{
uid: string;
read?: boolean;
sub_acl?: SubAcl;
}>;
management_token?: {
read?: boolean;
};
};
SYS_ACL?: SysAcl;
extension_uids?: string[];
}
export interface StackSecurity {
uid: string;
email: string;
username?: string;
first_name?: string;
last_name?: string;
active?: boolean;
tfa_status?: string;
authy_id?: string | null;
failed_attempts?: number;
last_login_at?: string;
password_updated_at?: string;
password_reset_required?: boolean;
authtoken?: string;
created_at?: string;
updated_at?: string;
org_uid?: string[];
shared_org_uid?: string[];
mobile_number?: string;
country_code?: string;
metadata?: UserMetadata;
settings?: UserSettings;
roles?: StackSecurityRole[];
organizations?: Organization[];
defaultOrganization?: string;
is_owner?: boolean;
isDeveloper?: boolean;
inviteUser?: boolean;
createContentType?: boolean;
currentUserIsOwner?: boolean;
isContentManager?: boolean;
}
export interface StackSecurityData {
requesting?: boolean;
success?: boolean;
error?: Record;
stackSecurity?: StackSecurity;
users?: StackSecurityUser[];
environments?: Environment[];
locales?: Locale[];
forms?: ContentType[];
roles?: StackSecurityRole[];
pageloading?: boolean;
}
export interface LocaleWithFallback {
code: string;
name: string;
uid: string;
fallback_locale: string | null;
isCurrentLocale?: boolean;
created_by?: string;
updated_by?: string;
created_at?: string;
updated_at?: string;
ACL?: any[];
_version?: number;
}
export interface FieldMetadata {
image?: boolean;
[key: string]: unknown;
}
export interface FieldConfig {
multiple: boolean;
max_instance?: number;
value?: Array<{
file: AssetData;
}> | AssetData | null;
min_instance?: number;
display_name?: string;
$uid?: string;
mandatory?: boolean;
non_localizable?: boolean;
updateRestrict?: boolean;
has_rule?: boolean;
isVariantField?: boolean;
$formPath?: string;
file_types?: string;
min?: number;
max?: number;
dimension?: {
width?: {
min?: number;
max?: number;
};
height?: {
min?: number;
max?: number;
};
};
extensions?: string[];
field_metadata?: FieldMetadata;
}
export interface AssetValidationFilter {
extensions?: string[];
minSize?: number;
maxSize?: number;
dimension?: {
width?: {
min?: number;
max?: number;
};
height?: {
min?: number;
max?: number;
};
};
imagesOnly?: boolean;
}
export interface Params {
api_key: string;
locale?: string;
form_uid?: string;
folder?: string;
apiVersion?: number;
}
export interface EntryData {
title?: string;
variantName?: string;
[key: string]: unknown;
}
export type TranslationFunction = (key: string, options?: Record) => string;
export type IsVariantPlanEnabledFn = () => boolean;
export type GetCurrentBranchFn = () => string;
export type FetchBranchFn = (headers: {
api_key: string;
}, params: {
uid: string;
include_settings?: boolean;
}, options?: Record) => Promise<{
branch: {
uid?: string;
source?: string;
settings?: {
am_v2?: {
linked_workspaces?: Array<{
uid: string;
space_uid: string;
}>;
};
};
};
}>;
export interface RangeQuery {
$gte?: number | string;
$lte?: number | string;
}
export interface SpaceAssetsQuery {
$and?: Array<{
space_uid?: {
$in: string[];
};
asset_type_uid?: {
$in: string[];
};
created_by?: {
$in: string[];
};
created_at?: {
$range: RangeQuery;
};
locale?: {
$in: string[];
};
parent_uid?: {
$eq: string;
};
'dimensions.width'?: {
$range: RangeQuery;
};
'dimensions.height'?: {
$range: RangeQuery;
};
file_size?: {
$range: RangeQuery;
};
$or?: Array<{
locale?: {
$in: string[];
};
}>;
}>;
}
export interface FetchSpaceAssetsOptions {
data?: {
query?: SpaceAssetsQuery;
sort?: Record;
skip?: number;
limit?: number;
asc?: string;
desc?: string;
search_text?: string;
};
}
export type FetchSpaceAssetsFn = (params: Record, headers: Record, options?: FetchSpaceAssetsOptions) => Promise<{
count: number;
relation: string;
results: AssetData[];
}>;
export interface Space {
uid: string;
title: string;
description?: string;
created_at?: string;
updated_at?: string;
created_by?: string;
updated_by?: string;
}
export type FetchSearchSpacesFn = (data?: Record, headers?: Record, params?: Record) => Promise<{
count: number;
results: Space[];
}>;
export interface AssetTypeOptions {
is_page?: boolean;
publishable?: boolean;
singleton?: boolean;
}
export interface AssetType {
uid: string;
title: string;
preview_image_url?: string;
category?: string;
category_detail?: string;
content_type?: string;
file_extension?: string;
description?: string;
fields?: string[];
is_system?: boolean;
options?: AssetTypeOptions;
sub_title?: string[];
url_pattern?: string;
url_prefix?: string;
created_at?: string;
updated_at?: string;
created_by?: string;
updated_by?: string;
}
export type FetchAssetTypesFn = (params?: Record, headers?: Record, options?: Record) => Promise<{
count: number;
asset_types: AssetType[];
}>;
export type FieldDisplayType = 'TEXT' | 'NUMBER' | 'MULTITEXT' | 'BOOLEAN' | 'URL' | 'ALL' | string;
export interface AMv2Field {
uid: string;
title: string;
display_type: FieldDisplayType;
data_type?: string;
field_type?: string;
mandatory?: boolean;
multiple?: boolean;
}
export interface FetchFieldsAMv2Query {
display_type?: FieldDisplayType;
search_text?: string;
skip?: number;
limit?: number;
}
export type FetchFieldsAMv2Fn = (query?: FetchFieldsAMv2Query, params?: Record, headers?: Record, options?: Record) => Promise<{
count: number;
fields: AMv2Field[];
relation: string;
}>;
export type InvitationStatus = 'ACCEPTED' | 'PENDING' | 'REJECTED';
export interface SpaceUser {
userUid: string;
email: string;
firstName: string;
lastName: string;
username?: string;
invitationStatus?: InvitationStatus;
invitedBy?: string;
roleUidsList?: string[];
}
export type SpaceUsersMap = Record;
export type FetchSpaceUsersFn = (data?: Record, params?: Record, headers?: Record, options?: Record) => Promise;
export interface CloseModalData {
selectedAssets?: Array<{
file: AssetData;
}>;
embedOptions?: {
isInline?: boolean;
};
linkSettings?: LinkSettings;
}
export type CloseModalFn = (selectedAssets?: Array<{
file: AssetData;
}>, embedOptions?: {
isInline?: boolean;
linkSettings?: LinkSettings;
}) => void;
export type StackAssetsSwitchFn = (e: React.MouseEvent) => void;
export type SetUploadAssetFlagFn = (flag: boolean) => void;
export type SetIsInlineFn = (isInline: boolean) => void;
export interface LinkSettings {
displayText: string;
title: string;
openInNewTab: boolean;
}
export type SetLinkSettingsFn = (settings: LinkSettings) => void;
export interface AMV2AssetPickerArgs {
stackData: StackData;
field: FieldConfig;
params: Params;
localesWithFallback: LocaleWithFallback[];
entryData: EntryData;
linkedSpaces: string[];
isVariantPlanEnabled: IsVariantPlanEnabledFn;
getCurrentBranch: GetCurrentBranchFn;
fetchBranch: FetchBranchFn;
fetchSpaceAssets: FetchSpaceAssetsFn;
fetchSearchSpaces: FetchSearchSpacesFn;
fetchAssetTypes: FetchAssetTypesFn;
fetchFieldsAMv2: FetchFieldsAMv2Fn;
fetchSpaceUsers: FetchSpaceUsersFn;
t?: TranslationFunction;
stackSecurityData?: StackSecurityData;
closeModal?: CloseModalFn;
setUploadAssetFlag?: SetUploadAssetFlagFn;
stackAssetsSwitch?: StackAssetsSwitchFn;
assetSearchPopup?: boolean;
hideStackAssetsSwitch?: boolean;
isJsonRTE?: boolean;
isInline?: boolean;
setIsInline?: SetIsInlineFn;
embedAsLink?: boolean;
linkSettings?: LinkSettings;
setLinkSettings?: SetLinkSettingsFn;
}
export type CbModalProps = {
closeFullscreen?: () => void;
closeModal?: (data?: any) => void;
fullscreenView?: boolean;
isFullScreen?: boolean;
onFullscreenModal?: () => void;
};
export {};