@llmnative/react 0.1.0 → 1.0.0
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/README.md +387 -364
- package/bin/cli.js +117 -98
- package/dist/index.css +1 -1
- package/dist/index.js +21 -823
- package/dist/index.mjs +14246 -9296
- package/dist/style.css +1 -0
- package/dist/types/src/App.d.ts +72 -14
- package/dist/types/src/Config.d.ts +28 -5
- package/dist/types/src/Global.d.ts +2 -2
- package/dist/types/src/I18n.d.ts +185 -0
- package/dist/types/src/Theme.d.ts +153 -81
- package/dist/types/src/auth.d.ts +13 -1
- package/dist/types/src/components/Component.d.ts +13 -27
- package/dist/types/src/components/ErrorBoundary.d.ts +30 -0
- package/dist/types/src/components/blocks/Brand.d.ts +4 -4
- package/dist/types/src/components/blocks/Breadcrumbs.d.ts +50 -4
- package/dist/types/src/components/blocks/Carousel.d.ts +5 -5
- package/dist/types/src/components/blocks/Dropdown.d.ts +26 -20
- package/dist/types/src/components/blocks/ListCard.d.ts +31 -0
- package/dist/types/src/components/blocks/Menu.d.ts +13 -16
- package/dist/types/src/components/blocks/Notifications.d.ts +8 -3
- package/dist/types/src/components/blocks/ProviderSwitcher.d.ts +63 -0
- package/dist/types/src/components/blocks/Search.d.ts +2 -2
- package/dist/types/src/components/blocks/SideNav.d.ts +45 -0
- package/dist/types/src/components/blocks/ThemeSwitcher.d.ts +24 -0
- package/dist/types/src/components/blocks/Toolbar.d.ts +19 -0
- package/dist/types/src/components/index.d.ts +27 -6
- package/dist/types/src/components/types.d.ts +10 -3
- package/dist/types/src/components/ui/Alert.d.ts +16 -4
- package/dist/types/src/components/ui/Badge.d.ts +6 -5
- package/dist/types/src/components/ui/Buttons.d.ts +13 -12
- package/dist/types/src/components/ui/Card.d.ts +8 -7
- package/dist/types/src/components/ui/Code.d.ts +1 -1
- package/dist/types/src/components/ui/Gallery.d.ts +13 -14
- package/dist/types/src/components/ui/GridSystem.d.ts +1 -1
- package/dist/types/src/components/ui/Icon.d.ts +3 -1
- package/dist/types/src/components/ui/Image.d.ts +1 -1
- package/dist/types/src/components/ui/ImageAvatar.d.ts +1 -1
- package/dist/types/src/components/ui/Loader.d.ts +1 -1
- package/dist/types/src/components/ui/LocaleSwitcher.d.ts +14 -0
- package/dist/types/src/components/ui/Modal.d.ts +42 -15
- package/dist/types/src/components/ui/Pagination.d.ts +14 -3
- package/dist/types/src/components/ui/Percentage.d.ts +5 -5
- package/dist/types/src/components/ui/Repeat.d.ts +15 -6
- package/dist/types/src/components/ui/Tab.d.ts +29 -2
- package/dist/types/src/components/ui/TabDynamic.d.ts +4 -3
- package/dist/types/src/components/ui/Table.d.ts +15 -14
- package/dist/types/src/components/ui/fields/CodeEditor.d.ts +43 -0
- package/dist/types/src/components/ui/fields/ContextMenu.d.ts +38 -0
- package/dist/types/src/components/ui/fields/Crop.d.ts +4 -2
- package/dist/types/src/components/ui/fields/ImageField.d.ts +31 -0
- package/dist/types/src/components/ui/fields/Input.d.ts +43 -14
- package/dist/types/src/components/ui/fields/Prompt.d.ts +2 -31
- package/dist/types/src/components/ui/fields/RichText.d.ts +86 -0
- package/dist/types/src/components/ui/fields/Select.d.ts +13 -10
- package/dist/types/src/components/ui/fields/Upload.d.ts +37 -2
- package/dist/types/src/components/ui/fields/UploadCSV.d.ts +2 -0
- package/dist/types/src/components/ui/useRecordSelection.d.ts +1 -2
- package/dist/types/src/components/widgets/Form.d.ts +80 -43
- package/dist/types/src/components/widgets/ImageEditor.d.ts +4 -5
- package/dist/types/src/components/widgets/MarkdownReader.d.ts +4 -4
- package/dist/types/src/components/widgets/Prompt.d.ts +71 -23
- package/dist/types/src/components/widgets/TabDynamic.d.ts +4 -3
- package/dist/types/src/components/widgets/form-controller.d.ts +42 -0
- package/dist/types/src/components/widgets/grid-core/GridCore.d.ts +1 -1
- package/dist/types/src/components/widgets/grid-core/GridDB.d.ts +1 -1
- package/dist/types/src/components/widgets/grid-core/GridGalleryView.d.ts +1 -1
- package/dist/types/src/components/widgets/grid-core/GridTableView.d.ts +1 -1
- package/dist/types/src/components/widgets/grid-core/types.d.ts +77 -27
- package/dist/types/src/components/widgets/grid-core/useGridActions.d.ts +4 -8
- package/dist/types/src/components/widgets/grid-core/useGridColumns.d.ts +2 -2
- package/dist/types/src/components/widgets/grid-core/useGridDBRecords.d.ts +1 -2
- package/dist/types/src/components/widgets/grid-core/useGridPreparedRecords.d.ts +2 -2
- package/dist/types/src/components/widgets/grid-core/useGridSelection.d.ts +4 -5
- package/dist/types/src/components/widgets/grid-core/utils.d.ts +11 -3
- package/dist/types/src/conf/Prompt.d.ts +1 -1
- package/dist/types/src/conf/i18n/ar.d.ts +2 -0
- package/dist/types/src/conf/i18n/de.d.ts +2 -0
- package/dist/types/src/conf/i18n/en.d.ts +2 -0
- package/dist/types/src/conf/i18n/index.d.ts +6 -0
- package/dist/types/src/conf/i18n/it.d.ts +2 -0
- package/dist/types/src/conf/i18n/ru.d.ts +2 -0
- package/dist/types/src/conf/i18n/zh.d.ts +2 -0
- package/dist/types/src/constant.d.ts +1 -1
- package/dist/types/src/index.d.ts +38 -13
- package/dist/types/src/libs/converter.d.ts +4 -4
- package/dist/types/src/libs/editorHeight.d.ts +12 -0
- package/dist/types/src/libs/fetch.d.ts +4 -4
- package/dist/types/src/libs/imageBuilder.d.ts +63 -14
- package/dist/types/src/libs/imageVariants.d.ts +35 -0
- package/dist/types/src/libs/index.d.ts +1 -4
- package/dist/types/src/libs/promptUtils.d.ts +24 -0
- package/dist/types/src/libs/sanitizer.d.ts +2 -2
- package/dist/types/src/libs/utils.d.ts +9 -10
- package/dist/types/src/pages/index.d.ts +0 -2
- package/dist/types/src/providers/ProviderConfiguration.d.ts +6 -0
- package/dist/types/src/providers/ProviderRegistryContext.d.ts +51 -0
- package/dist/types/src/providers/ProviderSession.d.ts +68 -0
- package/dist/types/src/providers/ai/AIProvider.d.ts +57 -0
- package/dist/types/src/providers/ai/AIProviderContext.d.ts +13 -0
- package/dist/types/src/providers/ai/anthropic.d.ts +2 -0
- package/dist/types/src/providers/ai/deepseek.d.ts +1 -0
- package/dist/types/src/providers/ai/gemini.d.ts +2 -0
- package/dist/types/src/providers/ai/glm.d.ts +1 -0
- package/dist/types/src/providers/ai/index.d.ts +9 -134
- package/dist/types/src/providers/ai/mistral.d.ts +1 -0
- package/dist/types/src/providers/ai/openai.d.ts +1 -0
- package/dist/types/src/providers/ai/openaiCompatible.d.ts +17 -0
- package/dist/types/src/providers/ai/opencode.d.ts +2 -0
- package/dist/types/src/providers/ai/openrouter.d.ts +1 -0
- package/dist/types/src/providers/ai/shared.d.ts +46 -0
- package/dist/types/src/providers/api/ApiProvider.d.ts +43 -0
- package/dist/types/src/providers/api/direct.d.ts +14 -0
- package/dist/types/src/providers/api/firebase.d.ts +14 -0
- package/dist/types/src/providers/api/mock.d.ts +7 -0
- package/dist/types/src/providers/api/supabase.d.ts +14 -0
- package/dist/types/src/providers/auth/AuthProvider.d.ts +2 -2
- package/dist/types/src/providers/auth/firebase/FirebaseAuthProvider.d.ts +26 -0
- package/dist/types/src/providers/auth/google/GoogleAuth.d.ts +2 -2
- package/dist/types/src/providers/auth/supabase/SupabaseAuthProvider.d.ts +48 -0
- package/dist/types/src/providers/credentials/CredentialsProvider.d.ts +3 -0
- package/dist/types/src/providers/credentials/CredentialsProviderContext.d.ts +12 -0
- package/dist/types/src/providers/credentials/google/GoogleServiceAccountProvider.d.ts +8 -0
- package/dist/types/src/providers/data/DataProvider.d.ts +27 -1
- package/dist/types/src/providers/data/firebase.d.ts +5 -4
- package/dist/types/src/providers/data/firestore.d.ts +38 -0
- package/dist/types/src/providers/data/mock.d.ts +8 -1
- package/dist/types/src/providers/data/supabase.d.ts +36 -10
- package/dist/types/src/providers/firebase-init.d.ts +15 -4
- package/dist/types/src/providers/icon/PhosphorIconProvider.d.ts +1 -1
- package/dist/types/src/providers/manifest.d.ts +20 -14
- package/dist/types/src/providers/proxy/index.d.ts +7 -0
- package/dist/types/src/providers/proxy/vite.d.ts +3 -0
- package/dist/types/src/providers/scrape/index.d.ts +2 -1
- package/dist/types/src/providers/seo/google/keyword.d.ts +6 -1
- package/dist/types/src/providers/storage/StorageProvider.d.ts +155 -4
- package/dist/types/src/providers/storage/dropbox.d.ts +3 -3
- package/dist/types/src/providers/storage/firebase.d.ts +38 -7
- package/dist/types/src/providers/storage/supabase.d.ts +47 -7
- package/dist/types/src/providers/supabase-init.d.ts +35 -0
- package/dist/types/src/types/FormFields.d.ts +4 -2
- package/dist/types/src/types/FormSchema.d.ts +29 -0
- package/dist/types/themes/tokyo-night-light.d.ts +3 -0
- package/dist/types/themes/tokyo-night.d.ts +3 -0
- package/dist/types/themes/vscode-dark-plus.d.ts +3 -0
- package/dist/types/themes/vscode-light-plus.d.ts +3 -0
- package/dist/vite.js +1 -0
- package/dist/vite.mjs +54 -0
- package/package.json +45 -14
- package/scripts/cli/proxy-templates/cloudflare.ts +34 -0
- package/scripts/cli/proxy-templates/express.ts +77 -0
- package/scripts/cli/proxy-templates/nextjs-app.ts +42 -0
- package/scripts/cli/proxy-templates/nextjs-pages.ts +41 -0
- package/scripts/cli/proxy-templates/scaffold.json +33 -0
- package/scripts/cli/setup-devtools.js +155 -85
- package/scripts/cli/setup-project.js +618 -484
- package/themes/cyber.ts +469 -405
- package/themes/default.ts +469 -405
- package/themes/flat.ts +469 -405
- package/themes/tokyo-night-light.ts +38 -0
- package/themes/tokyo-night.ts +38 -0
- package/themes/vscode-dark-plus.ts +29 -0
- package/themes/vscode-light-plus.ts +29 -0
- package/dist/index.js.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/dist/types/src/components/FormEnhancer.d.ts +0 -26
- package/dist/types/src/components/Template.d.ts +0 -18
- package/dist/types/src/components/ui/fields/AssistantAI.d.ts +0 -23
- package/dist/types/src/components/ui/fields/Command.d.ts +0 -15
- package/dist/types/src/components/ui/fields/ImageUrl.d.ts +0 -7
- package/dist/types/src/libs/cache.d.ts +0 -9
- package/dist/types/src/libs/database.d.ts +0 -3
- package/dist/types/src/libs/log.d.ts +0 -2
- package/dist/types/src/libs/seo.d.ts +0 -8
- package/dist/types/src/libs/storage.d.ts +0 -2
- package/dist/types/src/pages/Blog.d.ts +0 -3
- package/dist/types/src/pages/BlogPost.d.ts +0 -16
- package/dist/types/src/pages/Helper.d.ts +0 -8
- package/dist/types/src/providers/auth/google/apis/auth.d.ts +0 -4
- package/dist/types/src/types/Block.d.ts +0 -4
- package/dist/types/src/types/Section.d.ts +0 -4
|
@@ -1,31 +1,79 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { AIFetchConfig } from '../../providers/ai';
|
|
3
2
|
import { PromptVariables } from '../../conf/Prompt';
|
|
3
|
+
import { type AIProviderAdapter, type AIRequestOptions, type AIAttachment } from '../../providers/ai/AIProvider';
|
|
4
4
|
import { FormFieldProps } from './Form';
|
|
5
5
|
export declare enum PromptMode {
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
EDIT = "edit",
|
|
7
|
+
RUN = "run"
|
|
8
8
|
}
|
|
9
|
-
type
|
|
9
|
+
export type PromptCommand = {
|
|
10
|
+
name: string;
|
|
11
|
+
description?: string;
|
|
12
|
+
icon?: string;
|
|
13
|
+
handler?: (currentValue: string) => string | Promise<string>;
|
|
14
|
+
};
|
|
15
|
+
export type PromptAction = {
|
|
16
|
+
key: string;
|
|
17
|
+
icon: string;
|
|
18
|
+
label?: string;
|
|
19
|
+
content?: React.ReactNode;
|
|
20
|
+
};
|
|
21
|
+
export type PromptStatusItem = 'tokensIn' | 'tokensOut' | 'contextPercent' | 'model' | 'duration' | {
|
|
22
|
+
key: string;
|
|
23
|
+
render: (stats: PromptRunStats) => React.ReactNode;
|
|
24
|
+
};
|
|
25
|
+
export type PromptRunStats = {
|
|
26
|
+
tokensIn: number;
|
|
27
|
+
tokensOut: number;
|
|
28
|
+
contextPercent: number | null;
|
|
29
|
+
model: string;
|
|
30
|
+
durationMs: number;
|
|
31
|
+
estimatedCost: number | null;
|
|
32
|
+
};
|
|
33
|
+
type PromptOptions = AIRequestOptions & {
|
|
10
34
|
value: string;
|
|
11
35
|
};
|
|
12
|
-
type OnRunPrompt = (prompt: string,
|
|
13
|
-
|
|
14
|
-
|
|
36
|
+
type OnRunPrompt = (prompt: string, options: AIRequestOptions, data?: PromptVariables) => Promise<string>;
|
|
37
|
+
type PromptDefaultValue = {
|
|
38
|
+
value?: string;
|
|
39
|
+
enabled?: boolean;
|
|
40
|
+
role?: string;
|
|
41
|
+
language?: string;
|
|
42
|
+
voice?: string;
|
|
43
|
+
style?: string;
|
|
44
|
+
model?: string;
|
|
45
|
+
temperature?: number;
|
|
46
|
+
};
|
|
47
|
+
type RenderPlainFallback = (props: Omit<FormFieldProps, "defaultValue">) => React.ReactNode;
|
|
48
|
+
type RenderAIUnavailable = (props: {
|
|
49
|
+
mode: PromptMode;
|
|
50
|
+
providerId?: string | null;
|
|
51
|
+
reason?: string;
|
|
52
|
+
configured: boolean;
|
|
53
|
+
}) => React.ReactNode;
|
|
54
|
+
type PromptSharedProps = FormFieldProps & {
|
|
55
|
+
minHeight?: number;
|
|
56
|
+
maxHeight?: number;
|
|
57
|
+
defaultValue?: PromptDefaultValue;
|
|
58
|
+
renderAIUnavailable?: RenderAIUnavailable;
|
|
59
|
+
variables?: PromptVariables;
|
|
60
|
+
};
|
|
61
|
+
type PromptEditProps = PromptSharedProps & {
|
|
62
|
+
mode?: PromptMode.EDIT;
|
|
63
|
+
};
|
|
64
|
+
type PromptRunProps = PromptSharedProps & {
|
|
65
|
+
mode: PromptMode.RUN;
|
|
15
66
|
onRunPrompt?: OnRunPrompt;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
export declare const Prompt: ({ mode, onRunPrompt, renderPromptDisabled, ...props }: PromptProps) => React.JSX.Element;
|
|
30
|
-
export declare const runPrompt: (options: PromptOptions, data?: PromptVariables, onRunPrompt?: OnRunPrompt) => Promise<string>;
|
|
31
|
-
export {};
|
|
67
|
+
renderFallback?: RenderPlainFallback;
|
|
68
|
+
commands?: PromptCommand[];
|
|
69
|
+
attachments?: boolean;
|
|
70
|
+
actions?: PromptAction[];
|
|
71
|
+
statusItems?: PromptStatusItem[];
|
|
72
|
+
};
|
|
73
|
+
export type PromptProps = PromptEditProps | PromptRunProps;
|
|
74
|
+
export declare const Prompt: ({ mode, ...props }: PromptProps) => React.JSX.Element;
|
|
75
|
+
export declare const runPrompt: (options: PromptOptions, data?: PromptVariables, onRunPrompt?: OnRunPrompt, provider?: AIProviderAdapter, attachments?: AIAttachment[], messages?: {
|
|
76
|
+
noProvider?: string;
|
|
77
|
+
noResponse?: string;
|
|
78
|
+
}) => Promise<string>;
|
|
79
|
+
export default Prompt;
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { TabPosition } from '../ui/Tab';
|
|
3
3
|
import { FieldOnChange } from './Form';
|
|
4
|
+
import { RecordProps } from '../../providers/data/DataProvider';
|
|
4
5
|
interface TabDynamicProps {
|
|
5
|
-
children: React.ReactNode | ((record:
|
|
6
|
+
children: React.ReactNode | ((record: RecordProps) => React.ReactNode);
|
|
6
7
|
name: string;
|
|
7
8
|
onChange?: FieldOnChange;
|
|
8
|
-
onAdd?: (value:
|
|
9
|
+
onAdd?: (value: RecordProps[]) => void;
|
|
9
10
|
onRemove?: (index: number) => void;
|
|
10
|
-
value?:
|
|
11
|
+
value?: RecordProps[];
|
|
11
12
|
label?: string;
|
|
12
13
|
min?: number;
|
|
13
14
|
max?: number;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { RecordProps } from '../../providers/data/DataProvider';
|
|
3
|
+
export type FormDraftStatus = 'restore' | 'restored' | null;
|
|
4
|
+
export type FormActionEvent = {
|
|
5
|
+
preventDefault?: () => void;
|
|
6
|
+
};
|
|
7
|
+
export type FormControllerState = {
|
|
8
|
+
record?: RecordProps;
|
|
9
|
+
isNewRecord: boolean;
|
|
10
|
+
isDirty: boolean;
|
|
11
|
+
canSave: boolean;
|
|
12
|
+
canDelete: boolean;
|
|
13
|
+
isSaving: boolean;
|
|
14
|
+
isDeleting: boolean;
|
|
15
|
+
saveDisabled: boolean;
|
|
16
|
+
deleteDisabled: boolean;
|
|
17
|
+
hasDraft: boolean;
|
|
18
|
+
draftStatus: FormDraftStatus;
|
|
19
|
+
errors: Record<string, string>;
|
|
20
|
+
hasErrors: boolean;
|
|
21
|
+
};
|
|
22
|
+
export type FormControllerActions = {
|
|
23
|
+
save: (event?: FormActionEvent) => Promise<boolean>;
|
|
24
|
+
delete: (event?: FormActionEvent) => Promise<boolean>;
|
|
25
|
+
reset: () => void;
|
|
26
|
+
restoreDraft: () => void;
|
|
27
|
+
discardDraft: () => void;
|
|
28
|
+
};
|
|
29
|
+
export type FormController = FormControllerState & FormControllerActions;
|
|
30
|
+
type FormControllerStore = {
|
|
31
|
+
bindActions: (actions: Partial<FormControllerActions>) => void;
|
|
32
|
+
getControllerSnapshot: () => FormController;
|
|
33
|
+
getState: () => FormControllerState;
|
|
34
|
+
setState: (nextState: Partial<FormControllerState>) => void;
|
|
35
|
+
subscribe: (listener: () => void) => () => void;
|
|
36
|
+
};
|
|
37
|
+
export declare function getFormControllerStore(controller: FormController): FormControllerStore;
|
|
38
|
+
export declare function resetFormController(controller: FormController): void;
|
|
39
|
+
export declare const FormControllerContext: React.Context<FormController | null>;
|
|
40
|
+
export declare function useFormController(controller?: FormController): FormController;
|
|
41
|
+
export declare function useFormActions(): FormController;
|
|
42
|
+
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { type RecordProps } from "../../../providers/data/DataProvider";
|
|
3
3
|
import { type GridCoreProps } from "./types";
|
|
4
|
-
declare function GridCore<TRecord extends RecordProps>({ records, recordId, sourcePath, columns, actions, form,
|
|
4
|
+
declare function GridCore<TRecord extends RecordProps>({ records, recordId, sourcePath, columns, actions, form, editDeepLink, header, footer, view, sticky, wrapperClassName, loading, title, before, after, sortable, pagination, selection, onRowClick, reorderable, onReorder, groupBy, onSave, onDelete, onComplete, audit, onLoad, }: GridCoreProps<TRecord>): React.JSX.Element;
|
|
5
5
|
export default GridCore;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { type RecordProps } from "../../../providers/data/DataProvider";
|
|
3
3
|
import { type GridDBProps } from "./types";
|
|
4
|
-
declare function GridDB<TRecord extends RecordProps = RecordProps>({ path, where, order, fieldMap,
|
|
4
|
+
declare function GridDB<TRecord extends RecordProps = RecordProps>({ path, fromUrl, where, order, fieldMap, recordId, ...rest }: GridDBProps<TRecord>): React.JSX.Element;
|
|
5
5
|
export default GridDB;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { type RecordProps } from "../../../providers/data/DataProvider";
|
|
3
3
|
import { type GridGalleryViewProps } from "./types";
|
|
4
|
-
declare function GridGalleryView<TRecord extends RecordProps>({ records, recordId, sortable, pagination, selection, selectedKeys, onSelectionChange,
|
|
4
|
+
declare function GridGalleryView<TRecord extends RecordProps>({ records, recordId, sortable, pagination, selection, selectedKeys, onSelectionChange, onRowClick, groupBy, wrapperClassName, before, after, }: GridGalleryViewProps<TRecord>): React.JSX.Element;
|
|
5
5
|
export default GridGalleryView;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { type RecordProps } from "../../../providers/data/DataProvider";
|
|
3
3
|
import { type GridTableViewProps } from "./types";
|
|
4
|
-
declare function GridTableView<TRecord extends RecordProps>({ records, recordId, columns, runAction, sortable, pagination, selection, selectedKeys, onSelectionChange,
|
|
4
|
+
declare function GridTableView<TRecord extends RecordProps>({ records, recordId, columns, runAction, sortable, pagination, selection, selectedKeys, onSelectionChange, onRowClick, reorderable, onReorder, activeKey, groupBy, wrapperClassName, before, after, }: GridTableViewProps<TRecord>): React.JSX.Element;
|
|
5
5
|
export default GridTableView;
|
|
@@ -14,11 +14,21 @@ export type GridCellContext<TRecord> = {
|
|
|
14
14
|
rowIndex: number;
|
|
15
15
|
runAction: (actionKey: string) => void;
|
|
16
16
|
};
|
|
17
|
+
/**
|
|
18
|
+
* Column definition for `<Grid>` / `<Table>`.
|
|
19
|
+
* `render` accepts a built-in format string ("date", "badge", …) or a custom
|
|
20
|
+
* render function that receives the full cell context.
|
|
21
|
+
*/
|
|
17
22
|
export type GridColumn<TRecord> = {
|
|
23
|
+
/** Record field to read. Accepts dot-notation strings for nested fields. */
|
|
18
24
|
key: keyof TRecord | string;
|
|
25
|
+
/** Column header label. */
|
|
19
26
|
label: string;
|
|
27
|
+
/** Enable click-to-sort on this column. */
|
|
20
28
|
sortable?: boolean;
|
|
29
|
+
/** Extra CSS classes on the `<td>` / cell wrapper. */
|
|
21
30
|
className?: string;
|
|
31
|
+
/** Built-in format name or custom render function. */
|
|
22
32
|
render?: GridFormat | ((ctx: GridCellContext<TRecord>) => React.ReactNode);
|
|
23
33
|
};
|
|
24
34
|
export type GridSelectionState<TRecord> = {
|
|
@@ -28,6 +38,11 @@ export type GridSelectionState<TRecord> = {
|
|
|
28
38
|
clear: () => void;
|
|
29
39
|
};
|
|
30
40
|
export type GridSelectionChangeHandler<TRecord> = (selection: GridSelectionState<TRecord>) => void;
|
|
41
|
+
export type GridSelectionConfig<TRecord> = {
|
|
42
|
+
mode: "single" | "multiple";
|
|
43
|
+
defaultKeys?: string[];
|
|
44
|
+
onChange?: GridSelectionChangeHandler<TRecord>;
|
|
45
|
+
};
|
|
31
46
|
export type GridReorderMeta<TRecord> = {
|
|
32
47
|
fromIndex: number;
|
|
33
48
|
toIndex: number;
|
|
@@ -60,7 +75,7 @@ export type GridModalAction<TRecord> = {
|
|
|
60
75
|
title?: React.ReactNode | ((ctx: GridModalActionContext<TRecord>) => React.ReactNode);
|
|
61
76
|
size?: "sm" | "md" | "lg" | "xl" | "fullscreen";
|
|
62
77
|
position?: "center" | "top" | "left" | "right" | "bottom";
|
|
63
|
-
|
|
78
|
+
allowFullscreen?: boolean;
|
|
64
79
|
header?: React.ReactNode | ((ctx: GridModalActionContext<TRecord>) => React.ReactNode);
|
|
65
80
|
body?: React.ReactNode | ((ctx: GridModalActionContext<TRecord>) => React.ReactNode);
|
|
66
81
|
footer?: React.ReactNode | false | ((ctx: GridModalActionContext<TRecord>) => React.ReactNode);
|
|
@@ -98,7 +113,7 @@ export type GridDeleteAction<TRecord> = {
|
|
|
98
113
|
title?: React.ReactNode | ((ctx: GridModalActionContext<TRecord>) => React.ReactNode);
|
|
99
114
|
size?: "sm" | "md" | "lg" | "xl" | "fullscreen";
|
|
100
115
|
position?: "center" | "top" | "left" | "right" | "bottom";
|
|
101
|
-
|
|
116
|
+
allowFullscreen?: boolean;
|
|
102
117
|
header?: React.ReactNode | ((ctx: GridModalActionContext<TRecord>) => React.ReactNode);
|
|
103
118
|
body?: React.ReactNode | ((ctx: GridModalActionContext<TRecord>) => React.ReactNode);
|
|
104
119
|
footer?: React.ReactNode | false | ((ctx: GridModalActionContext<TRecord>) => React.ReactNode);
|
|
@@ -134,44 +149,69 @@ export type GridAfterActionArgs<TRecord> = {
|
|
|
134
149
|
action: "create" | "update" | "delete";
|
|
135
150
|
};
|
|
136
151
|
export type GridAfterActionHandler<TRecord> = (args: GridAfterActionArgs<TRecord>) => Promise<boolean>;
|
|
137
|
-
|
|
138
|
-
edit?: boolean;
|
|
139
|
-
};
|
|
152
|
+
/** Visual / layout props for `<Grid>`. */
|
|
140
153
|
export type GridPresentation = {
|
|
141
|
-
layout
|
|
154
|
+
/** Display mode: `"table"` (default) or `"gallery"` card layout. */
|
|
155
|
+
view?: GridLayout;
|
|
156
|
+
/** Stick the header (`"top"`) or footer (`"bottom"`) while scrolling. */
|
|
142
157
|
sticky?: GridSticky;
|
|
143
|
-
|
|
158
|
+
/** CSS classes on the outermost wrapper element. */
|
|
159
|
+
wrapperClassName?: string;
|
|
160
|
+
/** Show a loading skeleton instead of rows. */
|
|
144
161
|
loading?: boolean;
|
|
162
|
+
/** Title rendered in the Grid header area. */
|
|
145
163
|
title?: React.ReactNode;
|
|
164
|
+
/** Content rendered before the Grid. */
|
|
165
|
+
before?: React.ReactNode;
|
|
166
|
+
/** Content rendered after the Grid. */
|
|
167
|
+
after?: React.ReactNode;
|
|
146
168
|
};
|
|
169
|
+
/** Interaction / behaviour props for `<Grid>`. */
|
|
147
170
|
export type GridBehavior<TRecord> = {
|
|
171
|
+
/** Enable global sorting. Pass an `OrderConfig` to set a default sort. */
|
|
148
172
|
sortable?: boolean | OrderConfig;
|
|
173
|
+
/** Pagination config. `{ limit: 20 }` is the common form. */
|
|
149
174
|
pagination?: PaginationParams;
|
|
150
|
-
selection
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
175
|
+
/** Row selection: `false` (off), `"single"`, `"multiple"`, or a full `GridSelectionConfig`. */
|
|
176
|
+
selection?: false | "single" | "multiple" | GridSelectionConfig<TRecord>;
|
|
177
|
+
/** Called when the user clicks a row (outside an action button). */
|
|
178
|
+
onRowClick?: (record: TRecord) => void;
|
|
179
|
+
/** Allow drag-and-drop row reordering. */
|
|
155
180
|
reorderable?: boolean;
|
|
181
|
+
/** Called after a drag reorder with the new record order and move metadata. */
|
|
156
182
|
onReorder?: GridReorderHandler<TRecord>;
|
|
183
|
+
/** Group rows by a field or array of fields. */
|
|
157
184
|
groupBy?: keyof TRecord | string | Array<keyof TRecord | string>;
|
|
158
185
|
};
|
|
186
|
+
/** Data-mutation hooks for `<Grid>`. */
|
|
159
187
|
export type GridPersistence<TRecord> = {
|
|
188
|
+
/** Called before saving a record. Return a custom storage path or `undefined`. */
|
|
160
189
|
onSave?: GridMutationSaveHandler<TRecord>;
|
|
190
|
+
/** Called before deleting a record. Return a path override or `undefined`. */
|
|
161
191
|
onDelete?: GridMutationDeleteHandler<TRecord>;
|
|
162
|
-
|
|
163
|
-
|
|
192
|
+
/** Called after create/update/delete. Return `false` to suppress default navigation. */
|
|
193
|
+
onComplete?: GridAfterActionHandler<TRecord>;
|
|
194
|
+
/** Automatically write `createdAt` / `updatedAt` timestamps on every mutation. */
|
|
164
195
|
audit?: boolean;
|
|
165
196
|
};
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
197
|
+
/**
|
|
198
|
+
* Full prop surface shared by all `<Grid>` variants.
|
|
199
|
+
* Combines presentation, behaviour, and persistence with a few top-level hooks.
|
|
200
|
+
*/
|
|
201
|
+
export type GridBaseProps<TRecord> = GridPresentation & GridBehavior<TRecord> & GridPersistence<TRecord> & {
|
|
202
|
+
/** Transform the record array after loading (filter, sort, enrich). */
|
|
203
|
+
onLoad?: (records: TRecord[]) => TRecord[] | Promise<TRecord[]>;
|
|
204
|
+
/** Column definitions. Omit to auto-generate from record keys. */
|
|
170
205
|
columns?: GridColumn<TRecord>[];
|
|
206
|
+
/** Enable built-in `"add"/"edit"/"delete"` shortcuts, or provide custom `GridAction` objects. */
|
|
171
207
|
actions?: GridActions<TRecord>;
|
|
208
|
+
/** Form element or factory rendered inside the add/edit modal. */
|
|
172
209
|
form?: React.ReactElement | ((ctx: GridFormContext<TRecord>) => React.ReactNode);
|
|
173
|
-
|
|
210
|
+
/** Sync the edit modal state to the URL hash (enables direct links). */
|
|
211
|
+
editDeepLink?: boolean;
|
|
212
|
+
/** Content rendered in the Grid header bar. Receives selection context. */
|
|
174
213
|
header?: React.ReactNode | ((ctx: GridHeaderContext<TRecord>) => React.ReactNode);
|
|
214
|
+
/** Content rendered in the Grid footer bar. Receives selection context. */
|
|
175
215
|
footer?: React.ReactNode | ((ctx: GridFooterContext<TRecord>) => React.ReactNode);
|
|
176
216
|
};
|
|
177
217
|
export type GridCoreProps<TRecord extends RecordProps> = GridBaseProps<TRecord> & {
|
|
@@ -183,12 +223,17 @@ export type GridArrayProps<TRecord extends RecordProps> = GridBaseProps<TRecord>
|
|
|
183
223
|
records: TRecord[];
|
|
184
224
|
recordId: GridRecordKey<TRecord>;
|
|
185
225
|
};
|
|
186
|
-
export type GridDBQuery = Pick<DatabaseOptions, "where" | "order" | "fieldMap"
|
|
187
|
-
export type GridDBPath = string
|
|
188
|
-
export type GridDBProps<TRecord extends RecordProps = RecordProps> = GridBaseProps<TRecord> & GridDBQuery & {
|
|
226
|
+
export type GridDBQuery = Pick<DatabaseOptions, "where" | "order" | "fieldMap">;
|
|
227
|
+
export type GridDBPath = string;
|
|
228
|
+
export type GridDBProps<TRecord extends RecordProps = RecordProps> = GridBaseProps<TRecord> & GridDBQuery & ({
|
|
229
|
+
fromUrl: true;
|
|
230
|
+
path?: never;
|
|
231
|
+
recordId?: GridRecordKey<TRecord>;
|
|
232
|
+
} | {
|
|
233
|
+
fromUrl?: false;
|
|
189
234
|
path: GridDBPath;
|
|
190
235
|
recordId?: GridRecordKey<TRecord>;
|
|
191
|
-
};
|
|
236
|
+
});
|
|
192
237
|
export type GridGatewayArrayProps<TRecord extends RecordProps> = GridArrayProps<TRecord> & {
|
|
193
238
|
path?: never;
|
|
194
239
|
};
|
|
@@ -206,11 +251,14 @@ export type GridTableViewProps<TRecord extends RecordProps> = {
|
|
|
206
251
|
selection?: GridSelectionMode;
|
|
207
252
|
selectedKeys?: string[];
|
|
208
253
|
onSelectionChange?: GridSelectionChangeHandler<TRecord>;
|
|
209
|
-
|
|
254
|
+
onRowClick?: (record: TRecord) => void;
|
|
210
255
|
reorderable?: boolean;
|
|
211
256
|
onReorder?: GridReorderHandler<TRecord>;
|
|
212
257
|
activeKey?: string | null;
|
|
213
|
-
|
|
258
|
+
groupBy?: keyof TRecord | string | Array<keyof TRecord | string>;
|
|
259
|
+
wrapperClassName?: string;
|
|
260
|
+
before?: React.ReactNode;
|
|
261
|
+
after?: React.ReactNode;
|
|
214
262
|
};
|
|
215
263
|
export type GridGalleryViewProps<TRecord extends RecordProps> = {
|
|
216
264
|
records: TRecord[];
|
|
@@ -220,8 +268,10 @@ export type GridGalleryViewProps<TRecord extends RecordProps> = {
|
|
|
220
268
|
selection?: GridSelectionMode;
|
|
221
269
|
selectedKeys?: string[];
|
|
222
270
|
onSelectionChange?: GridSelectionChangeHandler<TRecord>;
|
|
223
|
-
|
|
271
|
+
onRowClick?: (record: TRecord) => void;
|
|
224
272
|
groupBy?: keyof TRecord | string | Array<keyof TRecord | string>;
|
|
225
|
-
|
|
273
|
+
wrapperClassName?: string;
|
|
274
|
+
before?: React.ReactNode;
|
|
275
|
+
after?: React.ReactNode;
|
|
226
276
|
};
|
|
227
277
|
export {};
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { type FormRef } from "../Form";
|
|
3
2
|
import { type DataProviderAdapter, type RecordProps } from "../../../providers/data/DataProvider";
|
|
4
3
|
import { type GridAction, type GridActionContext, type GridActions, type GridFormContext, type GridModalActionContext, type GridRecordKey } from "./types";
|
|
5
4
|
export type GridActiveAction<TRecord extends RecordProps> = {
|
|
@@ -9,9 +8,7 @@ export type GridActiveAction<TRecord extends RecordProps> = {
|
|
|
9
8
|
type UseGridActionsArgs<TRecord extends RecordProps> = {
|
|
10
9
|
actions?: GridActions<TRecord>;
|
|
11
10
|
form?: React.ReactElement | ((ctx: GridFormContext<TRecord>) => React.ReactNode);
|
|
12
|
-
|
|
13
|
-
edit?: boolean;
|
|
14
|
-
};
|
|
11
|
+
editDeepLink?: boolean;
|
|
15
12
|
preparedRecords: TRecord[];
|
|
16
13
|
recordId: GridRecordKey<TRecord>;
|
|
17
14
|
sourcePath?: string;
|
|
@@ -24,14 +21,13 @@ type UseGridActionsArgs<TRecord extends RecordProps> = {
|
|
|
24
21
|
onDelete?: (args: {
|
|
25
22
|
record?: TRecord;
|
|
26
23
|
}) => Promise<string | undefined>;
|
|
27
|
-
|
|
24
|
+
onComplete?: (args: {
|
|
28
25
|
record?: TRecord;
|
|
29
26
|
action: "create" | "update" | "delete";
|
|
30
27
|
}) => Promise<boolean>;
|
|
31
|
-
createRecordKey?: (record: TRecord) => string;
|
|
32
28
|
audit?: boolean;
|
|
33
29
|
};
|
|
34
|
-
declare function useGridActions<TRecord extends RecordProps>({ actions, form,
|
|
30
|
+
declare function useGridActions<TRecord extends RecordProps>({ actions, form, editDeepLink, preparedRecords, recordId, sourcePath, db, onSave, onDelete, onComplete, audit, }: UseGridActionsArgs<TRecord>): {
|
|
35
31
|
normalizedActions: Record<string, GridAction<TRecord>>;
|
|
36
32
|
activeAction: GridActiveAction<TRecord> | null;
|
|
37
33
|
activeActionConfig: GridAction<TRecord> | undefined;
|
|
@@ -43,7 +39,7 @@ declare function useGridActions<TRecord extends RecordProps>({ actions, form, ro
|
|
|
43
39
|
getActionContext: (actionKey: string, record?: TRecord) => GridActionContext<TRecord>;
|
|
44
40
|
getModalActionContext: (actionKey: string, record?: TRecord) => GridModalActionContext<TRecord>;
|
|
45
41
|
getRecordKey: (record: TRecord) => string;
|
|
46
|
-
|
|
42
|
+
formController: import("../form-controller").FormController;
|
|
47
43
|
gridHashId: string;
|
|
48
44
|
};
|
|
49
45
|
export default useGridActions;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { type RecordProps } from "../../../providers/data/DataProvider";
|
|
3
|
-
import { type GridColumn } from "./types";
|
|
3
|
+
import { type GridColumn, type GridFormContext } from "./types";
|
|
4
4
|
type UseGridColumnsArgs<TRecord extends RecordProps> = {
|
|
5
5
|
columns?: GridColumn<TRecord>[];
|
|
6
6
|
records: TRecord[];
|
|
7
|
-
form?: React.ReactElement | ((ctx:
|
|
7
|
+
form?: React.ReactElement | ((ctx: GridFormContext<TRecord>) => React.ReactNode);
|
|
8
8
|
};
|
|
9
9
|
declare function useGridColumns<TRecord extends RecordProps>({ columns, records, form, }: UseGridColumnsArgs<TRecord>): GridColumn<TRecord>[];
|
|
10
10
|
export default useGridColumns;
|
|
@@ -4,7 +4,6 @@ type UseGridDBRecordsArgs = {
|
|
|
4
4
|
where?: DatabaseOptions["where"];
|
|
5
5
|
order?: DatabaseOptions["order"];
|
|
6
6
|
fieldMap?: DatabaseOptions["fieldMap"];
|
|
7
|
-
onLoad?: DatabaseOptions["onLoad"];
|
|
8
7
|
};
|
|
9
|
-
declare function useGridDBRecords<TRecord extends RecordProps>({ path, where, order, fieldMap,
|
|
8
|
+
declare function useGridDBRecords<TRecord extends RecordProps>({ path, where, order, fieldMap, }: UseGridDBRecordsArgs): TRecord[];
|
|
10
9
|
export default useGridDBRecords;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { type RecordProps } from "../../../providers/data/DataProvider";
|
|
2
2
|
type UseGridPreparedRecordsArgs<TRecord extends RecordProps> = {
|
|
3
3
|
records: TRecord[];
|
|
4
|
-
|
|
4
|
+
onLoad?: (records: TRecord[]) => TRecord[] | Promise<TRecord[]>;
|
|
5
5
|
};
|
|
6
|
-
declare function useGridPreparedRecords<TRecord extends RecordProps>({ records,
|
|
6
|
+
declare function useGridPreparedRecords<TRecord extends RecordProps>({ records, onLoad, }: UseGridPreparedRecordsArgs<TRecord>): {
|
|
7
7
|
preparedRecords: TRecord[];
|
|
8
8
|
loading: boolean;
|
|
9
9
|
};
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { type RecordProps } from "../../../providers/data/DataProvider";
|
|
2
|
-
import { type GridSelectionState } from "./types";
|
|
2
|
+
import { type GridSelectionConfig, type GridSelectionState } from "./types";
|
|
3
3
|
type UseGridSelectionArgs<TRecord extends RecordProps> = {
|
|
4
|
-
|
|
5
|
-
defaultSelectedKeys?: string[];
|
|
6
|
-
onSelectionChange?: (selection: GridSelectionState<TRecord>) => void;
|
|
4
|
+
selection?: false | "single" | "multiple" | GridSelectionConfig<TRecord>;
|
|
7
5
|
};
|
|
8
|
-
declare function useGridSelection<TRecord extends RecordProps>({
|
|
6
|
+
declare function useGridSelection<TRecord extends RecordProps>({ selection, }: UseGridSelectionArgs<TRecord>): {
|
|
7
|
+
mode: false | "multiple" | "single";
|
|
9
8
|
activeSelectionKeys: string[];
|
|
10
9
|
selectionState: GridSelectionState<TRecord>;
|
|
11
10
|
handleSelectionChange: (nextSelection: GridSelectionState<TRecord>) => void;
|
|
@@ -1,14 +1,22 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { type OrderConfig } from "../../../libs/order";
|
|
3
3
|
import { type RecordProps } from "../../../providers/data/DataProvider";
|
|
4
|
-
import { type GridAction, type GridActions, type GridColumn, type GridRecordKey } from "./types";
|
|
4
|
+
import { type GridAction, type GridActions, type GridCellContext, type GridColumn, type GridFormat, type GridFormContext, type GridRecordKey } from "./types";
|
|
5
5
|
export declare const isExternalUrl: (value: string) => boolean;
|
|
6
6
|
export declare const sanitizeHashPart: (value: string) => string;
|
|
7
7
|
export declare const getRecordKeyResolver: <TRecord extends RecordProps>(recordId: GridRecordKey<TRecord>) => (record: TRecord) => string;
|
|
8
|
+
export declare const formatGridValue: (format: GridFormat | undefined, value: unknown) => React.ReactNode;
|
|
9
|
+
export declare const renderGridCellValue: <TRecord extends RecordProps>(column: GridColumn<TRecord>, context: GridCellContext<TRecord>) => React.ReactNode;
|
|
8
10
|
export declare const buildDisplayRecords: <TRecord extends RecordProps>(records: TRecord[], columns: GridColumn<TRecord>[], runAction: (actionKey: string, record?: TRecord) => void) => TRecord[];
|
|
9
|
-
export declare const inferColumns: <TRecord extends RecordProps>(columns: GridColumn<TRecord>[] | undefined, records: TRecord[], form: React.ReactElement | ((ctx:
|
|
11
|
+
export declare const inferColumns: <TRecord extends RecordProps>(columns: GridColumn<TRecord>[] | undefined, records: TRecord[], form: React.ReactElement | ((ctx: GridFormContext<TRecord>) => React.ReactNode) | undefined) => GridColumn<TRecord>[];
|
|
10
12
|
export declare const normalizeActions: <TRecord extends RecordProps>(actions: GridActions<TRecord> | undefined, hasForm: boolean) => Record<string, GridAction<TRecord>>;
|
|
11
13
|
export declare const isActionVisible: <TRecord extends RecordProps>(action: GridAction<TRecord> | undefined, record?: TRecord) => boolean;
|
|
12
14
|
export declare const isActionDisabled: <TRecord extends RecordProps>(action: GridAction<TRecord> | undefined, record?: TRecord) => boolean;
|
|
13
|
-
export declare const getActionLabel: (actionKey: string, action:
|
|
15
|
+
export declare const getActionLabel: (actionKey: string, action: {
|
|
16
|
+
label?: string;
|
|
17
|
+
} | undefined, labels?: {
|
|
18
|
+
add?: string;
|
|
19
|
+
edit?: string;
|
|
20
|
+
delete?: string;
|
|
21
|
+
}) => string;
|
|
14
22
|
export declare const resolveInitialOrder: (sortable: boolean | OrderConfig | undefined) => OrderConfig | undefined;
|
|
@@ -64,7 +64,7 @@ export declare const setPrompt: (prompt: string, configVariables: {
|
|
|
64
64
|
limit?: string;
|
|
65
65
|
}, userInput: string) => string;
|
|
66
66
|
export interface PromptVariables {
|
|
67
|
-
[key: string]:
|
|
67
|
+
[key: string]: unknown;
|
|
68
68
|
}
|
|
69
69
|
export declare class Prompt {
|
|
70
70
|
static getRoles(): string[];
|
|
@@ -8,7 +8,7 @@ export declare const FIREBASE_BUCKET_SCRAPE = "scrape";
|
|
|
8
8
|
export declare const SEP = "/";
|
|
9
9
|
export declare const DOT = ".";
|
|
10
10
|
export declare const DEFAULT_LANG = "it";
|
|
11
|
-
export declare const consoleLog: (...args:
|
|
11
|
+
export declare const consoleLog: (...args: unknown[]) => void;
|
|
12
12
|
export interface PageRawBase {
|
|
13
13
|
path: string;
|
|
14
14
|
strategy: string;
|