gavaengine 2.3.0 → 2.4.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/{DashboardSplashTrigger-Bz4Z4edN.d.ts → DashboardSplashTrigger-M23R6617.d.ts} +21 -4
- package/dist/auth/index.js +4 -2
- package/dist/{chunk-3ZYJ4C6R.js → chunk-AMARPSPH.js} +2 -2
- package/dist/{chunk-QO42DDRU.js → chunk-IU2SMMVV.js} +1 -40
- package/dist/chunk-IU2SMMVV.js.map +1 -0
- package/dist/chunk-IYUHCOF5.js +44 -0
- package/dist/chunk-IYUHCOF5.js.map +1 -0
- package/dist/{chunk-PHT76VW6.js → chunk-MANXBV2D.js} +117 -4
- package/dist/chunk-MANXBV2D.js.map +1 -0
- package/dist/{chunk-XUWBLDOW.js → chunk-WPVUAMRJ.js} +173 -102
- package/dist/chunk-WPVUAMRJ.js.map +1 -0
- package/dist/components/index.d.ts +4 -4
- package/dist/components/index.js +6 -3
- package/dist/handlers/index.d.ts +60 -0
- package/dist/handlers/index.js +116 -3
- package/dist/handlers/index.js.map +1 -1
- package/dist/i18n/index.d.ts +37 -0
- package/dist/i18n/index.js +76 -2
- package/dist/i18n/index.js.map +1 -1
- package/dist/{index-ByyETmJM.d.ts → index-C4AHVM5-.d.ts} +82 -1
- package/dist/index.d.ts +6 -6
- package/dist/index.js +10 -6
- package/dist/index.js.map +1 -1
- package/dist/providers/index.d.ts +3 -2
- package/dist/providers/index.js +2 -2
- package/dist/{registry-Do5nzO7_.d.ts → registry-kAqFTg2C.d.ts} +17 -1
- package/package.json +1 -1
- package/dist/chunk-PHT76VW6.js.map +0 -1
- package/dist/chunk-QO42DDRU.js.map +0 -1
- package/dist/chunk-XUWBLDOW.js.map +0 -1
- /package/dist/{chunk-3ZYJ4C6R.js.map → chunk-AMARPSPH.js.map} +0 -0
|
@@ -3,7 +3,8 @@ import { Editor, NodeViewProps } from '@tiptap/react';
|
|
|
3
3
|
import * as _tiptap_core from '@tiptap/core';
|
|
4
4
|
import { Node } from '@tiptap/core';
|
|
5
5
|
import * as _tiptap_extension_youtube from '@tiptap/extension-youtube';
|
|
6
|
-
import {
|
|
6
|
+
import { n as GEMedia, o as GENavItem } from './registry-kAqFTg2C.js';
|
|
7
|
+
import { ReactNode } from 'react';
|
|
7
8
|
import { LucideIcon } from 'lucide-react';
|
|
8
9
|
|
|
9
10
|
interface ArticleData {
|
|
@@ -137,13 +138,29 @@ interface MediaPickerModalProps {
|
|
|
137
138
|
}
|
|
138
139
|
declare function MediaPickerModal({ open, onClose, onSelect, }: MediaPickerModalProps): react_jsx_runtime.JSX.Element | null;
|
|
139
140
|
|
|
140
|
-
|
|
141
|
+
interface DashboardNavbarProps {
|
|
142
|
+
navigation?: GENavItem[];
|
|
143
|
+
className?: string;
|
|
144
|
+
renderLogo?: () => ReactNode;
|
|
145
|
+
renderUser?: (user: {
|
|
146
|
+
name?: string | null;
|
|
147
|
+
role?: string;
|
|
148
|
+
}) => ReactNode;
|
|
149
|
+
}
|
|
150
|
+
declare function useDefaultNavigation(): GENavItem[];
|
|
151
|
+
declare function DashboardNavbar({ navigation: navProp, className, renderLogo, renderUser, }?: DashboardNavbarProps): react_jsx_runtime.JSX.Element;
|
|
141
152
|
|
|
153
|
+
interface CustomAccent {
|
|
154
|
+
border: string;
|
|
155
|
+
bg: string;
|
|
156
|
+
text: string;
|
|
157
|
+
}
|
|
158
|
+
type AccentPreset = "blue" | "green" | "purple" | "amber" | "red" | "pink" | "teal";
|
|
142
159
|
interface StatCardProps {
|
|
143
160
|
label: string;
|
|
144
161
|
value: number | string;
|
|
145
162
|
icon: LucideIcon;
|
|
146
|
-
accent?:
|
|
163
|
+
accent?: AccentPreset | CustomAccent;
|
|
147
164
|
}
|
|
148
165
|
declare function StatCard({ label, value, icon: Icon, accent, }: StatCardProps): react_jsx_runtime.JSX.Element;
|
|
149
166
|
|
|
@@ -151,4 +168,4 @@ declare function SplashScreen(): react_jsx_runtime.JSX.Element | null;
|
|
|
151
168
|
|
|
152
169
|
declare function DashboardSplashTrigger(): null;
|
|
153
170
|
|
|
154
|
-
export { ArticleEditor as A, CoverImageUpload as C, DashboardNavbar as D, EditorToolbar as E, ImageEditModal as I, MediaGrid as M, ResizableImage as R, SplashScreen as S, UserForm as U, VideoExtension as V, ArticleList as a,
|
|
171
|
+
export { ArticleEditor as A, CoverImageUpload as C, DashboardNavbar as D, EditorToolbar as E, ImageEditModal as I, MediaGrid as M, ResizableImage as R, SplashScreen as S, UserForm as U, VideoExtension as V, ArticleList as a, type DashboardNavbarProps as b, DashboardSplashTrigger as c, DraggableYoutube as d, DraggableYoutubeView as e, MediaPickerModal as f, ResizableImageView as g, RevisionPanel as h, StatCard as i, UserTable as j, VideoView as k, useDefaultNavigation as u };
|
package/dist/auth/index.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
"use client";
|
|
2
|
+
import {
|
|
3
|
+
createNextAuthAdapter
|
|
4
|
+
} from "../chunk-IYUHCOF5.js";
|
|
2
5
|
import {
|
|
3
6
|
AuthProvider,
|
|
4
|
-
createNextAuthAdapter,
|
|
5
7
|
useGavaAuth
|
|
6
|
-
} from "../chunk-
|
|
8
|
+
} from "../chunk-IU2SMMVV.js";
|
|
7
9
|
export {
|
|
8
10
|
AuthProvider,
|
|
9
11
|
createNextAuthAdapter,
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
ComponentRegistryProvider,
|
|
5
5
|
ConfigProvider,
|
|
6
6
|
SplashProvider
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-MANXBV2D.js";
|
|
8
8
|
|
|
9
9
|
// src/providers/GavaEngineProvider.tsx
|
|
10
10
|
import { useRouter } from "next/navigation";
|
|
@@ -65,4 +65,4 @@ export {
|
|
|
65
65
|
GavaEngineProvider,
|
|
66
66
|
ThemeToggle
|
|
67
67
|
};
|
|
68
|
-
//# sourceMappingURL=chunk-
|
|
68
|
+
//# sourceMappingURL=chunk-AMARPSPH.js.map
|
|
@@ -1,43 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
// src/auth/next-auth-adapter.ts
|
|
4
|
-
function createNextAuthAdapter({
|
|
5
|
-
auth,
|
|
6
|
-
signIn,
|
|
7
|
-
signOut
|
|
8
|
-
}) {
|
|
9
|
-
return {
|
|
10
|
-
async getSession() {
|
|
11
|
-
const session = await auth();
|
|
12
|
-
if (!session?.user) return null;
|
|
13
|
-
return {
|
|
14
|
-
user: {
|
|
15
|
-
id: session.user.id,
|
|
16
|
-
name: session.user.name,
|
|
17
|
-
email: session.user.email,
|
|
18
|
-
role: session.user.role
|
|
19
|
-
}
|
|
20
|
-
};
|
|
21
|
-
},
|
|
22
|
-
async getCurrentUser() {
|
|
23
|
-
const session = await this.getSession();
|
|
24
|
-
return session?.user ?? null;
|
|
25
|
-
},
|
|
26
|
-
async signIn(credentials) {
|
|
27
|
-
if (!signIn) throw new Error("signIn not configured");
|
|
28
|
-
try {
|
|
29
|
-
await signIn("credentials", credentials);
|
|
30
|
-
} catch (error) {
|
|
31
|
-
return { error: error.message ?? "Authentication failed" };
|
|
32
|
-
}
|
|
33
|
-
},
|
|
34
|
-
async signOut() {
|
|
35
|
-
if (!signOut) throw new Error("signOut not configured");
|
|
36
|
-
await signOut();
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
|
|
41
3
|
// src/auth/context.tsx
|
|
42
4
|
import {
|
|
43
5
|
createContext,
|
|
@@ -106,8 +68,7 @@ function AuthProvider({
|
|
|
106
68
|
}
|
|
107
69
|
|
|
108
70
|
export {
|
|
109
|
-
createNextAuthAdapter,
|
|
110
71
|
useGavaAuth,
|
|
111
72
|
AuthProvider
|
|
112
73
|
};
|
|
113
|
-
//# sourceMappingURL=chunk-
|
|
74
|
+
//# sourceMappingURL=chunk-IU2SMMVV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/auth/context.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n createContext,\n useContext,\n useState,\n useEffect,\n useCallback,\n type ReactNode,\n} from \"react\";\n\ninterface GEAuthUser {\n id: string;\n name?: string | null;\n email?: string | null;\n role: string;\n}\n\ninterface GEAuthSession {\n user: GEAuthUser;\n}\n\ninterface GEAuthContextValue {\n session: GEAuthSession | null;\n user: GEAuthUser | null;\n status: \"loading\" | \"authenticated\" | \"unauthenticated\";\n signIn?: (credentials: Record<string, unknown>) => Promise<{ error?: string } | void>;\n signOut?: () => Promise<void>;\n}\n\nconst AuthContext = createContext<GEAuthContextValue>({\n session: null,\n user: null,\n status: \"loading\",\n});\n\nexport function useGavaAuth(): GEAuthContextValue {\n return useContext(AuthContext);\n}\n\ninterface AuthProviderProps {\n children: ReactNode;\n getSession: () => Promise<GEAuthSession | null>;\n signIn?: (credentials: Record<string, unknown>) => Promise<{ error?: string } | void>;\n signOut?: () => Promise<void>;\n}\n\nexport function AuthProvider({\n children,\n getSession,\n signIn,\n signOut,\n}: AuthProviderProps) {\n const [session, setSession] = useState<GEAuthSession | null>(null);\n const [status, setStatus] = useState<\"loading\" | \"authenticated\" | \"unauthenticated\">(\n \"loading\"\n );\n\n useEffect(() => {\n getSession().then((s) => {\n setSession(s);\n setStatus(s ? \"authenticated\" : \"unauthenticated\");\n });\n }, [getSession]);\n\n const handleSignIn = useCallback(\n async (credentials: Record<string, unknown>) => {\n if (!signIn) return;\n const result = await signIn(credentials);\n if (!result?.error) {\n const s = await getSession();\n setSession(s);\n setStatus(s ? \"authenticated\" : \"unauthenticated\");\n }\n return result;\n },\n [signIn, getSession]\n );\n\n const handleSignOut = useCallback(async () => {\n if (!signOut) return;\n await signOut();\n setSession(null);\n setStatus(\"unauthenticated\");\n }, [signOut]);\n\n return (\n <AuthContext.Provider\n value={{\n session,\n user: session?.user ?? null,\n status,\n signIn: signIn ? handleSignIn : undefined,\n signOut: signOut ? handleSignOut : undefined,\n }}\n >\n {children}\n </AuthContext.Provider>\n );\n}\n"],"mappings":";;;AAEA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AA8EH;AAzDJ,IAAM,cAAc,cAAkC;AAAA,EACpD,SAAS;AAAA,EACT,MAAM;AAAA,EACN,QAAQ;AACV,CAAC;AAEM,SAAS,cAAkC;AAChD,SAAO,WAAW,WAAW;AAC/B;AASO,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAsB;AACpB,QAAM,CAAC,SAAS,UAAU,IAAI,SAA+B,IAAI;AACjE,QAAM,CAAC,QAAQ,SAAS,IAAI;AAAA,IAC1B;AAAA,EACF;AAEA,YAAU,MAAM;AACd,eAAW,EAAE,KAAK,CAAC,MAAM;AACvB,iBAAW,CAAC;AACZ,gBAAU,IAAI,kBAAkB,iBAAiB;AAAA,IACnD,CAAC;AAAA,EACH,GAAG,CAAC,UAAU,CAAC;AAEf,QAAM,eAAe;AAAA,IACnB,OAAO,gBAAyC;AAC9C,UAAI,CAAC,OAAQ;AACb,YAAM,SAAS,MAAM,OAAO,WAAW;AACvC,UAAI,CAAC,QAAQ,OAAO;AAClB,cAAM,IAAI,MAAM,WAAW;AAC3B,mBAAW,CAAC;AACZ,kBAAU,IAAI,kBAAkB,iBAAiB;AAAA,MACnD;AACA,aAAO;AAAA,IACT;AAAA,IACA,CAAC,QAAQ,UAAU;AAAA,EACrB;AAEA,QAAM,gBAAgB,YAAY,YAAY;AAC5C,QAAI,CAAC,QAAS;AACd,UAAM,QAAQ;AACd,eAAW,IAAI;AACf,cAAU,iBAAiB;AAAA,EAC7B,GAAG,CAAC,OAAO,CAAC;AAEZ,SACE;AAAA,IAAC,YAAY;AAAA,IAAZ;AAAA,MACC,OAAO;AAAA,QACL;AAAA,QACA,MAAM,SAAS,QAAQ;AAAA,QACvB;AAAA,QACA,QAAQ,SAAS,eAAe;AAAA,QAChC,SAAS,UAAU,gBAAgB;AAAA,MACrC;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;","names":[]}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// src/auth/next-auth-adapter.ts
|
|
4
|
+
function createNextAuthAdapter({
|
|
5
|
+
auth,
|
|
6
|
+
signIn,
|
|
7
|
+
signOut
|
|
8
|
+
}) {
|
|
9
|
+
return {
|
|
10
|
+
async getSession() {
|
|
11
|
+
const session = await auth();
|
|
12
|
+
if (!session?.user) return null;
|
|
13
|
+
return {
|
|
14
|
+
user: {
|
|
15
|
+
id: session.user.id,
|
|
16
|
+
name: session.user.name,
|
|
17
|
+
email: session.user.email,
|
|
18
|
+
role: session.user.role
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
},
|
|
22
|
+
async getCurrentUser() {
|
|
23
|
+
const session = await this.getSession();
|
|
24
|
+
return session?.user ?? null;
|
|
25
|
+
},
|
|
26
|
+
async signIn(credentials) {
|
|
27
|
+
if (!signIn) throw new Error("signIn not configured");
|
|
28
|
+
try {
|
|
29
|
+
await signIn("credentials", credentials);
|
|
30
|
+
} catch (error) {
|
|
31
|
+
return { error: error.message ?? "Authentication failed" };
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
async signOut() {
|
|
35
|
+
if (!signOut) throw new Error("signOut not configured");
|
|
36
|
+
await signOut();
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export {
|
|
42
|
+
createNextAuthAdapter
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=chunk-IYUHCOF5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/auth/next-auth-adapter.ts"],"sourcesContent":["import type { GEAuthAdapter, GESession } from \"./types.js\";\n\ninterface NextAuthFunctions {\n auth: () => Promise<any>;\n signIn?: (provider: string, credentials: Record<string, unknown>) => Promise<any>;\n signOut?: () => Promise<void>;\n}\n\nexport function createNextAuthAdapter({\n auth,\n signIn,\n signOut,\n}: NextAuthFunctions): GEAuthAdapter {\n return {\n async getSession(): Promise<GESession | null> {\n const session = await auth();\n if (!session?.user) return null;\n return {\n user: {\n id: session.user.id,\n name: session.user.name,\n email: session.user.email,\n role: session.user.role,\n },\n };\n },\n\n async getCurrentUser() {\n const session = await this.getSession();\n return session?.user ?? null;\n },\n\n async signIn(credentials: Record<string, unknown>) {\n if (!signIn) throw new Error(\"signIn not configured\");\n try {\n await signIn(\"credentials\", credentials);\n } catch (error: any) {\n return { error: error.message ?? \"Authentication failed\" };\n }\n },\n\n async signOut() {\n if (!signOut) throw new Error(\"signOut not configured\");\n await signOut();\n },\n };\n}\n"],"mappings":";;;AAQO,SAAS,sBAAsB;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AACF,GAAqC;AACnC,SAAO;AAAA,IACL,MAAM,aAAwC;AAC5C,YAAM,UAAU,MAAM,KAAK;AAC3B,UAAI,CAAC,SAAS,KAAM,QAAO;AAC3B,aAAO;AAAA,QACL,MAAM;AAAA,UACJ,IAAI,QAAQ,KAAK;AAAA,UACjB,MAAM,QAAQ,KAAK;AAAA,UACnB,OAAO,QAAQ,KAAK;AAAA,UACpB,MAAM,QAAQ,KAAK;AAAA,QACrB;AAAA,MACF;AAAA,IACF;AAAA,IAEA,MAAM,iBAAiB;AACrB,YAAM,UAAU,MAAM,KAAK,WAAW;AACtC,aAAO,SAAS,QAAQ;AAAA,IAC1B;AAAA,IAEA,MAAM,OAAO,aAAsC;AACjD,UAAI,CAAC,OAAQ,OAAM,IAAI,MAAM,uBAAuB;AACpD,UAAI;AACF,cAAM,OAAO,eAAe,WAAW;AAAA,MACzC,SAAS,OAAY;AACnB,eAAO,EAAE,OAAO,MAAM,WAAW,wBAAwB;AAAA,MAC3D;AAAA,IACF;AAAA,IAEA,MAAM,UAAU;AACd,UAAI,CAAC,QAAS,OAAM,IAAI,MAAM,wBAAwB;AACtD,YAAM,QAAQ;AAAA,IAChB;AAAA,EACF;AACF;","names":[]}
|
|
@@ -36,7 +36,44 @@ var it = {
|
|
|
36
36
|
beforeRestore: "Prima del ripristino",
|
|
37
37
|
publishedNote: "Pubblicato",
|
|
38
38
|
preview: "Anteprima",
|
|
39
|
-
placeholder: "Inizia a scrivere il tuo articolo..."
|
|
39
|
+
placeholder: "Inizia a scrivere il tuo articolo...",
|
|
40
|
+
bold: "Grassetto",
|
|
41
|
+
italic: "Corsivo",
|
|
42
|
+
underline: "Sottolineato",
|
|
43
|
+
strikethrough: "Barrato",
|
|
44
|
+
superscript: "Apice",
|
|
45
|
+
subscript: "Pedice",
|
|
46
|
+
textColor: "Colore testo",
|
|
47
|
+
highlight: "Evidenzia",
|
|
48
|
+
heading2: "H2",
|
|
49
|
+
heading3: "H3",
|
|
50
|
+
bulletList: "Elenco puntato",
|
|
51
|
+
numberedList: "Elenco numerato",
|
|
52
|
+
quote: "Citazione",
|
|
53
|
+
codeBlock: "Blocco codice",
|
|
54
|
+
divider: "Separatore",
|
|
55
|
+
alignLeft: "Allinea a sinistra",
|
|
56
|
+
alignCenter: "Allinea al centro",
|
|
57
|
+
alignRight: "Allinea a destra",
|
|
58
|
+
table: "Tabella",
|
|
59
|
+
insertTable: "Inserisci tabella 3\xD73",
|
|
60
|
+
addRowAbove: "Aggiungi riga sopra",
|
|
61
|
+
addRowBelow: "Aggiungi riga sotto",
|
|
62
|
+
addColumnLeft: "Aggiungi colonna a sinistra",
|
|
63
|
+
addColumnRight: "Aggiungi colonna a destra",
|
|
64
|
+
deleteRow: "Elimina riga",
|
|
65
|
+
deleteColumn: "Elimina colonna",
|
|
66
|
+
deleteTable: "Elimina tabella",
|
|
67
|
+
link: "Link",
|
|
68
|
+
image: "Immagine",
|
|
69
|
+
youtube: "YouTube",
|
|
70
|
+
video: "Video",
|
|
71
|
+
undo: "Annulla",
|
|
72
|
+
redo: "Ripeti",
|
|
73
|
+
defaultColor: "Predefinito",
|
|
74
|
+
removeHighlight: "Rimuovi",
|
|
75
|
+
linkPrompt: "URL:",
|
|
76
|
+
youtubePrompt: "URL YouTube:"
|
|
40
77
|
},
|
|
41
78
|
media: {
|
|
42
79
|
media: "Media",
|
|
@@ -138,7 +175,44 @@ var en = {
|
|
|
138
175
|
beforeRestore: "Before restore",
|
|
139
176
|
publishedNote: "Published",
|
|
140
177
|
preview: "Preview",
|
|
141
|
-
placeholder: "Start writing your article..."
|
|
178
|
+
placeholder: "Start writing your article...",
|
|
179
|
+
bold: "Bold",
|
|
180
|
+
italic: "Italic",
|
|
181
|
+
underline: "Underline",
|
|
182
|
+
strikethrough: "Strikethrough",
|
|
183
|
+
superscript: "Superscript",
|
|
184
|
+
subscript: "Subscript",
|
|
185
|
+
textColor: "Text color",
|
|
186
|
+
highlight: "Highlight",
|
|
187
|
+
heading2: "H2",
|
|
188
|
+
heading3: "H3",
|
|
189
|
+
bulletList: "Bullet list",
|
|
190
|
+
numberedList: "Numbered list",
|
|
191
|
+
quote: "Quote",
|
|
192
|
+
codeBlock: "Code block",
|
|
193
|
+
divider: "Divider",
|
|
194
|
+
alignLeft: "Align left",
|
|
195
|
+
alignCenter: "Align center",
|
|
196
|
+
alignRight: "Align right",
|
|
197
|
+
table: "Table",
|
|
198
|
+
insertTable: "Insert 3\xD73 table",
|
|
199
|
+
addRowAbove: "Add row above",
|
|
200
|
+
addRowBelow: "Add row below",
|
|
201
|
+
addColumnLeft: "Add column left",
|
|
202
|
+
addColumnRight: "Add column right",
|
|
203
|
+
deleteRow: "Delete row",
|
|
204
|
+
deleteColumn: "Delete column",
|
|
205
|
+
deleteTable: "Delete table",
|
|
206
|
+
link: "Link",
|
|
207
|
+
image: "Image",
|
|
208
|
+
youtube: "YouTube",
|
|
209
|
+
video: "Video",
|
|
210
|
+
undo: "Undo",
|
|
211
|
+
redo: "Redo",
|
|
212
|
+
defaultColor: "Default",
|
|
213
|
+
removeHighlight: "Remove",
|
|
214
|
+
linkPrompt: "URL:",
|
|
215
|
+
youtubePrompt: "YouTube URL:"
|
|
142
216
|
},
|
|
143
217
|
media: {
|
|
144
218
|
media: "Media",
|
|
@@ -335,7 +409,45 @@ function localeToStrings(locale) {
|
|
|
335
409
|
unpublishConfirm: locale.common.unpublishConfirm,
|
|
336
410
|
deleteUserConfirm: locale.common.deleteUserConfirm,
|
|
337
411
|
totalArticles: locale.common.totalArticles,
|
|
338
|
-
totalFiles: locale.common.totalFiles
|
|
412
|
+
totalFiles: locale.common.totalFiles,
|
|
413
|
+
// Toolbar
|
|
414
|
+
bold: locale.editor.bold,
|
|
415
|
+
italic: locale.editor.italic,
|
|
416
|
+
underline: locale.editor.underline,
|
|
417
|
+
strikethrough: locale.editor.strikethrough,
|
|
418
|
+
superscript: locale.editor.superscript,
|
|
419
|
+
subscript: locale.editor.subscript,
|
|
420
|
+
textColor: locale.editor.textColor,
|
|
421
|
+
highlight: locale.editor.highlight,
|
|
422
|
+
heading2: locale.editor.heading2,
|
|
423
|
+
heading3: locale.editor.heading3,
|
|
424
|
+
bulletList: locale.editor.bulletList,
|
|
425
|
+
numberedList: locale.editor.numberedList,
|
|
426
|
+
quote: locale.editor.quote,
|
|
427
|
+
codeBlock: locale.editor.codeBlock,
|
|
428
|
+
divider: locale.editor.divider,
|
|
429
|
+
alignLeft: locale.editor.alignLeft,
|
|
430
|
+
alignCenter: locale.editor.alignCenter,
|
|
431
|
+
alignRight: locale.editor.alignRight,
|
|
432
|
+
table: locale.editor.table,
|
|
433
|
+
insertTable: locale.editor.insertTable,
|
|
434
|
+
addRowAbove: locale.editor.addRowAbove,
|
|
435
|
+
addRowBelow: locale.editor.addRowBelow,
|
|
436
|
+
addColumnLeft: locale.editor.addColumnLeft,
|
|
437
|
+
addColumnRight: locale.editor.addColumnRight,
|
|
438
|
+
deleteRow: locale.editor.deleteRow,
|
|
439
|
+
deleteColumn: locale.editor.deleteColumn,
|
|
440
|
+
deleteTable: locale.editor.deleteTable,
|
|
441
|
+
link: locale.editor.link,
|
|
442
|
+
image: locale.editor.image,
|
|
443
|
+
youtube: locale.editor.youtube,
|
|
444
|
+
video: locale.editor.video,
|
|
445
|
+
undo: locale.editor.undo,
|
|
446
|
+
redo: locale.editor.redo,
|
|
447
|
+
defaultColor: locale.editor.defaultColor,
|
|
448
|
+
removeHighlight: locale.editor.removeHighlight,
|
|
449
|
+
linkPrompt: locale.editor.linkPrompt,
|
|
450
|
+
youtubePrompt: locale.editor.youtubePrompt
|
|
339
451
|
};
|
|
340
452
|
}
|
|
341
453
|
var DEFAULT_STRINGS = localeToStrings(loadLocale("it"));
|
|
@@ -398,6 +510,7 @@ var DEFAULT_CONFIG = {
|
|
|
398
510
|
userNew: "/dashboard/utenti/nuovo",
|
|
399
511
|
media: "/dashboard/media",
|
|
400
512
|
dashboard: "/dashboard",
|
|
513
|
+
statistics: "/dashboard/statistiche",
|
|
401
514
|
login: "/login",
|
|
402
515
|
home: "/"
|
|
403
516
|
},
|
|
@@ -555,4 +668,4 @@ export {
|
|
|
555
668
|
useRegisteredComponent,
|
|
556
669
|
useComponentRegistry
|
|
557
670
|
};
|
|
558
|
-
//# sourceMappingURL=chunk-
|
|
671
|
+
//# sourceMappingURL=chunk-MANXBV2D.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/i18n/it.ts","../src/i18n/en.ts","../src/i18n/index.ts","../src/config.ts","../src/providers/ConfigContext.tsx","../src/providers/ActionsContext.tsx","../src/providers/SplashContext.tsx","../src/components/registry.tsx"],"sourcesContent":["import type { GELocale } from \"./types.js\";\n\nexport const it: GELocale = {\n content: {\n articles: \"Articoli\",\n newArticle: \"Nuovo articolo\",\n titlePlaceholder: \"Titolo dell'articolo\",\n excerptPlaceholder: \"Breve descrizione dell'articolo...\",\n slugPlaceholder: \"slug-articolo\",\n authorPlaceholder: \"Nome dell'autore\",\n category: \"Categoria\",\n selectCategory: \"Seleziona categoria\",\n excerpt: \"Estratto\",\n author: \"Autore\",\n slugUrl: \"Slug URL\",\n noArticles: \"Nessun articolo.\",\n noArticlesSearch: \"Nessun articolo trovato.\",\n searchArticles: \"Cerca articoli...\",\n coverImageLabel: \"Immagine di copertina\",\n coverImageHint: \"Scegli dalla libreria o carica un nuovo file\",\n viewArticle: \"Vedi articolo pubblicato\",\n untitled: \"Senza titolo\",\n },\n editor: {\n publish: \"Pubblica\",\n unpublish: \"Ritira\",\n saveDraft: \"Salva bozza\",\n revisions: \"Cronologia\",\n saving: \"Salvando...\",\n saved: \"Salvato\",\n saveError: \"Errore nel salvataggio\",\n noRevisions: \"Nessuna revisione salvata.\",\n restore: \"Ripristina\",\n restoreConfirm:\n \"Ripristinare questa revisione? Lo stato attuale verrà salvato prima del ripristino.\",\n beforeRestore: \"Prima del ripristino\",\n publishedNote: \"Pubblicato\",\n preview: \"Anteprima\",\n placeholder: \"Inizia a scrivere il tuo articolo...\",\n bold: \"Grassetto\",\n italic: \"Corsivo\",\n underline: \"Sottolineato\",\n strikethrough: \"Barrato\",\n superscript: \"Apice\",\n subscript: \"Pedice\",\n textColor: \"Colore testo\",\n highlight: \"Evidenzia\",\n heading2: \"H2\",\n heading3: \"H3\",\n bulletList: \"Elenco puntato\",\n numberedList: \"Elenco numerato\",\n quote: \"Citazione\",\n codeBlock: \"Blocco codice\",\n divider: \"Separatore\",\n alignLeft: \"Allinea a sinistra\",\n alignCenter: \"Allinea al centro\",\n alignRight: \"Allinea a destra\",\n table: \"Tabella\",\n insertTable: \"Inserisci tabella 3×3\",\n addRowAbove: \"Aggiungi riga sopra\",\n addRowBelow: \"Aggiungi riga sotto\",\n addColumnLeft: \"Aggiungi colonna a sinistra\",\n addColumnRight: \"Aggiungi colonna a destra\",\n deleteRow: \"Elimina riga\",\n deleteColumn: \"Elimina colonna\",\n deleteTable: \"Elimina tabella\",\n link: \"Link\",\n image: \"Immagine\",\n youtube: \"YouTube\",\n video: \"Video\",\n undo: \"Annulla\",\n redo: \"Ripeti\",\n defaultColor: \"Predefinito\",\n removeHighlight: \"Rimuovi\",\n linkPrompt: \"URL:\",\n youtubePrompt: \"URL YouTube:\",\n },\n media: {\n media: \"Media\",\n noMedia: \"Nessun file caricato.\",\n noMediaSearch: \"Nessun file trovato.\",\n chooseFile: \"Scegli file\",\n dragHint: \"Trascina un'immagine qui oppure\",\n uploadHint: \"JPEG, PNG, WebP, GIF (max 5MB)\",\n mediaLibrary: \"Libreria media\",\n uploadNew: \"Carica nuovo\",\n searchFiles: \"Cerca file...\",\n selectImage: \"Seleziona immagine\",\n noImages: \"Nessuna immagine nella libreria.\",\n noImagesSearch: \"Nessuna immagine trovata.\",\n copyUrl: \"Copia URL\",\n editImage: \"Modifica immagine\",\n restoreOriginal: \"Ripristina originale\",\n freeAspect: \"Libero\",\n },\n users: {\n users: \"Utenti\",\n name: \"Nome\",\n email: \"Email\",\n password: \"Password\",\n passwordEditHint: \" (lascia vuoto per non modificarla)\",\n role: \"Ruolo\",\n createdAt: \"Creato il\",\n actions: \"Azioni\",\n createUser: \"Crea utente\",\n unauthorized: \"Non autorizzato\",\n notAuthenticated: \"Non autenticato\",\n allFieldsRequired: \"Tutti i campi sono obbligatori.\",\n passwordMinLength: \"La password deve avere almeno 6 caratteri.\",\n emailExists: \"Esiste già un utente con questa email.\",\n invalidRole: \"Ruolo non valido.\",\n cannotDeleteSelf: \"Non puoi eliminare il tuo stesso account.\",\n },\n common: {\n statistics: \"Statistiche\",\n settings: \"Impostazioni\",\n delete: \"Elimina\",\n edit: \"Modifica\",\n search: \"Cerca\",\n draft: \"Bozza\",\n published: \"Pubblicato\",\n all: \"Tutti\",\n drafts: \"Bozze\",\n loading: \"Caricamento...\",\n confirm: \"Conferma\",\n cancel: \"Annulla\",\n apply: \"Applica\",\n change: \"Cambia\",\n logout: \"Esci\",\n saveChanges: \"Salva modifiche\",\n updated: \"Aggiornato\",\n status: \"Stato\",\n title: \"Titolo\",\n deleteConfirm: (title) => `Eliminare \"${title || \"Senza titolo\"}\"?`,\n unpublishConfirm: (title) =>\n `Ritirare \"${title || \"Senza titolo\"}\"? L'articolo tornerà in bozza.`,\n deleteUserConfirm: (name) =>\n `Sei sicuro di voler eliminare l'utente \"${name}\"?`,\n totalArticles: (count) =>\n `${count} articol${count === 1 ? \"o\" : \"i\"} totali`,\n totalFiles: (count) => `${count} file caricati`,\n },\n};\n","import type { GELocale } from \"./types.js\";\n\nexport const en: GELocale = {\n content: {\n articles: \"Articles\",\n newArticle: \"New article\",\n titlePlaceholder: \"Article title\",\n excerptPlaceholder: \"Brief description of the article...\",\n slugPlaceholder: \"article-slug\",\n authorPlaceholder: \"Author name\",\n category: \"Category\",\n selectCategory: \"Select category\",\n excerpt: \"Excerpt\",\n author: \"Author\",\n slugUrl: \"URL Slug\",\n noArticles: \"No articles.\",\n noArticlesSearch: \"No articles found.\",\n searchArticles: \"Search articles...\",\n coverImageLabel: \"Cover image\",\n coverImageHint: \"Choose from library or upload a new file\",\n viewArticle: \"View published article\",\n untitled: \"Untitled\",\n },\n editor: {\n publish: \"Publish\",\n unpublish: \"Unpublish\",\n saveDraft: \"Save draft\",\n revisions: \"History\",\n saving: \"Saving...\",\n saved: \"Saved\",\n saveError: \"Error saving\",\n noRevisions: \"No revisions saved.\",\n restore: \"Restore\",\n restoreConfirm:\n \"Restore this revision? The current state will be saved before restoring.\",\n beforeRestore: \"Before restore\",\n publishedNote: \"Published\",\n preview: \"Preview\",\n placeholder: \"Start writing your article...\",\n bold: \"Bold\",\n italic: \"Italic\",\n underline: \"Underline\",\n strikethrough: \"Strikethrough\",\n superscript: \"Superscript\",\n subscript: \"Subscript\",\n textColor: \"Text color\",\n highlight: \"Highlight\",\n heading2: \"H2\",\n heading3: \"H3\",\n bulletList: \"Bullet list\",\n numberedList: \"Numbered list\",\n quote: \"Quote\",\n codeBlock: \"Code block\",\n divider: \"Divider\",\n alignLeft: \"Align left\",\n alignCenter: \"Align center\",\n alignRight: \"Align right\",\n table: \"Table\",\n insertTable: \"Insert 3×3 table\",\n addRowAbove: \"Add row above\",\n addRowBelow: \"Add row below\",\n addColumnLeft: \"Add column left\",\n addColumnRight: \"Add column right\",\n deleteRow: \"Delete row\",\n deleteColumn: \"Delete column\",\n deleteTable: \"Delete table\",\n link: \"Link\",\n image: \"Image\",\n youtube: \"YouTube\",\n video: \"Video\",\n undo: \"Undo\",\n redo: \"Redo\",\n defaultColor: \"Default\",\n removeHighlight: \"Remove\",\n linkPrompt: \"URL:\",\n youtubePrompt: \"YouTube URL:\",\n },\n media: {\n media: \"Media\",\n noMedia: \"No files uploaded.\",\n noMediaSearch: \"No files found.\",\n chooseFile: \"Choose file\",\n dragHint: \"Drag an image here or\",\n uploadHint: \"JPEG, PNG, WebP, GIF (max 5MB)\",\n mediaLibrary: \"Media library\",\n uploadNew: \"Upload new\",\n searchFiles: \"Search files...\",\n selectImage: \"Select image\",\n noImages: \"No images in library.\",\n noImagesSearch: \"No images found.\",\n copyUrl: \"Copy URL\",\n editImage: \"Edit image\",\n restoreOriginal: \"Restore original\",\n freeAspect: \"Free\",\n },\n users: {\n users: \"Users\",\n name: \"Name\",\n email: \"Email\",\n password: \"Password\",\n passwordEditHint: \" (leave blank to keep current)\",\n role: \"Role\",\n createdAt: \"Created at\",\n actions: \"Actions\",\n createUser: \"Create user\",\n unauthorized: \"Unauthorized\",\n notAuthenticated: \"Not authenticated\",\n allFieldsRequired: \"All fields are required.\",\n passwordMinLength: \"Password must be at least 6 characters.\",\n emailExists: \"A user with this email already exists.\",\n invalidRole: \"Invalid role.\",\n cannotDeleteSelf: \"You cannot delete your own account.\",\n },\n common: {\n statistics: \"Statistics\",\n settings: \"Settings\",\n delete: \"Delete\",\n edit: \"Edit\",\n search: \"Search\",\n draft: \"Draft\",\n published: \"Published\",\n all: \"All\",\n drafts: \"Drafts\",\n loading: \"Loading...\",\n confirm: \"Confirm\",\n cancel: \"Cancel\",\n apply: \"Apply\",\n change: \"Change\",\n logout: \"Logout\",\n saveChanges: \"Save changes\",\n updated: \"Updated\",\n status: \"Status\",\n title: \"Title\",\n deleteConfirm: (title) => `Delete \"${title || \"Untitled\"}\"?`,\n unpublishConfirm: (title) =>\n `Unpublish \"${title || \"Untitled\"}\"? The article will go back to draft.`,\n deleteUserConfirm: (name) =>\n `Are you sure you want to delete user \"${name}\"?`,\n totalArticles: (count) =>\n `${count} total article${count === 1 ? \"\" : \"s\"}`,\n totalFiles: (count) => `${count} uploaded file${count === 1 ? \"\" : \"s\"}`,\n },\n};\n","import type { GELocale } from \"./types.js\";\nimport { it } from \"./it.js\";\nimport { en } from \"./en.js\";\n\nexport type { GELocale } from \"./types.js\";\nexport { it } from \"./it.js\";\nexport { en } from \"./en.js\";\n\nconst builtinLocales: Record<string, GELocale> = { it, en };\n\nexport function loadLocale(locale: string): GELocale {\n const found = builtinLocales[locale];\n if (!found) {\n throw new Error(\n `Locale \"${locale}\" not found. Available: ${Object.keys(builtinLocales).join(\", \")}`\n );\n }\n return found;\n}\n\nexport function defineLocale(locale: GELocale): GELocale {\n return locale;\n}\n\nexport function mergeLocales(\n base: GELocale,\n overrides: DeepPartial<GELocale>\n): GELocale {\n return deepMergeLocale(base, overrides);\n}\n\nexport function registerLocale(key: string, locale: GELocale): void {\n builtinLocales[key] = locale;\n}\n\ntype DeepPartial<T> = {\n [P in keyof T]?: T[P] extends (...args: any[]) => any\n ? T[P]\n : T[P] extends object\n ? DeepPartial<T[P]>\n : T[P];\n};\n\nfunction deepMergeLocale<T extends Record<string, any>>(\n target: T,\n source: DeepPartial<T>\n): T {\n const result = { ...target };\n for (const key of Object.keys(source) as (keyof T)[]) {\n const sourceVal = source[key];\n const targetVal = target[key];\n if (\n sourceVal &&\n typeof sourceVal === \"object\" &&\n !Array.isArray(sourceVal) &&\n typeof targetVal === \"object\" &&\n !Array.isArray(targetVal) &&\n typeof sourceVal !== \"function\"\n ) {\n (result as any)[key] = deepMergeLocale(\n targetVal as Record<string, any>,\n sourceVal as Record<string, any>\n );\n } else if (sourceVal !== undefined) {\n (result as any)[key] = sourceVal;\n }\n }\n return result;\n}\n","import { loadLocale } from \"./i18n/index.js\";\nimport type { GELocale } from \"./i18n/types.js\";\nimport type { GEAuthAdapter } from \"./auth/types.js\";\nimport type { GEContentType } from \"./content/types.js\";\nimport type { GEComponentOverrides } from \"./components/registry.js\";\nimport type { GENavItem, GESplashConfig, GEColorOption } from \"./types.js\";\n\nexport interface GavaEngineConfig {\n branding: {\n name: string;\n logo?: string;\n };\n roles: {\n list: string[];\n labels: Record<string, string>;\n canEdit: (role: string) => boolean;\n canPublish: (role: string) => boolean;\n adminRole: string;\n };\n statuses: {\n draft: string;\n published: string;\n };\n locale: string;\n models: {\n article: string;\n articleRevision: string;\n articleView: string;\n media: string;\n user: string;\n };\n navigation?: GENavItem[];\n splash?: GESplashConfig;\n editorToolbar?: {\n textColors?: GEColorOption[];\n highlightColors?: GEColorOption[];\n };\n auth?: GEAuthAdapter;\n contentTypes?: GEContentType[];\n components?: GEComponentOverrides;\n categories: string[];\n upload: {\n endpoint: string;\n imageTypes: string[];\n videoTypes: string[];\n maxImageSize: number;\n maxVideoSize: number;\n };\n editor: {\n placeholder: string;\n autoSaveDelay: number;\n revisionThrottleMinutes: number;\n headingLevels: number[];\n };\n routes: {\n articles: string;\n articleEdit: (id: string) => string;\n articleNew: string;\n articleView: (slug: string) => string;\n articlePreview: (id: string) => string;\n users: string;\n userEdit: (id: string) => string;\n userNew: string;\n media: string;\n dashboard: string;\n statistics: string;\n login: string;\n home: string;\n };\n strings: {\n articles: string;\n newArticle: string;\n media: string;\n users: string;\n statistics: string;\n settings: string;\n revisions: string;\n publish: string;\n unpublish: string;\n saveDraft: string;\n delete: string;\n edit: string;\n search: string;\n titlePlaceholder: string;\n excerptPlaceholder: string;\n slugPlaceholder: string;\n authorPlaceholder: string;\n category: string;\n selectCategory: string;\n excerpt: string;\n author: string;\n slugUrl: string;\n draft: string;\n published: string;\n all: string;\n drafts: string;\n saving: string;\n saved: string;\n saveError: string;\n noArticles: string;\n noArticlesSearch: string;\n noMedia: string;\n noMediaSearch: string;\n noRevisions: string;\n loading: string;\n confirm: string;\n cancel: string;\n apply: string;\n change: string;\n logout: string;\n viewArticle: string;\n preview: string;\n restore: string;\n restoreConfirm: string;\n beforeRestore: string;\n publishedNote: string;\n deleteConfirm: (title: string) => string;\n unpublishConfirm: (title: string) => string;\n deleteUserConfirm: (name: string) => string;\n totalArticles: (count: number) => string;\n totalFiles: (count: number) => string;\n coverImageLabel: string;\n coverImageHint: string;\n chooseFile: string;\n dragHint: string;\n uploadHint: string;\n mediaLibrary: string;\n uploadNew: string;\n searchFiles: string;\n searchArticles: string;\n selectImage: string;\n noImages: string;\n noImagesSearch: string;\n copyUrl: string;\n editImage: string;\n restoreOriginal: string;\n freeAspect: string;\n unauthorized: string;\n notAuthenticated: string;\n allFieldsRequired: string;\n passwordMinLength: string;\n emailExists: string;\n invalidRole: string;\n cannotDeleteSelf: string;\n name: string;\n email: string;\n password: string;\n passwordEditHint: string;\n role: string;\n createdAt: string;\n actions: string;\n createUser: string;\n saveChanges: string;\n updated: string;\n status: string;\n title: string;\n untitled: string;\n // Toolbar\n bold: string;\n italic: string;\n underline: string;\n strikethrough: string;\n superscript: string;\n subscript: string;\n textColor: string;\n highlight: string;\n heading2: string;\n heading3: string;\n bulletList: string;\n numberedList: string;\n quote: string;\n codeBlock: string;\n divider: string;\n alignLeft: string;\n alignCenter: string;\n alignRight: string;\n table: string;\n insertTable: string;\n addRowAbove: string;\n addRowBelow: string;\n addColumnLeft: string;\n addColumnRight: string;\n deleteRow: string;\n deleteColumn: string;\n deleteTable: string;\n link: string;\n image: string;\n youtube: string;\n video: string;\n undo: string;\n redo: string;\n defaultColor: string;\n removeHighlight: string;\n linkPrompt: string;\n youtubePrompt: string;\n };\n}\n\nfunction localeToStrings(locale: GELocale): GavaEngineConfig[\"strings\"] {\n return {\n // content\n articles: locale.content.articles,\n newArticle: locale.content.newArticle,\n titlePlaceholder: locale.content.titlePlaceholder,\n excerptPlaceholder: locale.content.excerptPlaceholder,\n slugPlaceholder: locale.content.slugPlaceholder,\n authorPlaceholder: locale.content.authorPlaceholder,\n category: locale.content.category,\n selectCategory: locale.content.selectCategory,\n excerpt: locale.content.excerpt,\n author: locale.content.author,\n slugUrl: locale.content.slugUrl,\n noArticles: locale.content.noArticles,\n noArticlesSearch: locale.content.noArticlesSearch,\n searchArticles: locale.content.searchArticles,\n coverImageLabel: locale.content.coverImageLabel,\n coverImageHint: locale.content.coverImageHint,\n viewArticle: locale.content.viewArticle,\n untitled: locale.content.untitled,\n // editor\n publish: locale.editor.publish,\n unpublish: locale.editor.unpublish,\n saveDraft: locale.editor.saveDraft,\n revisions: locale.editor.revisions,\n saving: locale.editor.saving,\n saved: locale.editor.saved,\n saveError: locale.editor.saveError,\n noRevisions: locale.editor.noRevisions,\n restore: locale.editor.restore,\n restoreConfirm: locale.editor.restoreConfirm,\n beforeRestore: locale.editor.beforeRestore,\n publishedNote: locale.editor.publishedNote,\n preview: locale.editor.preview,\n // media\n media: locale.media.media,\n noMedia: locale.media.noMedia,\n noMediaSearch: locale.media.noMediaSearch,\n chooseFile: locale.media.chooseFile,\n dragHint: locale.media.dragHint,\n uploadHint: locale.media.uploadHint,\n mediaLibrary: locale.media.mediaLibrary,\n uploadNew: locale.media.uploadNew,\n searchFiles: locale.media.searchFiles,\n selectImage: locale.media.selectImage,\n noImages: locale.media.noImages,\n noImagesSearch: locale.media.noImagesSearch,\n copyUrl: locale.media.copyUrl,\n editImage: locale.media.editImage,\n restoreOriginal: locale.media.restoreOriginal,\n freeAspect: locale.media.freeAspect,\n // users\n users: locale.users.users,\n name: locale.users.name,\n email: locale.users.email,\n password: locale.users.password,\n passwordEditHint: locale.users.passwordEditHint,\n role: locale.users.role,\n createdAt: locale.users.createdAt,\n actions: locale.users.actions,\n createUser: locale.users.createUser,\n unauthorized: locale.users.unauthorized,\n notAuthenticated: locale.users.notAuthenticated,\n allFieldsRequired: locale.users.allFieldsRequired,\n passwordMinLength: locale.users.passwordMinLength,\n emailExists: locale.users.emailExists,\n invalidRole: locale.users.invalidRole,\n cannotDeleteSelf: locale.users.cannotDeleteSelf,\n // common\n statistics: locale.common.statistics,\n settings: locale.common.settings,\n delete: locale.common.delete,\n edit: locale.common.edit,\n search: locale.common.search,\n draft: locale.common.draft,\n published: locale.common.published,\n all: locale.common.all,\n drafts: locale.common.drafts,\n loading: locale.common.loading,\n confirm: locale.common.confirm,\n cancel: locale.common.cancel,\n apply: locale.common.apply,\n change: locale.common.change,\n logout: locale.common.logout,\n saveChanges: locale.common.saveChanges,\n updated: locale.common.updated,\n status: locale.common.status,\n title: locale.common.title,\n deleteConfirm: locale.common.deleteConfirm,\n unpublishConfirm: locale.common.unpublishConfirm,\n deleteUserConfirm: locale.common.deleteUserConfirm,\n totalArticles: locale.common.totalArticles,\n totalFiles: locale.common.totalFiles,\n // Toolbar\n bold: locale.editor.bold,\n italic: locale.editor.italic,\n underline: locale.editor.underline,\n strikethrough: locale.editor.strikethrough,\n superscript: locale.editor.superscript,\n subscript: locale.editor.subscript,\n textColor: locale.editor.textColor,\n highlight: locale.editor.highlight,\n heading2: locale.editor.heading2,\n heading3: locale.editor.heading3,\n bulletList: locale.editor.bulletList,\n numberedList: locale.editor.numberedList,\n quote: locale.editor.quote,\n codeBlock: locale.editor.codeBlock,\n divider: locale.editor.divider,\n alignLeft: locale.editor.alignLeft,\n alignCenter: locale.editor.alignCenter,\n alignRight: locale.editor.alignRight,\n table: locale.editor.table,\n insertTable: locale.editor.insertTable,\n addRowAbove: locale.editor.addRowAbove,\n addRowBelow: locale.editor.addRowBelow,\n addColumnLeft: locale.editor.addColumnLeft,\n addColumnRight: locale.editor.addColumnRight,\n deleteRow: locale.editor.deleteRow,\n deleteColumn: locale.editor.deleteColumn,\n deleteTable: locale.editor.deleteTable,\n link: locale.editor.link,\n image: locale.editor.image,\n youtube: locale.editor.youtube,\n video: locale.editor.video,\n undo: locale.editor.undo,\n redo: locale.editor.redo,\n defaultColor: locale.editor.defaultColor,\n removeHighlight: locale.editor.removeHighlight,\n linkPrompt: locale.editor.linkPrompt,\n youtubePrompt: locale.editor.youtubePrompt,\n };\n}\n\nconst DEFAULT_STRINGS = localeToStrings(loadLocale(\"it\"));\n\nconst DEFAULT_CONFIG: GavaEngineConfig = {\n branding: {\n name: \"GavaEngine\",\n },\n roles: {\n list: [\"admin\", \"redattore\", \"scrittore\", \"lettore\"],\n labels: {\n admin: \"Amministratore\",\n redattore: \"Redattore\",\n scrittore: \"Scrittore\",\n lettore: \"Lettore\",\n },\n canEdit: (role: string) => role !== \"lettore\",\n canPublish: (role: string) => role === \"admin\" || role === \"redattore\",\n adminRole: \"admin\",\n },\n statuses: {\n draft: \"bozza\",\n published: \"pubblicato\",\n },\n locale: \"it\",\n models: {\n article: \"article\",\n articleRevision: \"articleRevision\",\n articleView: \"articleView\",\n media: \"media\",\n user: \"user\",\n },\n categories: [\n \"Cultura ed Intercultura\",\n \"Fatti ed Eventi\",\n \"Poeti e Prosatori\",\n \"Famiglia, Istituzioni e Territorio\",\n \"Amici del Meucci\",\n ],\n upload: {\n endpoint: \"/api/upload\",\n imageTypes: [\"image/jpeg\", \"image/png\", \"image/webp\", \"image/gif\"],\n videoTypes: [\"video/mp4\", \"video/webm\", \"video/quicktime\"],\n maxImageSize: 5 * 1024 * 1024,\n maxVideoSize: 50 * 1024 * 1024,\n },\n editor: {\n placeholder: \"Inizia a scrivere il tuo articolo...\",\n autoSaveDelay: 2000,\n revisionThrottleMinutes: 5,\n headingLevels: [2, 3],\n },\n routes: {\n articles: \"/dashboard/articoli\",\n articleEdit: (id) => `/dashboard/articoli/${id}`,\n articleNew: \"/dashboard/articoli/nuovo\",\n articleView: (slug) => `/articoli/${slug}`,\n articlePreview: (id) => `/anteprima/${id}`,\n users: \"/dashboard/utenti\",\n userEdit: (id) => `/dashboard/utenti/${id}`,\n userNew: \"/dashboard/utenti/nuovo\",\n media: \"/dashboard/media\",\n dashboard: \"/dashboard\",\n statistics: \"/dashboard/statistiche\",\n login: \"/login\",\n home: \"/\",\n },\n strings: DEFAULT_STRINGS,\n};\n\nfunction deepMerge<T extends Record<string, any>>(\n target: T,\n source: Partial<T>\n): T {\n const result = { ...target };\n for (const key of Object.keys(source) as (keyof T)[]) {\n const sourceVal = source[key];\n const targetVal = target[key];\n if (\n sourceVal &&\n typeof sourceVal === \"object\" &&\n !Array.isArray(sourceVal) &&\n typeof targetVal === \"object\" &&\n !Array.isArray(targetVal) &&\n typeof sourceVal !== \"function\"\n ) {\n (result as any)[key] = deepMerge(\n targetVal as Record<string, any>,\n sourceVal as Record<string, any>\n );\n } else if (sourceVal !== undefined) {\n (result as any)[key] = sourceVal;\n }\n }\n return result;\n}\n\nexport function defineConfig(\n overrides: Partial<GavaEngineConfig> = {}\n): GavaEngineConfig {\n // If a different locale is specified, load it as base strings\n const locale = overrides.locale ?? DEFAULT_CONFIG.locale;\n const baseStrings = localeToStrings(loadLocale(locale));\n\n // Build config with locale-based strings as default\n const configWithLocale = {\n ...DEFAULT_CONFIG,\n strings: baseStrings,\n };\n\n // Also update editor.placeholder from locale if not overridden\n if (!overrides.editor?.placeholder) {\n const localeData = loadLocale(locale);\n configWithLocale.editor = {\n ...configWithLocale.editor,\n placeholder: localeData.editor.placeholder,\n };\n }\n\n return deepMerge(configWithLocale, overrides);\n}\n\nexport { DEFAULT_CONFIG, localeToStrings };\n","\"use client\";\n\nimport { createContext, useContext, type ReactNode } from \"react\";\nimport { type GavaEngineConfig, DEFAULT_CONFIG } from \"../config.js\";\n\nconst ConfigContext = createContext<GavaEngineConfig>(DEFAULT_CONFIG);\n\nexport function useGavaConfig() {\n return useContext(ConfigContext);\n}\n\nexport function ConfigProvider({\n config,\n children,\n}: {\n config: GavaEngineConfig;\n children: ReactNode;\n}) {\n return (\n <ConfigContext.Provider value={config}>{children}</ConfigContext.Provider>\n );\n}\n","\"use client\";\n\nimport { createContext, useContext, type ReactNode } from \"react\";\nimport type { GEActions } from \"../types.js\";\n\nconst ActionsContext = createContext<GEActions | null>(null);\n\nexport function useGavaActions(): GEActions {\n const ctx = useContext(ActionsContext);\n if (!ctx) {\n throw new Error(\n \"useGavaActions must be used within a <GavaEngineProvider> with actions provided.\"\n );\n }\n return ctx;\n}\n\nexport function ActionsProvider({\n actions,\n children,\n}: {\n actions: GEActions;\n children: ReactNode;\n}) {\n return (\n <ActionsContext.Provider value={actions}>{children}</ActionsContext.Provider>\n );\n}\n","\"use client\";\n\nimport {\n createContext,\n useContext,\n useState,\n useCallback,\n type ReactNode,\n} from \"react\";\n\ntype Phase = \"idle\" | \"closing\" | \"closed\" | \"opening\";\n\ninterface SplashContextValue {\n phase: Phase;\n navigateWithSplash: (url: string) => void;\n openSplash: () => void;\n}\n\nconst SplashContext = createContext<SplashContextValue>({\n phase: \"idle\",\n navigateWithSplash: () => {},\n openSplash: () => {},\n});\n\nexport function useSplash() {\n return useContext(SplashContext);\n}\n\nexport function SplashProvider({\n children,\n navigate,\n}: {\n children: ReactNode;\n navigate: (url: string) => void;\n}) {\n const [phase, setPhase] = useState<Phase>(\"idle\");\n\n const navigateWithSplash = useCallback(\n (url: string) => {\n if (phase !== \"idle\") return;\n setPhase(\"closing\");\n\n setTimeout(() => {\n setPhase(\"closed\");\n navigate(url);\n }, 700);\n },\n [phase, navigate]\n );\n\n const openSplash = useCallback(() => {\n if (phase !== \"closed\") return;\n requestAnimationFrame(() => {\n setPhase(\"opening\");\n setTimeout(() => setPhase(\"idle\"), 900);\n });\n }, [phase]);\n\n return (\n <SplashContext.Provider value={{ phase, navigateWithSplash, openSplash }}>\n {children}\n </SplashContext.Provider>\n );\n}\n","\"use client\";\n\nimport {\n createContext,\n useContext,\n type ComponentType,\n type ReactNode,\n} from \"react\";\nimport type { ContentEditorProps } from \"./content/ContentEditor.js\";\nimport type { ContentListProps } from \"./content/ContentList.js\";\n\nexport interface GEComponentOverrides {\n DashboardNavbar?: ComponentType<any>;\n DashboardLayout?: ComponentType<{ children: ReactNode }>;\n EditorToolbar?: ComponentType<{ editor: any }>;\n ContentEditor?: ComponentType<ContentEditorProps>;\n ContentList?: ComponentType<ContentListProps>;\n MediaGrid?: ComponentType<any>;\n UserTable?: ComponentType<any>;\n LoginPage?: ComponentType<any>;\n StatCard?: ComponentType<any>;\n}\n\nconst RegistryContext = createContext<GEComponentOverrides>({});\n\nexport function ComponentRegistryProvider({\n overrides,\n children,\n}: {\n overrides: GEComponentOverrides;\n children: ReactNode;\n}) {\n return (\n <RegistryContext.Provider value={overrides}>\n {children}\n </RegistryContext.Provider>\n );\n}\n\nexport function useRegisteredComponent<K extends keyof GEComponentOverrides>(\n name: K,\n fallback: NonNullable<GEComponentOverrides[K]>\n): NonNullable<GEComponentOverrides[K]> {\n const registry = useContext(RegistryContext);\n return (registry[name] as NonNullable<GEComponentOverrides[K]>) ?? fallback;\n}\n\nexport function useComponentRegistry(): GEComponentOverrides {\n return useContext(RegistryContext);\n}\n"],"mappings":"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","names":["createContext","useContext","jsx","createContext","useContext","jsx","createContext","useContext","jsx"]}
|