@mgonza02/goal-image-gallery 1.1.1 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,39 @@ All notable changes to the GoalImageGallery project will be documented in this f
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.2.1] - 2026-05-22
9
+
10
+ ### 🐛 Bug Fixes
11
+ - **Stack alignItems**: Moved `alignItems` prop inside the `sx` prop in `ImageGalleryEmptyState` component to prevent React from passing it down as an unrecognized attribute to DOM elements.
12
+
13
+ ## [1.2.0] - 2026-04-29
14
+
15
+ ### ⬆️ Dependency Upgrades
16
+ - **MUI v9**: Upgraded `@mui/material` and `@mui/icons-material` from `^5.18` to `^9.0.0`
17
+ - **Emotion**: Updated `@emotion/react` and `@emotion/styled` to `^11.14.0`
18
+ - **Node engine**: Minimum Node.js version raised to `>=18.0.0`
19
+
20
+ ### 🔧 Migration — MUI v9 Breaking Changes
21
+ - **System props removed**: Migrated deprecated shorthand props (`color`, `alignItems`, `textAlign`, `display`) on Typography and Stack to the `sx` prop using the official `@mui/codemod v9.0.0/system-props` codemod
22
+ - **Stack alignItems**: Restored `alignItems` as a direct prop on `Stack` components where the codemod incorrectly moved it into `sx`, fixing a React DOM prop warning (`React does not recognize the alignItems prop on a DOM element`)
23
+ - **Grid v2**: Confirmed Grid already uses the v2 `size` prop API required by MUI v9
24
+
25
+ ### 📦 Package Manager — Migrated to pnpm
26
+ - **pnpm@10.33.2**: Replaced npm with pnpm as the official package manager
27
+ - Added `"packageManager": "pnpm@10.33.2"` to `package.json`
28
+ - Added `.npmrc` with `engine-strict=true`, `auto-install-peers=true`, `shamefully-hoist=false`
29
+ - All `npm run X` script calls replaced with `pnpm X`
30
+ - `package-lock.json` replaced by `pnpm-lock.yaml`
31
+ - Updated `.gitignore` and `.npmignore` with pnpm log/lockfile entries
32
+
33
+ ### 🐳 Docker
34
+ - **Dockerfile**: Replaced `npm install` with `corepack enable && corepack prepare pnpm@10.33.2 --activate` + `pnpm install --frozen-lockfile`; `CMD` updated to `pnpm start`
35
+ - **docker-compose.yml**: Updated `command` from `node start.js` to `pnpm build`
36
+
37
+ ### 📐 Architecture
38
+ - Added `SOLID_PRINCIPLES.md`: documents how SRP, OCP, LSP, ISP, and DIP are applied and enforced in this codebase, including allowed import direction graph and PR checklist
39
+
40
+
8
41
  ## [1.1.1] - 2025-07-14
9
42
  ### 🐛 Bug Fixes
10
43
  - **Fixed Image Gallery Modal**: Resolved issues with the image gallery modal not displaying correctly
package/README.md CHANGED
@@ -53,10 +53,10 @@ import { GoalImageGallery } from '@mgonza02/goal-image-gallery';
53
53
 
54
54
  ## Installation & Setup
55
55
 
56
- ### NPM Installation
56
+ ### Installation
57
57
 
58
58
  ```bash
59
- npm install @mgonza02/goal-image-gallery
59
+ pnpm add @mgonza02/goal-image-gallery
60
60
  ```
61
61
 
62
62
  ### Peer Dependencies
@@ -64,7 +64,7 @@ npm install @mgonza02/goal-image-gallery
64
64
  Make sure you have the required peer dependencies installed:
65
65
 
66
66
  ```bash
67
- npm install @mui/material @mui/icons-material @emotion/react @emotion/styled react react-dom
67
+ pnpm add @mui/material @mui/icons-material @emotion/react @emotion/styled react react-dom
68
68
  ```
69
69
 
70
70
  ### Import
@@ -1106,13 +1106,14 @@ When contributing to this component:
1106
1106
  For detailed information about changes, new features, and updates across versions, see [CHANGELOG.md](CHANGELOG.md).
1107
1107
 
1108
1108
  ### Recent Updates
1109
+ - **v1.2.1**: Fixed warning about invalid `alignItems` prop being passed to DOM elements by Stack components
1110
+ - **v1.2.0**: Upgraded to MUI v9, migrated to pnpm, Docker build pipeline, SOLID principles documentation
1111
+ - **v1.1.1**: Modal responsiveness, accessibility improvements, styled-components replaced with MUI Box
1112
+ - **v1.1.0**: Fixed handleAfterUpload array structure for bulk uploads
1109
1113
  - **v1.0.6**: Major package cleanup and optimization
1110
1114
  - **v1.0.5**: Initial package review and dependency analysis
1111
1115
  - **v1.0.4**: Comprehensive documentation overhaul
1112
1116
  - **v1.0.3**: NPM publication and scoped package setup
1113
- - **v1.0.2**: Slot system implementation and UI enhancements
1114
- - **v1.0.1**: Bug fixes and stability improvements
1115
- - **v1.0.0**: Initial release with core features
1116
1117
 
1117
1118
  ## License
1118
1119
 
@@ -14,7 +14,7 @@ import { downloadImage } from "./utils/image-utils";
14
14
  * Provides advanced upload capabilities, responsive design, accessibility features, and extensive customization options.
15
15
  *
16
16
  * @component
17
- * @version 1.0.3
17
+ * @version 1.2.0
18
18
  * @author Goal Team
19
19
  * @since 2023
20
20
  *
@@ -18,7 +18,9 @@ const ImageGalleryEmptyState = _ref => {
18
18
  return /*#__PURE__*/_jsx(StyledEmptyStateContainer, {
19
19
  children: /*#__PURE__*/_jsxs(Stack, {
20
20
  spacing: 3,
21
- alignItems: "center",
21
+ sx: {
22
+ alignItems: 'center'
23
+ },
22
24
  children: [/*#__PURE__*/_jsx(ImageIcon, {
23
25
  sx: {
24
26
  fontSize: 64,
@@ -26,7 +28,9 @@ const ImageGalleryEmptyState = _ref => {
26
28
  }
27
29
  }), /*#__PURE__*/_jsx(Typography, {
28
30
  variant: "h6",
29
- color: "text.secondary",
31
+ sx: {
32
+ color: 'text.secondary'
33
+ },
30
34
  children: emptyMessage
31
35
  }), updatable && /*#__PURE__*/_jsxs(_Fragment, {
32
36
  children: [/*#__PURE__*/_jsx(Button, {
@@ -40,9 +44,9 @@ const ImageGalleryEmptyState = _ref => {
40
44
  }), /*#__PURE__*/_jsxs(Stack, {
41
45
  direction: "row",
42
46
  spacing: 1,
43
- alignItems: "center",
44
47
  sx: {
45
- mt: 2
48
+ mt: 2,
49
+ alignItems: 'center'
46
50
  },
47
51
  children: [/*#__PURE__*/_jsx(Chip, {
48
52
  icon: /*#__PURE__*/_jsx(UploadIcon, {}),
@@ -65,8 +69,10 @@ const ImageGalleryEmptyState = _ref => {
65
69
  })]
66
70
  }), /*#__PURE__*/_jsx(Typography, {
67
71
  variant: "caption",
68
- color: "text.secondary",
69
- textAlign: "center",
72
+ sx: {
73
+ color: 'text.secondary',
74
+ textAlign: 'center'
75
+ },
70
76
  children: "Soporta m\xFAltiples m\xE9todos de carga: archivos, portapapeles y URLs"
71
77
  })]
72
78
  })]
@@ -117,7 +117,9 @@ const ImageGalleryModal = _ref => {
117
117
  })
118
118
  }), /*#__PURE__*/_jsx(Typography, {
119
119
  variant: "body2",
120
- color: "text.secondary",
120
+ sx: {
121
+ color: 'text.secondary'
122
+ },
121
123
  children: "Use las flechas del teclado para navegar"
122
124
  }), /*#__PURE__*/_jsx(Tooltip, {
123
125
  title: "Imagen siguiente",
package/lib/examples.js CHANGED
@@ -285,8 +285,10 @@ export const AdvancedUploadExample = () => {
285
285
  children: "Advanced Upload Methods Demo"
286
286
  }), /*#__PURE__*/_jsx(Typography, {
287
287
  variant: "body2",
288
- color: "text.secondary",
289
288
  paragraph: true,
289
+ sx: {
290
+ color: 'text.secondary'
291
+ },
290
292
  children: "This gallery supports multiple upload methods:"
291
293
  }), /*#__PURE__*/_jsxs("ul", {
292
294
  children: [/*#__PURE__*/_jsx("li", {
@@ -358,8 +360,10 @@ export const MobileGalleryExample = () => {
358
360
  children: "Mobile-Optimized Gallery"
359
361
  }), /*#__PURE__*/_jsx(Typography, {
360
362
  variant: "body2",
361
- color: "text.secondary",
362
363
  paragraph: true,
364
+ sx: {
365
+ color: 'text.secondary'
366
+ },
363
367
  children: "Optimized for mobile devices with touch-friendly interface"
364
368
  }), /*#__PURE__*/_jsx(GoalImageGallery, {
365
369
  imageCodes: mobileImages,
@@ -542,14 +546,16 @@ export const CustomSelectorExample = () => {
542
546
  children: title
543
547
  }), /*#__PURE__*/_jsx(Typography, {
544
548
  variant: "body1",
545
- color: "text.secondary",
546
549
  paragraph: true,
550
+ sx: {
551
+ color: 'text.secondary'
552
+ },
547
553
  children: uploadMessage
548
554
  }), /*#__PURE__*/_jsxs(Typography, {
549
555
  variant: "caption",
550
- display: "block",
551
- color: "text.secondary",
552
556
  sx: {
557
+ display: 'block',
558
+ color: 'text.secondary',
553
559
  mb: 2
554
560
  },
555
561
  children: ["Maximum file size: ", maxFileSize / 1024 / 1024, "MB | Theme: ", theme]
@@ -612,8 +618,10 @@ export const CustomSelectorExample = () => {
612
618
  children: "Custom Image Selector with Slots"
613
619
  }), /*#__PURE__*/_jsx(Typography, {
614
620
  variant: "body2",
615
- color: "text.secondary",
616
621
  paragraph: true,
622
+ sx: {
623
+ color: 'text.secondary'
624
+ },
617
625
  children: "This example demonstrates how to use the slot system to provide a custom image selector with enhanced UI and functionality."
618
626
  }), /*#__PURE__*/_jsx(GoalImageGallery, {
619
627
  imageCodes: images,
@@ -768,12 +776,16 @@ export const BulkUploadExample = () => {
768
776
  children: "Bulk Upload Images"
769
777
  }), /*#__PURE__*/_jsx(Typography, {
770
778
  variant: "body2",
771
- color: "text.secondary",
772
779
  paragraph: true,
780
+ sx: {
781
+ color: 'text.secondary'
782
+ },
773
783
  children: "Drop multiple images here or click to select"
774
784
  }), selectedFiles.length > 0 && /*#__PURE__*/_jsxs(Typography, {
775
785
  variant: "body2",
776
- color: "success.main",
786
+ sx: {
787
+ color: 'success.main'
788
+ },
777
789
  children: [selectedFiles.length, " file", selectedFiles.length !== 1 ? 's' : '', " selected"]
778
790
  }), /*#__PURE__*/_jsx(Button, {
779
791
  variant: "contained",
@@ -800,8 +812,10 @@ export const BulkUploadExample = () => {
800
812
  children: "Bulk Upload Gallery"
801
813
  }), /*#__PURE__*/_jsx(Typography, {
802
814
  variant: "body2",
803
- color: "text.secondary",
804
815
  paragraph: true,
816
+ sx: {
817
+ color: 'text.secondary'
818
+ },
805
819
  children: "This example demonstrates bulk upload functionality where multiple images can be uploaded at once. The handleAfterUpload method now accepts arrays of image objects."
806
820
  }), /*#__PURE__*/_jsx(GoalImageGallery, {
807
821
  imageCodes: galleryImages,
package/lib/index.js CHANGED
@@ -136,13 +136,21 @@ export const CONFIG = {
136
136
  };
137
137
 
138
138
  // Export version info
139
- export const VERSION = '2.0.0';
139
+ export const VERSION = '1.2.1';
140
140
  export const CHANGELOG = [{
141
- version: '2.0.0',
142
- date: '2024-01-01',
143
- changes: ['Added multi-method upload support', 'Enhanced UI/UX with Material Design 3', 'Improved accessibility features', 'Added keyboard navigation', 'Mobile optimization', 'Comprehensive documentation']
141
+ version: '1.2.1',
142
+ date: '2026-05-22',
143
+ changes: ['Fixed warning about invalid alignItems prop being passed to DOM elements by Stack components']
144
+ }, {
145
+ version: '1.2.0',
146
+ date: '2026-04-29',
147
+ changes: ['Upgraded to MUI v9', 'Migrated to pnpm package manager', 'Implemented Docker build pipeline', 'Added SOLID principles documentation']
148
+ }, {
149
+ version: '1.1.1',
150
+ date: '2025-07-14',
151
+ changes: ['Enhanced modal responsiveness and accessibility', 'Replaced styled-components with MUI Box']
144
152
  }, {
145
153
  version: '1.0.0',
146
- date: '2023-12-01',
147
- changes: ['Initial release', 'Basic image gallery functionality', 'File upload support', 'Image viewer modal']
154
+ date: '2025-07-11',
155
+ changes: ['Initial release with multi-method upload support', 'Enhanced UI/UX with Material Design 3', 'Added keyboard navigation and accessibility features']
148
156
  }];
package/package.json CHANGED
@@ -1,90 +1,89 @@
1
1
  {
2
- "name": "@mgonza02/goal-image-gallery",
3
- "version": "1.1.1",
4
- "description": "Advanced, accessible, and highly customizable React image gallery component with multi-method upload, responsive design, and extensive TypeScript support",
5
- "main": "lib/index.js",
6
- "module": "lib/index.js",
7
- "types": "lib/index.d.ts",
8
- "keywords": [
9
- "react",
10
- "image-gallery",
11
- "material-ui",
12
- "component",
13
- "upload",
14
- "drag-drop",
15
- "clipboard",
16
- "modal",
17
- "zoom",
18
- "responsive"
2
+ "name": "@mgonza02/goal-image-gallery",
3
+ "version": "1.2.1",
4
+ "description": "Advanced, accessible, and highly customizable React image gallery component with multi-method upload, responsive design, and extensive TypeScript support",
5
+ "main": "lib/index.js",
6
+ "module": "lib/index.js",
7
+ "types": "lib/index.d.ts",
8
+ "keywords": [
9
+ "react",
10
+ "image-gallery",
11
+ "material-ui",
12
+ "component",
13
+ "upload",
14
+ "drag-drop",
15
+ "clipboard",
16
+ "modal",
17
+ "zoom",
18
+ "responsive"
19
+ ],
20
+ "author": "Goal Team",
21
+ "license": "MIT",
22
+ "repository": {
23
+ "type": "git",
24
+ "url": "git+https://github.com/mgonza02/goal-image-gallery.git"
25
+ },
26
+ "homepage": "https://github.com/mgonza02/goal-image-gallery#readme",
27
+ "bugs": {
28
+ "url": "https://github.com/mgonza02/goal-image-gallery/issues"
29
+ },
30
+ "publishConfig": {
31
+ "access": "public"
32
+ },
33
+ "files": [
34
+ "lib/",
35
+ "README.md",
36
+ "CHANGELOG.md",
37
+ "QUICK_REFERENCE.md",
38
+ "MIGRATION.md",
39
+ "IMPLEMENTATION_GUIDE.md",
40
+ "IMPLEMENTATION_SUMMARY.md",
41
+ "DOCUMENTATION_UPDATE_SUMMARY.md",
42
+ "PACKAGE_CLEANUP_SUMMARY.md",
43
+ "LICENSE"
44
+ ],
45
+ "peerDependencies": {
46
+ "@emotion/react": "^11.14.0",
47
+ "@emotion/styled": "^11.14.0",
48
+ "@mui/icons-material": "^9.0.0",
49
+ "@mui/material": "^9.0.0",
50
+ "react": "^18.0.0",
51
+ "react-dom": "^18.0.0"
52
+ },
53
+ "dependencies": {
54
+ "prop-types": "^15.8.0"
55
+ },
56
+ "devDependencies": {
57
+ "@babel/cli": "^7.20.0",
58
+ "@babel/core": "^7.20.0",
59
+ "@babel/preset-env": "^7.20.0",
60
+ "@babel/preset-react": "^7.18.0",
61
+ "prettier": "^3.4.2"
62
+ },
63
+ "browserslist": {
64
+ "production": [
65
+ ">0.2%",
66
+ "not dead",
67
+ "not op_mini all"
19
68
  ],
20
- "author": "Goal Team",
21
- "license": "MIT",
22
- "repository": {
23
- "type": "git",
24
- "url": "git+https://github.com/mgonza02/goal-image-gallery.git"
25
- },
26
- "homepage": "https://github.com/mgonza02/goal-image-gallery#readme",
27
- "bugs": {
28
- "url": "https://github.com/mgonza02/goal-image-gallery/issues"
29
- },
30
- "publishConfig": {
31
- "access": "public"
32
- },
33
- "files": [
34
- "lib/",
35
- "README.md",
36
- "CHANGELOG.md",
37
- "QUICK_REFERENCE.md",
38
- "MIGRATION.md",
39
- "IMPLEMENTATION_GUIDE.md",
40
- "IMPLEMENTATION_SUMMARY.md",
41
- "DOCUMENTATION_UPDATE_SUMMARY.md",
42
- "PACKAGE_CLEANUP_SUMMARY.md",
43
- "LICENSE"
44
- ],
45
- "peerDependencies": {
46
- "@emotion/react": "^11.0.0",
47
- "@emotion/styled": "^11.0.0",
48
- "@mui/icons-material": "^5.18.0",
49
- "@mui/material": "^5.18.0",
50
- "react": "^18.0.0",
51
- "react-dom": "^18.0.0"
52
- },
53
- "dependencies": {
54
- "prop-types": "^15.8.0"
55
- },
56
- "scripts": {
57
- "build": "npm run clean && npm run build:js && npm run build:types",
58
- "build:js": "babel src --out-dir lib --copy-files --ignore '**/*.test.js'",
59
- "build:types": "cp src/index.d.ts lib/index.d.ts",
60
- "prepublishOnly": "npm run build",
61
- "format": "prettier --write src/**/*.js",
62
- "format:check": "prettier --check src/**/*.js",
63
- "clean": "rm -rf lib",
64
- "validate": "npm run format:check",
65
- "dev": "npm run build -- --watch",
66
- "prepack": "npm run validate && npm run build"
67
- },
68
- "devDependencies": {
69
- "@babel/cli": "^7.20.0",
70
- "@babel/core": "^7.20.0",
71
- "@babel/preset-env": "^7.20.0",
72
- "@babel/preset-react": "^7.18.0",
73
- "prettier": "^3.4.2"
74
- },
75
- "browserslist": {
76
- "production": [
77
- ">0.2%",
78
- "not dead",
79
- "not op_mini all"
80
- ],
81
- "development": [
82
- "last 1 chrome version",
83
- "last 1 firefox version",
84
- "last 1 safari version"
85
- ]
86
- },
87
- "engines": {
88
- "node": ">=16.0.0"
89
- }
69
+ "development": [
70
+ "last 1 chrome version",
71
+ "last 1 firefox version",
72
+ "last 1 safari version"
73
+ ]
74
+ },
75
+ "engines": {
76
+ "node": ">=18.0.0",
77
+ "pnpm": ">=9.0.0"
78
+ },
79
+ "scripts": {
80
+ "build": "pnpm clean && pnpm build:js && pnpm build:types",
81
+ "build:js": "babel src --out-dir lib --copy-files --ignore '**/*.test.js'",
82
+ "build:types": "cp src/index.d.ts lib/index.d.ts",
83
+ "format": "prettier --write src/**/*.js",
84
+ "format:check": "prettier --check src/**/*.js",
85
+ "clean": "rm -rf lib",
86
+ "validate": "pnpm format:check",
87
+ "dev": "pnpm build -- --watch"
88
+ }
90
89
  }