contentoh-components-library 21.6.55 → 21.6.57

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.
Files changed (112) hide show
  1. package/.claude/launch.json +14 -0
  2. package/.env.test +1 -0
  3. package/dist/ai/prompts/attribute.prompt.js +28 -0
  4. package/dist/ai/prompts/description.prompt.js +33 -0
  5. package/dist/ai/schemas/attribute.schema.js +35 -0
  6. package/dist/ai/schemas/description.schema.js +27 -0
  7. package/dist/components/atoms/AsignationOption/index.js +1 -0
  8. package/dist/components/atoms/AsignationOption/styles.js +1 -1
  9. package/dist/components/atoms/AssetPreview/AssetPreview.stories.js +118 -0
  10. package/dist/components/atoms/AssetPreview/index.js +150 -0
  11. package/dist/components/atoms/AssetPreview/styles.js +28 -0
  12. package/dist/components/atoms/IconFile/index.js +85 -2
  13. package/dist/components/atoms/IconFile/styles.js +1 -1
  14. package/dist/components/atoms/ProductImage/ProductImage.stories.js +70 -2
  15. package/dist/components/atoms/ProductImage/index.js +100 -27
  16. package/dist/components/atoms/ProductImage/styles.js +3 -1
  17. package/dist/components/molecules/EditionActiveImage/index.js +4 -2
  18. package/dist/components/molecules/GalleryAssetElement/GalleryAssetElement.stories.js +147 -0
  19. package/dist/components/molecules/GalleryAssetElement/index.js +178 -0
  20. package/dist/components/molecules/GalleryAssetElement/styles.js +26 -0
  21. package/dist/components/molecules/GalleryElement/index.js +13 -4
  22. package/dist/components/molecules/GalleryHeader/index.js +96 -24
  23. package/dist/components/molecules/GalleryHeader/styles.js +4 -1
  24. package/dist/components/molecules/GalleryTrayTabs/GalleryTrayTabs.stories.js +56 -0
  25. package/dist/components/molecules/GalleryTrayTabs/index.js +60 -0
  26. package/dist/components/molecules/GalleryTrayTabs/styles.js +20 -0
  27. package/dist/components/molecules/ImageSelector/index.js +1 -0
  28. package/dist/components/molecules/RetailerSelector/RetailerSelector.stories.js +23 -2
  29. package/dist/components/molecules/RetailerSelector/index.js +7 -2
  30. package/dist/components/molecules/RetailerSelectorv2/index.js +6 -2
  31. package/dist/components/organisms/DigitalAssetsTray/DigitalAssetsTray.stories.js +235 -0
  32. package/dist/components/organisms/DigitalAssetsTray/index.js +219 -0
  33. package/dist/components/organisms/DigitalAssetsTray/styles.js +22 -0
  34. package/dist/components/organisms/ImagePreviewer/index.js +1 -0
  35. package/dist/components/organisms/ProductImageModal/index.js +3 -2
  36. package/dist/components/pages/CreatorsProductEdition/CreatorsProductEditionView.js +905 -0
  37. package/dist/components/pages/CreatorsProductEdition/constants.js +19 -0
  38. package/dist/components/pages/CreatorsProductEdition/hooks/useCreatorsProductEdition.js +2967 -0
  39. package/dist/components/pages/CreatorsProductEdition/index.js +33 -0
  40. package/dist/components/pages/CreatorsProductEdition/mocks/api.fixtures.js +537 -0
  41. package/dist/components/pages/CreatorsProductEdition/mocks/mockApi.js +251 -0
  42. package/dist/components/pages/CreatorsProductEdition/sections/CommentBox.js +311 -0
  43. package/dist/components/pages/CreatorsProductEdition/sections/ImagePanel.js +421 -0
  44. package/dist/components/pages/CreatorsProductEdition/sections/ImagesSection.js +473 -0
  45. package/dist/components/pages/CreatorsProductEdition/sections/ProductHeader.js +379 -0
  46. package/dist/components/pages/CreatorsProductEdition/sections/ProductMedia.js +138 -0
  47. package/dist/components/pages/CreatorsProductEdition/sections/RetailerMenu.js +162 -0
  48. package/dist/components/pages/CreatorsProductEdition/sections/ServiceActions.js +542 -0
  49. package/dist/components/pages/CreatorsProductEdition/sections/StatusChip.js +50 -0
  50. package/dist/components/pages/CreatorsProductEdition/sections/TabsBar.js +247 -0
  51. package/dist/components/pages/CreatorsProductEdition/sections/VariantsPanel.js +389 -0
  52. package/dist/components/pages/CreatorsProductEdition/sections/tokens.js +90 -0
  53. package/dist/components/pages/CreatorsProductEdition/stories/CreatorsProductEdition.stories.js +168 -0
  54. package/dist/components/pages/CreatorsProductEdition/stories/CreatorsProductEditionAPI.stories.js +74 -0
  55. package/dist/components/pages/CreatorsProductEdition/styles.js +46 -0
  56. package/dist/components/pages/RetailerProductEdition/context/provider-product-edition.context.js +330 -15
  57. package/dist/components/pages/RetailerProductEdition/context/provider-product-edition.reducer.js +12 -2
  58. package/dist/components/pages/RetailerProductEdition/index.js +606 -425
  59. package/dist/components/pages/RetailerProductEdition/stories/ImageEditor.stories.js +1 -0
  60. package/dist/global-files/data.js +16 -3
  61. package/dist/global-files/digital-assets/assetTypes.js +517 -0
  62. package/dist/global-files/digital-assets/assets.actions.js +64 -0
  63. package/dist/global-files/digital-assets/assets.adapter.js +304 -0
  64. package/dist/global-files/digital-assets/assets.mock.js +136 -0
  65. package/dist/global-files/digital-assets/assets.reducer.js +220 -0
  66. package/dist/global-files/digital-assets/uploadAssets.js +202 -0
  67. package/dist/global-files/digital-assets/useDigitalAssets.js +535 -0
  68. package/dist/index.js +142 -90
  69. package/docs/activos-digitales.md +273 -0
  70. package/package.json +1 -1
  71. package/src/components/atoms/AsignationOption/index.js +1 -1
  72. package/src/components/atoms/AsignationOption/styles.js +9 -0
  73. package/src/components/atoms/AssetPreview/AssetPreview.stories.js +78 -0
  74. package/src/components/atoms/AssetPreview/index.js +119 -0
  75. package/src/components/atoms/AssetPreview/styles.js +190 -0
  76. package/src/components/atoms/IconFile/index.js +28 -1
  77. package/src/components/atoms/IconFile/styles.js +8 -0
  78. package/src/components/atoms/ProductImage/ProductImage.stories.js +38 -0
  79. package/src/components/atoms/ProductImage/index.js +95 -20
  80. package/src/components/atoms/ProductImage/styles.js +92 -7
  81. package/src/components/molecules/EditionActiveImage/index.js +2 -2
  82. package/src/components/molecules/GalleryAssetElement/GalleryAssetElement.stories.js +102 -0
  83. package/src/components/molecules/GalleryAssetElement/index.js +162 -0
  84. package/src/components/molecules/GalleryAssetElement/styles.js +163 -0
  85. package/src/components/molecules/GalleryElement/index.js +9 -0
  86. package/src/components/molecules/GalleryHeader/index.js +65 -13
  87. package/src/components/molecules/GalleryHeader/styles.js +2 -1
  88. package/src/components/molecules/GalleryTrayTabs/GalleryTrayTabs.stories.js +32 -0
  89. package/src/components/molecules/GalleryTrayTabs/index.js +41 -0
  90. package/src/components/molecules/GalleryTrayTabs/styles.js +52 -0
  91. package/src/components/molecules/ImageSelector/index.js +1 -0
  92. package/src/components/molecules/RetailerSelector/RetailerSelector.stories.js +15 -1
  93. package/src/components/molecules/RetailerSelector/index.js +8 -1
  94. package/src/components/molecules/RetailerSelectorv2/index.js +7 -1
  95. package/src/components/organisms/DigitalAssetsTray/DigitalAssetsTray.stories.js +164 -0
  96. package/src/components/organisms/DigitalAssetsTray/index.js +193 -0
  97. package/src/components/organisms/DigitalAssetsTray/styles.js +183 -0
  98. package/src/components/organisms/ImagePreviewer/index.js +1 -0
  99. package/src/components/organisms/ProductImageModal/index.js +1 -0
  100. package/src/components/pages/RetailerProductEdition/context/provider-product-edition.context.jsx +201 -0
  101. package/src/components/pages/RetailerProductEdition/context/provider-product-edition.reducer.js +12 -0
  102. package/src/components/pages/RetailerProductEdition/index.js +356 -139
  103. package/src/components/pages/RetailerProductEdition/stories/ImageEditor.stories.js +1 -0
  104. package/src/global-files/data.js +17 -2
  105. package/src/global-files/digital-assets/assetTypes.js +451 -0
  106. package/src/global-files/digital-assets/assets.actions.js +50 -0
  107. package/src/global-files/digital-assets/assets.adapter.js +229 -0
  108. package/src/global-files/digital-assets/assets.mock.js +122 -0
  109. package/src/global-files/digital-assets/assets.reducer.js +197 -0
  110. package/src/global-files/digital-assets/uploadAssets.js +124 -0
  111. package/src/global-files/digital-assets/useDigitalAssets.js +340 -0
  112. package/src/index.js +4 -0
@@ -0,0 +1,219 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.DigitalAssetsTray = void 0;
9
+
10
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
11
+
12
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
13
+
14
+ var _reactDropzone = require("react-dropzone");
15
+
16
+ var _styles = require("./styles");
17
+
18
+ var _GalleryAssetElement = require("../../molecules/GalleryAssetElement");
19
+
20
+ var _GalleryHeader = require("../../molecules/GalleryHeader");
21
+
22
+ var _ButtonV = require("../../atoms/ButtonV2");
23
+
24
+ var _assetTypes = require("../../../global-files/digital-assets/assetTypes");
25
+
26
+ var _jsxRuntime = require("react/jsx-runtime");
27
+
28
+ var CHECK_ALL_ID = "check-all-assets";
29
+ var ITEM_SELECTOR = "[id^='gallery-asset-']";
30
+ /**
31
+ * Bandeja de activos digitales: soltar archivos, verlos, reetiquetarlos y
32
+ * quitarlos.
33
+ *
34
+ * Tiene su propio dropzone en vez de compartir el de las imágenes porque los
35
+ * formatos aceptados son distintos: mezclarlos dejaría soltar un PDF sobre la
36
+ * bandeja de fotos y un JPG sobre la de activos.
37
+ *
38
+ * No guarda ni sube nada. Recibe el estado ya armado por `useDigitalAssets`,
39
+ * así que cuando se defina el contrato del backend solo hay que conectarle las
40
+ * llamadas; la interfaz no cambia.
41
+ */
42
+
43
+ var DigitalAssetsTray = function DigitalAssetsTray(_ref) {
44
+ var _ref$assets = _ref.assets,
45
+ assets = _ref$assets === void 0 ? [] : _ref$assets,
46
+ _ref$notices = _ref.notices,
47
+ notices = _ref$notices === void 0 ? [] : _ref$notices,
48
+ _ref$unsaved = _ref.unsaved,
49
+ unsaved = _ref$unsaved === void 0 ? {
50
+ nuevos: 0,
51
+ modificados: 0,
52
+ borrados: 0,
53
+ total: 0
54
+ } : _ref$unsaved,
55
+ _ref$remaining = _ref.remaining,
56
+ remaining = _ref$remaining === void 0 ? _assetTypes.MAX_ASSETS_PER_PRODUCT : _ref$remaining,
57
+ addFiles = _ref.addFiles,
58
+ removeAsset = _ref.removeAsset,
59
+ changeAssetType = _ref.changeAssetType,
60
+ clearNotices = _ref.clearNotices,
61
+ _ref$selectedAssets = _ref.selectedAssets,
62
+ selectedAssets = _ref$selectedAssets === void 0 ? [] : _ref$selectedAssets,
63
+ setSelectedAssets = _ref.setSelectedAssets,
64
+ setCheckAll = _ref.setCheckAll,
65
+ _ref$gridLayout = _ref.gridLayout,
66
+ gridLayout = _ref$gridLayout === void 0 ? false : _ref$gridLayout,
67
+ _ref$readOnly = _ref.readOnly,
68
+ readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,
69
+ _ref$emptyMessage = _ref.emptyMessage,
70
+ emptyMessage = _ref$emptyMessage === void 0 ? "Este producto no tiene activos digitales" : _ref$emptyMessage;
71
+
72
+ var _useDropzone = (0, _reactDropzone.useDropzone)({
73
+ accept: (0, _assetTypes.buildDropzoneAccept)(),
74
+ noKeyboard: true,
75
+ multiple: true,
76
+ noClick: true,
77
+ disabled: readOnly,
78
+ // Los rechazados también pasan: react-dropzone los descarta por `accept`
79
+ // antes que nuestra validación, y sin esto soltar un formato no permitido
80
+ // no hacía nada. `addFiles` los valida y avisa por qué no entran.
81
+ onDrop: function onDrop(acceptedFiles, fileRejections) {
82
+ return addFiles === null || addFiles === void 0 ? void 0 : addFiles([].concat((0, _toConsumableArray2.default)(acceptedFiles), (0, _toConsumableArray2.default)(fileRejections.map(function (_ref2) {
83
+ var file = _ref2.file;
84
+ return file;
85
+ }))));
86
+ }
87
+ }),
88
+ getRootProps = _useDropzone.getRootProps,
89
+ getInputProps = _useDropzone.getInputProps,
90
+ isDragActive = _useDropzone.isDragActive,
91
+ open = _useDropzone.open;
92
+
93
+ var noticesBy = function noticesBy(level) {
94
+ return notices.filter(function (item) {
95
+ return item.level === level;
96
+ });
97
+ };
98
+ /*
99
+ Se desglosa en vez de mostrar solo el número: "3 cambios sin guardar" no le
100
+ dice al usuario qué perdería si se va, y no es lo mismo dejar sin guardar un
101
+ borrado que un archivo nuevo.
102
+ */
103
+
104
+
105
+ var detalleSinGuardar = [unsaved.nuevos && "".concat(unsaved.nuevos, " nuevo").concat(unsaved.nuevos > 1 ? "s" : ""), unsaved.modificados && "".concat(unsaved.modificados, " modificado").concat(unsaved.modificados > 1 ? "s" : ""), unsaved.borrados && "".concat(unsaved.borrados, " por borrar")].filter(Boolean).join(" · ");
106
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_styles.Container, {
107
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
108
+ className: "tray-toolbar",
109
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("p", {
110
+ className: "tray-hint",
111
+ title: "Formatos permitidos: ".concat((0, _assetTypes.acceptedFormatsLabel)()),
112
+ children: ["Arrastra aqu\xED im\xE1genes, videos, 360, GIF, documentos, hojas de c\xE1lculo o archivos editables. Quedan ", remaining, " de ", _assetTypes.MAX_ASSETS_PER_PRODUCT, "."]
113
+ }), !readOnly && /*#__PURE__*/(0, _jsxRuntime.jsx)(_ButtonV.ButtonV2, {
114
+ label: "Agregar activos",
115
+ type: "pink",
116
+ size: 12,
117
+ onClick: open
118
+ })]
119
+ }), unsaved.total > 0 && /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
120
+ className: "tray-unsaved",
121
+ role: "status",
122
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
123
+ className: "tray-unsaved-dot"
124
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("p", {
125
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("strong", {
126
+ children: [unsaved.total, " cambio", unsaved.total > 1 ? "s" : "", " sin guardar"]
127
+ }), detalleSinGuardar && /*#__PURE__*/(0, _jsxRuntime.jsxs)("span", {
128
+ className: "tray-unsaved-detail",
129
+ children: [" \u2014 ", detalleSinGuardar]
130
+ })]
131
+ })]
132
+ }), noticesBy("error").length > 0 && /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
133
+ className: "tray-notice tray-notice-error",
134
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
135
+ className: "tray-notice-head",
136
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("p", {
137
+ children: ["No se pudieron agregar ", noticesBy("error").length, " archivo(s):"]
138
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
139
+ type: "button",
140
+ onClick: clearNotices,
141
+ title: "Cerrar",
142
+ children: "\xD7"
143
+ })]
144
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("ul", {
145
+ children: noticesBy("error").map(function (item, index) {
146
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("li", {
147
+ children: item.message
148
+ }, "err-".concat(item.name, "-").concat(index));
149
+ })
150
+ })]
151
+ }), noticesBy("warning").length > 0 && /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
152
+ className: "tray-notice tray-notice-warning",
153
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
154
+ className: "tray-notice-head",
155
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
156
+ children: "Se agregaron, pero ten en cuenta:"
157
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
158
+ type: "button",
159
+ onClick: clearNotices,
160
+ title: "Cerrar",
161
+ children: "\xD7"
162
+ })]
163
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("ul", {
164
+ children: noticesBy("warning").map(function (item, index) {
165
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("li", {
166
+ children: item.message
167
+ }, "warn-".concat(item.name, "-").concat(index));
168
+ })
169
+ })]
170
+ }), !gridLayout && assets.length > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GalleryHeader.GalleryHeader, {
171
+ variant: "asset",
172
+ checkAllId: CHECK_ALL_ID,
173
+ itemSelector: ITEM_SELECTOR,
174
+ setCheckAll: setCheckAll,
175
+ setSelectedImages: setSelectedAssets
176
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, getRootProps({
177
+ className: "dropzone ".concat(isDragActive ? "drag-active" : "").trim()
178
+ })), {}, {
179
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("input", (0, _objectSpread2.default)({}, getInputProps())), isDragActive && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
180
+ className: "drag-overlay",
181
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
182
+ children: "Suelta los activos aqu\xED"
183
+ })
184
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("aside", {
185
+ className: gridLayout ? "tray-grid" : "tray-rows",
186
+ children: assets.map(function (asset, index) {
187
+ var _asset$id;
188
+
189
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_GalleryAssetElement.GalleryAssetElement, {
190
+ asset: asset,
191
+ index: index,
192
+ gridLayout: gridLayout,
193
+ checkAllId: CHECK_ALL_ID,
194
+ itemSelector: ITEM_SELECTOR,
195
+ selectedAssets: selectedAssets,
196
+ setSelectedAssets: setSelectedAssets,
197
+ setCheckAll: setCheckAll,
198
+ changeAsset: function changeAsset(_ref3) {
199
+ var value = _ref3.value;
200
+ return changeAssetType === null || changeAssetType === void 0 ? void 0 : changeAssetType(index, value);
201
+ },
202
+ onRemove: removeAsset,
203
+ readOnly: readOnly
204
+ }, (_asset$id = asset.id) !== null && _asset$id !== void 0 ? _asset$id : asset.tempId);
205
+ })
206
+ }), assets.length === 0 && /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
207
+ className: "tray-empty",
208
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
209
+ children: emptyMessage
210
+ }), !readOnly && /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
211
+ className: "tray-empty-hint",
212
+ children: "Arr\xE1stralos aqu\xED o usa \xABAgregar activos\xBB."
213
+ })]
214
+ })]
215
+ }))]
216
+ });
217
+ };
218
+
219
+ exports.DigitalAssetsTray = DigitalAssetsTray;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.Container = void 0;
9
+
10
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/taggedTemplateLiteral"));
11
+
12
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
13
+
14
+ var _variables = require("../../../global-files/variables");
15
+
16
+ var _templateObject;
17
+
18
+ /* El dropzone replica el de la bandeja de imágenes para que arrastrar se sienta
19
+ igual en las dos. */
20
+ var Container = _styledComponents.default.div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: 8px;\n\n .tray-toolbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n }\n\n .tray-hint {\n margin: 0;\n font-family: ", ";\n font-size: 12px;\n line-height: 18px;\n color: ", ";\n }\n\n /*\n Aviso de cambios sin guardar. Va arriba del listado y no junto al bot\xF3n de\n guardar, que vive en otra barra: el usuario mira la bandeja, no el men\xFA.\n */\n .tray-unsaved {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 12px;\n border-radius: 6px;\n border: 1px solid ", ";\n background: rgba(237, 154, 77, 0.08);\n\n p {\n margin: 0;\n font-family: ", ";\n font-size: 12px;\n line-height: 18px;\n color: ", ";\n }\n\n strong {\n font-family: ", ";\n color: ", ";\n }\n }\n\n .tray-unsaved-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: ", ";\n flex-shrink: 0;\n }\n\n .tray-unsaved-detail {\n color: ", ";\n }\n\n .tray-notice {\n border-radius: 6px;\n padding: 8px 12px;\n border: 1px solid;\n\n .tray-notice-head {\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n p {\n margin: 0;\n font-family: ", ";\n font-size: 12px;\n }\n\n button {\n border: none;\n background: none;\n cursor: pointer;\n font-size: 16px;\n line-height: 1;\n color: inherit;\n }\n }\n\n ul {\n margin: 4px 0 0;\n padding-left: 18px;\n }\n\n li {\n font-family: ", ";\n font-size: 12px;\n line-height: 18px;\n color: ", ";\n }\n }\n\n /* Rojo = no entr\xF3. \xC1mbar = entr\xF3, pero hay algo que saber. */\n .tray-notice-error {\n border-color: ", ";\n background: rgba(", ", 0.05);\n color: ", ";\n }\n\n .tray-notice-warning {\n border-color: ", ";\n background: rgba(237, 154, 77, 0.08);\n color: ", ";\n }\n\n .dropzone {\n position: relative;\n width: 100%;\n min-height: 160px;\n transition: all 0.5s ease;\n\n &.drag-active {\n background-color: rgba(", ", 0.05);\n border: 2px dashed ", ";\n border-radius: 8px;\n\n aside {\n opacity: 0.3;\n pointer-events: none;\n }\n }\n\n .drag-overlay {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1;\n\n p {\n font-family: ", ";\n font-size: 16px;\n color: ", ";\n }\n }\n }\n\n .tray-rows {\n display: flex;\n flex-direction: column;\n }\n\n .tray-grid {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n }\n\n .tray-empty {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n text-align: center;\n width: 80%;\n\n p {\n margin: 0;\n font-family: ", ";\n font-size: 16px;\n color: ", ";\n }\n\n .tray-empty-hint {\n margin-top: 6px;\n font-size: 13px;\n color: ", ";\n }\n }\n"])), _variables.FontFamily.Lato, _variables.GlobalColors.s4, _variables.GlobalColors.in_progress, _variables.FontFamily.Lato, _variables.GlobalColors.s5, _variables.FontFamily.Raleway_600, _variables.GlobalColors.in_progress, _variables.GlobalColors.in_progress, _variables.GlobalColors.s4, _variables.FontFamily.Raleway_600, _variables.FontFamily.Lato, _variables.GlobalColors.s5, _variables.GlobalColors.secondary_magenta, _variables.GlobalColors.rgb_color_pink, _variables.GlobalColors.secondary_magenta, _variables.GlobalColors.in_progress, _variables.GlobalColors.in_progress, _variables.GlobalColors.rgb_color_pink, _variables.GlobalColors.color_pink, _variables.FontFamily.AvenirNext, _variables.GlobalColors.color_pink, _variables.FontFamily.Lato, _variables.GlobalColors.gray, _variables.GlobalColors.s4);
21
+
22
+ exports.Container = Container;
@@ -23,6 +23,7 @@ var ImagePreviewer = function ImagePreviewer(_ref) {
23
23
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_EditionActiveImage.EditionActiveImage, {
24
24
  img: activeImage === null || activeImage === void 0 ? void 0 : activeImage.src,
25
25
  altText: activeImage === null || activeImage === void 0 ? void 0 : activeImage.name,
26
+ ext: activeImage === null || activeImage === void 0 ? void 0 : activeImage.ext,
26
27
  setShowModal: setShowModal
27
28
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ImageSelector.ImageSelector, {
28
29
  images: imagesArray,
@@ -26,7 +26,7 @@ var _GeneralButton = require("../../atoms/GeneralButton");
26
26
  var _jsxRuntime = require("react/jsx-runtime");
27
27
 
28
28
  var ProductImageModal = function ProductImageModal(_ref) {
29
- var _images$values$active, _images$values$active2, _images$values$active3;
29
+ var _images$values$active, _images$values$active2, _images$values$active3, _images$values$active4;
30
30
 
31
31
  var _ref$images = _ref.images,
32
32
  images = _ref$images === void 0 ? [] : _ref$images,
@@ -72,6 +72,7 @@ var ProductImageModal = function ProductImageModal(_ref) {
72
72
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ProductImage.ProductImage, {
73
73
  img: "https://" + process.env.REACT_APP_IMAGES_BUCKET + ".s3.amazonaws.com/" + (images === null || images === void 0 ? void 0 : (_images$values$active = images.values[activeImage]) === null || _images$values$active === void 0 ? void 0 : _images$values$active.srcDB),
74
74
  altText: images === null || images === void 0 ? void 0 : (_images$values$active2 = images.values[activeImage]) === null || _images$values$active2 === void 0 ? void 0 : _images$values$active2.name,
75
+ ext: images === null || images === void 0 ? void 0 : (_images$values$active3 = images.values[activeImage]) === null || _images$values$active3 === void 0 ? void 0 : _images$values$active3.ext,
75
76
  imageType: "expanded-modal-image"
76
77
  })
77
78
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
@@ -102,7 +103,7 @@ var ProductImageModal = function ProductImageModal(_ref) {
102
103
  }
103
104
  })]
104
105
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ImageDataTable.ImageDataTable, {
105
- imageData: images === null || images === void 0 ? void 0 : (_images$values$active3 = images.values[activeImage]) === null || _images$values$active3 === void 0 ? void 0 : _images$values$active3.data,
106
+ imageData: images === null || images === void 0 ? void 0 : (_images$values$active4 = images.values[activeImage]) === null || _images$values$active4 === void 0 ? void 0 : _images$values$active4.data,
106
107
  headerInfo: headerInfo,
107
108
  activeImage: images === null || images === void 0 ? void 0 : images.values[activeImage],
108
109
  darkMode: true,