tinacms 0.0.0-dced6ab-20250611061422 → 0.0.0-dd2089d-20251128055623
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/dist/admin/api.d.ts +3 -0
- package/dist/admin/components/Page.d.ts +3 -9
- package/dist/admin/components/Sidebar.d.ts +0 -3
- package/dist/admin/pages/CollectionCreatePage.d.ts +1 -1
- package/dist/admin/pages/DashboardPage.d.ts +0 -3
- package/dist/admin/pages/ScreenPage.d.ts +0 -3
- package/dist/auth/AuthModal.d.ts +1 -4
- package/dist/auth/TinaCloudProvider.d.ts +0 -1
- package/dist/client.js +2 -2
- package/dist/client.mjs +2 -2
- package/dist/index.js +58590 -57099
- package/dist/index.mjs +58549 -57058
- package/dist/internalClient/index.d.ts +25 -0
- package/dist/react.d.ts +13 -6
- package/dist/react.js +60 -52
- package/dist/react.mjs +60 -52
- package/dist/rich-text/index.d.ts +6 -0
- package/dist/rich-text/index.js +8 -1
- package/dist/rich-text/index.mjs +8 -1
- package/dist/rich-text/static.d.ts +154 -0
- package/dist/rich-text/static.js +246 -0
- package/dist/rich-text/static.mjs +243 -0
- package/dist/tina-cms.d.ts +1 -1
- package/dist/toolkit/components/ProgressBar.d.ts +11 -0
- package/dist/toolkit/components/media/media-item.d.ts +11 -1
- package/dist/toolkit/components/ui/breadcrumb.d.ts +11 -0
- package/dist/toolkit/components/ui/dropdown-menu.d.ts +25 -0
- package/dist/toolkit/fields/components/password-field.d.ts +1 -1
- package/dist/toolkit/fields/components/reference/components/button.d.ts +1 -1
- package/dist/toolkit/fields/components/reference/components/popover.d.ts +1 -1
- package/dist/toolkit/fields/components/reference/model/reference-link-props.d.ts +2 -0
- package/dist/toolkit/fields/components/select.d.ts +2 -2
- package/dist/toolkit/fields/components/text-field.d.ts +1 -1
- package/dist/toolkit/fields/plugins/dnd-kit-wrapper.d.ts +49 -0
- package/dist/toolkit/fields/plugins/group-field-plugin.d.ts +1 -1
- package/dist/toolkit/fields/plugins/group-list-field-plugin.d.ts +3 -1
- package/dist/toolkit/fields/plugins/list-field-meta.d.ts +1 -1
- package/dist/toolkit/fields/plugins/list-field-plugin.d.ts +3 -0
- package/dist/toolkit/fields/plugins/mdx-field-plugin/index.d.ts +2 -2
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/blockquote-element.d.ts +1 -1
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/button.d.ts +2 -2
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/code-block/code-block-element.d.ts +1 -1
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/code-line-element.d.ts +1 -1
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/list-element.d.ts +2 -2
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/paragraph-element.d.ts +1 -1
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/slash-input-element.d.ts +1 -1
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/table/table-cell-element.d.ts +2 -2
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/table/table-element.d.ts +1 -1
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/table/table-row-element.d.ts +1 -1
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/plugins/create-html-block/index.d.ts +4 -0
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/plugins/editor-plugins.d.ts +2 -2
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/plugins/ui/components.d.ts +18 -18
- package/dist/toolkit/form-builder/create-branch-modal.d.ts +13 -0
- package/dist/toolkit/form-builder/editorial-workflow-constants.d.ts +17 -0
- package/dist/toolkit/form-builder/fields-builder.d.ts +1 -1
- package/dist/toolkit/form-builder/form-builder.d.ts +4 -16
- package/dist/toolkit/form-builder/index.d.ts +1 -0
- package/dist/toolkit/forms/field.d.ts +3 -0
- package/dist/toolkit/forms/form.d.ts +22 -3
- package/dist/toolkit/icons/Tina.d.ts +0 -5
- package/dist/toolkit/icons/TinaExtended.d.ts +4 -0
- package/dist/toolkit/icons/index.d.ts +1 -0
- package/dist/toolkit/index.d.ts +1 -1
- package/dist/toolkit/plugin-branch-switcher/branch-button.d.ts +4 -1
- package/dist/toolkit/plugin-branch-switcher/index.d.ts +0 -1
- package/dist/toolkit/react-modals/modal/modal-actions.d.ts +2 -1
- package/dist/toolkit/react-modals/modal/modal-header.d.ts +1 -1
- package/dist/toolkit/react-sidebar/components/VersionInfo.d.ts +2 -0
- package/dist/toolkit/react-sidebar/components/badge.d.ts +6 -0
- package/dist/toolkit/react-sidebar/components/callout.d.ts +5 -0
- package/dist/toolkit/react-sidebar/components/form-list.d.ts +1 -1
- package/dist/toolkit/react-sidebar/components/local-warning.d.ts +3 -1
- package/dist/toolkit/react-sidebar/components/nav.d.ts +6 -3
- package/dist/toolkit/react-sidebar/components/resize-handle.d.ts +0 -5
- package/dist/toolkit/react-sidebar/components/sidebar-body.d.ts +3 -7
- package/dist/toolkit/react-sidebar/components/sidebar.d.ts +0 -7
- package/dist/toolkit/react-sidebar/components/sync-status.d.ts +5 -8
- package/dist/toolkit/react-sidebar/index.d.ts +1 -1
- package/dist/toolkit/styles/button.d.ts +2 -2
- package/dist/toolkit/styles/dropdown-button.d.ts +75 -0
- package/dist/toolkit/styles/index.d.ts +1 -0
- package/dist/toolkit/tina-state.d.ts +11 -0
- package/dist/utils/cn.d.ts +2 -0
- package/dist/utils/index.d.ts +1 -0
- package/package.json +17 -14
- package/dist/admin/pages/IndexingPage.d.ts +0 -2
- package/dist/toolkit/plugin-branch-switcher/branch-banner.d.ts +0 -2
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export declare const CreateBranchModal: ({ close, safeSubmit, path, values, crudType, }: {
|
|
3
|
+
safeSubmit: () => Promise<void>;
|
|
4
|
+
close: () => void;
|
|
5
|
+
path: string;
|
|
6
|
+
values: Record<string, unknown>;
|
|
7
|
+
crudType: string;
|
|
8
|
+
}) => React.JSX.Element;
|
|
9
|
+
export declare const PrefixedTextField: ({ label, prefix, ...props }: {
|
|
10
|
+
[x: string]: any;
|
|
11
|
+
label?: any;
|
|
12
|
+
prefix?: string;
|
|
13
|
+
}) => React.JSX.Element;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Editorial Workflow Status Constants
|
|
3
|
+
* These match the server-side constants in tinacloud/js/content-api/src/editorial-workflow.ts
|
|
4
|
+
*/
|
|
5
|
+
export declare const EDITORIAL_WORKFLOW_STATUS: {
|
|
6
|
+
readonly QUEUED: "queued";
|
|
7
|
+
readonly PROCESSING: "processing";
|
|
8
|
+
readonly SETTING_UP: "setting_up";
|
|
9
|
+
readonly CREATING_BRANCH: "creating_branch";
|
|
10
|
+
readonly INDEXING: "indexing";
|
|
11
|
+
readonly CONTENT_GENERATION: "content_generation";
|
|
12
|
+
readonly CREATING_PR: "creating_pr";
|
|
13
|
+
readonly COMPLETE: "complete";
|
|
14
|
+
readonly ERROR: "error";
|
|
15
|
+
readonly TIMEOUT: "timeout";
|
|
16
|
+
};
|
|
17
|
+
export type EditorialWorkflowStatus = (typeof EDITORIAL_WORKFLOW_STATUS)[keyof typeof EDITORIAL_WORKFLOW_STATUS];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import type { Form } from '../forms';
|
|
1
2
|
import * as React from 'react';
|
|
2
3
|
import { type FC } from 'react';
|
|
3
|
-
import type { Form } from '../forms';
|
|
4
4
|
export interface FormBuilderProps {
|
|
5
5
|
form: {
|
|
6
6
|
tinaForm: Form;
|
|
@@ -12,12 +12,11 @@ export interface FormBuilderProps {
|
|
|
12
12
|
}
|
|
13
13
|
export declare const FormBuilder: FC<FormBuilderProps>;
|
|
14
14
|
export declare const FormStatus: ({ pristine }: {
|
|
15
|
-
pristine:
|
|
15
|
+
pristine: boolean;
|
|
16
16
|
}) => React.JSX.Element;
|
|
17
|
-
export declare const FormWrapper: ({
|
|
18
|
-
header?: React.ReactNode;
|
|
19
|
-
children: React.ReactNode;
|
|
17
|
+
export declare const FormWrapper: ({ id, children, }: {
|
|
20
18
|
id: string;
|
|
19
|
+
children: React.ReactNode;
|
|
21
20
|
}) => React.JSX.Element;
|
|
22
21
|
/**
|
|
23
22
|
* @deprecated
|
|
@@ -30,14 +29,3 @@ export declare const CreateBranchModel: ({ close, safeSubmit, relativePath, valu
|
|
|
30
29
|
values: Record<string, unknown>;
|
|
31
30
|
crudType: string;
|
|
32
31
|
}) => React.JSX.Element;
|
|
33
|
-
export declare const CreateBranchModal: ({ close, safeSubmit, path, values, crudType, }: {
|
|
34
|
-
safeSubmit: () => Promise<void>;
|
|
35
|
-
close: () => void;
|
|
36
|
-
path: string;
|
|
37
|
-
values: Record<string, unknown>;
|
|
38
|
-
crudType: string;
|
|
39
|
-
}) => React.JSX.Element;
|
|
40
|
-
export declare const PrefixedTextField: ({ prefix, ...props }: {
|
|
41
|
-
[x: string]: any;
|
|
42
|
-
prefix?: string;
|
|
43
|
-
}) => React.JSX.Element;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Parser } from '@tinacms/schema-tools';
|
|
1
2
|
export type AnyField = Field & {
|
|
2
3
|
[key: string]: any;
|
|
3
4
|
};
|
|
@@ -7,10 +8,12 @@ export interface Field<F extends Field = AnyField> {
|
|
|
7
8
|
description?: string;
|
|
8
9
|
component: React.FC<any> | string | null;
|
|
9
10
|
inlineComponent?: React.FC<any>;
|
|
11
|
+
parser?: Parser;
|
|
10
12
|
parse?: (value: any, name: string, field: F) => any;
|
|
11
13
|
format?: (value: any, name: string, field: F) => any;
|
|
12
14
|
validate?(value: any, allValues: any, meta: any, field: Field): string | object | undefined;
|
|
13
15
|
defaultValue?: any;
|
|
16
|
+
namespace?: string[];
|
|
14
17
|
fields?: F[];
|
|
15
18
|
/**
|
|
16
19
|
* Focus events can come from outside of the component, this is not
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { FormApi, Config, FormState } from 'final-form';
|
|
2
|
-
import type { FormSubscription } from 'final-form';
|
|
3
1
|
import type { Plugin } from '../core';
|
|
4
|
-
import {
|
|
2
|
+
import { Config, FormApi, FormState } from 'final-form';
|
|
3
|
+
import type { FormSubscription } from 'final-form';
|
|
4
|
+
import { AnyField, Field } from './field';
|
|
5
5
|
export type { FormApi };
|
|
6
6
|
type GlobalOptions = {
|
|
7
7
|
global: true;
|
|
@@ -25,7 +25,16 @@ export interface FormOptions<S, F extends Field = AnyField> extends Config<S> {
|
|
|
25
25
|
extraSubscribeValues?: FormSubscription;
|
|
26
26
|
queries?: string[];
|
|
27
27
|
crudType?: 'create' | 'update';
|
|
28
|
+
/**
|
|
29
|
+
* @deprecated
|
|
30
|
+
* Misleading name as per https://github.com/tinacms/tinacms/issues/5686#issuecomment-2899840518
|
|
31
|
+
* Use path property instead.
|
|
32
|
+
*/
|
|
28
33
|
relativePath?: string;
|
|
34
|
+
/**
|
|
35
|
+
* Where to save the form within the content directory on next submission.
|
|
36
|
+
*/
|
|
37
|
+
path?: string;
|
|
29
38
|
}
|
|
30
39
|
export declare class Form<S = any, F extends Field = AnyField> implements Plugin {
|
|
31
40
|
private _reset;
|
|
@@ -42,7 +51,16 @@ export declare class Form<S = any, F extends Field = AnyField> implements Plugin
|
|
|
42
51
|
queries: string[];
|
|
43
52
|
global: GlobalOptions | null;
|
|
44
53
|
loading: boolean;
|
|
54
|
+
/**
|
|
55
|
+
* @deprecated
|
|
56
|
+
* Misleading name as per https://github.com/tinacms/tinacms/issues/5686#issuecomment-2899840518
|
|
57
|
+
* Use path property instead.
|
|
58
|
+
*/
|
|
45
59
|
relativePath: string;
|
|
60
|
+
/**
|
|
61
|
+
* Where to save the form within the content directory on next submission.
|
|
62
|
+
*/
|
|
63
|
+
path: string;
|
|
46
64
|
crudType?: 'create' | 'update';
|
|
47
65
|
beforeSubmit?: (values: S) => Promise<void | S>;
|
|
48
66
|
constructor({ id, label, fields, actions, buttons, global, reset, loadInitialValues, onChange, queries, ...options }: FormOptions<S, F>);
|
|
@@ -134,6 +152,7 @@ export declare class Form<S = any, F extends Field = AnyField> implements Plugin
|
|
|
134
152
|
label?: string;
|
|
135
153
|
name?: string;
|
|
136
154
|
fields: Field[];
|
|
155
|
+
namespace?: string[];
|
|
137
156
|
};
|
|
138
157
|
private getFieldGroup;
|
|
139
158
|
}
|
package/dist/toolkit/index.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ export type { TinaState } from './tina-state';
|
|
|
19
19
|
export * from './forms';
|
|
20
20
|
export * from './icons';
|
|
21
21
|
export * from './react-dismissible';
|
|
22
|
-
export { Nav, LocalWarning, BillingWarning,
|
|
22
|
+
export { Nav, LocalWarning, BillingWarning, SyncStatusButton, } from './react-sidebar';
|
|
23
23
|
export { useCMS } from './react-core';
|
|
24
24
|
/**
|
|
25
25
|
* Custom `tinacms` things
|
|
@@ -1,2 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
export declare const BranchButton: (
|
|
2
|
+
export declare const BranchButton: ({ className }: {
|
|
3
|
+
className?: string;
|
|
4
|
+
}) => React.JSX.Element;
|
|
5
|
+
export declare const BranchPreviewButton: (props: React.ButtonHTMLAttributes<HTMLButtonElement>) => React.JSX.Element;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
export interface ModalHeaderProps {
|
|
3
|
-
children: React.
|
|
3
|
+
children: React.ReactNode;
|
|
4
4
|
close?(): void;
|
|
5
5
|
}
|
|
6
6
|
export declare const ModalHeader: ({ children, close }: ModalHeaderProps) => React.JSX.Element;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export declare const Badge: ({ children, calloutStyle, className, displayIcon, ...props }: {
|
|
3
|
+
children?: React.ReactNode;
|
|
4
|
+
calloutStyle?: "warning" | "info" | "success" | "error";
|
|
5
|
+
displayIcon?: boolean;
|
|
6
|
+
} & React.HTMLProps<HTMLDivElement>) => React.JSX.Element;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import type { ScreenPlugin } from '../../react-screens';
|
|
3
1
|
import type { CloudConfigPlugin } from '../../react-cloud-config';
|
|
2
|
+
import type { ScreenPlugin } from '../../react-screens';
|
|
3
|
+
import * as React from 'react';
|
|
4
4
|
interface NavCollection {
|
|
5
5
|
label?: string;
|
|
6
6
|
name: string;
|
|
@@ -8,6 +8,9 @@ interface NavCollection {
|
|
|
8
8
|
}
|
|
9
9
|
interface NavProps {
|
|
10
10
|
isLocalMode: boolean;
|
|
11
|
+
showHamburger?: boolean;
|
|
12
|
+
menuIsOpen: boolean;
|
|
13
|
+
toggleMenu: () => void;
|
|
11
14
|
children?: any;
|
|
12
15
|
className?: string;
|
|
13
16
|
userName?: string;
|
|
@@ -38,5 +41,5 @@ interface NavProps {
|
|
|
38
41
|
};
|
|
39
42
|
}>;
|
|
40
43
|
}
|
|
41
|
-
export declare const Nav: ({ isLocalMode, className, children, showCollections, collectionsInfo, screens, cloudConfigs, contentCreators, sidebarWidth, RenderNavSite, RenderNavCloud, RenderNavCollection, AuthRenderNavCollection, ...props }: NavProps) => React.JSX.Element;
|
|
44
|
+
export declare const Nav: ({ isLocalMode, showHamburger, menuIsOpen, toggleMenu, className, children, showCollections, collectionsInfo, screens, cloudConfigs, contentCreators, sidebarWidth, RenderNavSite, RenderNavCloud, RenderNavCollection, AuthRenderNavCollection, ...props }: NavProps) => React.JSX.Element;
|
|
42
45
|
export {};
|
|
@@ -4,13 +4,6 @@ export interface FormsViewProps {
|
|
|
4
4
|
loadingPlaceholder?: React.FC;
|
|
5
5
|
}
|
|
6
6
|
export declare const FormsView: ({ loadingPlaceholder }?: FormsViewProps) => React.JSX.Element;
|
|
7
|
-
export interface MultiformFormHeaderProps {
|
|
8
|
-
activeForm: {
|
|
9
|
-
activeFieldName?: string;
|
|
10
|
-
tinaForm: Form;
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
export declare const MultiformFormHeader: ({ activeForm, }: MultiformFormHeaderProps) => React.JSX.Element;
|
|
14
7
|
export interface FormHeaderProps {
|
|
15
8
|
activeForm: {
|
|
16
9
|
activeFieldName?: string;
|
|
@@ -18,3 +11,6 @@ export interface FormHeaderProps {
|
|
|
18
11
|
};
|
|
19
12
|
}
|
|
20
13
|
export declare const FormHeader: ({ activeForm }: FormHeaderProps) => React.JSX.Element;
|
|
14
|
+
export declare const FormBreadcrumbs: ({ rootBreadcrumbName, ...props }: {
|
|
15
|
+
rootBreadcrumbName?: string;
|
|
16
|
+
} & React.HTMLAttributes<HTMLDivElement>) => React.JSX.Element;
|
|
@@ -3,7 +3,6 @@ import type { SidebarState, SidebarStateOptions } from '../sidebar';
|
|
|
3
3
|
export declare const SidebarContext: React.Context<any>;
|
|
4
4
|
export declare const minPreviewWidth = 440;
|
|
5
5
|
export declare const minSidebarWidth = 360;
|
|
6
|
-
export declare const navBreakpoint = 1279;
|
|
7
6
|
export interface SidebarProviderProps {
|
|
8
7
|
sidebar: SidebarState;
|
|
9
8
|
resizingSidebar: boolean;
|
|
@@ -13,9 +12,3 @@ export interface SidebarProviderProps {
|
|
|
13
12
|
defaultState?: SidebarStateOptions['defaultState'];
|
|
14
13
|
}
|
|
15
14
|
export declare function SidebarProvider({ position, resizingSidebar, setResizingSidebar, defaultWidth, sidebar, }: SidebarProviderProps): React.JSX.Element;
|
|
16
|
-
export declare const updateBodyDisplacement: ({ position, displayState, sidebarWidth, resizingSidebar, }: {
|
|
17
|
-
position?: string;
|
|
18
|
-
displayState: any;
|
|
19
|
-
sidebarWidth: any;
|
|
20
|
-
resizingSidebar: any;
|
|
21
|
-
}) => void;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
1
|
import { TinaCMS } from '../../tina-cms';
|
|
2
|
+
import * as React from 'react';
|
|
3
3
|
export declare const useGetEvents: (cms: TinaCMS, cursor?: string, existingEvents?: {
|
|
4
4
|
message: string;
|
|
5
5
|
id: string;
|
|
@@ -18,14 +18,11 @@ export declare const useGetEvents: (cms: TinaCMS, cursor?: string, existingEvent
|
|
|
18
18
|
loading: boolean;
|
|
19
19
|
error: Error;
|
|
20
20
|
};
|
|
21
|
-
export declare const SyncErrorWidget: ({ cms }: {
|
|
22
|
-
cms: any;
|
|
23
|
-
}) => React.JSX.Element;
|
|
24
21
|
export declare const SyncStatusModal: ({ closeEventsModal, cms }: {
|
|
25
22
|
closeEventsModal: any;
|
|
26
23
|
cms: any;
|
|
27
24
|
}) => React.JSX.Element;
|
|
28
|
-
export declare const
|
|
29
|
-
cms:
|
|
30
|
-
setEventsOpen:
|
|
31
|
-
}) => React.JSX.Element;
|
|
25
|
+
export declare const SyncStatusButton: ({ cms, setEventsOpen, ...buttonProps }: {
|
|
26
|
+
cms: TinaCMS;
|
|
27
|
+
setEventsOpen: (open: boolean) => void;
|
|
28
|
+
} & React.ButtonHTMLAttributes<HTMLButtonElement>) => React.JSX.Element;
|
|
@@ -2,4 +2,4 @@ export * from './sidebar';
|
|
|
2
2
|
export { SidebarProvider } from './components/sidebar';
|
|
3
3
|
export { Nav } from './components/nav';
|
|
4
4
|
export { LocalWarning, BillingWarning } from './components/local-warning';
|
|
5
|
-
export {
|
|
5
|
+
export { SyncStatusButton } from './components/sync-status';
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
3
|
-
variant?: 'primary' | 'secondary' | 'white' | 'ghost' | 'danger';
|
|
3
|
+
variant?: 'primary' | 'secondary' | 'white' | 'ghost' | 'danger' | 'accent' | 'custom';
|
|
4
4
|
as?: React.ElementType;
|
|
5
5
|
href?: string;
|
|
6
6
|
target?: string;
|
|
7
7
|
size?: 'small' | 'medium' | 'custom';
|
|
8
8
|
busy?: boolean;
|
|
9
|
-
rounded?: 'full' | 'left' | 'right' | 'custom';
|
|
9
|
+
rounded?: 'full' | 'left' | 'right' | 'custom' | 'none';
|
|
10
10
|
disabled?: boolean;
|
|
11
11
|
className?: string;
|
|
12
12
|
children?: React.ReactNode;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { ButtonProps } from './button';
|
|
3
|
+
export interface DropdownButtonItem {
|
|
4
|
+
label: string;
|
|
5
|
+
onClick: () => void;
|
|
6
|
+
variant?: 'default' | 'destructive';
|
|
7
|
+
icon?: React.ReactNode;
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface DropdownButtonProps extends Omit<ButtonProps, 'onClick'> {
|
|
11
|
+
/**
|
|
12
|
+
* The main action to perform when the button is clicked
|
|
13
|
+
*/
|
|
14
|
+
onMainAction?: () => void;
|
|
15
|
+
/**
|
|
16
|
+
* Array of dropdown menu items
|
|
17
|
+
*/
|
|
18
|
+
items: DropdownButtonItem[];
|
|
19
|
+
/**
|
|
20
|
+
* Whether to show the dropdown arrow in a split button style
|
|
21
|
+
* @default true
|
|
22
|
+
*/
|
|
23
|
+
showSplitButton?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Alignment of the dropdown menu
|
|
26
|
+
* @default 'end'
|
|
27
|
+
*/
|
|
28
|
+
align?: 'start' | 'center' | 'end';
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* A button component that combines a primary action with a dropdown menu of additional options.
|
|
32
|
+
*
|
|
33
|
+
* This component follows the split-button pattern found in TinaCMS, where the main button
|
|
34
|
+
* performs a primary action and a small arrow button opens a dropdown menu with additional options.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* // Basic usage with split button
|
|
38
|
+
* <DropdownButton
|
|
39
|
+
* variant="primary"
|
|
40
|
+
* onMainAction={() => console.log('Save to new branch')}
|
|
41
|
+
* items={[
|
|
42
|
+
* { label: 'Save to protected branch', onClick: () => console.log('Protected') },
|
|
43
|
+
* { label: 'Save and publish', onClick: () => console.log('Publish') },
|
|
44
|
+
* ]}
|
|
45
|
+
* >
|
|
46
|
+
* Save to new branch
|
|
47
|
+
* </DropdownButton>
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* // Dropdown-only button (no main action)
|
|
51
|
+
* <DropdownButton
|
|
52
|
+
* variant="secondary"
|
|
53
|
+
* showSplitButton={false}
|
|
54
|
+
* items={[
|
|
55
|
+
* { label: 'Save to new branch', onClick: () => console.log('New branch') },
|
|
56
|
+
* { label: 'Save to protected branch', onClick: () => console.log('Protected') },
|
|
57
|
+
* ]}
|
|
58
|
+
* >
|
|
59
|
+
* Save options
|
|
60
|
+
* </DropdownButton>
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* // With icons and destructive action
|
|
64
|
+
* <DropdownButton
|
|
65
|
+
* variant="primary"
|
|
66
|
+
* onMainAction={() => console.log('Save')}
|
|
67
|
+
* items={[
|
|
68
|
+
* { label: 'Duplicate', onClick: () => console.log('Duplicate'), icon: <CopyIcon /> },
|
|
69
|
+
* { label: 'Delete', onClick: () => console.log('Delete'), variant: 'destructive', icon: <TrashIcon /> },
|
|
70
|
+
* ]}
|
|
71
|
+
* >
|
|
72
|
+
* Save
|
|
73
|
+
* </DropdownButton>
|
|
74
|
+
*/
|
|
75
|
+
export declare const DropdownButton: React.ForwardRefExoticComponent<DropdownButtonProps & React.RefAttributes<HTMLButtonElement>>;
|
|
@@ -15,6 +15,12 @@ type FormList = {
|
|
|
15
15
|
items: FormListItem[];
|
|
16
16
|
formIds: string[];
|
|
17
17
|
};
|
|
18
|
+
type Breadcrumb = {
|
|
19
|
+
label: string;
|
|
20
|
+
formId: string;
|
|
21
|
+
formName: string;
|
|
22
|
+
namespace: string[];
|
|
23
|
+
};
|
|
18
24
|
export type TinaAction = {
|
|
19
25
|
type: 'forms:add';
|
|
20
26
|
value: Form;
|
|
@@ -63,6 +69,7 @@ export type TinaAction = {
|
|
|
63
69
|
value: boolean;
|
|
64
70
|
};
|
|
65
71
|
export interface TinaState {
|
|
72
|
+
breadcrumbs: Breadcrumb[];
|
|
66
73
|
activeFormId: string | null;
|
|
67
74
|
/**
|
|
68
75
|
* Forms are wrapped here because we need `activeFieldName` to be reactive, so adding it as a propery
|
|
@@ -85,4 +92,8 @@ export interface TinaState {
|
|
|
85
92
|
}
|
|
86
93
|
export declare const initialState: (cms: TinaCMS) => TinaState;
|
|
87
94
|
export declare function tinaReducer(state: TinaState, action: TinaAction): TinaState;
|
|
95
|
+
export declare function calculateBreadcrumbs(forms: {
|
|
96
|
+
activeFieldName?: string | null;
|
|
97
|
+
tinaForm: Form;
|
|
98
|
+
}[], activeFormId: string, activeFieldName?: string): Breadcrumb[];
|
|
88
99
|
export {};
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -20,3 +20,4 @@ export interface CreateClientProps {
|
|
|
20
20
|
export declare const createClient: ({ clientId, isLocalClient, branch, tinaioConfig, schema, apiUrl, tinaGraphQLVersion, }: CreateClientProps) => Client;
|
|
21
21
|
export declare function assertShape<T>(value: unknown, yupSchema: (args: typeof yup) => yup.AnySchema, errorMessage?: string): asserts value is T;
|
|
22
22
|
export declare function safeAssertShape<T>(value: unknown, yupSchema: (args: typeof yup) => yup.AnySchema): boolean;
|
|
23
|
+
export declare const get: (obj: any, path: any, defaultValue?: any) => any;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tinacms",
|
|
3
|
-
"version": "0.0.0-
|
|
3
|
+
"version": "0.0.0-dd2089d-20251128055623",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"module": "./dist/index.mjs",
|
|
6
6
|
"exports": {
|
|
@@ -29,6 +29,11 @@
|
|
|
29
29
|
"import": "./dist/rich-text/index.mjs",
|
|
30
30
|
"require": "./dist/rich-text/index.js"
|
|
31
31
|
},
|
|
32
|
+
"./dist/rich-text/static": {
|
|
33
|
+
"types": "./dist/rich-text/static.d.ts",
|
|
34
|
+
"import": "./dist/rich-text/static.mjs",
|
|
35
|
+
"require": "./dist/rich-text/static.js"
|
|
36
|
+
},
|
|
32
37
|
"./dist/rich-text/prism": {
|
|
33
38
|
"types": "./dist/rich-text/prism.d.ts",
|
|
34
39
|
"import": "./dist/rich-text/prism.mjs",
|
|
@@ -42,6 +47,7 @@
|
|
|
42
47
|
"entryPoints": [
|
|
43
48
|
"src/index.ts",
|
|
44
49
|
"src/rich-text/index.tsx",
|
|
50
|
+
"src/rich-text/static.tsx",
|
|
45
51
|
"src/rich-text/prism.tsx",
|
|
46
52
|
"src/react.tsx",
|
|
47
53
|
"src/client.ts"
|
|
@@ -61,6 +67,9 @@
|
|
|
61
67
|
"license": "Apache-2.0",
|
|
62
68
|
"dependencies": {
|
|
63
69
|
"@ariakit/react": "^0.4.15",
|
|
70
|
+
"@dnd-kit/core": "^6.1.0",
|
|
71
|
+
"@dnd-kit/sortable": "^8.0.0",
|
|
72
|
+
"@dnd-kit/utilities": "^3.2.2",
|
|
64
73
|
"@floating-ui/dom": "^1.6.13",
|
|
65
74
|
"@floating-ui/react-dom": "^2.1.2",
|
|
66
75
|
"@graphql-inspector/core": "^6.2.1",
|
|
@@ -107,21 +116,19 @@
|
|
|
107
116
|
"color-string": "^1.9.1",
|
|
108
117
|
"crypto-js": "^4.2.0",
|
|
109
118
|
"date-fns": "2.30.0",
|
|
119
|
+
"es-toolkit": "^1.42.0",
|
|
110
120
|
"final-form": "4.20.10",
|
|
111
121
|
"final-form-arrays": "^3.1.0",
|
|
112
122
|
"final-form-set-field-data": "^1.0.2",
|
|
113
123
|
"graphql": "15.8.0",
|
|
114
124
|
"graphql-tag": "^2.12.6",
|
|
115
125
|
"is-hotkey": "^0.2.0",
|
|
116
|
-
"lodash.get": "^4.4.2",
|
|
117
|
-
"lodash.set": "^4.3.2",
|
|
118
126
|
"lucide-react": "^0.424.0",
|
|
119
127
|
"mermaid": "9.3.0",
|
|
120
128
|
"moment": "2.29.4",
|
|
121
129
|
"monaco-editor": "0.31.0",
|
|
122
130
|
"prism-react-renderer": "^2.4.1",
|
|
123
131
|
"prop-types": "15.7.2",
|
|
124
|
-
"react-beautiful-dnd": "^13.1.1",
|
|
125
132
|
"react-color": "^2.19.3",
|
|
126
133
|
"react-datetime": "^3.3.1",
|
|
127
134
|
"react-dropzone": "14.2.3",
|
|
@@ -133,33 +140,29 @@
|
|
|
133
140
|
"webfontloader": "1.6.28",
|
|
134
141
|
"yup": "^1.6.1",
|
|
135
142
|
"zod": "^3.24.2",
|
|
136
|
-
"@tinacms/mdx": "0.0.0-
|
|
137
|
-
"@tinacms/schema-tools": "0.0.0-
|
|
138
|
-
"@tinacms/search": "0.0.0-
|
|
143
|
+
"@tinacms/mdx": "0.0.0-dd2089d-20251128055623",
|
|
144
|
+
"@tinacms/schema-tools": "0.0.0-dd2089d-20251128055623",
|
|
145
|
+
"@tinacms/search": "0.0.0-dd2089d-20251128055623"
|
|
139
146
|
},
|
|
140
147
|
"devDependencies": {
|
|
141
148
|
"@graphql-tools/utils": "^10.8.1",
|
|
142
149
|
"@testing-library/dom": "^10.4.0",
|
|
143
|
-
"@testing-library/jest-dom": "^6.
|
|
150
|
+
"@testing-library/jest-dom": "^6.7.0",
|
|
144
151
|
"@testing-library/react": "^16.2.0",
|
|
145
152
|
"@testing-library/user-event": "^14.6.1",
|
|
146
153
|
"@types/atob": "^2.1.4",
|
|
147
154
|
"@types/codemirror": "^5.60.15",
|
|
148
155
|
"@types/color-string": "^1.5.5",
|
|
149
|
-
"@types/lodash.debounce": "^4.0.9",
|
|
150
|
-
"@types/lodash.get": "^4.4.9",
|
|
151
156
|
"@types/node": "^22.13.1",
|
|
152
157
|
"@types/prop-types": "^15.7.14",
|
|
153
158
|
"@types/react": "^18.3.18",
|
|
154
|
-
"@types/react-beautiful-dnd": "^13.1.8",
|
|
155
159
|
"@types/react-color": "^3.0.13",
|
|
156
160
|
"@types/react-dom": "^18.3.5",
|
|
157
|
-
"@types/yup": "^0.32.0",
|
|
158
|
-
"lowlight": "^3.3.0",
|
|
159
161
|
"happy-dom": "15.10.2",
|
|
160
162
|
"identity-obj-proxy": "^3.0.0",
|
|
161
163
|
"isomorphic-fetch": "^3.0.0",
|
|
162
164
|
"jest-file-snapshot": "^0.7.0",
|
|
165
|
+
"lowlight": "^3.3.0",
|
|
163
166
|
"next": "14.2.10",
|
|
164
167
|
"react": "^18.3.1",
|
|
165
168
|
"react-dom": "^18.3.1",
|
|
@@ -169,7 +172,7 @@
|
|
|
169
172
|
"typescript": "^5.7.3",
|
|
170
173
|
"vite": "^5.4.14",
|
|
171
174
|
"vitest": "^2.1.9",
|
|
172
|
-
"@tinacms/scripts": "
|
|
175
|
+
"@tinacms/scripts": "1.4.1"
|
|
173
176
|
},
|
|
174
177
|
"peerDependencies": {
|
|
175
178
|
"react": ">=16.14.0",
|