@interware/content-generator 0.8.0 → 0.8.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.
@@ -5,8 +5,8 @@ import { P as PluginProviders } from "./PluginProviders-DWMpcAIh.mjs";
5
5
  import { useMemo, useState, useEffect, useRef, useCallback } from "react";
6
6
  import { Box, Flex, Typography, Button, Badge, TextInput, Loader, Table, Thead, Tr, Th, VisuallyHidden, Tbody, Td, TextButton, IconButton, Link, LinkButton, Field, Radio, Modal, Textarea, Combobox, ComboboxOption, Toggle, Grid } from "@strapi/design-system";
7
7
  import { Plus, Search, Check, Pencil, ExternalLink, ArrowLeft, Image, Clock, WarningCircle, Trash, Sparkle, PlusCircle } from "@strapi/icons";
8
- import { P as PLUGIN_ID, S as STUDIO_PATH, p as pluginPermissions } from "./index-zenHkX-p.mjs";
9
- import { L as LibraryImagePicker, P as PromptComposer, a as LEGACY_ROUTES, S as StudioRedirect, l as legacyRedirect } from "./ImageStudioTabs-DwaLxRjl.mjs";
8
+ import { P as PLUGIN_ID, S as STUDIO_PATH, p as pluginPermissions } from "./index-DlemRDzs.mjs";
9
+ import { L as LibraryImagePicker, P as PromptComposer, a as LEGACY_ROUTES, S as StudioRedirect, l as legacyRedirect } from "./ImageStudioTabs-B6fkCK-o.mjs";
10
10
  import { useIntl } from "react-intl";
11
11
  import { useFormik } from "formik";
12
12
  import * as Yup from "yup";
@@ -7,8 +7,8 @@ const PluginProviders = require("./PluginProviders-D79TeGSE.js");
7
7
  const react = require("react");
8
8
  const designSystem = require("@strapi/design-system");
9
9
  const icons = require("@strapi/icons");
10
- const index = require("./index-BudahdfX.js");
11
- const ImageStudioTabs = require("./ImageStudioTabs-uXSBkFeu.js");
10
+ const index = require("./index-DwHGS-BJ.js");
11
+ const ImageStudioTabs = require("./ImageStudioTabs-CNktoRax.js");
12
12
  const reactIntl = require("react-intl");
13
13
  const formik = require("formik");
14
14
  const Yup = require("yup");
@@ -1,7 +1,7 @@
1
1
  import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
- import { Modal, Flex, Button, Loader, Typography, Grid, Box, lightTheme, Checkbox, Field, TextInput, Dialog, SingleSelect, SingleSelectOption, Link, Badge, IconButtonGroup, IconButton, Toggle, Menu, Table, Thead, Tr, Th, VisuallyHidden, Tbody, Td, TextButton, LinkButton, NumberInput, Divider, Textarea, Tabs } from "@strapi/design-system";
2
+ import { Modal, Flex, Button, Loader, Typography, Grid, Box, lightTheme, Checkbox, Field, TextInput, Dialog, SingleSelect, SingleSelectOption, Link, Badge, IconButtonGroup, IconButton, Toggle, Menu, Table, Thead, Tr, Th, VisuallyHidden, Tbody, Td, TextButton, LinkButton, ProgressBar, NumberInput, Divider, Textarea, Tabs } from "@strapi/design-system";
3
3
  import { useLocation, Navigate, useSearchParams } from "react-router-dom";
4
- import { S as STUDIO_PATH } from "./index-zenHkX-p.mjs";
4
+ import { S as STUDIO_PATH } from "./index-DlemRDzs.mjs";
5
5
  import { useMemo, useState, useEffect, useId, useRef, useReducer, useCallback, useSyncExternalStore, useLayoutEffect, memo, forwardRef } from "react";
6
6
  import { ChevronRight, Folder, Magic, Pencil, Upload, Sparkle, Plus, Cross, Download, ArrowClockwise, House, ChevronDown, FilePdf, File as File$1, More, ExternalLink, Trash, User, Star, SquaresFour, Quotes, PriceTag, Paragraph, NumberList, Minus, Italic, Image as Image$1, HeadingTwo, HeadingOne, Hashtag, Feather, Drag, BulletList, ArrowLeft, Check, ArrowsCounterClockwise, ArrowLineLeft, ArrowLineRight, Expand, WarningCircle, Play, Phone, Mail, PinMap, Earth, PresentationChart, ChartPie, ChartBubble, Cog, Database, Cloud, Globe, Server, Lightbulb, Crown, SealCheck, Briefcase, Rocket, Shield, CheckCircle, Lightning, Heart, Collapse, Bold, ArrowUp, ArrowDown, Duplicate, Lock, EyeStriked, Eye } from "@strapi/icons";
7
7
  import { useTheme } from "styled-components";
@@ -2140,6 +2140,11 @@ const useDriveSync = (watching = false) => {
2140
2140
  [links, refresh, post, del]
2141
2141
  );
2142
2142
  };
2143
+ const uploadSummary = (total, failed) => {
2144
+ if (failed.length === 0) return { type: "success", message: total === 1 ? "Archivo subido" : `${total} archivos subidos` };
2145
+ if (failed.length === total) return { type: "danger", message: `No se pudo subir: ${failed.join(", ")}.` };
2146
+ return { type: "warning", message: `${total - failed.length} de ${total} archivos subidos. No se pudo subir: ${failed.join(", ")}.` };
2147
+ };
2143
2148
  const status = (err) => err?.response?.status ?? err?.status;
2144
2149
  const LibraryTab = () => {
2145
2150
  const c = useThemeColors();
@@ -2156,7 +2161,10 @@ const LibraryTab = () => {
2156
2161
  const [dragOver, setDragOver] = useState(false);
2157
2162
  const [bgBusy, setBgBusy] = useState({});
2158
2163
  const [bgTarget, setBgTarget] = useState(null);
2164
+ const [uploading, setUploading] = useState(null);
2159
2165
  const uploadInput = useRef(null);
2166
+ const currentRef = useRef(current);
2167
+ currentRef.current = current;
2160
2168
  const replaceInput = useRef(null);
2161
2169
  const replaceTarget = useRef(null);
2162
2170
  const path = pathTo(tree, current);
@@ -2214,9 +2222,30 @@ const LibraryTab = () => {
2214
2222
  await refresh();
2215
2223
  }
2216
2224
  };
2217
- const upload = (list) => {
2225
+ useEffect(() => {
2226
+ if (!uploading) return;
2227
+ const warn = (e) => e.preventDefault();
2228
+ window.addEventListener("beforeunload", warn);
2229
+ return () => window.removeEventListener("beforeunload", warn);
2230
+ }, [uploading]);
2231
+ const upload = async (list) => {
2218
2232
  const arr = [...list ?? []];
2219
- if (arr.length) run(() => api.uploadFiles(arr, current), arr.length === 1 ? "Archivo subido" : `${arr.length} archivos subidos`);
2233
+ if (!arr.length || uploading) return;
2234
+ const folderId = current;
2235
+ const failed = [];
2236
+ for (const [i, file] of arr.entries()) {
2237
+ setUploading({ done: i, total: arr.length, name: file.name });
2238
+ try {
2239
+ const uploaded = await api.uploadFiles([file], folderId);
2240
+ if (currentRef.current === folderId) setFiles((prev) => [...uploaded, ...prev]);
2241
+ } catch {
2242
+ failed.push(file.name);
2243
+ }
2244
+ }
2245
+ setUploading(null);
2246
+ const { type, message } = uploadSummary(arr.length, failed);
2247
+ notify(type, message);
2248
+ await refresh();
2220
2249
  };
2221
2250
  const setBgStatus = (file, s) => setBgBusy((b) => {
2222
2251
  const next = { ...b };
@@ -2298,7 +2327,7 @@ const LibraryTab = () => {
2298
2327
  hasRadius: true,
2299
2328
  position: "relative",
2300
2329
  onDragOver: (e) => {
2301
- if (e.dataTransfer.types.includes("Files")) {
2330
+ if (e.dataTransfer.types.includes("Files") && !uploading) {
2302
2331
  e.preventDefault();
2303
2332
  setDragOver(true);
2304
2333
  }
@@ -2310,7 +2339,7 @@ const LibraryTab = () => {
2310
2339
  if (e.dataTransfer.files.length) {
2311
2340
  e.preventDefault();
2312
2341
  setDragOver(false);
2313
- upload(e.dataTransfer.files);
2342
+ if (!uploading) upload(e.dataTransfer.files);
2314
2343
  }
2315
2344
  },
2316
2345
  children: [
@@ -2331,7 +2360,7 @@ const LibraryTab = () => {
2331
2360
  /* @__PURE__ */ jsx(Button, { variant: "danger-light", startIcon: /* @__PURE__ */ jsx(Trash, {}), onClick: () => setDialog({ kind: "deleteFolder" }), children: "Eliminar carpeta" })
2332
2361
  ] }),
2333
2362
  /* @__PURE__ */ jsx(Button, { variant: "secondary", startIcon: /* @__PURE__ */ jsx(Plus, {}), onClick: () => setDialog({ kind: "newFolder" }), children: "Nueva carpeta" }),
2334
- /* @__PURE__ */ jsx(Button, { startIcon: /* @__PURE__ */ jsx(Upload, {}), onClick: () => uploadInput.current?.click(), children: "Subir archivos" })
2363
+ /* @__PURE__ */ jsx(Button, { startIcon: /* @__PURE__ */ jsx(Upload, {}), onClick: () => uploadInput.current?.click(), disabled: !!uploading, loading: !!uploading, children: "Subir archivos" })
2335
2364
  ] })
2336
2365
  ] }),
2337
2366
  subfolders.length > 0 && /* @__PURE__ */ jsx(Grid.Root, { gap: 2, paddingBottom: 4, children: subfolders.map((f) => /* @__PURE__ */ jsx(Grid.Item, { col: 3, s: 6, xs: 12, children: /* @__PURE__ */ jsx(
@@ -2358,6 +2387,17 @@ const LibraryTab = () => {
2358
2387
  ] })
2359
2388
  }
2360
2389
  ) }, f.id)) }),
2390
+ uploading && /* @__PURE__ */ jsx(Box, { padding: 3, marginBottom: 4, hasRadius: true, background: "primary100", borderColor: "primary200", role: "status", "aria-live": "polite", children: /* @__PURE__ */ jsxs(Flex, { direction: "column", alignItems: "stretch", gap: 2, children: [
2391
+ /* @__PURE__ */ jsxs(Typography, { textColor: "primary700", children: [
2392
+ "Subiendo ",
2393
+ uploading.done + 1,
2394
+ " de ",
2395
+ uploading.total,
2396
+ " · ",
2397
+ uploading.name
2398
+ ] }),
2399
+ /* @__PURE__ */ jsx(ProgressBar, { value: Math.round(uploading.done / uploading.total * 100), children: `${uploading.done} de ${uploading.total} archivos subidos` })
2400
+ ] }) }),
2361
2401
  loading2 ? /* @__PURE__ */ jsx(Flex, { justifyContent: "center", padding: 8, children: /* @__PURE__ */ jsx(Loader, { children: "Cargando archivos…" }) }) : files.length === 0 ? /* @__PURE__ */ jsx(EmptyNote, { children: subfolders.length ? "No hay archivos sueltos en esta carpeta." : "Carpeta vacía. Arrastra archivos aquí o usa «Subir archivos»." }) : /* @__PURE__ */ jsx(Grid.Root, { gap: 4, children: files.map((f) => /* @__PURE__ */ jsx(Grid.Item, { col: 3, m: 4, s: 6, xs: 12, children: /* @__PURE__ */ jsx(FileCard, { file: f, onAction: onFileAction, busy: bgBusy[f.id], drive: driveView(drive.links, `file:${f.id}`, currentInside) }) }, f.id)) }),
2362
2402
  dragOver && /* @__PURE__ */ jsx(Flex, { position: "absolute", justifyContent: "center", background: "primary100", hasRadius: true, style: { inset: 0, border: `2px dashed ${c.primary600}`, opacity: 0.95 }, children: /* @__PURE__ */ jsxs(Typography, { variant: "beta", textColor: "primary700", children: [
2363
2403
  "Suelta para subir a «",
@@ -2,7 +2,7 @@
2
2
  const jsxRuntime = require("react/jsx-runtime");
3
3
  const designSystem = require("@strapi/design-system");
4
4
  const reactRouterDom = require("react-router-dom");
5
- const index = require("./index-BudahdfX.js");
5
+ const index = require("./index-DwHGS-BJ.js");
6
6
  const react = require("react");
7
7
  const icons = require("@strapi/icons");
8
8
  const styledComponents = require("styled-components");
@@ -2143,6 +2143,11 @@ const useDriveSync = (watching = false) => {
2143
2143
  [links, refresh, post, del]
2144
2144
  );
2145
2145
  };
2146
+ const uploadSummary = (total, failed) => {
2147
+ if (failed.length === 0) return { type: "success", message: total === 1 ? "Archivo subido" : `${total} archivos subidos` };
2148
+ if (failed.length === total) return { type: "danger", message: `No se pudo subir: ${failed.join(", ")}.` };
2149
+ return { type: "warning", message: `${total - failed.length} de ${total} archivos subidos. No se pudo subir: ${failed.join(", ")}.` };
2150
+ };
2146
2151
  const status = (err) => err?.response?.status ?? err?.status;
2147
2152
  const LibraryTab = () => {
2148
2153
  const c = useThemeColors();
@@ -2159,7 +2164,10 @@ const LibraryTab = () => {
2159
2164
  const [dragOver, setDragOver] = react.useState(false);
2160
2165
  const [bgBusy, setBgBusy] = react.useState({});
2161
2166
  const [bgTarget, setBgTarget] = react.useState(null);
2167
+ const [uploading, setUploading] = react.useState(null);
2162
2168
  const uploadInput = react.useRef(null);
2169
+ const currentRef = react.useRef(current);
2170
+ currentRef.current = current;
2163
2171
  const replaceInput = react.useRef(null);
2164
2172
  const replaceTarget = react.useRef(null);
2165
2173
  const path = pathTo(tree, current);
@@ -2217,9 +2225,30 @@ const LibraryTab = () => {
2217
2225
  await refresh();
2218
2226
  }
2219
2227
  };
2220
- const upload = (list) => {
2228
+ react.useEffect(() => {
2229
+ if (!uploading) return;
2230
+ const warn = (e) => e.preventDefault();
2231
+ window.addEventListener("beforeunload", warn);
2232
+ return () => window.removeEventListener("beforeunload", warn);
2233
+ }, [uploading]);
2234
+ const upload = async (list) => {
2221
2235
  const arr = [...list ?? []];
2222
- if (arr.length) run(() => api.uploadFiles(arr, current), arr.length === 1 ? "Archivo subido" : `${arr.length} archivos subidos`);
2236
+ if (!arr.length || uploading) return;
2237
+ const folderId = current;
2238
+ const failed = [];
2239
+ for (const [i, file] of arr.entries()) {
2240
+ setUploading({ done: i, total: arr.length, name: file.name });
2241
+ try {
2242
+ const uploaded = await api.uploadFiles([file], folderId);
2243
+ if (currentRef.current === folderId) setFiles((prev) => [...uploaded, ...prev]);
2244
+ } catch {
2245
+ failed.push(file.name);
2246
+ }
2247
+ }
2248
+ setUploading(null);
2249
+ const { type, message } = uploadSummary(arr.length, failed);
2250
+ notify(type, message);
2251
+ await refresh();
2223
2252
  };
2224
2253
  const setBgStatus = (file, s) => setBgBusy((b) => {
2225
2254
  const next = { ...b };
@@ -2301,7 +2330,7 @@ const LibraryTab = () => {
2301
2330
  hasRadius: true,
2302
2331
  position: "relative",
2303
2332
  onDragOver: (e) => {
2304
- if (e.dataTransfer.types.includes("Files")) {
2333
+ if (e.dataTransfer.types.includes("Files") && !uploading) {
2305
2334
  e.preventDefault();
2306
2335
  setDragOver(true);
2307
2336
  }
@@ -2313,7 +2342,7 @@ const LibraryTab = () => {
2313
2342
  if (e.dataTransfer.files.length) {
2314
2343
  e.preventDefault();
2315
2344
  setDragOver(false);
2316
- upload(e.dataTransfer.files);
2345
+ if (!uploading) upload(e.dataTransfer.files);
2317
2346
  }
2318
2347
  },
2319
2348
  children: [
@@ -2334,7 +2363,7 @@ const LibraryTab = () => {
2334
2363
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { variant: "danger-light", startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.Trash, {}), onClick: () => setDialog({ kind: "deleteFolder" }), children: "Eliminar carpeta" })
2335
2364
  ] }),
2336
2365
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { variant: "secondary", startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.Plus, {}), onClick: () => setDialog({ kind: "newFolder" }), children: "Nueva carpeta" }),
2337
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.Upload, {}), onClick: () => uploadInput.current?.click(), children: "Subir archivos" })
2366
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.Upload, {}), onClick: () => uploadInput.current?.click(), disabled: !!uploading, loading: !!uploading, children: "Subir archivos" })
2338
2367
  ] })
2339
2368
  ] }),
2340
2369
  subfolders.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Root, { gap: 2, paddingBottom: 4, children: subfolders.map((f) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 3, s: 6, xs: 12, children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -2361,6 +2390,17 @@ const LibraryTab = () => {
2361
2390
  ] })
2362
2391
  }
2363
2392
  ) }, f.id)) }),
2393
+ uploading && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { padding: 3, marginBottom: 4, hasRadius: true, background: "primary100", borderColor: "primary200", role: "status", "aria-live": "polite", children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 2, children: [
2394
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Typography, { textColor: "primary700", children: [
2395
+ "Subiendo ",
2396
+ uploading.done + 1,
2397
+ " de ",
2398
+ uploading.total,
2399
+ " · ",
2400
+ uploading.name
2401
+ ] }),
2402
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.ProgressBar, { value: Math.round(uploading.done / uploading.total * 100), children: `${uploading.done} de ${uploading.total} archivos subidos` })
2403
+ ] }) }),
2364
2404
  loading2 ? /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "center", padding: 8, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Loader, { children: "Cargando archivos…" }) }) : files.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(EmptyNote, { children: subfolders.length ? "No hay archivos sueltos en esta carpeta." : "Carpeta vacía. Arrastra archivos aquí o usa «Subir archivos»." }) : /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Root, { gap: 4, children: files.map((f) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 3, m: 4, s: 6, xs: 12, children: /* @__PURE__ */ jsxRuntime.jsx(FileCard, { file: f, onAction: onFileAction, busy: bgBusy[f.id], drive: driveView(drive.links, `file:${f.id}`, currentInside) }) }, f.id)) }),
2365
2405
  dragOver && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { position: "absolute", justifyContent: "center", background: "primary100", hasRadius: true, style: { inset: 0, border: `2px dashed ${c.primary600}`, opacity: 0.95 }, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Typography, { variant: "beta", textColor: "primary700", children: [
2366
2406
  "Suelta para subir a «",
@@ -7,7 +7,7 @@ const react = require("react");
7
7
  const designSystem = require("@strapi/design-system");
8
8
  const formik = require("formik");
9
9
  const PluginProviders = require("./PluginProviders-D79TeGSE.js");
10
- const index = require("./index-BudahdfX.js");
10
+ const index = require("./index-DwHGS-BJ.js");
11
11
  const useSettings = () => {
12
12
  const { get, post, del } = admin.useFetchClient();
13
13
  const getSettings = react.useCallback(
@@ -5,7 +5,7 @@ import { useCallback, useState, useRef, useEffect, useMemo } from "react";
5
5
  import { Box, Grid, Field, Flex, Button, Typography, Textarea } from "@strapi/design-system";
6
6
  import { Formik } from "formik";
7
7
  import { P as PluginProviders } from "./PluginProviders-DWMpcAIh.mjs";
8
- import { P as PLUGIN_ID } from "./index-zenHkX-p.mjs";
8
+ import { P as PLUGIN_ID } from "./index-DlemRDzs.mjs";
9
9
  const useSettings = () => {
10
10
  const { get, post, del } = useFetchClient();
11
11
  const getSettings = useCallback(
@@ -4,9 +4,9 @@ const jsxRuntime = require("react/jsx-runtime");
4
4
  const admin = require("@strapi/strapi/admin");
5
5
  const reactRouterDom = require("react-router-dom");
6
6
  const PluginProviders = require("./PluginProviders-D79TeGSE.js");
7
- const index = require("./index-BudahdfX.js");
7
+ const index = require("./index-DwHGS-BJ.js");
8
8
  const designSystem = require("@strapi/design-system");
9
- const ImageStudioTabs = require("./ImageStudioTabs-uXSBkFeu.js");
9
+ const ImageStudioTabs = require("./ImageStudioTabs-CNktoRax.js");
10
10
  const ImageStudio = () => /* @__PURE__ */ jsxRuntime.jsxs(admin.Page.Main, { children: [
11
11
  /* @__PURE__ */ jsxRuntime.jsx(admin.Page.Title, { children: "Estudio de imágenes" }),
12
12
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { style: { height: "100vh" }, children: /* @__PURE__ */ jsxRuntime.jsx(ImageStudioTabs.ImageStudioTabs, {}) })
@@ -2,9 +2,9 @@ import { jsxs, jsx } from "react/jsx-runtime";
2
2
  import { Page } from "@strapi/strapi/admin";
3
3
  import { Routes, Route } from "react-router-dom";
4
4
  import { P as PluginProviders } from "./PluginProviders-DWMpcAIh.mjs";
5
- import { p as pluginPermissions } from "./index-zenHkX-p.mjs";
5
+ import { p as pluginPermissions } from "./index-DlemRDzs.mjs";
6
6
  import { Box } from "@strapi/design-system";
7
- import { I as ImageStudioTabs } from "./ImageStudioTabs-DwaLxRjl.mjs";
7
+ import { I as ImageStudioTabs } from "./ImageStudioTabs-B6fkCK-o.mjs";
8
8
  const ImageStudio = () => /* @__PURE__ */ jsxs(Page.Main, { children: [
9
9
  /* @__PURE__ */ jsx(Page.Title, { children: "Estudio de imágenes" }),
10
10
  /* @__PURE__ */ jsx(Box, { style: { height: "100vh" }, children: /* @__PURE__ */ jsx(ImageStudioTabs, {}) })
@@ -56,7 +56,7 @@ const index = {
56
56
  defaultMessage: "Generador de contenido"
57
57
  },
58
58
  Component: async () => {
59
- const { App } = await import("./App-DD1MzaWm.mjs");
59
+ const { App } = await import("./App-2eX-mcfo.mjs");
60
60
  return App;
61
61
  },
62
62
  permissions: [
@@ -71,7 +71,7 @@ const index = {
71
71
  defaultMessage: "Estudio de imágenes"
72
72
  },
73
73
  Component: async () => {
74
- const { StudioApp } = await import("./StudioApp-B5I1OfGw.mjs");
74
+ const { StudioApp } = await import("./StudioApp-CF03znuL.mjs");
75
75
  return StudioApp;
76
76
  },
77
77
  permissions: [
@@ -91,7 +91,7 @@ const index = {
91
91
  defaultMessage: PLUGIN_ID
92
92
  },
93
93
  Component: async () => {
94
- const component = await import("./Settings-C6TbUrgU.mjs");
94
+ const component = await import("./Settings-CaGruvIm.mjs");
95
95
  return component.default;
96
96
  },
97
97
  to: `plugins/${PLUGIN_ID}/settings`,
@@ -57,7 +57,7 @@ const index = {
57
57
  defaultMessage: "Generador de contenido"
58
58
  },
59
59
  Component: async () => {
60
- const { App } = await Promise.resolve().then(() => require("./App-DspaMfyW.js"));
60
+ const { App } = await Promise.resolve().then(() => require("./App-CvZirjX_.js"));
61
61
  return App;
62
62
  },
63
63
  permissions: [
@@ -72,7 +72,7 @@ const index = {
72
72
  defaultMessage: "Estudio de imágenes"
73
73
  },
74
74
  Component: async () => {
75
- const { StudioApp } = await Promise.resolve().then(() => require("./StudioApp-B7kGpqqo.js"));
75
+ const { StudioApp } = await Promise.resolve().then(() => require("./StudioApp-BDoB31L0.js"));
76
76
  return StudioApp;
77
77
  },
78
78
  permissions: [
@@ -92,7 +92,7 @@ const index = {
92
92
  defaultMessage: PLUGIN_ID
93
93
  },
94
94
  Component: async () => {
95
- const component = await Promise.resolve().then(() => require("./Settings-ps0o7-fC.js"));
95
+ const component = await Promise.resolve().then(() => require("./Settings-B-QPodCh.js"));
96
96
  return component.default;
97
97
  },
98
98
  to: `plugins/${PLUGIN_ID}/settings`,
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
- const index = require("../_chunks/index-BudahdfX.js");
2
+ const index = require("../_chunks/index-DwHGS-BJ.js");
3
3
  module.exports = index.index;
@@ -1,4 +1,4 @@
1
- import { i } from "../_chunks/index-zenHkX-p.mjs";
1
+ import { i } from "../_chunks/index-DlemRDzs.mjs";
2
2
  export {
3
3
  i as default
4
4
  };
@@ -1,2 +1,7 @@
1
+ /** Resultado de subir varios archivos: el aviso dice cuántos entraron y cuáles fallaron. */
2
+ export declare const uploadSummary: (total: number, failed: string[]) => {
3
+ type: 'success' | 'warning' | 'danger';
4
+ message: string;
5
+ };
1
6
  /** Pestaña «Imágenes y documentos»: la Media Library de Strapi organizada por carpetas. */
2
7
  export declare const LibraryTab: () => import("react/jsx-runtime").JSX.Element;
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.8.0",
2
+ "version": "0.8.1",
3
3
  "keywords": [],
4
4
  "type": "commonjs",
5
5
  "publishConfig": {