@interware/content-generator 0.4.4 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -1
- package/dist/_chunks/{App-CfwvfmvL.js → App-CJxSC8yt.js} +32 -720
- package/dist/_chunks/{App-BQr5_g5u.mjs → App-qbgUXlOZ.mjs} +38 -726
- package/dist/_chunks/ImageStudioTabs-BLAH3KYv.mjs +5270 -0
- package/dist/_chunks/ImageStudioTabs-DtusqpQO.js +5271 -0
- package/dist/_chunks/PluginProviders-D79TeGSE.js +34 -0
- package/dist/_chunks/PluginProviders-DWMpcAIh.mjs +35 -0
- package/dist/_chunks/Settings-BQXxV3LO.js +242 -0
- package/dist/_chunks/Settings-o2GngLaW.mjs +242 -0
- package/dist/_chunks/StudioApp-BaySMwrk.js +18 -0
- package/dist/_chunks/StudioApp-C_znlQRo.mjs +18 -0
- package/dist/_chunks/{getTranslation-B9ND5RaH.mjs → getTranslation-B6Bsu-uq.mjs} +1 -1
- package/dist/_chunks/{getTranslation-DNhP1INv.js → getTranslation-BRVMWSf8.js} +1 -1
- package/dist/_chunks/{index-DGPqyrzz.js → index-BKhe-Jyx.js} +24 -6
- package/dist/_chunks/{index-Dyq8dxMX.mjs → index-BKigRXm3.mjs} +25 -7
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/admin/src/components/PluginIcon.d.ts +4 -2
- package/dist/admin/src/components/PluginProviders.d.ts +12 -0
- package/dist/admin/src/components/generate-video/Form.d.ts +1 -1
- package/dist/admin/src/components/settings/Form.d.ts +4 -5
- package/dist/admin/src/components/settings/VertexSettings.d.ts +18 -0
- package/dist/admin/src/containers/settings/index.d.ts +7 -7
- package/dist/admin/src/features/background-removal/RemoveBackgroundButton.d.ts +7 -0
- package/dist/admin/src/features/background-removal/RemoveBackgroundDialog.d.ts +15 -0
- package/dist/admin/src/features/background-removal/colorKey.d.ts +29 -0
- package/dist/admin/src/features/background-removal/imageCanvas.d.ts +20 -0
- package/dist/admin/src/features/background-removal/mask.d.ts +10 -0
- package/dist/admin/src/features/background-removal/runtime.d.ts +31 -0
- package/dist/admin/src/features/generator/EditEmpty.d.ts +13 -0
- package/dist/admin/src/features/generator/GeneratorTab.d.ts +7 -0
- package/dist/admin/src/features/generator/GroundingSources.d.ts +9 -0
- package/dist/admin/src/features/generator/ModeSwitch.d.ts +6 -0
- package/dist/admin/src/features/generator/PromptComposer.d.ts +25 -0
- package/dist/admin/src/features/generator/ReferencePicker.d.ts +26 -0
- package/dist/admin/src/features/generator/VersionHistory.d.ts +13 -0
- package/dist/admin/src/features/generator/generatorApi.d.ts +71 -0
- package/dist/admin/src/features/generator/model.d.ts +60 -0
- package/dist/admin/src/features/generator/useGeneratorApi.d.ts +21 -0
- package/dist/admin/src/features/image-studio/ImageStudioTabs.d.ts +26 -0
- package/dist/admin/src/features/image-studio/SegmentedSwitch.d.ts +18 -0
- package/dist/admin/src/features/image-studio/checkerboard.d.ts +5 -0
- package/dist/admin/src/features/library/FileCard.d.ts +17 -0
- package/dist/admin/src/features/library/FolderTree.d.ts +14 -0
- package/dist/admin/src/features/library/LibraryDialogs.d.ts +46 -0
- package/dist/admin/src/features/library/LibraryImagePicker.d.ts +15 -0
- package/dist/admin/src/features/library/LibraryTab.d.ts +2 -0
- package/dist/admin/src/features/library/SaveToLibraryDialog.d.ts +15 -0
- package/dist/admin/src/features/library/model.d.ts +40 -0
- package/dist/admin/src/features/library/studioRoot.d.ts +11 -0
- package/dist/admin/src/features/library/uploadApi.d.ts +77 -0
- package/dist/admin/src/features/library/useLibraryApi.d.ts +34 -0
- package/dist/admin/src/features/templates/editor/ColorField.d.ts +11 -0
- package/dist/admin/src/features/templates/editor/Editor.d.ts +19 -0
- package/dist/admin/src/features/templates/editor/EditorBar.d.ts +9 -0
- package/dist/admin/src/features/templates/editor/EditorMenuBar.d.ts +58 -0
- package/dist/admin/src/features/templates/editor/EditorToolbar.d.ts +20 -0
- package/dist/admin/src/features/templates/editor/ElementPalette.d.ts +10 -0
- package/dist/admin/src/features/templates/editor/FloatingPanel.d.ts +17 -0
- package/dist/admin/src/features/templates/editor/FullscreenView.d.ts +11 -0
- package/dist/admin/src/features/templates/editor/IconPicker.d.ts +9 -0
- package/dist/admin/src/features/templates/editor/Inspector.d.ts +17 -0
- package/dist/admin/src/features/templates/editor/LayersPanel.d.ts +12 -0
- package/dist/admin/src/features/templates/editor/Precision.d.ts +23 -0
- package/dist/admin/src/features/templates/editor/RangeField.d.ts +12 -0
- package/dist/admin/src/features/templates/editor/SaveTemplateDialog.d.ts +14 -0
- package/dist/admin/src/features/templates/editor/Stage.d.ts +29 -0
- package/dist/admin/src/features/templates/editor/TemplateFolderSelect.d.ts +9 -0
- package/dist/admin/src/features/templates/editor/TemplatePicker.d.ts +23 -0
- package/dist/admin/src/features/templates/editor/TemplatesTab.d.ts +5 -0
- package/dist/admin/src/features/templates/editor/TypographyControls.d.ts +24 -0
- package/dist/admin/src/features/templates/editor/icons.d.ts +7 -0
- package/dist/admin/src/features/templates/editor/overlays.d.ts +20 -0
- package/dist/admin/src/features/templates/editor/useCanvasNav.d.ts +25 -0
- package/dist/admin/src/features/templates/editor/useFitScale.d.ts +3 -0
- package/dist/admin/src/features/templates/export/fontEmbed.d.ts +22 -0
- package/dist/admin/src/features/templates/export/imageSource.d.ts +21 -0
- package/dist/admin/src/features/templates/export/pdf.d.ts +6 -0
- package/dist/admin/src/features/templates/export/render.d.ts +22 -0
- package/dist/admin/src/features/templates/export/useEditorIO.d.ts +18 -0
- package/dist/admin/src/features/templates/fonts/catalog.d.ts +47 -0
- package/dist/admin/src/features/templates/fonts/customFonts.d.ts +19 -0
- package/dist/admin/src/features/templates/fonts/useCustomFonts.d.ts +9 -0
- package/dist/admin/src/features/templates/fonts/useFonts.d.ts +2 -0
- package/dist/admin/src/features/templates/model/drag.d.ts +10 -0
- package/dist/admin/src/features/templates/model/editorReducer.d.ts +58 -0
- package/dist/admin/src/features/templates/model/layers.d.ts +42 -0
- package/dist/admin/src/features/templates/model/palette.d.ts +38 -0
- package/dist/admin/src/features/templates/model/presets.d.ts +17 -0
- package/dist/admin/src/features/templates/model/shortcuts.d.ts +19 -0
- package/dist/admin/src/features/templates/model/snap.d.ts +24 -0
- package/dist/admin/src/features/templates/model/templates.d.ts +8 -0
- package/dist/admin/src/features/templates/model/types.d.ts +154 -0
- package/dist/admin/src/features/templates/model/viewport.d.ts +36 -0
- package/dist/admin/src/features/templates/render/IWLogo.d.ts +7 -0
- package/dist/admin/src/features/templates/render/LayerCanvas.d.ts +13 -0
- package/dist/admin/src/features/templates/render/fonts.d.ts +5 -0
- package/dist/admin/src/features/templates/render/icons.d.ts +10 -0
- package/dist/admin/src/features/templates/render/renderLayer.d.ts +9 -0
- package/dist/admin/src/features/templates/store/persist.d.ts +41 -0
- package/dist/admin/src/features/templates/store/templatesApi.d.ts +49 -0
- package/dist/admin/src/features/templates/store/useMyTemplates.d.ts +19 -0
- package/dist/admin/src/features/templates/store/useTemplateSaving.d.ts +14 -0
- package/dist/admin/src/features/templates/store/useTemplatesApi.d.ts +23 -0
- package/dist/admin/src/hooks/useAdminTheme.d.ts +8 -0
- package/dist/admin/src/hooks/useThemeColors.d.ts +9 -0
- package/dist/admin/src/lib/dataUrl.d.ts +6 -0
- package/dist/admin/src/lib/promptRules.d.ts +23 -0
- package/dist/admin/src/lib/use-cases/articles/index.d.ts +12 -1
- package/dist/admin/src/lib/use-cases/categories/index.d.ts +12 -1
- package/dist/admin/src/lib/use-cases/facebook/index.d.ts +1 -1
- package/dist/admin/src/lib/use-cases/generate-content/index.d.ts +2 -2
- package/dist/admin/src/lib/use-cases/images/index.d.ts +1 -4
- package/dist/admin/src/lib/use-cases/linkedin/index.d.ts +1 -1
- package/dist/admin/src/lib/use-cases/settings/index.d.ts +14 -2
- package/dist/admin/src/lib/use-cases/users/index.d.ts +12 -1
- package/dist/admin/src/pages/ImageStudio.d.ts +3 -0
- package/dist/admin/src/pages/StudioApp.d.ts +3 -0
- package/dist/admin/src/pluginId.d.ts +6 -0
- package/dist/admin/src/test-setup.d.ts +1 -0
- package/dist/admin/src/test-utils.d.ts +5 -0
- package/dist/server/index.js +2494 -1279
- package/dist/server/index.mjs +2501 -1285
- package/dist/server/src/bootstrap.d.ts +1 -1
- package/dist/server/src/content-types/index.d.ts +66 -1
- package/dist/server/src/content-types/template/index.d.ts +65 -0
- package/dist/server/src/content-types/template/schema.d.ts +69 -0
- package/dist/server/src/controllers/config.d.ts +10 -0
- package/dist/server/src/controllers/controller.d.ts +0 -5
- package/dist/server/src/controllers/image-studio.d.ts +23 -0
- package/dist/server/src/controllers/index.d.ts +129 -5
- package/dist/server/src/controllers/templates.d.ts +26 -0
- package/dist/server/src/image-studio/geminiConfig.d.ts +40 -0
- package/dist/server/src/image-studio/models.d.ts +39 -0
- package/dist/server/src/image-studio/prompt.d.ts +7 -0
- package/dist/server/src/image-studio/validate.d.ts +41 -0
- package/dist/server/src/index.d.ts +233 -75
- package/dist/server/src/routes/admin.d.ts +6 -2
- package/dist/server/src/routes/content-api.d.ts +4 -9
- package/dist/server/src/routes/index.d.ts +7 -11
- package/dist/server/src/routes/policies.d.ts +14 -0
- package/dist/server/src/services/image-studio.d.ts +66 -0
- package/dist/server/src/services/index.d.ts +30 -57
- package/dist/server/src/services/service.d.ts +10 -57
- package/dist/server/src/services/templates.d.ts +81 -0
- package/dist/server/src/templates/folders.d.ts +14 -0
- package/dist/server/src/templates/validate.d.ts +23 -0
- package/dist/server/src/utils/folders.d.ts +15 -0
- package/dist/server/src/utils/geminiClient.d.ts +24 -0
- package/dist/server/src/utils/secrets.d.ts +9 -0
- package/dist/server/src/utils/serviceAccount.d.ts +29 -0
- package/package.json +23 -10
- package/static/background-worker.d.mts +15 -0
- package/static/background-worker.mjs +87 -0
- package/dist/_chunks/Settings-BrqTzJp-.js +0 -262
- package/dist/_chunks/Settings-CdZnYLLK.mjs +0 -244
- package/dist/admin/src/components/Navigation.d.ts +0 -2
- package/dist/admin/src/components/generate-image/Form.d.ts +0 -15
- package/dist/admin/src/components/generate-images/Image.d.ts +0 -5
- package/dist/admin/src/components/generate-images/Images.d.ts +0 -2
- package/dist/admin/src/components/generate-images/Modal.d.ts +0 -9
- package/dist/admin/src/containers/generate-image/index.d.ts +0 -2
- package/dist/admin/src/containers/generate-images/index.d.ts +0 -2
- package/dist/admin/src/hooks/generate-images/useImages.d.ts +0 -12
- package/dist/admin/src/pages/GenerateImage.d.ts +0 -2
- package/dist/admin/src/pages/GenerateImages.d.ts +0 -2
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Modelo de capas del editor de plantillas (ADR-004). Es el contrato que comparten el lienzo, la
|
|
3
|
+
* exportación y, desde S4.6, la persistencia en el CMS.
|
|
4
|
+
*/
|
|
5
|
+
export type LayerType = 'text' | 'list' | 'quote' | 'rect' | 'shape' | 'badge' | 'logo' | 'image' | 'icon' | 'avatar' | 'qr';
|
|
6
|
+
/** Roles anteriores a S4.16; hoy `font` es el id del catálogo (`fonts/catalog.ts`) y estos se leen como Texta e Inter. */
|
|
7
|
+
export type FontRole = 'display' | 'body';
|
|
8
|
+
export type ShapeKind = 'rect' | 'rounded' | 'circle' | 'triangle' | 'star' | 'line' | 'arrow' | 'hexagon';
|
|
9
|
+
export interface Shadow {
|
|
10
|
+
x: number;
|
|
11
|
+
y: number;
|
|
12
|
+
blur: number;
|
|
13
|
+
color: string;
|
|
14
|
+
opacity: number;
|
|
15
|
+
}
|
|
16
|
+
interface LayerBase {
|
|
17
|
+
id: string;
|
|
18
|
+
type: LayerType;
|
|
19
|
+
label: string;
|
|
20
|
+
x: number;
|
|
21
|
+
y: number;
|
|
22
|
+
opacity?: number;
|
|
23
|
+
rotate?: number;
|
|
24
|
+
hidden?: boolean;
|
|
25
|
+
locked?: boolean;
|
|
26
|
+
userAdded?: boolean;
|
|
27
|
+
}
|
|
28
|
+
interface TypographyProps {
|
|
29
|
+
fontSize: number;
|
|
30
|
+
fontWeight: number;
|
|
31
|
+
color: string;
|
|
32
|
+
/** Id del catálogo de tipografías, o un rol anterior (`display`, `body`). */
|
|
33
|
+
font?: string;
|
|
34
|
+
fontStyle?: 'normal' | 'italic';
|
|
35
|
+
lineHeight?: number;
|
|
36
|
+
letterSpacing?: string;
|
|
37
|
+
textTransform?: 'none' | 'uppercase';
|
|
38
|
+
}
|
|
39
|
+
export interface TextLayer extends LayerBase, TypographyProps {
|
|
40
|
+
type: 'text';
|
|
41
|
+
w: number;
|
|
42
|
+
content: string;
|
|
43
|
+
textAlign?: 'left' | 'center' | 'right';
|
|
44
|
+
}
|
|
45
|
+
export interface ListLayer extends LayerBase, TypographyProps {
|
|
46
|
+
type: 'list';
|
|
47
|
+
w: number;
|
|
48
|
+
items: string[];
|
|
49
|
+
ordered: boolean;
|
|
50
|
+
}
|
|
51
|
+
export interface QuoteLayer extends LayerBase, TypographyProps {
|
|
52
|
+
type: 'quote';
|
|
53
|
+
w: number;
|
|
54
|
+
content: string;
|
|
55
|
+
accentColor: string;
|
|
56
|
+
}
|
|
57
|
+
export interface RectLayer extends LayerBase {
|
|
58
|
+
type: 'rect';
|
|
59
|
+
w: number;
|
|
60
|
+
h: number;
|
|
61
|
+
color: string;
|
|
62
|
+
gradient?: string;
|
|
63
|
+
}
|
|
64
|
+
export interface ShapeLayer extends LayerBase {
|
|
65
|
+
type: 'shape';
|
|
66
|
+
w: number;
|
|
67
|
+
h: number;
|
|
68
|
+
shape: ShapeKind;
|
|
69
|
+
color: string;
|
|
70
|
+
color2?: string;
|
|
71
|
+
fillType?: 'solid' | 'linear' | 'radial';
|
|
72
|
+
gradAngle?: number;
|
|
73
|
+
radius?: number;
|
|
74
|
+
strokeWidth?: number;
|
|
75
|
+
strokeColor?: string;
|
|
76
|
+
shadow?: Shadow | null;
|
|
77
|
+
}
|
|
78
|
+
export interface BadgeLayer extends LayerBase, TypographyProps {
|
|
79
|
+
type: 'badge';
|
|
80
|
+
content: string;
|
|
81
|
+
paddingX: number;
|
|
82
|
+
paddingY: number;
|
|
83
|
+
bg: string;
|
|
84
|
+
}
|
|
85
|
+
export interface LogoLayer extends LayerBase {
|
|
86
|
+
type: 'logo';
|
|
87
|
+
color: string;
|
|
88
|
+
logoScale: number;
|
|
89
|
+
}
|
|
90
|
+
export interface ImageLayer extends LayerBase {
|
|
91
|
+
type: 'image';
|
|
92
|
+
w: number;
|
|
93
|
+
h: number;
|
|
94
|
+
/** URL de origen (Media Library o data URL de un archivo subido). */
|
|
95
|
+
src: string;
|
|
96
|
+
fileId?: number;
|
|
97
|
+
fit?: 'cover' | 'contain';
|
|
98
|
+
radius?: number;
|
|
99
|
+
bgMode?: boolean;
|
|
100
|
+
/** Imagen antes de quitarle el fondo, para «Restaurar original». */
|
|
101
|
+
srcOriginal?: string;
|
|
102
|
+
/** Geometría previa a «usar como fondo», para poder liberarla. */
|
|
103
|
+
prev?: {
|
|
104
|
+
x: number;
|
|
105
|
+
y: number;
|
|
106
|
+
w: number;
|
|
107
|
+
h: number;
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
export interface IconLayer extends LayerBase {
|
|
111
|
+
type: 'icon';
|
|
112
|
+
icon: string;
|
|
113
|
+
size: number;
|
|
114
|
+
color: string;
|
|
115
|
+
}
|
|
116
|
+
export interface AvatarLayer extends LayerBase {
|
|
117
|
+
type: 'avatar';
|
|
118
|
+
size: number;
|
|
119
|
+
bg: string;
|
|
120
|
+
initials: string;
|
|
121
|
+
border: boolean;
|
|
122
|
+
borderWidth: number;
|
|
123
|
+
borderColor: string;
|
|
124
|
+
src?: string;
|
|
125
|
+
}
|
|
126
|
+
export interface QrLayer extends LayerBase {
|
|
127
|
+
type: 'qr';
|
|
128
|
+
size: number;
|
|
129
|
+
color: string;
|
|
130
|
+
bg: string;
|
|
131
|
+
url: string;
|
|
132
|
+
}
|
|
133
|
+
export type Layer = TextLayer | ListLayer | QuoteLayer | RectLayer | ShapeLayer | BadgeLayer | LogoLayer | ImageLayer | IconLayer | AvatarLayer | QrLayer;
|
|
134
|
+
/** Parche aplicable a cualquier capa: el editor sabe qué campos tiene cada tipo. */
|
|
135
|
+
export type LayerPatch = Partial<Omit<Layer, 'id' | 'type'>> & Record<string, unknown>;
|
|
136
|
+
export interface Template {
|
|
137
|
+
id: string;
|
|
138
|
+
name: string;
|
|
139
|
+
category: string;
|
|
140
|
+
tag: string;
|
|
141
|
+
width: number;
|
|
142
|
+
height: number;
|
|
143
|
+
background: string;
|
|
144
|
+
safeMargin: number;
|
|
145
|
+
gridUnit: number;
|
|
146
|
+
layers: Layer[];
|
|
147
|
+
/** Solo en «Mis templates» (S4.6): id en el CMS, carpeta y plantilla base de origen. */
|
|
148
|
+
documentId?: string;
|
|
149
|
+
folder?: string;
|
|
150
|
+
baseId?: string;
|
|
151
|
+
/** Versión editada de esa plantilla base, guardada en el CMS para todos (S4.15). */
|
|
152
|
+
replacesBase?: string;
|
|
153
|
+
}
|
|
154
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vista del lienzo (diseño S4.9, D9): escala y desplazamiento de la esquina superior izquierda de la
|
|
3
|
+
* pieza dentro del viewport, en píxeles de pantalla. Un punto `c` del lienzo se ve en
|
|
4
|
+
* `pan + c * scale`.
|
|
5
|
+
*/
|
|
6
|
+
export interface View {
|
|
7
|
+
scale: number;
|
|
8
|
+
pan: {
|
|
9
|
+
x: number;
|
|
10
|
+
y: number;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export declare const MIN_ZOOM = 0.05;
|
|
14
|
+
export declare const MAX_ZOOM = 4;
|
|
15
|
+
export declare const clampZoom: (z: number) => number;
|
|
16
|
+
/** Zoom a `nextScale` dejando fijo el punto del lienzo que está bajo `cursor` (pellizco, ⌘ + rueda). */
|
|
17
|
+
export declare const zoomAt: (view: View, cursor: {
|
|
18
|
+
x: number;
|
|
19
|
+
y: number;
|
|
20
|
+
}, nextScale: number) => View;
|
|
21
|
+
/** Desplaza la vista (dos dedos, arrastre del fondo). */
|
|
22
|
+
export declare const panBy: (view: View, dx: number, dy: number) => View;
|
|
23
|
+
/**
|
|
24
|
+
* «Ajustar»: la escala que hace caber la pieza en el espacio libre entre los paneles flotantes
|
|
25
|
+
* (nunca más de 100 %) y el desplazamiento que la centra ahí (diseño S4.9, D8).
|
|
26
|
+
*/
|
|
27
|
+
export declare const fitView: (viewport: {
|
|
28
|
+
w: number;
|
|
29
|
+
h: number;
|
|
30
|
+
}, insets: {
|
|
31
|
+
left: number;
|
|
32
|
+
right: number;
|
|
33
|
+
}, piece: {
|
|
34
|
+
w: number;
|
|
35
|
+
h: number;
|
|
36
|
+
}, padding?: number, rulers?: number) => View;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
interface IWLogoProps {
|
|
2
|
+
color: string;
|
|
3
|
+
scale?: number;
|
|
4
|
+
}
|
|
5
|
+
/** Logotipo InterWare: punto rojo, «i», «w» y la palabra InterWare. 170 × 36 a escala 1. */
|
|
6
|
+
export declare const IWLogo: ({ color, scale }: IWLogoProps) => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import type { Layer, Template } from '../model/types';
|
|
3
|
+
interface LayerCanvasProps {
|
|
4
|
+
template: Pick<Template, 'width' | 'height' | 'background'>;
|
|
5
|
+
layers: Layer[];
|
|
6
|
+
/** Escala de presentación; la exportación usa 1. */
|
|
7
|
+
scale?: number;
|
|
8
|
+
}
|
|
9
|
+
/** Imágenes usadas como fondo primero, luego el resto en su orden; las ocultas no se pintan. */
|
|
10
|
+
export declare const visibleLayers: (layers: Layer[]) => Layer[];
|
|
11
|
+
/** Pieza completa: fondo de la plantilla y sus capas, escalada para presentación. */
|
|
12
|
+
export declare const LayerCanvas: import("react").ForwardRefExoticComponent<LayerCanvasProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Declara en el documento del panel las fuentes del catálogo (S4.16): las del CMS por su ruta y las
|
|
3
|
+
* subidas como data URL. Si un archivo falta, el navegador cae a la fuente de respaldo.
|
|
4
|
+
*/
|
|
5
|
+
export declare const BrandFonts: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ComponentType, SVGProps } from 'react';
|
|
2
|
+
import type { ICON_LIBRARY } from '../model/presets';
|
|
3
|
+
type IconComponent = ComponentType<SVGProps<SVGSVGElement>>;
|
|
4
|
+
/**
|
|
5
|
+
* Íconos de @strapi/icons que pueden ir dentro de una pieza (lista en model/presets). Solo los que
|
|
6
|
+
* existen también en la versión que resuelve el CMS (2.0.0-rc.18 en web-cms): `Graph` y `TrendUp`
|
|
7
|
+
* no están ahí y rompen el panel.
|
|
8
|
+
*/
|
|
9
|
+
export declare const CONTENT_ICONS: Record<(typeof ICON_LIBRARY)[number], IconComponent>;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import type { Layer } from '../model/types';
|
|
3
|
+
/**
|
|
4
|
+
* Una capa en coordenadas del lienzo (sin escala). Es el único render de capas: lo usan el editor,
|
|
5
|
+
* las miniaturas y la exportación, para que lo que se ve sea lo que se descarga.
|
|
6
|
+
*/
|
|
7
|
+
export declare const LayerView: import("react").MemoExoticComponent<({ layer }: {
|
|
8
|
+
layer: Layer;
|
|
9
|
+
}) => import("react/jsx-runtime").JSX.Element>;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { Layer, Template } from '../model/types';
|
|
2
|
+
import type { StoredTemplate, TemplateInput } from './templatesApi';
|
|
3
|
+
/** Sube un blob a la carpeta «Templates» de la Media Library y devuelve su id y URL. */
|
|
4
|
+
export type Upload = (blob: Blob, name: string) => Promise<{
|
|
5
|
+
id: number;
|
|
6
|
+
url: string;
|
|
7
|
+
}>;
|
|
8
|
+
/** Solo para pruebas. */
|
|
9
|
+
export declare const forgetUploads: () => void;
|
|
10
|
+
/**
|
|
11
|
+
* Template del editor → contrato del servidor (diseño S4.6, D6). Cada imagen en data URL se sube una
|
|
12
|
+
* sola vez a la Media Library y se reemplaza por su URL y `fileId`; `srcOriginal` se descarta
|
|
13
|
+
* (la imagen previa a quitar el fondo no se conserva). ADR-004: nada de data URLs en el template.
|
|
14
|
+
*/
|
|
15
|
+
export declare const toStored: (template: Template, { name, folder }: {
|
|
16
|
+
name: string;
|
|
17
|
+
folder: string;
|
|
18
|
+
}, upload: Upload) => Promise<TemplateInput>;
|
|
19
|
+
/**
|
|
20
|
+
* Contrato del servidor → capas del editor (diseño S4.6, D7): las imágenes remotas pasan a data URL
|
|
21
|
+
* para que la exportación no contamine el lienzo. Las que fallan quedan con su URL y se cuentan.
|
|
22
|
+
*/
|
|
23
|
+
export declare const toEditable: (layers: Layer[], toDataUrl: (url: string) => Promise<string>) => Promise<{
|
|
24
|
+
layers: Layer[];
|
|
25
|
+
failed: number;
|
|
26
|
+
}>;
|
|
27
|
+
/** «16:9», «4:5»… o «~1.9:1» si la proporción no es simple. */
|
|
28
|
+
export declare const ratioTag: (w: number, h: number) => string;
|
|
29
|
+
export declare const fromStored: (t: StoredTemplate) => Template;
|
|
30
|
+
/**
|
|
31
|
+
* Plantillas base con sus versiones editadas (S4.15): donde hay una editada se usa esa, con la
|
|
32
|
+
* categoría de la base; las demás quedan como en el código.
|
|
33
|
+
*/
|
|
34
|
+
export declare const mergeBases: (bases: Template[], edited: StoredTemplate[]) => Template[];
|
|
35
|
+
/** Tamaños del prototipo para «Crear nuevo lienzo» (diseño S4.6, D9). */
|
|
36
|
+
export declare const SIZE_PRESETS: {
|
|
37
|
+
name: string;
|
|
38
|
+
w: number;
|
|
39
|
+
h: number;
|
|
40
|
+
}[];
|
|
41
|
+
export declare const blankTemplate: (width: number, height: number) => Template;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { Layer } from '../model/types';
|
|
2
|
+
export interface TemplateInput {
|
|
3
|
+
name: string;
|
|
4
|
+
folder: string;
|
|
5
|
+
width: number;
|
|
6
|
+
height: number;
|
|
7
|
+
background: string;
|
|
8
|
+
safeMargin: number;
|
|
9
|
+
gridUnit: number;
|
|
10
|
+
layers: Layer[];
|
|
11
|
+
baseId?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface StoredTemplate extends TemplateInput {
|
|
14
|
+
documentId: string;
|
|
15
|
+
updatedAt: string;
|
|
16
|
+
/** Versión editada de esa plantilla base (S4.15). */
|
|
17
|
+
replacesBase?: string;
|
|
18
|
+
}
|
|
19
|
+
type Client = {
|
|
20
|
+
get: (url: string) => Promise<{
|
|
21
|
+
data: unknown;
|
|
22
|
+
}>;
|
|
23
|
+
post: (url: string, body: unknown) => Promise<{
|
|
24
|
+
data: unknown;
|
|
25
|
+
}>;
|
|
26
|
+
put: (url: string, body: unknown) => Promise<{
|
|
27
|
+
data: unknown;
|
|
28
|
+
}>;
|
|
29
|
+
del: (url: string) => Promise<{
|
|
30
|
+
data: unknown;
|
|
31
|
+
}>;
|
|
32
|
+
};
|
|
33
|
+
/** Cliente de las rutas de «Mis templates» (diseño S4.6). */
|
|
34
|
+
export declare const createTemplatesApi: (c: Client) => {
|
|
35
|
+
list: () => Promise<StoredTemplate[]>;
|
|
36
|
+
create: (t: TemplateInput) => Promise<StoredTemplate>;
|
|
37
|
+
update: (documentId: string, patch: Partial<TemplateInput>) => Promise<StoredTemplate>;
|
|
38
|
+
remove: (documentId: string) => Promise<void>;
|
|
39
|
+
/** Guarda la versión editada de una base; la crea la primera vez (S4.15). */
|
|
40
|
+
saveBase: (baseId: string, t: TemplateInput) => Promise<StoredTemplate>;
|
|
41
|
+
/** Vuelve a la versión de InterWare. */
|
|
42
|
+
restoreBase: (baseId: string) => Promise<void>;
|
|
43
|
+
folders: () => Promise<string[]>;
|
|
44
|
+
createFolder: (path: string) => Promise<string[]>;
|
|
45
|
+
renameFolder: (from: string, to: string) => Promise<string[]>;
|
|
46
|
+
deleteFolder: (path: string) => Promise<string[]>;
|
|
47
|
+
};
|
|
48
|
+
export type TemplatesApi = ReturnType<typeof createTemplatesApi>;
|
|
49
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Template } from '../model/types';
|
|
2
|
+
import type { StoredTemplate } from './templatesApi';
|
|
3
|
+
/** Estado de «Mis templates» y sus carpetas con las operaciones del selector (diseño S4.6). */
|
|
4
|
+
export declare const useMyTemplates: () => {
|
|
5
|
+
templates: StoredTemplate[];
|
|
6
|
+
editedBases: StoredTemplate[];
|
|
7
|
+
folders: string[];
|
|
8
|
+
loading: boolean;
|
|
9
|
+
reload: () => Promise<void>;
|
|
10
|
+
rename: (t: Template, name: string) => Promise<void>;
|
|
11
|
+
/** Una base se duplica en la raíz; un template propio, en su misma carpeta. */
|
|
12
|
+
duplicate: (t: Template) => Promise<void>;
|
|
13
|
+
move: (t: Template, folder: string) => Promise<void>;
|
|
14
|
+
remove: (t: Template) => Promise<void>;
|
|
15
|
+
restoreBase: (t: Template) => Promise<void>;
|
|
16
|
+
createFolder: (parent: string, name: string) => Promise<void>;
|
|
17
|
+
renameFolder: (path: string, name: string) => Promise<void>;
|
|
18
|
+
deleteFolder: (path: string) => Promise<void>;
|
|
19
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Template } from '../model/types';
|
|
2
|
+
/**
|
|
3
|
+
* Guardar desde el editor (diseño S4.6, D8): crear un template nuevo o actualizar uno propio. Sube
|
|
4
|
+
* antes las imágenes en data URL y notifica el resultado; en error devuelve `null`.
|
|
5
|
+
*/
|
|
6
|
+
export declare const useTemplateSaving: () => {
|
|
7
|
+
saveNew: (template: Template, target: {
|
|
8
|
+
name: string;
|
|
9
|
+
folder: string;
|
|
10
|
+
}) => Promise<Template | null>;
|
|
11
|
+
saveExisting: (template: Template) => Promise<Template | null>;
|
|
12
|
+
saveBase: (template: Template) => Promise<Template | null>;
|
|
13
|
+
folders: () => Promise<string[]>;
|
|
14
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Upload } from './persist';
|
|
2
|
+
/**
|
|
3
|
+
* Cliente de «Mis templates» conectado al panel, más la subida de imágenes a la carpeta «Templates»
|
|
4
|
+
* (diseño S4.6, D6). Como la biblioteca tiene raíz en «Generated», queda en «Generated/Templates»
|
|
5
|
+
* (S4.11). La carpeta se busca o se crea una vez por sesión del hook.
|
|
6
|
+
*/
|
|
7
|
+
export declare const useTemplatesApi: () => {
|
|
8
|
+
api: {
|
|
9
|
+
list: () => Promise<import("./templatesApi").StoredTemplate[]>;
|
|
10
|
+
create: (t: import("./templatesApi").TemplateInput) => Promise<import("./templatesApi").StoredTemplate>;
|
|
11
|
+
update: (documentId: string, patch: Partial<import("./templatesApi").TemplateInput>) => Promise<import("./templatesApi").StoredTemplate>;
|
|
12
|
+
remove: (documentId: string) => Promise<void>;
|
|
13
|
+
saveBase: (baseId: string, t: import("./templatesApi").TemplateInput) => Promise<import("./templatesApi").StoredTemplate>;
|
|
14
|
+
restoreBase: (baseId: string) => Promise<void>;
|
|
15
|
+
folders: () => Promise<string[]>;
|
|
16
|
+
createFolder: (path: string) => Promise<string[]>;
|
|
17
|
+
renameFolder: (from: string, to: string) => Promise<string[]>;
|
|
18
|
+
deleteFolder: (path: string) => Promise<string[]>;
|
|
19
|
+
};
|
|
20
|
+
upload: Upload;
|
|
21
|
+
toDataUrl: (url: string) => Promise<string>;
|
|
22
|
+
notify: (type: 'success' | 'danger' | 'warning', message: string) => void;
|
|
23
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
type Scheme = 'light' | 'dark';
|
|
2
|
+
/**
|
|
3
|
+
* Tema del panel de Strapi para el `ThemeProvider` del plugin (S4.10; `PluginProviders`). Sin esto el
|
|
4
|
+
* plugin se pintaba siempre claro aunque el panel estuviera en oscuro. Con «system» sigue los
|
|
5
|
+
* cambios del sistema operativo.
|
|
6
|
+
*/
|
|
7
|
+
export declare const useAdminTheme: () => Scheme;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/// <reference types="custom" />
|
|
2
|
+
import { lightTheme } from '@strapi/design-system';
|
|
3
|
+
type Colors = typeof lightTheme.colors;
|
|
4
|
+
/**
|
|
5
|
+
* Colores del tema activo para los snowflakes que pintan con `style` (bordes, reglas, acentos), así
|
|
6
|
+
* se ven bien en el tema claro y en el oscuro (S4.10). Sin proveedor cae al tema claro.
|
|
7
|
+
*/
|
|
8
|
+
export declare const useThemeColors: () => Colors;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** Bytes de una data URL, en base64 o codificada como texto (el SVG de html-to-image). */
|
|
2
|
+
export declare const dataUrlToBytes: (dataUrl: string) => Uint8Array;
|
|
3
|
+
/**
|
|
4
|
+
* Blob de una data URL sin `fetch`: la CSP del admin limita `connect-src` y no incluye `data:`.
|
|
5
|
+
*/
|
|
6
|
+
export declare const dataUrlToBlob: (dataUrl: string) => Blob;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reglas del prompt del Generador (S4.14, D1). Módulo puro que usan el panel (aviso antes de
|
|
3
|
+
* enviar) y el servidor (la autoridad: responde 400). Sin dependencias para poder compartirse.
|
|
4
|
+
*/
|
|
5
|
+
export declare const PROMPT_MAX = 2000;
|
|
6
|
+
/** Texto limpio: NFC, sin control, invisibles ni etiquetas, con los espacios colapsados. */
|
|
7
|
+
export declare const sanitizePrompt: (text: string) => string;
|
|
8
|
+
export type PromptCheck = {
|
|
9
|
+
ok: true;
|
|
10
|
+
text: string;
|
|
11
|
+
} | {
|
|
12
|
+
ok: false;
|
|
13
|
+
error: string;
|
|
14
|
+
};
|
|
15
|
+
/** Textos de los errores: `label` para el máximo, `empty` para el vacío. */
|
|
16
|
+
export interface PromptLabels {
|
|
17
|
+
label: string;
|
|
18
|
+
empty: string;
|
|
19
|
+
}
|
|
20
|
+
export declare const PROMPT_LABELS: PromptLabels;
|
|
21
|
+
export declare const INSTRUCTION_LABELS: PromptLabels;
|
|
22
|
+
/** Valida después de limpiar. Lo que excede el máximo se rechaza, no se recorta (D2). */
|
|
23
|
+
export declare const checkPrompt: (text: string, { label, empty }?: PromptLabels) => PromptCheck;
|
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
import { FetchOptions } from '@strapi/strapi/admin';
|
|
2
2
|
declare const useArticles: () => {
|
|
3
|
-
getArticles: (config?: FetchOptions) => Promise<import("@strapi/strapi/admin").FetchResponse<
|
|
3
|
+
getArticles: (config?: FetchOptions) => Promise<import("@strapi/strapi/admin").FetchResponse<{
|
|
4
|
+
(url: string, config: FetchOptions & {
|
|
5
|
+
responseType: "blob";
|
|
6
|
+
}): Promise<import("@strapi/strapi/admin").FetchResponse<Blob>>;
|
|
7
|
+
(url: string, config: FetchOptions & {
|
|
8
|
+
responseType: "text";
|
|
9
|
+
}): Promise<import("@strapi/strapi/admin").FetchResponse<string>>;
|
|
10
|
+
(url: string, config: FetchOptions & {
|
|
11
|
+
responseType: "arrayBuffer";
|
|
12
|
+
}): Promise<import("@strapi/strapi/admin").FetchResponse<ArrayBuffer>>;
|
|
13
|
+
<TData = unknown>(url: string, config?: FetchOptions | undefined): Promise<import("@strapi/strapi/admin").FetchResponse<TData>>;
|
|
14
|
+
}>>;
|
|
4
15
|
};
|
|
5
16
|
export { useArticles };
|
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
import { FetchOptions } from '@strapi/strapi/admin';
|
|
2
2
|
declare const useCategories: () => {
|
|
3
|
-
getCategories: (config?: FetchOptions) => Promise<import("@strapi/strapi/admin").FetchResponse<
|
|
3
|
+
getCategories: (config?: FetchOptions) => Promise<import("@strapi/strapi/admin").FetchResponse<{
|
|
4
|
+
(url: string, config: FetchOptions & {
|
|
5
|
+
responseType: "blob";
|
|
6
|
+
}): Promise<import("@strapi/strapi/admin").FetchResponse<Blob>>;
|
|
7
|
+
(url: string, config: FetchOptions & {
|
|
8
|
+
responseType: "text";
|
|
9
|
+
}): Promise<import("@strapi/strapi/admin").FetchResponse<string>>;
|
|
10
|
+
(url: string, config: FetchOptions & {
|
|
11
|
+
responseType: "arrayBuffer";
|
|
12
|
+
}): Promise<import("@strapi/strapi/admin").FetchResponse<ArrayBuffer>>;
|
|
13
|
+
<TData = unknown>(url: string, config?: FetchOptions | undefined): Promise<import("@strapi/strapi/admin").FetchResponse<TData>>;
|
|
14
|
+
}>>;
|
|
4
15
|
};
|
|
5
16
|
export { useCategories };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FetchOptions } from '@strapi/strapi/admin';
|
|
2
2
|
declare const usePublishFacebook: () => {
|
|
3
|
-
publishToFacebook: (data: any, config?: FetchOptions) => Promise<import("@strapi/strapi/admin").FetchResponse<(<TData =
|
|
3
|
+
publishToFacebook: (data: any, config?: FetchOptions) => Promise<import("@strapi/strapi/admin").FetchResponse<(<TData = unknown, TSend = unknown>(url: string, data?: TSend | undefined, config?: FetchOptions | undefined) => Promise<import("@strapi/strapi/admin").FetchResponse<TData>>)>>;
|
|
4
4
|
};
|
|
5
5
|
export { usePublishFacebook };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { FetchOptions } from '@strapi/strapi/admin';
|
|
2
2
|
declare const useGenerateContent: () => {
|
|
3
|
-
generateContent: (data: any, config?: FetchOptions) => Promise<import("@strapi/strapi/admin").FetchResponse<(<TData =
|
|
4
|
-
generateImage: (data: any, config?: FetchOptions) => Promise<import("@strapi/strapi/admin").FetchResponse<(<TData =
|
|
3
|
+
generateContent: (data: any, config?: FetchOptions) => Promise<import("@strapi/strapi/admin").FetchResponse<(<TData = unknown, TSend = unknown>(url: string, data?: TSend | undefined, config?: FetchOptions | undefined) => Promise<import("@strapi/strapi/admin").FetchResponse<TData>>)>>;
|
|
4
|
+
generateImage: (data: any, config?: FetchOptions) => Promise<import("@strapi/strapi/admin").FetchResponse<(<TData = unknown, TSend = unknown>(url: string, data?: TSend | undefined, config?: FetchOptions | undefined) => Promise<import("@strapi/strapi/admin").FetchResponse<TData>>)>>;
|
|
5
5
|
};
|
|
6
6
|
export { useGenerateContent };
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
import { FetchOptions } from '@strapi/strapi/admin';
|
|
2
2
|
declare const useImages: () => {
|
|
3
|
-
|
|
4
|
-
deleteImage: (config: FetchOptions) => Promise<import("@strapi/strapi/admin").FetchResponse<(<TData_1 = any>(url: string, config?: FetchOptions | undefined) => Promise<import("@strapi/strapi/admin").FetchResponse<TData_1>>)>>;
|
|
5
|
-
generateImageWithConfig: (data: any, config?: FetchOptions) => Promise<import("@strapi/strapi/admin").FetchResponse<(<TData_2 = any, TSend = any>(url: string, data?: TSend | undefined, config?: FetchOptions | undefined) => Promise<import("@strapi/strapi/admin").FetchResponse<TData_2>>)>>;
|
|
6
|
-
generateVideoWithScenes: (data: any, config?: FetchOptions) => Promise<import("@strapi/strapi/admin").FetchResponse<(<TData_2 = any, TSend = any>(url: string, data?: TSend | undefined, config?: FetchOptions | undefined) => Promise<import("@strapi/strapi/admin").FetchResponse<TData_2>>)>>;
|
|
3
|
+
generateVideoWithScenes: (data: any, config?: FetchOptions) => Promise<import("@strapi/strapi/admin").FetchResponse<(<TData = unknown, TSend = unknown>(url: string, data?: TSend | undefined, config?: FetchOptions | undefined) => Promise<import("@strapi/strapi/admin").FetchResponse<TData>>)>>;
|
|
7
4
|
};
|
|
8
5
|
export { useImages };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FetchOptions } from '@strapi/strapi/admin';
|
|
2
2
|
declare const usePublishLinkedIn: () => {
|
|
3
|
-
publishToLinkedIn: (data: any, config?: FetchOptions) => Promise<import("@strapi/strapi/admin").FetchResponse<(<TData =
|
|
3
|
+
publishToLinkedIn: (data: any, config?: FetchOptions) => Promise<import("@strapi/strapi/admin").FetchResponse<(<TData = unknown, TSend = unknown>(url: string, data?: TSend | undefined, config?: FetchOptions | undefined) => Promise<import("@strapi/strapi/admin").FetchResponse<TData>>)>>;
|
|
4
4
|
};
|
|
5
5
|
export { usePublishLinkedIn };
|
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
import { FetchOptions } from '@strapi/strapi/admin';
|
|
2
2
|
declare const useSettings: () => {
|
|
3
|
-
getSettings: (config?: FetchOptions) => Promise<import("@strapi/strapi/admin").FetchResponse<
|
|
4
|
-
|
|
3
|
+
getSettings: (config?: FetchOptions) => Promise<import("@strapi/strapi/admin").FetchResponse<{
|
|
4
|
+
(url: string, config: FetchOptions & {
|
|
5
|
+
responseType: "blob";
|
|
6
|
+
}): Promise<import("@strapi/strapi/admin").FetchResponse<Blob>>;
|
|
7
|
+
(url: string, config: FetchOptions & {
|
|
8
|
+
responseType: "text";
|
|
9
|
+
}): Promise<import("@strapi/strapi/admin").FetchResponse<string>>;
|
|
10
|
+
(url: string, config: FetchOptions & {
|
|
11
|
+
responseType: "arrayBuffer";
|
|
12
|
+
}): Promise<import("@strapi/strapi/admin").FetchResponse<ArrayBuffer>>;
|
|
13
|
+
<TData = unknown>(url: string, config?: FetchOptions | undefined): Promise<import("@strapi/strapi/admin").FetchResponse<TData>>;
|
|
14
|
+
}>>;
|
|
15
|
+
setSettings: (data: any, config?: FetchOptions) => Promise<import("@strapi/strapi/admin").FetchResponse<(<TData_1 = unknown, TSend = unknown>(url: string, data?: TSend | undefined, config?: FetchOptions | undefined) => Promise<import("@strapi/strapi/admin").FetchResponse<TData_1>>)>>;
|
|
16
|
+
removeVertex: () => Promise<import("@strapi/strapi/admin").FetchResponse<unknown>>;
|
|
5
17
|
};
|
|
6
18
|
export { useSettings };
|
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
import { FetchOptions } from '@strapi/strapi/admin';
|
|
2
2
|
declare const useUsers: () => {
|
|
3
|
-
getUsers: (config?: FetchOptions) => Promise<import("@strapi/strapi/admin").FetchResponse<
|
|
3
|
+
getUsers: (config?: FetchOptions) => Promise<import("@strapi/strapi/admin").FetchResponse<{
|
|
4
|
+
(url: string, config: FetchOptions & {
|
|
5
|
+
responseType: "blob";
|
|
6
|
+
}): Promise<import("@strapi/strapi/admin").FetchResponse<Blob>>;
|
|
7
|
+
(url: string, config: FetchOptions & {
|
|
8
|
+
responseType: "text";
|
|
9
|
+
}): Promise<import("@strapi/strapi/admin").FetchResponse<string>>;
|
|
10
|
+
(url: string, config: FetchOptions & {
|
|
11
|
+
responseType: "arrayBuffer";
|
|
12
|
+
}): Promise<import("@strapi/strapi/admin").FetchResponse<ArrayBuffer>>;
|
|
13
|
+
<TData = unknown>(url: string, config?: FetchOptions | undefined): Promise<import("@strapi/strapi/admin").FetchResponse<TData>>;
|
|
14
|
+
}>>;
|
|
4
15
|
};
|
|
5
16
|
export { useUsers };
|
|
@@ -1 +1,7 @@
|
|
|
1
1
|
export declare const PLUGIN_ID = "strapi-content-generator-gemini";
|
|
2
|
+
/**
|
|
3
|
+
* Ruta del Estudio de imágenes en el menú principal (S4.10). Es hermana de la del plugin, no
|
|
4
|
+
* anidada: el menú de Strapi marca activo el prefijo por segmentos, y `plugins/<id>/image-studio`
|
|
5
|
+
* encendería también «Generador de contenido».
|
|
6
|
+
*/
|
|
7
|
+
export declare const STUDIO_PATH = "plugins/strapi-content-generator-gemini-studio";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import '@testing-library/jest-dom/vitest';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ReactElement } from 'react';
|
|
2
|
+
import type { RenderOptions } from '@testing-library/react';
|
|
3
|
+
declare const render: (ui: ReactElement, options?: RenderOptions) => import("@testing-library/react").RenderResult<typeof import("@testing-library/dom/types/queries"), HTMLElement, HTMLElement>;
|
|
4
|
+
export * from '@testing-library/react';
|
|
5
|
+
export { render };
|