@beweco/aurora-ui 0.1.21 → 0.1.23

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/index.cjs.js CHANGED
@@ -177,7 +177,7 @@ var Input = function (_a) {
177
177
  } })));
178
178
  };
179
179
 
180
- var defaultTranslations$9 = {
180
+ var defaultTranslations$a = {
181
181
  addHolidayTitle: "Add holiday",
182
182
  dayOption: "Day",
183
183
  dateRangeOption: "Date range",
@@ -201,7 +201,7 @@ var INITIAL_HOLIDAY_STATE = {
201
201
  */
202
202
  var AddHolidayForm = function (_a) {
203
203
  var onAddHoliday = _a.onAddHoliday, translations = _a.translations, className = _a.className, radioGroupProps = _a.radioGroupProps, dateRangePickerProps = _a.dateRangePickerProps, buttonProps = _a.buttonProps;
204
- var t = __assign(__assign({}, defaultTranslations$9), translations);
204
+ var t = __assign(__assign({}, defaultTranslations$a), translations);
205
205
  var _b = React.useState(INITIAL_HOLIDAY_STATE), newHoliday = _b[0], setNewHoliday = _b[1];
206
206
  /**
207
207
  * A boolean flag that determines if a date has been set.
@@ -271,7 +271,7 @@ var P = function (_a) {
271
271
  return (jsxRuntime.jsx("p", __assign({ className: react.cn("text-tiny text-default-500 font-normal", className) }, props, { children: children })));
272
272
  };
273
273
 
274
- var defaultTranslations$8 = {
274
+ var defaultTranslations$9 = {
275
275
  title: "Analytics",
276
276
  description: "Monthly growth of your metrics during the selected period",
277
277
  viewDetails: "View Details",
@@ -325,7 +325,7 @@ var formatMonth = function (month) {
325
325
  var AnalyticsCard = function (_a) {
326
326
  var _b, _c;
327
327
  var data = _a.data, _d = _a.showTimePeriods, showTimePeriods = _d === void 0 ? true : _d, _e = _a.showDropdownMenu, showDropdownMenu = _e === void 0 ? true : _e, _f = _a.showMetricCards, showMetricCards = _f === void 0 ? true : _f, onChartChange = _a.onChartChange, onMenuAction = _a.onMenuAction, onTimePeriodChange = _a.onTimePeriodChange, _g = _a.translations, translations = _g === void 0 ? {} : _g, props = __rest(_a, ["data", "showTimePeriods", "showDropdownMenu", "showMetricCards", "onChartChange", "onMenuAction", "onTimePeriodChange", "translations"]);
328
- var t = __assign(__assign({}, defaultTranslations$8), translations);
328
+ var t = __assign(__assign({}, defaultTranslations$9), translations);
329
329
  var _h = React.useState((_c = (_b = data[0]) === null || _b === void 0 ? void 0 : _b.key) !== null && _c !== void 0 ? _c : ""), activeChart = _h[0], setActiveChart = _h[1];
330
330
  var activeChartData = React.useMemo(function () {
331
331
  var _a;
@@ -990,7 +990,7 @@ var Chip = function (_a) {
990
990
  };
991
991
 
992
992
  // Traducciones por defecto en español
993
- var defaultTranslations$7 = {
993
+ var defaultTranslations$8 = {
994
994
  dayOption: "Día específico",
995
995
  dateRangeOption: "Rango de fechas",
996
996
  selectDateAriaLabel: "Seleccionar fecha",
@@ -1008,7 +1008,7 @@ var DateSelector = function (_a) {
1008
1008
  var _f = React.useState(initialDate || null), date = _f[0], setDate = _f[1];
1009
1009
  var _g = React.useState(initialDateRange || null), dateRange = _g[0], setDateRange = _g[1];
1010
1010
  // Combinar traducciones por defecto con las proporcionadas
1011
- var t = __assign(__assign({}, defaultTranslations$7), translations);
1011
+ var t = __assign(__assign({}, defaultTranslations$8), translations);
1012
1012
  var handleTypeChange = function (value) {
1013
1013
  var newType = value;
1014
1014
  setType(newType);
@@ -1115,6 +1115,67 @@ var HeaderComponent = function (_a) {
1115
1115
  };
1116
1116
  HeaderComponent.displayName = "Header";
1117
1117
 
1118
+ var defaultTranslations$7 = {
1119
+ previewAlt: "Vista previa de imagen",
1120
+ removeButtonAriaLabel: "Eliminar imagen",
1121
+ emptyStateText: "No hay imágenes para mostrar",
1122
+ clickableImageAriaLabel: "Hacer clic para ampliar imagen",
1123
+ };
1124
+ var sizeClasses = {
1125
+ micro: "w-12 h-12",
1126
+ small: "w-[100px] h-[100px]",
1127
+ medium: "w-[150px] h-[150px]",
1128
+ large: "w-[200px] h-[200px]",
1129
+ };
1130
+ var radiusClasses = {
1131
+ none: "rounded-none",
1132
+ sm: "rounded-sm",
1133
+ md: "rounded-md",
1134
+ lg: "rounded-lg",
1135
+ full: "rounded-full",
1136
+ };
1137
+ /**
1138
+ * Normalizes input to array of ImagePreviewItem
1139
+ */
1140
+ var normalizeImages = function (images) {
1141
+ var imgArray = Array.isArray(images) ? images : [images];
1142
+ return imgArray.map(function (img, index) {
1143
+ if (typeof img === "string") {
1144
+ return { src: img, id: "img-".concat(index) };
1145
+ }
1146
+ return __assign(__assign({}, img), { id: img.id || "img-".concat(index) });
1147
+ });
1148
+ };
1149
+ var ImagePreview = function (_a) {
1150
+ var images = _a.images, _b = _a.size, size = _b === void 0 ? "small" : _b, onRemove = _a.onRemove, _c = _a.showRemoveButton, showRemoveButton = _c === void 0 ? true : _c, _d = _a.className, className = _d === void 0 ? "" : _d, _e = _a.translations, translations = _e === void 0 ? {} : _e, _f = _a.backgroundColor, backgroundColor = _f === void 0 ? "bg-white dark:bg-gray-800" : _f, _g = _a.radius, radius = _g === void 0 ? "lg" : _g, _h = _a.showBorder, showBorder = _h === void 0 ? true : _h, onImageClick = _a.onImageClick;
1151
+ var t = __assign(__assign({}, defaultTranslations$7), translations);
1152
+ var normalizedImages = normalizeImages(images);
1153
+ var sizeClass = sizeClasses[size];
1154
+ var radiusClass = radiusClasses[radius];
1155
+ if (normalizedImages.length === 0) {
1156
+ return (jsxRuntime.jsx("div", { className: "text-sm text-default-500 text-center py-4", children: t.emptyStateText }));
1157
+ }
1158
+ var handleRemove = function (id, index) {
1159
+ if (onRemove) {
1160
+ onRemove(id, index);
1161
+ }
1162
+ };
1163
+ var handleImageClick = function (image, index) {
1164
+ if (onImageClick) {
1165
+ onImageClick(image, index);
1166
+ }
1167
+ };
1168
+ var isClickable = !!onImageClick;
1169
+ return (jsxRuntime.jsx("div", { className: "flex flex-wrap gap-3 ".concat(className), children: normalizedImages.map(function (image, index) { return (jsxRuntime.jsx("div", { className: "relative", children: jsxRuntime.jsxs("div", { className: "relative ".concat(sizeClass), children: [jsxRuntime.jsx("img", { src: image.src, alt: image.alt || t.previewAlt, className: "\n\t\t\t\t\t\t\t\t".concat(sizeClass, " \n\t\t\t\t\t\t\t\tobject-contain \n\t\t\t\t\t\t\t\t").concat(radiusClass, " \n\t\t\t\t\t\t\t\t").concat(backgroundColor, " \n\t\t\t\t\t\t\t\t").concat(showBorder ? "border border-default-200 dark:border-default-700" : "", "\n\t\t\t\t\t\t\t\tshadow-sm\n\t\t\t\t\t\t\t\t").concat(isClickable ? "cursor-pointer hover:opacity-80 transition-opacity" : "", "\n\t\t\t\t\t\t\t"), onClick: isClickable ? function () { return handleImageClick(image, index); } : undefined, onKeyDown: isClickable
1170
+ ? function (e) {
1171
+ if (e.key === "Enter" || e.key === " ") {
1172
+ e.preventDefault();
1173
+ handleImageClick(image, index);
1174
+ }
1175
+ }
1176
+ : undefined, role: isClickable ? "button" : undefined, tabIndex: isClickable ? 0 : undefined, "aria-label": isClickable ? t.clickableImageAriaLabel : undefined }), showRemoveButton && onRemove && (jsxRuntime.jsx("button", { type: "button", onClick: function () { return handleRemove(image.id || "", index); }, "aria-label": t.removeButtonAriaLabel, className: "\n\t\t\t\t\t\t\t\t\tabsolute -top-2 -right-2 \n\t\t\t\t\t\t\t\t\tp-1 rounded-full \n\t\t\t\t\t\t\t\t\tbg-danger-500 hover:bg-danger-600 \n\t\t\t\t\t\t\t\t\ttext-white \n\t\t\t\t\t\t\t\t\tcursor-pointer \n\t\t\t\t\t\t\t\t\ttransition-colors\n\t\t\t\t\t\t\t\t\tfocus:outline-none \n\t\t\t\t\t\t\t\t\tfocus:ring-2 \n\t\t\t\t\t\t\t\t\tfocus:ring-danger-400 \n\t\t\t\t\t\t\t\t\tfocus:ring-offset-2\n\t\t\t\t\t\t\t\t", children: jsxRuntime.jsx(IconComponent, { size: size === "micro" ? "sm" : "md", icon: "solar:trash-bin-minimalistic-outline" }) }))] }) }, image.id || index)); }) }));
1177
+ };
1178
+
1118
1179
  function normalizeClass(value) {
1119
1180
  if (typeof value === "string") {
1120
1181
  return value || undefined;
@@ -4247,6 +4308,7 @@ exports.H3 = H3;
4247
4308
  exports.H4 = H4;
4248
4309
  exports.HeaderComponent = HeaderComponent;
4249
4310
  exports.IconComponent = IconComponent;
4311
+ exports.ImagePreview = ImagePreview;
4250
4312
  exports.Input = Input;
4251
4313
  exports.MenuComponent = MenuComponent;
4252
4314
  exports.Modal = Modal;
package/dist/index.esm.js CHANGED
@@ -178,7 +178,7 @@ var Input = function (_a) {
178
178
  } })));
179
179
  };
180
180
 
181
- var defaultTranslations$9 = {
181
+ var defaultTranslations$a = {
182
182
  addHolidayTitle: "Add holiday",
183
183
  dayOption: "Day",
184
184
  dateRangeOption: "Date range",
@@ -202,7 +202,7 @@ var INITIAL_HOLIDAY_STATE = {
202
202
  */
203
203
  var AddHolidayForm = function (_a) {
204
204
  var onAddHoliday = _a.onAddHoliday, translations = _a.translations, className = _a.className, radioGroupProps = _a.radioGroupProps, dateRangePickerProps = _a.dateRangePickerProps, buttonProps = _a.buttonProps;
205
- var t = __assign(__assign({}, defaultTranslations$9), translations);
205
+ var t = __assign(__assign({}, defaultTranslations$a), translations);
206
206
  var _b = useState(INITIAL_HOLIDAY_STATE), newHoliday = _b[0], setNewHoliday = _b[1];
207
207
  /**
208
208
  * A boolean flag that determines if a date has been set.
@@ -272,7 +272,7 @@ var P = function (_a) {
272
272
  return (jsx("p", __assign({ className: cn("text-tiny text-default-500 font-normal", className) }, props, { children: children })));
273
273
  };
274
274
 
275
- var defaultTranslations$8 = {
275
+ var defaultTranslations$9 = {
276
276
  title: "Analytics",
277
277
  description: "Monthly growth of your metrics during the selected period",
278
278
  viewDetails: "View Details",
@@ -326,7 +326,7 @@ var formatMonth = function (month) {
326
326
  var AnalyticsCard = function (_a) {
327
327
  var _b, _c;
328
328
  var data = _a.data, _d = _a.showTimePeriods, showTimePeriods = _d === void 0 ? true : _d, _e = _a.showDropdownMenu, showDropdownMenu = _e === void 0 ? true : _e, _f = _a.showMetricCards, showMetricCards = _f === void 0 ? true : _f, onChartChange = _a.onChartChange, onMenuAction = _a.onMenuAction, onTimePeriodChange = _a.onTimePeriodChange, _g = _a.translations, translations = _g === void 0 ? {} : _g, props = __rest(_a, ["data", "showTimePeriods", "showDropdownMenu", "showMetricCards", "onChartChange", "onMenuAction", "onTimePeriodChange", "translations"]);
329
- var t = __assign(__assign({}, defaultTranslations$8), translations);
329
+ var t = __assign(__assign({}, defaultTranslations$9), translations);
330
330
  var _h = useState((_c = (_b = data[0]) === null || _b === void 0 ? void 0 : _b.key) !== null && _c !== void 0 ? _c : ""), activeChart = _h[0], setActiveChart = _h[1];
331
331
  var activeChartData = useMemo(function () {
332
332
  var _a;
@@ -991,7 +991,7 @@ var Chip = function (_a) {
991
991
  };
992
992
 
993
993
  // Traducciones por defecto en español
994
- var defaultTranslations$7 = {
994
+ var defaultTranslations$8 = {
995
995
  dayOption: "Día específico",
996
996
  dateRangeOption: "Rango de fechas",
997
997
  selectDateAriaLabel: "Seleccionar fecha",
@@ -1009,7 +1009,7 @@ var DateSelector = function (_a) {
1009
1009
  var _f = React.useState(initialDate || null), date = _f[0], setDate = _f[1];
1010
1010
  var _g = React.useState(initialDateRange || null), dateRange = _g[0], setDateRange = _g[1];
1011
1011
  // Combinar traducciones por defecto con las proporcionadas
1012
- var t = __assign(__assign({}, defaultTranslations$7), translations);
1012
+ var t = __assign(__assign({}, defaultTranslations$8), translations);
1013
1013
  var handleTypeChange = function (value) {
1014
1014
  var newType = value;
1015
1015
  setType(newType);
@@ -1116,6 +1116,67 @@ var HeaderComponent = function (_a) {
1116
1116
  };
1117
1117
  HeaderComponent.displayName = "Header";
1118
1118
 
1119
+ var defaultTranslations$7 = {
1120
+ previewAlt: "Vista previa de imagen",
1121
+ removeButtonAriaLabel: "Eliminar imagen",
1122
+ emptyStateText: "No hay imágenes para mostrar",
1123
+ clickableImageAriaLabel: "Hacer clic para ampliar imagen",
1124
+ };
1125
+ var sizeClasses = {
1126
+ micro: "w-12 h-12",
1127
+ small: "w-[100px] h-[100px]",
1128
+ medium: "w-[150px] h-[150px]",
1129
+ large: "w-[200px] h-[200px]",
1130
+ };
1131
+ var radiusClasses = {
1132
+ none: "rounded-none",
1133
+ sm: "rounded-sm",
1134
+ md: "rounded-md",
1135
+ lg: "rounded-lg",
1136
+ full: "rounded-full",
1137
+ };
1138
+ /**
1139
+ * Normalizes input to array of ImagePreviewItem
1140
+ */
1141
+ var normalizeImages = function (images) {
1142
+ var imgArray = Array.isArray(images) ? images : [images];
1143
+ return imgArray.map(function (img, index) {
1144
+ if (typeof img === "string") {
1145
+ return { src: img, id: "img-".concat(index) };
1146
+ }
1147
+ return __assign(__assign({}, img), { id: img.id || "img-".concat(index) });
1148
+ });
1149
+ };
1150
+ var ImagePreview = function (_a) {
1151
+ var images = _a.images, _b = _a.size, size = _b === void 0 ? "small" : _b, onRemove = _a.onRemove, _c = _a.showRemoveButton, showRemoveButton = _c === void 0 ? true : _c, _d = _a.className, className = _d === void 0 ? "" : _d, _e = _a.translations, translations = _e === void 0 ? {} : _e, _f = _a.backgroundColor, backgroundColor = _f === void 0 ? "bg-white dark:bg-gray-800" : _f, _g = _a.radius, radius = _g === void 0 ? "lg" : _g, _h = _a.showBorder, showBorder = _h === void 0 ? true : _h, onImageClick = _a.onImageClick;
1152
+ var t = __assign(__assign({}, defaultTranslations$7), translations);
1153
+ var normalizedImages = normalizeImages(images);
1154
+ var sizeClass = sizeClasses[size];
1155
+ var radiusClass = radiusClasses[radius];
1156
+ if (normalizedImages.length === 0) {
1157
+ return (jsx("div", { className: "text-sm text-default-500 text-center py-4", children: t.emptyStateText }));
1158
+ }
1159
+ var handleRemove = function (id, index) {
1160
+ if (onRemove) {
1161
+ onRemove(id, index);
1162
+ }
1163
+ };
1164
+ var handleImageClick = function (image, index) {
1165
+ if (onImageClick) {
1166
+ onImageClick(image, index);
1167
+ }
1168
+ };
1169
+ var isClickable = !!onImageClick;
1170
+ return (jsx("div", { className: "flex flex-wrap gap-3 ".concat(className), children: normalizedImages.map(function (image, index) { return (jsx("div", { className: "relative", children: jsxs("div", { className: "relative ".concat(sizeClass), children: [jsx("img", { src: image.src, alt: image.alt || t.previewAlt, className: "\n\t\t\t\t\t\t\t\t".concat(sizeClass, " \n\t\t\t\t\t\t\t\tobject-contain \n\t\t\t\t\t\t\t\t").concat(radiusClass, " \n\t\t\t\t\t\t\t\t").concat(backgroundColor, " \n\t\t\t\t\t\t\t\t").concat(showBorder ? "border border-default-200 dark:border-default-700" : "", "\n\t\t\t\t\t\t\t\tshadow-sm\n\t\t\t\t\t\t\t\t").concat(isClickable ? "cursor-pointer hover:opacity-80 transition-opacity" : "", "\n\t\t\t\t\t\t\t"), onClick: isClickable ? function () { return handleImageClick(image, index); } : undefined, onKeyDown: isClickable
1171
+ ? function (e) {
1172
+ if (e.key === "Enter" || e.key === " ") {
1173
+ e.preventDefault();
1174
+ handleImageClick(image, index);
1175
+ }
1176
+ }
1177
+ : undefined, role: isClickable ? "button" : undefined, tabIndex: isClickable ? 0 : undefined, "aria-label": isClickable ? t.clickableImageAriaLabel : undefined }), showRemoveButton && onRemove && (jsx("button", { type: "button", onClick: function () { return handleRemove(image.id || "", index); }, "aria-label": t.removeButtonAriaLabel, className: "\n\t\t\t\t\t\t\t\t\tabsolute -top-2 -right-2 \n\t\t\t\t\t\t\t\t\tp-1 rounded-full \n\t\t\t\t\t\t\t\t\tbg-danger-500 hover:bg-danger-600 \n\t\t\t\t\t\t\t\t\ttext-white \n\t\t\t\t\t\t\t\t\tcursor-pointer \n\t\t\t\t\t\t\t\t\ttransition-colors\n\t\t\t\t\t\t\t\t\tfocus:outline-none \n\t\t\t\t\t\t\t\t\tfocus:ring-2 \n\t\t\t\t\t\t\t\t\tfocus:ring-danger-400 \n\t\t\t\t\t\t\t\t\tfocus:ring-offset-2\n\t\t\t\t\t\t\t\t", children: jsx(IconComponent, { size: size === "micro" ? "sm" : "md", icon: "solar:trash-bin-minimalistic-outline" }) }))] }) }, image.id || index)); }) }));
1178
+ };
1179
+
1119
1180
  function normalizeClass(value) {
1120
1181
  if (typeof value === "string") {
1121
1182
  return value || undefined;
@@ -4219,4 +4280,4 @@ var NavigationLoadingProvider = function (_a) {
4219
4280
  return (jsxs(NavigationLoadingContext.Provider, { value: value, children: [children, jsx(NavigationLoadingOverlay, { isVisible: isVisible })] }));
4220
4281
  };
4221
4282
 
4222
- export { AddHolidayForm, AnalyticsCard, AuraAutocomplete, AuraTable, AuraToastProvider, BreadcrumbsComponent, Button, Card, Chip, ColorSelector, DatePicker, DateRangePicker, DateSelector, DrawerFilters, GlobalToast, H1, H2, H3, H4, HeaderComponent, HolidayType, IconComponent, Input, MenuComponent, Modal, ModalBody, ModalContent, ModalFooter, ModalHeader, MultiStepWizard, NavigationLoadingContext, NavigationLoadingOverlay, NavigationLoadingProvider, P, Pagination, Phone, PromotionalBanner, RangeFilter, RowSteps, ScheduleRow, SearchInput, Select, StepIndicator, Switch as SwitchComponent, Textarea, ThemeContext, ThemePicker, ThemeProvider, TimeInput as TimeInputComponent, ToastContext, UploadFile, VerticalSteps, Wizard, WizardNavigation, WizardSidebar, defaultTranslations$3 as defaultTranslations, sizeMap, themeColors, useAuraToast, useNavigationLoading, useThemeContext };
4283
+ export { AddHolidayForm, AnalyticsCard, AuraAutocomplete, AuraTable, AuraToastProvider, BreadcrumbsComponent, Button, Card, Chip, ColorSelector, DatePicker, DateRangePicker, DateSelector, DrawerFilters, GlobalToast, H1, H2, H3, H4, HeaderComponent, HolidayType, IconComponent, ImagePreview, Input, MenuComponent, Modal, ModalBody, ModalContent, ModalFooter, ModalHeader, MultiStepWizard, NavigationLoadingContext, NavigationLoadingOverlay, NavigationLoadingProvider, P, Pagination, Phone, PromotionalBanner, RangeFilter, RowSteps, ScheduleRow, SearchInput, Select, StepIndicator, Switch as SwitchComponent, Textarea, ThemeContext, ThemePicker, ThemeProvider, TimeInput as TimeInputComponent, ToastContext, UploadFile, VerticalSteps, Wizard, WizardNavigation, WizardSidebar, defaultTranslations$3 as defaultTranslations, sizeMap, themeColors, useAuraToast, useNavigationLoading, useThemeContext };
@@ -0,0 +1,25 @@
1
+ /**
2
+ * ImagePreview Component
3
+ *
4
+ * A flexible image preview component that supports single or multiple images,
5
+ * customizable sizes, and delete functionality. Built for BeweOS with full
6
+ * i18n support and accessibility features.
7
+ *
8
+ * @component
9
+ * @example
10
+ * // Single image
11
+ * <ImagePreview images="https://example.com/image.jpg" onRemove={() => {}} />
12
+ *
13
+ * // Multiple images
14
+ * <ImagePreview
15
+ * images={[
16
+ * { src: "image1.jpg", alt: "Image 1", id: "1" },
17
+ * { src: "image2.jpg", alt: "Image 2", id: "2" }
18
+ * ]}
19
+ * onRemove={(id) => console.log('Remove', id)}
20
+ * />
21
+ */
22
+ import type React from "react";
23
+ import type { ImagePreviewProps } from "./ImagePreview.types";
24
+ export declare const ImagePreview: React.FC<ImagePreviewProps>;
25
+ //# sourceMappingURL=ImagePreview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImagePreview.d.ts","sourceRoot":"","sources":["../../../../src/components/image-preview/ImagePreview.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAEX,iBAAiB,EAGjB,MAAM,sBAAsB,CAAC;AAuC9B,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAwGpD,CAAC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * ImagePreview Component Types
3
+ *
4
+ * Type definitions for the ImagePreview component supporting single/multiple images
5
+ * with customizable sizes and delete functionality.
6
+ */
7
+ export type ImagePreviewSize = "micro" | "small" | "medium" | "large";
8
+ export interface ImagePreviewItem {
9
+ /** Image source URL */
10
+ src: string;
11
+ /** Alt text for the image */
12
+ alt?: string;
13
+ /** Unique identifier for the image */
14
+ id?: string;
15
+ }
16
+ export interface ImagePreviewTranslations {
17
+ /** Alt text for preview image */
18
+ previewAlt?: string;
19
+ /** Aria label for remove button */
20
+ removeButtonAriaLabel?: string;
21
+ /** Text for empty state when no images */
22
+ emptyStateText?: string;
23
+ /** Aria label for clickable image */
24
+ clickableImageAriaLabel?: string;
25
+ }
26
+ export interface ImagePreviewProps {
27
+ /** Single image source or array of images */
28
+ images: string | ImagePreviewItem | (string | ImagePreviewItem)[];
29
+ /** Size of the preview */
30
+ size?: ImagePreviewSize;
31
+ /** Callback when remove button is clicked */
32
+ onRemove?: (id?: string, index?: number) => void;
33
+ /** Show remove button */
34
+ showRemoveButton?: boolean;
35
+ /** Custom className for the container */
36
+ className?: string;
37
+ /** Translation strings */
38
+ translations?: ImagePreviewTranslations;
39
+ /** Background color for image container */
40
+ backgroundColor?: string;
41
+ /** Border radius */
42
+ radius?: "none" | "sm" | "md" | "lg" | "full";
43
+ /** Show border */
44
+ showBorder?: boolean;
45
+ /** Callback when image is clicked - enables clickable behavior */
46
+ onImageClick?: (image: ImagePreviewItem, index: number) => void;
47
+ }
48
+ //# sourceMappingURL=ImagePreview.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImagePreview.types.d.ts","sourceRoot":"","sources":["../../../../src/components/image-preview/ImagePreview.types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEtE,MAAM,WAAW,gBAAgB;IAChC,uBAAuB;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,6BAA6B;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,EAAE,CAAC,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,wBAAwB;IACxC,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,0CAA0C;IAC1C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qCAAqC;IACrC,uBAAuB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,iBAAiB;IACjC,6CAA6C;IAC7C,MAAM,EAAE,MAAM,GAAG,gBAAgB,GAAG,CAAC,MAAM,GAAG,gBAAgB,CAAC,EAAE,CAAC;IAClE,0BAA0B;IAC1B,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,yBAAyB;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0BAA0B;IAC1B,YAAY,CAAC,EAAE,wBAAwB,CAAC;IACxC,2CAA2C;IAC3C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;IAC9C,kBAAkB;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kEAAkE;IAClE,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAChE"}
@@ -0,0 +1,3 @@
1
+ export { ImagePreview } from "./ImagePreview.js";
2
+ export type { ImagePreviewProps, ImagePreviewTranslations, ImagePreviewItem, ImagePreviewSize, } from "./ImagePreview.types.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/image-preview/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EACX,iBAAiB,EACjB,wBAAwB,EACxB,gBAAgB,EAChB,gBAAgB,GAChB,MAAM,yBAAyB,CAAC"}
@@ -15,6 +15,7 @@ export * from "./components/h3";
15
15
  export * from "./components/h4";
16
16
  export * from "./components/header";
17
17
  export * from "./components/icon";
18
+ export * from "./components/image-preview";
18
19
  export * from "./components/menu";
19
20
  export * from "./components/multi-step-wizard";
20
21
  export * from "./components/p";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@beweco/aurora-ui",
3
- "version": "0.1.21",
3
+ "version": "0.1.23",
4
4
  "description": "Bewe Aurora UI Component Library",
5
5
  "main": "./dist/index.cjs.js",
6
6
  "module": "./dist/index.esm.js",