@questpie/admin 3.2.0 → 3.2.1
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/client/blocks/block-renderer.d.mts +12 -2
- package/dist/client/blocks/block-renderer.mjs +357 -49
- package/dist/client/components/blocks/block-editor-context.mjs +11 -1
- package/dist/client/components/blocks/block-editor-provider.mjs +68 -26
- package/dist/client/components/blocks/block-item.mjs +181 -170
- package/dist/client/components/blocks/utils/tree-utils.mjs +13 -1
- package/dist/client/components/fields/array-field.mjs +177 -118
- package/dist/client/components/filter-builder/filter-builder-sheet.mjs +305 -310
- package/dist/client/components/filter-builder/filters-tab.mjs +1 -1
- package/dist/client/components/history-sidebar.mjs +121 -114
- package/dist/client/components/preview/live-preview-mode.mjs +140 -114
- package/dist/client/components/preview/preview-pane.mjs +288 -333
- package/dist/client/components/primitives/option-label.mjs +44 -0
- package/dist/client/components/primitives/select-multi.mjs +408 -383
- package/dist/client/components/primitives/select-single.mjs +387 -357
- package/dist/client/components/widgets/chart-widget.mjs +168 -143
- package/dist/client/contexts/focus-context.d.mts +11 -0
- package/dist/client/contexts/focus-context.mjs +51 -34
- package/dist/client/hooks/use-brand.mjs +2 -1
- package/dist/client/preview/block-scope-context.d.mts +2 -2
- package/dist/client/preview/block-scope-context.mjs +10 -20
- package/dist/client/preview/index.d.mts +1 -1
- package/dist/client/preview/patch.mjs +100 -0
- package/dist/client/preview/preview-banner.d.mts +2 -2
- package/dist/client/preview/preview-field.d.mts +34 -5
- package/dist/client/preview/preview-field.mjs +385 -118
- package/dist/client/preview/types.d.mts +82 -3
- package/dist/client/preview/types.mjs +85 -6
- package/dist/client/preview/use-collection-preview.d.mts +19 -1
- package/dist/client/preview/use-collection-preview.mjs +182 -58
- package/dist/client/runtime/index.d.mts +2 -2
- package/dist/client/runtime/index.mjs +2 -2
- package/dist/client/runtime/provider.d.mts +5 -5
- package/dist/client/utils/build-field-definitions-from-schema.mjs +8 -3
- package/dist/client/views/auth/reset-password-form.d.mts +2 -2
- package/dist/client/views/auth/setup-form.d.mts +2 -2
- package/dist/client/views/collection/bulk-action-toolbar.mjs +23 -25
- package/dist/client/views/collection/cells/primitive-cells.mjs +63 -13
- package/dist/client/views/collection/columns/build-columns.mjs +1 -0
- package/dist/client/views/collection/form-view.mjs +262 -33
- package/dist/client/views/collection/table-view.mjs +16 -11
- package/dist/client/views/layout/admin-layout-provider.d.mts +5 -5
- package/dist/client/views/layout/admin-layout-provider.mjs +107 -16
- package/dist/client.d.mts +2 -2
- package/dist/client.mjs +1 -1
- package/dist/components/rich-text/rich-text-renderer.d.mts +2 -2
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +1 -1
- package/dist/server/augmentation/common.d.mts +8 -4
- package/dist/server/augmentation/form-layout.d.mts +1 -1
- package/dist/server/i18n/messages/cs.mjs +11 -0
- package/dist/server/i18n/messages/de.mjs +11 -0
- package/dist/server/i18n/messages/en.mjs +11 -0
- package/dist/server/i18n/messages/es.mjs +11 -0
- package/dist/server/i18n/messages/fr.mjs +11 -0
- package/dist/server/i18n/messages/pl.mjs +11 -0
- package/dist/server/i18n/messages/pt.mjs +11 -0
- package/dist/server/i18n/messages/sk.mjs +11 -0
- package/dist/server/modules/admin/block/block-builder.d.mts +7 -10
- package/dist/server/modules/admin/block/block-builder.mjs +7 -10
- package/dist/server/modules/admin/collections/account.d.mts +50 -50
- package/dist/server/modules/admin/collections/admin-locks.d.mts +54 -54
- package/dist/server/modules/admin/collections/admin-preferences.d.mts +39 -39
- package/dist/server/modules/admin/collections/admin-saved-views.d.mts +47 -47
- package/dist/server/modules/admin/collections/apikey.d.mts +68 -68
- package/dist/server/modules/admin/collections/assets.d.mts +57 -20
- package/dist/server/modules/admin/collections/session.d.mts +42 -42
- package/dist/server/modules/admin/collections/user.d.mts +100 -34
- package/dist/server/modules/admin/collections/user.mjs +4 -4
- package/dist/server/modules/admin/collections/verification.d.mts +32 -32
- package/dist/server/modules/admin/index.d.mts +3 -3
- package/dist/server/modules/admin/routes/admin-config.d.mts +2 -2
- package/dist/server/modules/admin/routes/admin-config.mjs +9 -12
- package/dist/server/modules/admin/routes/execute-action.d.mts +9 -9
- package/dist/server/modules/admin/routes/locales.d.mts +2 -2
- package/dist/server/modules/admin/routes/preview.d.mts +11 -11
- package/dist/server/modules/admin/routes/reactive.d.mts +9 -9
- package/dist/server/modules/admin/routes/setup.d.mts +7 -7
- package/dist/server/modules/admin/routes/translations.d.mts +4 -4
- package/dist/server/modules/admin/routes/translations.mjs +1 -1
- package/dist/server/modules/admin/routes/widget-data.d.mts +5 -5
- package/dist/server/modules/admin-preferences/collections/admin-preferences.mjs +4 -6
- package/dist/server/modules/admin-preferences/collections/saved-views.d.mts +31 -33
- package/dist/server/modules/admin-preferences/collections/saved-views.mjs +4 -6
- package/package.json +3 -3
|
@@ -3,6 +3,8 @@ import { cn } from "../../lib/utils.mjs";
|
|
|
3
3
|
import { selectRealtime, useAdminStore } from "../../runtime/provider.mjs";
|
|
4
4
|
import { useSafeContentLocales } from "../../runtime/content-locales-provider.mjs";
|
|
5
5
|
import { useScopedLocale } from "../../runtime/locale-scope.mjs";
|
|
6
|
+
import { flattenOptions } from "../../components/primitives/types.mjs";
|
|
7
|
+
import { resolveOptionLabelForValue } from "../../components/primitives/option-label.mjs";
|
|
6
8
|
import { Button } from "../../components/ui/button.mjs";
|
|
7
9
|
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "../../components/ui/select.mjs";
|
|
8
10
|
import { Sheet, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle } from "../../components/ui/sheet.mjs";
|
|
@@ -10,7 +12,6 @@ import { sanitizeFilename } from "../../components/fields/field-utils.mjs";
|
|
|
10
12
|
import { Tooltip, TooltipContent, TooltipTrigger } from "../../components/ui/tooltip.mjs";
|
|
11
13
|
import { LocaleSwitcher } from "../../components/locale-switcher.mjs";
|
|
12
14
|
import { Checkbox } from "../../components/ui/checkbox.mjs";
|
|
13
|
-
import { flattenOptions } from "../../components/primitives/types.mjs";
|
|
14
15
|
import { createActionRegistryProxy } from "../../builder/types/action-registry.mjs";
|
|
15
16
|
import { ActionButton } from "../../components/actions/action-button.mjs";
|
|
16
17
|
import { useCollectionFields } from "../../hooks/use-collection-fields.mjs";
|
|
@@ -298,14 +299,17 @@ function mapListSchemaToConfig(list) {
|
|
|
298
299
|
config.actions = mapListActionsToDefinitions(list.actions);
|
|
299
300
|
return config;
|
|
300
301
|
}
|
|
301
|
-
function stringifyGroupValue(value, field, resolveText, noValueLabel = "No value") {
|
|
302
|
+
function stringifyGroupValue(value, field, resolveText, t, locale = "en", noValueLabel = "No value") {
|
|
302
303
|
if (value === null || value === void 0 || value === "") return noValueLabel;
|
|
303
|
-
if (Array.isArray(value)) return value.length > 0 ? value.map((item) => stringifyGroupValue(item, field, resolveText, noValueLabel)).join(", ") : noValueLabel;
|
|
304
|
+
if (Array.isArray(value)) return value.length > 0 ? value.map((item) => stringifyGroupValue(item, field, resolveText, t, locale, noValueLabel)).join(", ") : noValueLabel;
|
|
304
305
|
const options = field?.options?.options;
|
|
305
|
-
if (
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
306
|
+
if (field?.type === "select" && resolveText && t) return resolveOptionLabelForValue({
|
|
307
|
+
value,
|
|
308
|
+
options: Array.isArray(options) ? options : void 0,
|
|
309
|
+
resolveText,
|
|
310
|
+
t,
|
|
311
|
+
locale
|
|
312
|
+
});
|
|
309
313
|
if (typeof value === "object") {
|
|
310
314
|
const record = value;
|
|
311
315
|
const displayValue = record.title ?? record.name ?? record.label ?? record.id;
|
|
@@ -626,7 +630,7 @@ function TableViewInner({ collection, config, viewConfig, navigate, basePath = "
|
|
|
626
630
|
const mergedActionsConfig = React.useMemo(() => mergeServerActions(resolvedActionsConfig ?? {}, serverActions), [resolvedActionsConfig, serverActions]);
|
|
627
631
|
const { user } = useSessionState();
|
|
628
632
|
const { data: collectionMeta } = useSuspenseCollectionMeta(collection);
|
|
629
|
-
const { t } = useTranslation();
|
|
633
|
+
const { t, locale: uiLocale } = useTranslation();
|
|
630
634
|
const resolveText = useResolveText();
|
|
631
635
|
const { locale: contentLocale, setLocale: setContentLocale } = useScopedLocale();
|
|
632
636
|
const localeOptions = useSafeContentLocales()?.locales ?? [];
|
|
@@ -1199,7 +1203,7 @@ function TableViewInner({ collection, config, viewConfig, navigate, basePath = "
|
|
|
1199
1203
|
if (serverGroups?.length) {
|
|
1200
1204
|
const rowsById_0 = new Map(rows.map((row_8) => [row_8.id, row_8]));
|
|
1201
1205
|
return serverGroups.flatMap((group) => {
|
|
1202
|
-
const label = stringifyGroupValue(group.value, groupField, resolveText, t("common.noValue"));
|
|
1206
|
+
const label = stringifyGroupValue(group.value, groupField, resolveText, t, uiLocale, t("common.noValue"));
|
|
1203
1207
|
const groupKey = `${groupBy_0}:${label}`;
|
|
1204
1208
|
const collapsed = collapsedGroups.has(groupKey);
|
|
1205
1209
|
const groupRows = (group.docs ?? []).map((doc) => rowsById_0.get(String(doc.id))).filter(Boolean);
|
|
@@ -1217,7 +1221,7 @@ function TableViewInner({ collection, config, viewConfig, navigate, basePath = "
|
|
|
1217
1221
|
}
|
|
1218
1222
|
const groups = /* @__PURE__ */ new Map();
|
|
1219
1223
|
for (const row_10 of rows) {
|
|
1220
|
-
const valueLabel = stringifyGroupValue(row_10.original?.[groupBy_0], groupField, resolveText, t("common.noValue"));
|
|
1224
|
+
const valueLabel = stringifyGroupValue(row_10.original?.[groupBy_0], groupField, resolveText, t, uiLocale, t("common.noValue"));
|
|
1221
1225
|
const groupKey_0 = `${groupBy_0}:${valueLabel}`;
|
|
1222
1226
|
const group_0 = groups.get(groupKey_0);
|
|
1223
1227
|
if (group_0) {
|
|
@@ -1251,7 +1255,8 @@ function TableViewInner({ collection, config, viewConfig, navigate, basePath = "
|
|
|
1251
1255
|
isSearching,
|
|
1252
1256
|
listData?.groups,
|
|
1253
1257
|
resolveText,
|
|
1254
|
-
t
|
|
1258
|
+
t,
|
|
1259
|
+
uiLocale
|
|
1255
1260
|
]);
|
|
1256
1261
|
const handleSaveView = (name, config_0) => {
|
|
1257
1262
|
saveViewMutation.mutate({
|
|
@@ -60,17 +60,17 @@ interface AdminLayoutProviderProps extends AdminLayoutSharedProps {
|
|
|
60
60
|
/**
|
|
61
61
|
* Use server-side translations (fetched via getAdminTranslations RPC).
|
|
62
62
|
* When true, translations are fetched from the server configured via
|
|
63
|
-
* .
|
|
63
|
+
* config/admin.ts and config translations.
|
|
64
64
|
*
|
|
65
65
|
* @default false (for backwards compatibility)
|
|
66
66
|
*
|
|
67
67
|
* @example
|
|
68
68
|
* ```tsx
|
|
69
69
|
* // Server configures locales and messages
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
*
|
|
70
|
+
* import { adminConfig } from "#questpie/factories";
|
|
71
|
+
*
|
|
72
|
+
* export default adminConfig({
|
|
73
|
+
* locale: { locales: ["en", "sk"], defaultLocale: "en" },
|
|
74
74
|
* });
|
|
75
75
|
*
|
|
76
76
|
* // Client fetches from server
|
|
@@ -10,11 +10,67 @@ import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
|
|
10
10
|
import { jsx } from "react/jsx-runtime";
|
|
11
11
|
|
|
12
12
|
//#region src/client/views/layout/admin-layout-provider.tsx
|
|
13
|
+
/**
|
|
14
|
+
* AdminLayoutProvider Component
|
|
15
|
+
*
|
|
16
|
+
* Universal layout wrapper that works with any router.
|
|
17
|
+
* Provides AdminProvider + AdminLayout and renders children.
|
|
18
|
+
*
|
|
19
|
+
* @example Next.js (App Router)
|
|
20
|
+
* ```tsx
|
|
21
|
+
* // app/admin/layout.tsx
|
|
22
|
+
* export default function AdminLayout({ children }) {
|
|
23
|
+
* return (
|
|
24
|
+
* <AdminLayoutProvider
|
|
25
|
+
* admin={myAdmin}
|
|
26
|
+
* client={cmsClient}
|
|
27
|
+
* authClient={authClient}
|
|
28
|
+
* LinkComponent={Link}
|
|
29
|
+
* >
|
|
30
|
+
* {children}
|
|
31
|
+
* </AdminLayoutProvider>
|
|
32
|
+
* );
|
|
33
|
+
* }
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* @example TanStack Router
|
|
37
|
+
* ```tsx
|
|
38
|
+
* // routes/admin.tsx
|
|
39
|
+
* function AdminLayout() {
|
|
40
|
+
* return (
|
|
41
|
+
* <AdminLayoutProvider
|
|
42
|
+
* admin={myAdmin}
|
|
43
|
+
* client={cmsClient}
|
|
44
|
+
* authClient={authClient}
|
|
45
|
+
* LinkComponent={Link}
|
|
46
|
+
* >
|
|
47
|
+
* <Outlet />
|
|
48
|
+
* </AdminLayoutProvider>
|
|
49
|
+
* );
|
|
50
|
+
* }
|
|
51
|
+
* ```
|
|
52
|
+
*
|
|
53
|
+
* @example With Auth Protection
|
|
54
|
+
* ```tsx
|
|
55
|
+
* <AdminLayoutProvider
|
|
56
|
+
* admin={myAdmin}
|
|
57
|
+
* client={cmsClient}
|
|
58
|
+
* authClient={authClient}
|
|
59
|
+
* enableAuthGuard={true}
|
|
60
|
+
* publicPaths={["/admin/login", "/admin/forgot-password"]}
|
|
61
|
+
* requiredRole="admin"
|
|
62
|
+
* >
|
|
63
|
+
* {children}
|
|
64
|
+
* </AdminLayoutProvider>
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
13
67
|
/** Debounced 401 redirect - prevents multiple redirects from concurrent failures */
|
|
14
68
|
let sessionExpiredRedirectPending = false;
|
|
69
|
+
const ADMIN_QUERY_STALE_TIME_MS = 60 * 1e3;
|
|
70
|
+
const configuredAdminQueryClients = /* @__PURE__ */ new WeakSet();
|
|
15
71
|
function handleSessionExpiredError(error) {
|
|
16
72
|
if (sessionExpiredRedirectPending) return;
|
|
17
|
-
if ((error
|
|
73
|
+
if (getErrorStatus(error) !== 401) return;
|
|
18
74
|
if (typeof window !== "undefined") {
|
|
19
75
|
const path = window.location.pathname;
|
|
20
76
|
if (DEFAULT_PUBLIC_PATHS.some((p) => path.endsWith(p))) return;
|
|
@@ -23,22 +79,57 @@ function handleSessionExpiredError(error) {
|
|
|
23
79
|
window.location.href = `${path.replace(/\/[^/]*$/, "")}/login?returnUrl=${returnUrl}`;
|
|
24
80
|
}
|
|
25
81
|
}
|
|
82
|
+
function getErrorStatus(error) {
|
|
83
|
+
if (error != null && typeof error === "object" && "status" in error) {
|
|
84
|
+
const status = error.status;
|
|
85
|
+
return typeof status === "number" ? status : void 0;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
function shouldRetryAdminQuery(failureCount, error) {
|
|
89
|
+
const status = getErrorStatus(error);
|
|
90
|
+
if (status === 401) return false;
|
|
91
|
+
if (status && status >= 400 && status < 500 && status !== 408 && status !== 429) return false;
|
|
92
|
+
return failureCount < 3;
|
|
93
|
+
}
|
|
94
|
+
function createAdminDefaultOptions(defaultOptions = {}) {
|
|
95
|
+
const queries = defaultOptions.queries ?? {};
|
|
96
|
+
const mutations = defaultOptions.mutations ?? {};
|
|
97
|
+
const existingMutationOnError = mutations.onError;
|
|
98
|
+
return {
|
|
99
|
+
...defaultOptions,
|
|
100
|
+
queries: {
|
|
101
|
+
...queries,
|
|
102
|
+
staleTime: queries.staleTime ?? ADMIN_QUERY_STALE_TIME_MS,
|
|
103
|
+
refetchOnWindowFocus: queries.refetchOnWindowFocus ?? false,
|
|
104
|
+
retry: queries.retry ?? shouldRetryAdminQuery
|
|
105
|
+
},
|
|
106
|
+
mutations: {
|
|
107
|
+
...mutations,
|
|
108
|
+
onError: ((error, ...args) => {
|
|
109
|
+
handleSessionExpiredError(error);
|
|
110
|
+
return existingMutationOnError?.(error, ...args);
|
|
111
|
+
})
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
function installQueryCacheSessionHandler(queryClient) {
|
|
116
|
+
const queryCache = queryClient.getQueryCache();
|
|
117
|
+
const existingOnError = queryCache.config.onError;
|
|
118
|
+
queryCache.config.onError = (error, ...args) => {
|
|
119
|
+
handleSessionExpiredError(error);
|
|
120
|
+
return existingOnError?.(error, ...args);
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
function configureAdminQueryClient(queryClient) {
|
|
124
|
+
if (configuredAdminQueryClients.has(queryClient)) return queryClient;
|
|
125
|
+
queryClient.setDefaultOptions(createAdminDefaultOptions(queryClient.getDefaultOptions()));
|
|
126
|
+
installQueryCacheSessionHandler(queryClient);
|
|
127
|
+
configuredAdminQueryClients.add(queryClient);
|
|
128
|
+
return queryClient;
|
|
129
|
+
}
|
|
26
130
|
let cachedQueryClient;
|
|
27
131
|
function getDefaultQueryClient() {
|
|
28
|
-
if (!cachedQueryClient)
|
|
29
|
-
cachedQueryClient = new QueryClient({ defaultOptions: {
|
|
30
|
-
queries: {
|
|
31
|
-
staleTime: 60 * 1e3,
|
|
32
|
-
refetchOnWindowFocus: false,
|
|
33
|
-
retry: (failureCount, error) => {
|
|
34
|
-
if ((error != null && typeof error === "object" && "status" in error ? error.status : void 0) === 401) return false;
|
|
35
|
-
return failureCount < 3;
|
|
36
|
-
}
|
|
37
|
-
},
|
|
38
|
-
mutations: { onError: handleSessionExpiredError }
|
|
39
|
-
} });
|
|
40
|
-
cachedQueryClient.getQueryCache().config.onError = handleSessionExpiredError;
|
|
41
|
-
}
|
|
132
|
+
if (!cachedQueryClient) cachedQueryClient = configureAdminQueryClient(new QueryClient());
|
|
42
133
|
return cachedQueryClient;
|
|
43
134
|
}
|
|
44
135
|
/**
|
|
@@ -77,7 +168,7 @@ function AdminLayoutProvider(t0) {
|
|
|
77
168
|
const basePath = t1 === void 0 ? "/admin" : t1;
|
|
78
169
|
const publicPaths = t2 === void 0 ? DEFAULT_PUBLIC_PATHS : t2;
|
|
79
170
|
const requiredRole = t3 === void 0 ? "admin" : t3;
|
|
80
|
-
const qc = queryClient
|
|
171
|
+
const qc = queryClient ? configureAdminQueryClient(queryClient) : getDefaultQueryClient();
|
|
81
172
|
const { theme: managedTheme, setTheme: setManagedTheme } = useManagedAdminTheme(theme, setTheme);
|
|
82
173
|
if (client?.routes) {
|
|
83
174
|
qc.prefetchQuery(getAdminConfigQueryOptions(client));
|
package/dist/client.d.mts
CHANGED
|
@@ -28,7 +28,7 @@ import { RichTextEditor } from "./client/components/fields/rich-text-editor/inde
|
|
|
28
28
|
import { BlockScopeContextValue, BlockScopeProvider, BlockScopeProviderProps, useBlockScope, useResolveFieldPath } from "./client/preview/block-scope-context.mjs";
|
|
29
29
|
import { PreviewBanner, PreviewBannerProps } from "./client/preview/preview-banner.mjs";
|
|
30
30
|
import { PreviewField, PreviewFieldProps, PreviewProvider, StandalonePreviewField, usePreviewContext } from "./client/preview/preview-field.mjs";
|
|
31
|
-
import { AdminToPreviewMessage, BlockClickedMessage, FieldClickedMessage, FocusFieldMessage, PreviewConfig, PreviewReadyMessage, PreviewRefreshMessage, PreviewToAdminMessage, RefreshCompleteMessage, SelectBlockMessage, isAdminToPreviewMessage, isPreviewToAdminMessage } from "./client/preview/types.mjs";
|
|
31
|
+
import { AdminToPreviewMessage, BlockClickedMessage, CommitMessage, FieldClickedMessage, FieldValueEditedMessage, FocusFieldMessage, FullResyncMessage, InitSnapshotMessage, PatchAppliedMessage, PatchBatchMessage, PreviewConfig, PreviewPatchOp, PreviewReadyMessage, PreviewRefreshMessage, PreviewToAdminMessage, RefreshCompleteMessage, ResyncRequestMessage, SelectBlockMessage, isAdminToPreviewMessage, isPreviewToAdminMessage } from "./client/preview/types.mjs";
|
|
32
32
|
import { UseCollectionPreviewOptions, UseCollectionPreviewResult, useCollectionPreview } from "./client/preview/use-collection-preview.mjs";
|
|
33
33
|
import "./client/preview/index.mjs";
|
|
34
34
|
import { AuthGuard } from "./client/components/auth/auth-guard.mjs";
|
|
@@ -105,4 +105,4 @@ type CollectionFieldKeys<TApp extends QuestpieApp, TCollectionName extends strin
|
|
|
105
105
|
select: infer TSelect;
|
|
106
106
|
} ? keyof TSelect : never : never : never;
|
|
107
107
|
//#endregion
|
|
108
|
-
export { AcceptInviteForm, AcceptInvitePage, Admin, AdminLayout, AdminLayoutProvider, AdminLink, AdminProvider, type AdminProviderProps, AdminRouter, type AdminRouterProps, type AdminSidebarBrandProps, type AdminSidebarNavItemProps, type AdminState, type AdminStore, type AdminToPreviewMessage, AnyQuestpieClient, type AnyWidgetConfig, type AppAdmin, AuthDefaultLogo, AuthGuard, AuthLayout, type AuthLayoutProps, AuthLoading, Badge, type BadgeProps, type BaseFieldProps, type BaseWidgetAdminMeta, type BaseWidgetConfig, type BlockCategory, type BlockClickedMessage, type BlockContent, type BlockNode, BlockRenderer, type BlockRendererProps as BlockRendererComponentProps, type BlockRendererProps$1 as BlockRendererProps, type BlockScopeContextValue, BlockScopeProvider, type BlockScopeProviderProps, type BrandLogoConfig, BrandLogoMark, type BrandLogoMarkProps, type BrandSnapshot, type BrandingConfig, type ChartWidgetConfig, CollectionFieldKeys, type CollectionFormViewProps, CollectionItem, type CollectionListViewProps, CollectionNames, type ComponentRegistry, ComponentRenderer, type ComponentRendererProps, type ComponentRendererRegistry, type CustomWidgetConfig, DashboardPage, EMPTY_BLOCK_CONTENT, type FieldClickedMessage, type FieldComponentProps, type FieldDefinition, type FieldInstance, type FlagConfig, type FocusContextValue, type FocusFieldMessage, FocusProvider, type FocusProviderProps, type FocusState, ForgotPasswordForm, ForgotPasswordPage, type FormViewConfig, type FormViewDefinition, type GlobalFormViewProps, GlobalNames, type I18nContext, type I18nText, type IconComponent, IconifyIcon, type IconifyIconProps, type InferAdminCMS, InvitePage, type ListViewDefinition, LoginForm, LoginPage, type MaybeLazyComponent, type OptionItem, type PageDefinition, PreviewBanner, type PreviewBannerProps, type PreviewConfig, PreviewField, type PreviewFieldProps, PreviewProvider, type PreviewReadyMessage, type PreviewRefreshMessage, type PreviewToAdminMessage, type ProgressWidgetConfig, type QuickActionsWidgetConfig, type ReactiveFieldResult, type ReactiveFieldState, type RecentItemsWidgetConfig, type RefreshCompleteMessage, ResetPasswordForm, ResetPasswordPage, RichTextEditor, type RichTextEditorProps, RichTextRenderer, type RichTextStyles, type ScopeContextValue, type ScopeOption, ScopePicker, type ScopePickerProps, ScopeProvider, type ScopeProviderProps, type SelectBlockMessage, SetupForm, type SetupFormValues, SetupPage, type SetupPageProps, type SetupStatus, StandalonePreviewField, type StatsWidgetConfig, type TableWidgetConfig, type TimelineWidgetConfig, type TipTapDoc, type TipTapNode, type TypedHooks, type UseCollectionPreviewOptions, type UseCollectionPreviewResult, type UseFieldOptionsOptions, type UseFieldOptionsResult, type UseReactiveFieldsOptions, type UseReactiveFieldsResult, type ValueWidgetConfig, type ViewDefinition, type ViewKind, type WidgetComponentProps, type WidgetConfig, type WidgetDefinition, type WidgetTypeRegistry, buildValidationSchema, buildZodFromIntrospection, configureField, createAdminAuthClient, createAdminClient, createFormSchema, createIconRenderer, createScopedFetch, createTypedHooks, field, getCountryCode, getFlagConfig, getFlagUrl, isAdminToPreviewMessage, isBlockContent, isComponentReference, isPreviewToAdminMessage, page, parsePreviewFieldPath, resolveIconElement, scrollFieldIntoView, selectAdmin, selectBasePath, selectClient, selectNavigate, useAdminStore, useAuthClient, useBlockScope, useBrand, useBrandSnapshotRef, useCollectionCreate, useCollectionDelete, useCollectionItem, useCollectionList, useCollectionPreview, useCollectionRestore, useCollectionRevertVersion, useCollectionUpdate, useCollectionVersions, useCurrentUser, useFieldOptions, useFocus, useFocusOptional, useGlobal, useGlobalRevertVersion, useGlobalUpdate, useGlobalVersions, useIsBlockFocused, useIsDesktop, useIsFieldFocused, useIsMobile, useMediaQuery, usePreviewContext, useReactiveFields, useResolveFieldPath, useScope, useScopeSafe, useScopedFetch, useSearchParamToggle, useServerWidgetData, useSetupStatus, useShallow, useSidebarSearchParam, view, widget };
|
|
108
|
+
export { AcceptInviteForm, AcceptInvitePage, Admin, AdminLayout, AdminLayoutProvider, AdminLink, AdminProvider, type AdminProviderProps, AdminRouter, type AdminRouterProps, type AdminSidebarBrandProps, type AdminSidebarNavItemProps, type AdminState, type AdminStore, type AdminToPreviewMessage, AnyQuestpieClient, type AnyWidgetConfig, type AppAdmin, AuthDefaultLogo, AuthGuard, AuthLayout, type AuthLayoutProps, AuthLoading, Badge, type BadgeProps, type BaseFieldProps, type BaseWidgetAdminMeta, type BaseWidgetConfig, type BlockCategory, type BlockClickedMessage, type BlockContent, type BlockNode, BlockRenderer, type BlockRendererProps as BlockRendererComponentProps, type BlockRendererProps$1 as BlockRendererProps, type BlockScopeContextValue, BlockScopeProvider, type BlockScopeProviderProps, type BrandLogoConfig, BrandLogoMark, type BrandLogoMarkProps, type BrandSnapshot, type BrandingConfig, type ChartWidgetConfig, CollectionFieldKeys, type CollectionFormViewProps, CollectionItem, type CollectionListViewProps, CollectionNames, type CommitMessage, type ComponentRegistry, ComponentRenderer, type ComponentRendererProps, type ComponentRendererRegistry, type CustomWidgetConfig, DashboardPage, EMPTY_BLOCK_CONTENT, type FieldClickedMessage, type FieldComponentProps, type FieldDefinition, type FieldInstance, type FieldValueEditedMessage, type FlagConfig, type FocusContextValue, type FocusFieldMessage, FocusProvider, type FocusProviderProps, type FocusState, ForgotPasswordForm, ForgotPasswordPage, type FormViewConfig, type FormViewDefinition, type FullResyncMessage, type GlobalFormViewProps, GlobalNames, type I18nContext, type I18nText, type IconComponent, IconifyIcon, type IconifyIconProps, type InferAdminCMS, type InitSnapshotMessage, InvitePage, type ListViewDefinition, LoginForm, LoginPage, type MaybeLazyComponent, type OptionItem, type PageDefinition, type PatchAppliedMessage, type PatchBatchMessage, PreviewBanner, type PreviewBannerProps, type PreviewConfig, PreviewField, type PreviewFieldProps, type PreviewPatchOp, PreviewProvider, type PreviewReadyMessage, type PreviewRefreshMessage, type PreviewToAdminMessage, type ProgressWidgetConfig, type QuickActionsWidgetConfig, type ReactiveFieldResult, type ReactiveFieldState, type RecentItemsWidgetConfig, type RefreshCompleteMessage, ResetPasswordForm, ResetPasswordPage, type ResyncRequestMessage, RichTextEditor, type RichTextEditorProps, RichTextRenderer, type RichTextStyles, type ScopeContextValue, type ScopeOption, ScopePicker, type ScopePickerProps, ScopeProvider, type ScopeProviderProps, type SelectBlockMessage, SetupForm, type SetupFormValues, SetupPage, type SetupPageProps, type SetupStatus, StandalonePreviewField, type StatsWidgetConfig, type TableWidgetConfig, type TimelineWidgetConfig, type TipTapDoc, type TipTapNode, type TypedHooks, type UseCollectionPreviewOptions, type UseCollectionPreviewResult, type UseFieldOptionsOptions, type UseFieldOptionsResult, type UseReactiveFieldsOptions, type UseReactiveFieldsResult, type ValueWidgetConfig, type ViewDefinition, type ViewKind, type WidgetComponentProps, type WidgetConfig, type WidgetDefinition, type WidgetTypeRegistry, buildValidationSchema, buildZodFromIntrospection, configureField, createAdminAuthClient, createAdminClient, createFormSchema, createIconRenderer, createScopedFetch, createTypedHooks, field, getCountryCode, getFlagConfig, getFlagUrl, isAdminToPreviewMessage, isBlockContent, isComponentReference, isPreviewToAdminMessage, page, parsePreviewFieldPath, resolveIconElement, scrollFieldIntoView, selectAdmin, selectBasePath, selectClient, selectNavigate, useAdminStore, useAuthClient, useBlockScope, useBrand, useBrandSnapshotRef, useCollectionCreate, useCollectionDelete, useCollectionItem, useCollectionList, useCollectionPreview, useCollectionRestore, useCollectionRevertVersion, useCollectionUpdate, useCollectionVersions, useCurrentUser, useFieldOptions, useFocus, useFocusOptional, useGlobal, useGlobalRevertVersion, useGlobalUpdate, useGlobalVersions, useIsBlockFocused, useIsDesktop, useIsFieldFocused, useIsMobile, useMediaQuery, usePreviewContext, useReactiveFields, useResolveFieldPath, useScope, useScopeSafe, useScopedFetch, useSearchParamToggle, useServerWidgetData, useSetupStatus, useShallow, useSidebarSearchParam, view, widget };
|
package/dist/client.mjs
CHANGED
|
@@ -6,9 +6,9 @@ import { Badge, ComponentRenderer, IconifyIcon, createIconRenderer, isComponentR
|
|
|
6
6
|
import { configureField, field } from "./client/builder/field/field.mjs";
|
|
7
7
|
import { EMPTY_BLOCK_CONTENT, isBlockContent } from "./client/blocks/types.mjs";
|
|
8
8
|
import { getCountryCode, getFlagConfig, getFlagUrl } from "./client/utils/locale-to-flag.mjs";
|
|
9
|
+
import { FocusProvider, parsePreviewFieldPath, scrollFieldIntoView, useFocus, useFocusOptional, useIsBlockFocused, useIsFieldFocused } from "./client/contexts/focus-context.mjs";
|
|
9
10
|
import { useIsDesktop, useIsMobile, useMediaQuery } from "./client/hooks/use-media-query.mjs";
|
|
10
11
|
import { buildValidationSchema, buildZodFromIntrospection, createFormSchema } from "./client/builder/validation.mjs";
|
|
11
|
-
import { FocusProvider, parsePreviewFieldPath, scrollFieldIntoView, useFocus, useFocusOptional, useIsBlockFocused, useIsFieldFocused } from "./client/contexts/focus-context.mjs";
|
|
12
12
|
import { isAdminToPreviewMessage, isPreviewToAdminMessage } from "./client/preview/types.mjs";
|
|
13
13
|
import { useGlobal, useGlobalRevertVersion, useGlobalUpdate, useGlobalVersions } from "./client/hooks/use-global.mjs";
|
|
14
14
|
import { useSearchParamToggle } from "./client/hooks/use-search-param-toggle.mjs";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react_jsx_runtime19 from "react/jsx-runtime";
|
|
2
2
|
|
|
3
3
|
//#region src/components/rich-text/rich-text-renderer.d.ts
|
|
4
4
|
/**
|
|
@@ -98,6 +98,6 @@ declare function RichTextRenderer({
|
|
|
98
98
|
content,
|
|
99
99
|
styles: customStyles,
|
|
100
100
|
className
|
|
101
|
-
}: RichTextRendererProps):
|
|
101
|
+
}: RichTextRendererProps): react_jsx_runtime19.JSX.Element | null;
|
|
102
102
|
//#endregion
|
|
103
103
|
export { RichTextRenderer, RichTextStyles, TipTapDoc, TipTapNode };
|
package/dist/index.d.mts
CHANGED
|
@@ -26,7 +26,7 @@ import { RichTextEditor } from "./client/components/fields/rich-text-editor/inde
|
|
|
26
26
|
import { BlockScopeContextValue, BlockScopeProvider, BlockScopeProviderProps, useBlockScope, useResolveFieldPath } from "./client/preview/block-scope-context.mjs";
|
|
27
27
|
import { PreviewBanner, PreviewBannerProps } from "./client/preview/preview-banner.mjs";
|
|
28
28
|
import { PreviewField, PreviewFieldProps, PreviewProvider, StandalonePreviewField, usePreviewContext } from "./client/preview/preview-field.mjs";
|
|
29
|
-
import { AdminToPreviewMessage, BlockClickedMessage, FieldClickedMessage, FocusFieldMessage, PreviewConfig, PreviewReadyMessage, PreviewRefreshMessage, PreviewToAdminMessage, RefreshCompleteMessage, SelectBlockMessage, isAdminToPreviewMessage, isPreviewToAdminMessage } from "./client/preview/types.mjs";
|
|
29
|
+
import { AdminToPreviewMessage, BlockClickedMessage, CommitMessage, FieldClickedMessage, FieldValueEditedMessage, FocusFieldMessage, FullResyncMessage, InitSnapshotMessage, PatchAppliedMessage, PatchBatchMessage, PreviewConfig, PreviewPatchOp, PreviewReadyMessage, PreviewRefreshMessage, PreviewToAdminMessage, RefreshCompleteMessage, ResyncRequestMessage, SelectBlockMessage, isAdminToPreviewMessage, isPreviewToAdminMessage } from "./client/preview/types.mjs";
|
|
30
30
|
import { UseCollectionPreviewOptions, UseCollectionPreviewResult, useCollectionPreview } from "./client/preview/use-collection-preview.mjs";
|
|
31
31
|
import { AuthGuard } from "./client/components/auth/auth-guard.mjs";
|
|
32
32
|
import { AuthLoading } from "./client/components/auth/auth-loading.mjs";
|
|
@@ -65,4 +65,4 @@ import { ScopeContextValue, ScopeOption, ScopePickerProps, ScopeProviderProps }
|
|
|
65
65
|
import { ScopePicker } from "./client/scope/picker.mjs";
|
|
66
66
|
import { ScopeProvider, createScopedFetch, useScope, useScopeSafe, useScopedFetch } from "./client/scope/provider.mjs";
|
|
67
67
|
import { AnyQuestpieClient, CollectionFieldKeys, CollectionItem, CollectionNames, GlobalNames } from "./client.mjs";
|
|
68
|
-
export { AcceptInviteForm, AcceptInvitePage, Admin, AdminLayout, AdminLayoutProvider, AdminLink, AdminProvider, AdminProviderProps, AdminRouter, AdminRouterProps, AdminSidebarBrandProps, AdminSidebarNavItemProps, AdminState, AdminStore, AdminToPreviewMessage, type AnyAdminMeta, AnyQuestpieClient, AnyWidgetConfig, AppAdmin, type ArrayFieldAdminMeta, AuthDefaultLogo, AuthGuard, AuthLayout, AuthLayoutProps, AuthLoading, Badge, BadgeProps, type BaseAdminMeta, BaseFieldProps, BaseWidgetAdminMeta, BaseWidgetConfig, BlockCategory, BlockClickedMessage, BlockContent, BlockNode, BlockRenderer, BlockRendererProps as BlockRendererComponentProps, BlockRendererProps$1 as BlockRendererProps, BlockScopeContextValue, BlockScopeProvider, BlockScopeProviderProps, type BooleanFieldAdminMeta, BrandLogoConfig, BrandLogoMark, BrandLogoMarkProps, BrandSnapshot, BrandingConfig, ChartWidgetConfig, CollectionFieldKeys, CollectionFormViewProps, CollectionItem, CollectionListViewProps, CollectionNames, ComponentRegistry, ComponentRenderer, ComponentRendererProps, ComponentRendererRegistry, CustomWidgetConfig, DashboardPage, type DateFieldAdminMeta, EMPTY_BLOCK_CONTENT, FieldClickedMessage, FieldComponentProps, FieldDefinition, FieldInstance, FlagConfig, FocusContextValue, FocusFieldMessage, FocusProvider, FocusProviderProps, FocusState, ForgotPasswordForm, ForgotPasswordPage, FormViewConfig, FormViewDefinition, GlobalFormViewProps, GlobalNames, I18nContext, I18nText, IconComponent, IconifyIcon, IconifyIconProps, InferAdminCMS, InvitePage, type JsonFieldAdminMeta, ListViewDefinition, LoginForm, LoginPage, MaybeLazyComponent, type NumberFieldAdminMeta, type ObjectFieldAdminMeta, OptionItem, PageDefinition, PreviewBanner, PreviewBannerProps, PreviewConfig, PreviewField, PreviewFieldProps, PreviewProvider, PreviewReadyMessage, PreviewRefreshMessage, PreviewToAdminMessage, ProgressWidgetConfig, QuickActionsWidgetConfig, ReactiveFieldResult, ReactiveFieldState, RecentItemsWidgetConfig, RefreshCompleteMessage, type RelationFieldAdminMeta, ResetPasswordForm, ResetPasswordPage, RichTextEditor, RichTextEditorProps, RichTextRenderer, RichTextStyles, ScopeContextValue, ScopeOption, ScopePicker, ScopePickerProps, ScopeProvider, ScopeProviderProps, SelectBlockMessage, type SelectFieldAdminMeta, SetupForm, SetupFormValues, SetupPage, SetupPageProps, SetupStatus, StandalonePreviewField, StatsWidgetConfig, TableWidgetConfig, type TextFieldAdminMeta, type TextareaFieldAdminMeta, type TimeFieldAdminMeta, TimelineWidgetConfig, TipTapDoc, TipTapNode, TypedHooks, type UploadFieldAdminMeta, UseCollectionPreviewOptions, UseCollectionPreviewResult, UseFieldOptionsOptions, UseFieldOptionsResult, UseReactiveFieldsOptions, UseReactiveFieldsResult, ValueWidgetConfig, ViewDefinition, ViewKind, WidgetComponentProps, WidgetConfig, WidgetDefinition, WidgetTypeRegistry, buildValidationSchema, buildZodFromIntrospection, configureField, createAdminAuthClient, createAdminClient, createFormSchema, createIconRenderer, createScopedFetch, createTypedHooks, field, getCountryCode, getFlagConfig, getFlagUrl, isAdminToPreviewMessage, isBlockContent, isComponentReference, isPreviewToAdminMessage, page, parsePreviewFieldPath, resolveIconElement, scrollFieldIntoView, selectAdmin, selectBasePath, selectClient, selectNavigate, useAdminStore, useAuthClient, useBlockScope, useBrand, useBrandSnapshotRef, useCollectionCreate, useCollectionDelete, useCollectionItem, useCollectionList, useCollectionPreview, useCollectionRestore, useCollectionRevertVersion, useCollectionUpdate, useCollectionVersions, useCurrentUser, useFieldOptions, useFocus, useFocusOptional, useGlobal, useGlobalRevertVersion, useGlobalUpdate, useGlobalVersions, useIsBlockFocused, useIsDesktop, useIsFieldFocused, useIsMobile, useMediaQuery, usePreviewContext, useReactiveFields, useResolveFieldPath, useScope, useScopeSafe, useScopedFetch, useSearchParamToggle, useServerWidgetData, useSetupStatus, useShallow, useSidebarSearchParam, view, widget };
|
|
68
|
+
export { AcceptInviteForm, AcceptInvitePage, Admin, AdminLayout, AdminLayoutProvider, AdminLink, AdminProvider, AdminProviderProps, AdminRouter, AdminRouterProps, AdminSidebarBrandProps, AdminSidebarNavItemProps, AdminState, AdminStore, AdminToPreviewMessage, type AnyAdminMeta, AnyQuestpieClient, AnyWidgetConfig, AppAdmin, type ArrayFieldAdminMeta, AuthDefaultLogo, AuthGuard, AuthLayout, AuthLayoutProps, AuthLoading, Badge, BadgeProps, type BaseAdminMeta, BaseFieldProps, BaseWidgetAdminMeta, BaseWidgetConfig, BlockCategory, BlockClickedMessage, BlockContent, BlockNode, BlockRenderer, BlockRendererProps as BlockRendererComponentProps, BlockRendererProps$1 as BlockRendererProps, BlockScopeContextValue, BlockScopeProvider, BlockScopeProviderProps, type BooleanFieldAdminMeta, BrandLogoConfig, BrandLogoMark, BrandLogoMarkProps, BrandSnapshot, BrandingConfig, ChartWidgetConfig, CollectionFieldKeys, CollectionFormViewProps, CollectionItem, CollectionListViewProps, CollectionNames, CommitMessage, ComponentRegistry, ComponentRenderer, ComponentRendererProps, ComponentRendererRegistry, CustomWidgetConfig, DashboardPage, type DateFieldAdminMeta, EMPTY_BLOCK_CONTENT, FieldClickedMessage, FieldComponentProps, FieldDefinition, FieldInstance, FieldValueEditedMessage, FlagConfig, FocusContextValue, FocusFieldMessage, FocusProvider, FocusProviderProps, FocusState, ForgotPasswordForm, ForgotPasswordPage, FormViewConfig, FormViewDefinition, FullResyncMessage, GlobalFormViewProps, GlobalNames, I18nContext, I18nText, IconComponent, IconifyIcon, IconifyIconProps, InferAdminCMS, InitSnapshotMessage, InvitePage, type JsonFieldAdminMeta, ListViewDefinition, LoginForm, LoginPage, MaybeLazyComponent, type NumberFieldAdminMeta, type ObjectFieldAdminMeta, OptionItem, PageDefinition, PatchAppliedMessage, PatchBatchMessage, PreviewBanner, PreviewBannerProps, PreviewConfig, PreviewField, PreviewFieldProps, PreviewPatchOp, PreviewProvider, PreviewReadyMessage, PreviewRefreshMessage, PreviewToAdminMessage, ProgressWidgetConfig, QuickActionsWidgetConfig, ReactiveFieldResult, ReactiveFieldState, RecentItemsWidgetConfig, RefreshCompleteMessage, type RelationFieldAdminMeta, ResetPasswordForm, ResetPasswordPage, ResyncRequestMessage, RichTextEditor, RichTextEditorProps, RichTextRenderer, RichTextStyles, ScopeContextValue, ScopeOption, ScopePicker, ScopePickerProps, ScopeProvider, ScopeProviderProps, SelectBlockMessage, type SelectFieldAdminMeta, SetupForm, SetupFormValues, SetupPage, SetupPageProps, SetupStatus, StandalonePreviewField, StatsWidgetConfig, TableWidgetConfig, type TextFieldAdminMeta, type TextareaFieldAdminMeta, type TimeFieldAdminMeta, TimelineWidgetConfig, TipTapDoc, TipTapNode, TypedHooks, type UploadFieldAdminMeta, UseCollectionPreviewOptions, UseCollectionPreviewResult, UseFieldOptionsOptions, UseFieldOptionsResult, UseReactiveFieldsOptions, UseReactiveFieldsResult, ValueWidgetConfig, ViewDefinition, ViewKind, WidgetComponentProps, WidgetConfig, WidgetDefinition, WidgetTypeRegistry, buildValidationSchema, buildZodFromIntrospection, configureField, createAdminAuthClient, createAdminClient, createFormSchema, createIconRenderer, createScopedFetch, createTypedHooks, field, getCountryCode, getFlagConfig, getFlagUrl, isAdminToPreviewMessage, isBlockContent, isComponentReference, isPreviewToAdminMessage, page, parsePreviewFieldPath, resolveIconElement, scrollFieldIntoView, selectAdmin, selectBasePath, selectClient, selectNavigate, useAdminStore, useAuthClient, useBlockScope, useBrand, useBrandSnapshotRef, useCollectionCreate, useCollectionDelete, useCollectionItem, useCollectionList, useCollectionPreview, useCollectionRestore, useCollectionRevertVersion, useCollectionUpdate, useCollectionVersions, useCurrentUser, useFieldOptions, useFocus, useFocusOptional, useGlobal, useGlobalRevertVersion, useGlobalUpdate, useGlobalVersions, useIsBlockFocused, useIsDesktop, useIsFieldFocused, useIsMobile, useMediaQuery, usePreviewContext, useReactiveFields, useResolveFieldPath, useScope, useScopeSafe, useScopedFetch, useSearchParamToggle, useServerWidgetData, useSetupStatus, useShallow, useSidebarSearchParam, view, widget };
|
package/dist/index.mjs
CHANGED
|
@@ -6,9 +6,9 @@ import { Badge, ComponentRenderer, IconifyIcon, createIconRenderer, isComponentR
|
|
|
6
6
|
import { configureField, field } from "./client/builder/field/field.mjs";
|
|
7
7
|
import { EMPTY_BLOCK_CONTENT, isBlockContent } from "./client/blocks/types.mjs";
|
|
8
8
|
import { getCountryCode, getFlagConfig, getFlagUrl } from "./client/utils/locale-to-flag.mjs";
|
|
9
|
+
import { FocusProvider, parsePreviewFieldPath, scrollFieldIntoView, useFocus, useFocusOptional, useIsBlockFocused, useIsFieldFocused } from "./client/contexts/focus-context.mjs";
|
|
9
10
|
import { useIsDesktop, useIsMobile, useMediaQuery } from "./client/hooks/use-media-query.mjs";
|
|
10
11
|
import { buildValidationSchema, buildZodFromIntrospection, createFormSchema } from "./client/builder/validation.mjs";
|
|
11
|
-
import { FocusProvider, parsePreviewFieldPath, scrollFieldIntoView, useFocus, useFocusOptional, useIsBlockFocused, useIsFieldFocused } from "./client/contexts/focus-context.mjs";
|
|
12
12
|
import { isAdminToPreviewMessage, isPreviewToAdminMessage } from "./client/preview/types.mjs";
|
|
13
13
|
import { useGlobal, useGlobalRevertVersion, useGlobalUpdate, useGlobalVersions } from "./client/hooks/use-global.mjs";
|
|
14
14
|
import { useSearchParamToggle } from "./client/hooks/use-search-param-toggle.mjs";
|
|
@@ -11,10 +11,14 @@
|
|
|
11
11
|
*
|
|
12
12
|
* @example
|
|
13
13
|
* ```ts
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
14
|
+
* import { adminConfig } from "#questpie/factories";
|
|
15
|
+
*
|
|
16
|
+
* export default adminConfig({
|
|
17
|
+
* locale: {
|
|
18
|
+
* locales: ["en", "sk"], // UI available in 2 languages
|
|
19
|
+
* defaultLocale: "en",
|
|
20
|
+
* },
|
|
21
|
+
* });
|
|
18
22
|
* ```
|
|
19
23
|
*/
|
|
20
24
|
interface AdminLocaleConfig {
|
|
@@ -22,7 +22,7 @@ interface AdminCollectionConfig {
|
|
|
22
22
|
order?: number;
|
|
23
23
|
/**
|
|
24
24
|
* Whether this collection should be included in audit logging.
|
|
25
|
-
* Requires
|
|
25
|
+
* Requires `auditModule` to be registered in `questpie/server/modules.ts`.
|
|
26
26
|
*
|
|
27
27
|
* - `true` or `undefined` (default): audited when audit module is active
|
|
28
28
|
* - `false`: never audited, even when audit module is active
|
|
@@ -368,7 +368,11 @@ var cs_default = {
|
|
|
368
368
|
"defaults.users.fields.name.placeholder": "Zadejte jméno uživatele",
|
|
369
369
|
"defaults.users.fields.email.label": "E-mail",
|
|
370
370
|
"defaults.users.fields.email.description": "E-mailová adresa (jen pro čtení)",
|
|
371
|
+
"defaults.users.fields.image.label": "URL obrázku",
|
|
372
|
+
"defaults.users.fields.avatar.label": "Profilová fotka",
|
|
371
373
|
"defaults.users.fields.role.label": "Role",
|
|
374
|
+
"defaults.users.fields.role.description": "Administrátoři mohou spravovat celou administraci; uživatelé mají omezený přístup.",
|
|
375
|
+
"defaults.users.fields.role.placeholder": "Vyberte roli",
|
|
372
376
|
"defaults.users.fields.role.options.admin": "Administrátor",
|
|
373
377
|
"defaults.users.fields.role.options.user": "Uživatel",
|
|
374
378
|
"defaults.users.fields.emailVerified.label": "E-mail ověřen",
|
|
@@ -377,6 +381,8 @@ var cs_default = {
|
|
|
377
381
|
"defaults.users.fields.banned.description": "Zabránit uživateli přístup do systému",
|
|
378
382
|
"defaults.users.fields.banReason.label": "Důvod blokace",
|
|
379
383
|
"defaults.users.fields.banReason.placeholder": "Zadejte důvod blokace...",
|
|
384
|
+
"defaults.users.fields.banExpires.label": "Konec blokace",
|
|
385
|
+
"defaults.users.fields.banExpires.description": "Kdy má blokace uživatele vypršet",
|
|
380
386
|
"defaults.users.sections.basicInfo": "Základní informace",
|
|
381
387
|
"defaults.users.sections.permissions": "Oprávnění",
|
|
382
388
|
"defaults.users.sections.accessControl": "Řízení přístupu",
|
|
@@ -408,11 +414,16 @@ var cs_default = {
|
|
|
408
414
|
"defaults.assets.fields.mimeType.description": "MIME typ souboru",
|
|
409
415
|
"defaults.assets.fields.size.label": "Velikost (bajty)",
|
|
410
416
|
"defaults.assets.fields.size.description": "Velikost souboru v bajtech",
|
|
417
|
+
"defaults.assets.fields.width.label": "Šířka",
|
|
418
|
+
"defaults.assets.fields.width.description": "Šířka obrázku v pixelech",
|
|
419
|
+
"defaults.assets.fields.height.label": "Výška",
|
|
420
|
+
"defaults.assets.fields.height.description": "Výška obrázku v pixelech",
|
|
411
421
|
"defaults.assets.fields.alt.label": "Alternativní text",
|
|
412
422
|
"defaults.assets.fields.alt.placeholder": "Popište obrázek pro přístupnost",
|
|
413
423
|
"defaults.assets.fields.alt.description": "Alternativní text pro čtečky obrazovky",
|
|
414
424
|
"defaults.assets.fields.caption.label": "Popisek",
|
|
415
425
|
"defaults.assets.fields.caption.placeholder": "Přidejte popisek...",
|
|
426
|
+
"defaults.assets.fields.caption.description": "Volitelný popisek zobrazený u média",
|
|
416
427
|
"defaults.assets.fields.visibility.label": "Viditelnost",
|
|
417
428
|
"defaults.assets.fields.visibility.options.public": "Veřejné",
|
|
418
429
|
"defaults.assets.fields.visibility.options.private": "Soukromé",
|
|
@@ -366,7 +366,11 @@ var de_default = {
|
|
|
366
366
|
"defaults.users.fields.name.placeholder": "Benutzernamen eingeben",
|
|
367
367
|
"defaults.users.fields.email.label": "E-Mail",
|
|
368
368
|
"defaults.users.fields.email.description": "E-Mail-Adresse (schreibgeschützt)",
|
|
369
|
+
"defaults.users.fields.image.label": "Bild-URL",
|
|
370
|
+
"defaults.users.fields.avatar.label": "Profilfoto",
|
|
369
371
|
"defaults.users.fields.role.label": "Rolle",
|
|
372
|
+
"defaults.users.fields.role.description": "Administratoren können den gesamten Admin-Bereich verwalten; Benutzer haben eingeschränkten Zugriff.",
|
|
373
|
+
"defaults.users.fields.role.placeholder": "Rolle auswählen",
|
|
370
374
|
"defaults.users.fields.role.options.admin": "Administrator",
|
|
371
375
|
"defaults.users.fields.role.options.user": "Benutzer",
|
|
372
376
|
"defaults.users.fields.emailVerified.label": "E-Mail verifiziert",
|
|
@@ -375,6 +379,8 @@ var de_default = {
|
|
|
375
379
|
"defaults.users.fields.banned.description": "Benutzer den Zugriff auf das System verweigern",
|
|
376
380
|
"defaults.users.fields.banReason.label": "Sperrgrund",
|
|
377
381
|
"defaults.users.fields.banReason.placeholder": "Grund für die Sperre eingeben...",
|
|
382
|
+
"defaults.users.fields.banExpires.label": "Sperre läuft ab",
|
|
383
|
+
"defaults.users.fields.banExpires.description": "Wann die Sperre des Benutzers ablaufen soll",
|
|
378
384
|
"defaults.users.sections.basicInfo": "Grundinformationen",
|
|
379
385
|
"defaults.users.sections.permissions": "Berechtigungen",
|
|
380
386
|
"defaults.users.sections.accessControl": "Zugriffskontrolle",
|
|
@@ -406,11 +412,16 @@ var de_default = {
|
|
|
406
412
|
"defaults.assets.fields.mimeType.description": "MIME-Typ der Datei",
|
|
407
413
|
"defaults.assets.fields.size.label": "Größe (Bytes)",
|
|
408
414
|
"defaults.assets.fields.size.description": "Dateigröße in Bytes",
|
|
415
|
+
"defaults.assets.fields.width.label": "Breite",
|
|
416
|
+
"defaults.assets.fields.width.description": "Bildbreite in Pixeln",
|
|
417
|
+
"defaults.assets.fields.height.label": "Höhe",
|
|
418
|
+
"defaults.assets.fields.height.description": "Bildhöhe in Pixeln",
|
|
409
419
|
"defaults.assets.fields.alt.label": "Alternativtext",
|
|
410
420
|
"defaults.assets.fields.alt.placeholder": "Bild für Barrierefreiheit beschreiben",
|
|
411
421
|
"defaults.assets.fields.alt.description": "Alternativtext für Screenreader",
|
|
412
422
|
"defaults.assets.fields.caption.label": "Untertitel",
|
|
413
423
|
"defaults.assets.fields.caption.placeholder": "Untertitel hinzufügen...",
|
|
424
|
+
"defaults.assets.fields.caption.description": "Optionale Beschriftung, die mit dem Medium angezeigt wird",
|
|
414
425
|
"defaults.assets.fields.visibility.label": "Sichtbarkeit",
|
|
415
426
|
"defaults.assets.fields.visibility.options.public": "Öffentlich",
|
|
416
427
|
"defaults.assets.fields.visibility.options.private": "Privat",
|
|
@@ -552,7 +552,11 @@ var en_default = {
|
|
|
552
552
|
"defaults.users.fields.name.placeholder": "Enter user name",
|
|
553
553
|
"defaults.users.fields.email.label": "Email",
|
|
554
554
|
"defaults.users.fields.email.description": "Email address (read-only)",
|
|
555
|
+
"defaults.users.fields.image.label": "Image URL",
|
|
556
|
+
"defaults.users.fields.avatar.label": "Profile photo",
|
|
555
557
|
"defaults.users.fields.role.label": "Role",
|
|
558
|
+
"defaults.users.fields.role.description": "Admins can manage the whole admin area; users have limited access.",
|
|
559
|
+
"defaults.users.fields.role.placeholder": "Select a role",
|
|
556
560
|
"defaults.users.fields.role.options.admin": "Admin",
|
|
557
561
|
"defaults.users.fields.role.options.user": "User",
|
|
558
562
|
"defaults.users.fields.emailVerified.label": "Email Verified",
|
|
@@ -561,6 +565,8 @@ var en_default = {
|
|
|
561
565
|
"defaults.users.fields.banned.description": "Prevent user from accessing the system",
|
|
562
566
|
"defaults.users.fields.banReason.label": "Ban Reason",
|
|
563
567
|
"defaults.users.fields.banReason.placeholder": "Enter reason for banning...",
|
|
568
|
+
"defaults.users.fields.banExpires.label": "Ban Expires",
|
|
569
|
+
"defaults.users.fields.banExpires.description": "When the user's ban should expire",
|
|
564
570
|
"defaults.users.sections.basicInfo": "Basic Information",
|
|
565
571
|
"defaults.users.sections.permissions": "Permissions",
|
|
566
572
|
"defaults.users.sections.accessControl": "Access Control",
|
|
@@ -594,11 +600,16 @@ var en_default = {
|
|
|
594
600
|
"defaults.assets.fields.mimeType.description": "MIME type of the file",
|
|
595
601
|
"defaults.assets.fields.size.label": "Size (bytes)",
|
|
596
602
|
"defaults.assets.fields.size.description": "File size in bytes",
|
|
603
|
+
"defaults.assets.fields.width.label": "Width",
|
|
604
|
+
"defaults.assets.fields.width.description": "Image width in pixels",
|
|
605
|
+
"defaults.assets.fields.height.label": "Height",
|
|
606
|
+
"defaults.assets.fields.height.description": "Image height in pixels",
|
|
597
607
|
"defaults.assets.fields.alt.label": "Alt Text",
|
|
598
608
|
"defaults.assets.fields.alt.placeholder": "Describe the image for accessibility",
|
|
599
609
|
"defaults.assets.fields.alt.description": "Alternative text for screen readers",
|
|
600
610
|
"defaults.assets.fields.caption.label": "Caption",
|
|
601
611
|
"defaults.assets.fields.caption.placeholder": "Add a caption...",
|
|
612
|
+
"defaults.assets.fields.caption.description": "Optional caption shown with the asset",
|
|
602
613
|
"defaults.assets.fields.visibility.label": "Visibility",
|
|
603
614
|
"defaults.assets.fields.visibility.options.public": "Public",
|
|
604
615
|
"defaults.assets.fields.visibility.options.private": "Private",
|
|
@@ -366,7 +366,11 @@ var es_default = {
|
|
|
366
366
|
"defaults.users.fields.name.placeholder": "Ingrese nombre de usuario",
|
|
367
367
|
"defaults.users.fields.email.label": "Correo electrónico",
|
|
368
368
|
"defaults.users.fields.email.description": "Dirección de correo (solo lectura)",
|
|
369
|
+
"defaults.users.fields.image.label": "URL de imagen",
|
|
370
|
+
"defaults.users.fields.avatar.label": "Foto de perfil",
|
|
369
371
|
"defaults.users.fields.role.label": "Rol",
|
|
372
|
+
"defaults.users.fields.role.description": "Los administradores pueden gestionar toda el área de administración; los usuarios tienen acceso limitado.",
|
|
373
|
+
"defaults.users.fields.role.placeholder": "Seleccionar un rol",
|
|
370
374
|
"defaults.users.fields.role.options.admin": "Administrador",
|
|
371
375
|
"defaults.users.fields.role.options.user": "Usuario",
|
|
372
376
|
"defaults.users.fields.emailVerified.label": "Correo verificado",
|
|
@@ -375,6 +379,8 @@ var es_default = {
|
|
|
375
379
|
"defaults.users.fields.banned.description": "Evitar que el usuario acceda al sistema",
|
|
376
380
|
"defaults.users.fields.banReason.label": "Motivo de bloqueo",
|
|
377
381
|
"defaults.users.fields.banReason.placeholder": "Ingrese motivo del bloqueo...",
|
|
382
|
+
"defaults.users.fields.banExpires.label": "Fin del bloqueo",
|
|
383
|
+
"defaults.users.fields.banExpires.description": "Cuándo debe expirar el bloqueo del usuario",
|
|
378
384
|
"defaults.users.sections.basicInfo": "Información básica",
|
|
379
385
|
"defaults.users.sections.permissions": "Permisos",
|
|
380
386
|
"defaults.users.sections.accessControl": "Control de acceso",
|
|
@@ -406,11 +412,16 @@ var es_default = {
|
|
|
406
412
|
"defaults.assets.fields.mimeType.description": "Tipo MIME del archivo",
|
|
407
413
|
"defaults.assets.fields.size.label": "Tamaño (bytes)",
|
|
408
414
|
"defaults.assets.fields.size.description": "Tamaño del archivo en bytes",
|
|
415
|
+
"defaults.assets.fields.width.label": "Ancho",
|
|
416
|
+
"defaults.assets.fields.width.description": "Ancho de la imagen en píxeles",
|
|
417
|
+
"defaults.assets.fields.height.label": "Alto",
|
|
418
|
+
"defaults.assets.fields.height.description": "Alto de la imagen en píxeles",
|
|
409
419
|
"defaults.assets.fields.alt.label": "Texto alternativo",
|
|
410
420
|
"defaults.assets.fields.alt.placeholder": "Describa la imagen para accesibilidad",
|
|
411
421
|
"defaults.assets.fields.alt.description": "Texto alternativo para lectores de pantalla",
|
|
412
422
|
"defaults.assets.fields.caption.label": "Leyenda",
|
|
413
423
|
"defaults.assets.fields.caption.placeholder": "Añadir una leyenda...",
|
|
424
|
+
"defaults.assets.fields.caption.description": "Leyenda opcional mostrada con el medio",
|
|
414
425
|
"defaults.assets.fields.visibility.label": "Visibilidad",
|
|
415
426
|
"defaults.assets.fields.visibility.options.public": "Público",
|
|
416
427
|
"defaults.assets.fields.visibility.options.private": "Privado",
|
|
@@ -366,7 +366,11 @@ var fr_default = {
|
|
|
366
366
|
"defaults.users.fields.name.placeholder": "Entrez le nom de l'utilisateur",
|
|
367
367
|
"defaults.users.fields.email.label": "E-mail",
|
|
368
368
|
"defaults.users.fields.email.description": "Adresse e-mail (lecture seule)",
|
|
369
|
+
"defaults.users.fields.image.label": "URL de l'image",
|
|
370
|
+
"defaults.users.fields.avatar.label": "Photo de profil",
|
|
369
371
|
"defaults.users.fields.role.label": "Rôle",
|
|
372
|
+
"defaults.users.fields.role.description": "Les administrateurs peuvent gérer toute l'administration ; les utilisateurs ont un accès limité.",
|
|
373
|
+
"defaults.users.fields.role.placeholder": "Sélectionner un rôle",
|
|
370
374
|
"defaults.users.fields.role.options.admin": "Administrateur",
|
|
371
375
|
"defaults.users.fields.role.options.user": "Utilisateur",
|
|
372
376
|
"defaults.users.fields.emailVerified.label": "E-mail vérifié",
|
|
@@ -375,6 +379,8 @@ var fr_default = {
|
|
|
375
379
|
"defaults.users.fields.banned.description": "Empêcher l'utilisateur d'accéder au système",
|
|
376
380
|
"defaults.users.fields.banReason.label": "Raison du bannissement",
|
|
377
381
|
"defaults.users.fields.banReason.placeholder": "Entrez la raison du bannissement...",
|
|
382
|
+
"defaults.users.fields.banExpires.label": "Fin du bannissement",
|
|
383
|
+
"defaults.users.fields.banExpires.description": "Quand le bannissement de l'utilisateur doit expirer",
|
|
378
384
|
"defaults.users.sections.basicInfo": "Informations de base",
|
|
379
385
|
"defaults.users.sections.permissions": "Permissions",
|
|
380
386
|
"defaults.users.sections.accessControl": "Contrôle d'accès",
|
|
@@ -406,11 +412,16 @@ var fr_default = {
|
|
|
406
412
|
"defaults.assets.fields.mimeType.description": "Type MIME du fichier",
|
|
407
413
|
"defaults.assets.fields.size.label": "Taille (octets)",
|
|
408
414
|
"defaults.assets.fields.size.description": "Taille du fichier en octets",
|
|
415
|
+
"defaults.assets.fields.width.label": "Largeur",
|
|
416
|
+
"defaults.assets.fields.width.description": "Largeur de l'image en pixels",
|
|
417
|
+
"defaults.assets.fields.height.label": "Hauteur",
|
|
418
|
+
"defaults.assets.fields.height.description": "Hauteur de l'image en pixels",
|
|
409
419
|
"defaults.assets.fields.alt.label": "Texte alternatif",
|
|
410
420
|
"defaults.assets.fields.alt.placeholder": "Décrivez l'image pour l'accessibilité",
|
|
411
421
|
"defaults.assets.fields.alt.description": "Texte alternatif pour les lecteurs d'écran",
|
|
412
422
|
"defaults.assets.fields.caption.label": "Légende",
|
|
413
423
|
"defaults.assets.fields.caption.placeholder": "Ajouter une légende...",
|
|
424
|
+
"defaults.assets.fields.caption.description": "Légende facultative affichée avec le média",
|
|
414
425
|
"defaults.assets.fields.visibility.label": "Visibilité",
|
|
415
426
|
"defaults.assets.fields.visibility.options.public": "Public",
|
|
416
427
|
"defaults.assets.fields.visibility.options.private": "Privé",
|
|
@@ -370,7 +370,11 @@ var pl_default = {
|
|
|
370
370
|
"defaults.users.fields.name.placeholder": "Wprowadź imię użytkownika",
|
|
371
371
|
"defaults.users.fields.email.label": "E-mail",
|
|
372
372
|
"defaults.users.fields.email.description": "Adres e-mail (tylko do odczytu)",
|
|
373
|
+
"defaults.users.fields.image.label": "URL obrazu",
|
|
374
|
+
"defaults.users.fields.avatar.label": "Zdjęcie profilowe",
|
|
373
375
|
"defaults.users.fields.role.label": "Rola",
|
|
376
|
+
"defaults.users.fields.role.description": "Administratorzy mogą zarządzać całym panelem administracyjnym; użytkownicy mają ograniczony dostęp.",
|
|
377
|
+
"defaults.users.fields.role.placeholder": "Wybierz rolę",
|
|
374
378
|
"defaults.users.fields.role.options.admin": "Administrator",
|
|
375
379
|
"defaults.users.fields.role.options.user": "Użytkownik",
|
|
376
380
|
"defaults.users.fields.emailVerified.label": "E-mail zweryfikowany",
|
|
@@ -379,6 +383,8 @@ var pl_default = {
|
|
|
379
383
|
"defaults.users.fields.banned.description": "Zablokuj użytkownikowi dostęp do systemu",
|
|
380
384
|
"defaults.users.fields.banReason.label": "Powód blokady",
|
|
381
385
|
"defaults.users.fields.banReason.placeholder": "Wprowadź powód blokady...",
|
|
386
|
+
"defaults.users.fields.banExpires.label": "Koniec blokady",
|
|
387
|
+
"defaults.users.fields.banExpires.description": "Kiedy blokada użytkownika ma wygasnąć",
|
|
382
388
|
"defaults.users.sections.basicInfo": "Podstawowe informacje",
|
|
383
389
|
"defaults.users.sections.permissions": "Uprawnienia",
|
|
384
390
|
"defaults.users.sections.accessControl": "Kontrola dostępu",
|
|
@@ -410,11 +416,16 @@ var pl_default = {
|
|
|
410
416
|
"defaults.assets.fields.mimeType.description": "Typ MIME pliku",
|
|
411
417
|
"defaults.assets.fields.size.label": "Rozmiar (bajty)",
|
|
412
418
|
"defaults.assets.fields.size.description": "Rozmiar pliku w bajtach",
|
|
419
|
+
"defaults.assets.fields.width.label": "Szerokość",
|
|
420
|
+
"defaults.assets.fields.width.description": "Szerokość obrazu w pikselach",
|
|
421
|
+
"defaults.assets.fields.height.label": "Wysokość",
|
|
422
|
+
"defaults.assets.fields.height.description": "Wysokość obrazu w pikselach",
|
|
413
423
|
"defaults.assets.fields.alt.label": "Tekst alternatywny",
|
|
414
424
|
"defaults.assets.fields.alt.placeholder": "Opisz obraz dla ułatwienia dostępu",
|
|
415
425
|
"defaults.assets.fields.alt.description": "Tekst alternatywny dla czytników ekranu",
|
|
416
426
|
"defaults.assets.fields.caption.label": "Podpis",
|
|
417
427
|
"defaults.assets.fields.caption.placeholder": "Dodaj podpis...",
|
|
428
|
+
"defaults.assets.fields.caption.description": "Opcjonalny podpis wyświetlany przy medium",
|
|
418
429
|
"defaults.assets.fields.visibility.label": "Widoczność",
|
|
419
430
|
"defaults.assets.fields.visibility.options.public": "Publiczne",
|
|
420
431
|
"defaults.assets.fields.visibility.options.private": "Prywatne",
|