adminator-admin-dashboard 2.7.0 → 2.8.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "adminator-admin-dashboard",
3
- "version": "2.7.0",
3
+ "version": "2.8.0",
4
4
  "private": false,
5
5
  "description": "Modern jQuery-free Bootstrap 5 Admin Dashboard Template with Dark Mode",
6
6
  "main": "dist/index.html",
@@ -38,7 +38,7 @@
38
38
  "src/**/*",
39
39
  "webpack.config.js",
40
40
  "CLAUDE.md",
41
- "RELEASE_NOTES.md",
41
+ "CHANGELOG.md",
42
42
  "README.md"
43
43
  ],
44
44
  "engines": {
@@ -55,53 +55,52 @@
55
55
  "lint:js": "eslint ./src ./webpack ./*.js -f table --ext .js --ext .jsx",
56
56
  "lint:scss": "stylelint ./src/**/*.scss",
57
57
  "lint": "npm run lint:js && npm run lint:scss",
58
- "prepublishOnly": "npm run build",
58
+ "prepublishOnly": "npm run lint && npm run build",
59
59
  "postpublish": "echo 'Package published successfully! View at: https://www.npmjs.com/package/adminator-admin-dashboard'"
60
60
  },
61
61
  "devDependencies": {
62
- "@babel/core": "^7.27.4",
63
- "@babel/eslint-parser": "^7.27.5",
64
- "@babel/plugin-transform-runtime": "^7.27.4",
65
- "@babel/preset-env": "^7.27.2",
66
- "@babel/runtime": "^7.27.6",
67
- "@eslint/js": "^9.29.0",
62
+ "@babel/core": "^7.28.0",
63
+ "@babel/eslint-parser": "^7.28.0",
64
+ "@babel/plugin-transform-runtime": "^7.28.0",
65
+ "@babel/preset-env": "^7.28.0",
66
+ "@eslint/js": "^9.33.0",
68
67
  "babel-loader": "^10.0.0",
69
68
  "case-sensitive-paths-webpack-plugin": "^2.4.0",
70
69
  "copy-webpack-plugin": "^13.0.0",
71
- "cross-env": "^7.0.3",
70
+ "cross-env": "^10.0.0",
72
71
  "css-loader": "^7.1.2",
73
72
  "css-minimizer-webpack-plugin": "^7.0.2",
74
- "eslint": "^9.29.0",
73
+ "eslint": "^9.33.0",
75
74
  "eslint-formatter-table": "^7.32.1",
76
- "globals": "^16.2.0",
75
+ "globals": "^16.3.0",
77
76
  "html-webpack-plugin": "^5.6.3",
78
- "mini-css-extract-plugin": "^2.9.2",
77
+ "mini-css-extract-plugin": "^2.9.3",
79
78
  "postcss": "^8.5.6",
80
79
  "postcss-loader": "^8.1.1",
81
- "postcss-preset-env": "^10.2.3",
82
- "sass": "^1.89.2",
80
+ "postcss-preset-env": "^10.2.4",
81
+ "sass": "^1.90.0",
83
82
  "sass-loader": "^16.0.5",
84
83
  "shx": "^0.4.0",
85
84
  "style-loader": "^4.0.0",
86
- "stylelint": "^16.21.0",
85
+ "stylelint": "^16.23.1",
87
86
  "stylelint-config-standard": "^38.0.0",
88
- "webpack": "^5.99.9",
87
+ "webpack": "^5.101.0",
89
88
  "webpack-cli": "^6.0.1",
90
89
  "webpack-dashboard": "^3.3.8",
91
90
  "webpack-dev-server": "^5.2.2"
92
91
  },
93
92
  "dependencies": {
94
- "@fullcalendar/core": "^6.1.17",
95
- "@fullcalendar/daygrid": "^6.1.17",
96
- "@fullcalendar/interaction": "^6.1.17",
97
- "@fullcalendar/list": "^6.1.17",
98
- "@fullcalendar/timegrid": "^6.1.17",
93
+ "@babel/runtime": "^7.28.2",
94
+ "@fullcalendar/core": "^6.1.19",
95
+ "@fullcalendar/daygrid": "^6.1.19",
96
+ "@fullcalendar/interaction": "^6.1.19",
97
+ "@fullcalendar/list": "^6.1.19",
98
+ "@fullcalendar/timegrid": "^6.1.19",
99
99
  "@popperjs/core": "^2.11.8",
100
100
  "bootstrap": "^5.3.7",
101
101
  "brand-colors": "^2.1.1",
102
102
  "chart.js": "^4.5.0",
103
103
  "dayjs": "^1.11.13",
104
- "file-loader": "^6.2.0",
105
104
  "jsvectormap": "^1.6.0",
106
105
  "load-google-maps-api": "^2.0.2",
107
106
  "lodash": "^4.17.21",
@@ -5,9 +5,9 @@
5
5
 
6
6
  // Note: Bootstrap 5 CSS is still available via SCSS imports
7
7
  // Bootstrap JS components removed to eliminate jQuery dependency
8
- import DOM from './utils/dom';
8
+ import { DOM } from './utils/dom';
9
9
  import DateUtils from './utils/date';
10
- import Theme from './utils/theme';
10
+ import ThemeManager from './utils/theme';
11
11
  import Sidebar from './components/Sidebar';
12
12
  import ChartComponent from './components/Chart';
13
13
 
@@ -31,6 +31,7 @@ class AdminatorApp {
31
31
  constructor() {
32
32
  this.components = new Map();
33
33
  this.isInitialized = false;
34
+ this.themeManager = ThemeManager;
34
35
 
35
36
  // Initialize when DOM is ready
36
37
  DOM.ready(() => {
@@ -212,7 +213,7 @@ class AdminatorApp {
212
213
  // Initializing theme system
213
214
 
214
215
  // Initialize theme system first
215
- Theme.init();
216
+ this.themeManager.init();
216
217
 
217
218
  // Inject theme toggle if missing - with retry mechanism
218
219
  setTimeout(() => {
@@ -249,11 +250,11 @@ class AdminatorApp {
249
250
  const toggle = DOM.select('#theme-toggle');
250
251
  if (toggle) {
251
252
  // Set initial state
252
- const currentTheme = Theme.current();
253
+ const currentTheme = this.themeManager.current();
253
254
  toggle.checked = currentTheme === 'dark';
254
255
 
255
256
  DOM.on(toggle, 'change', () => {
256
- Theme.apply(toggle.checked ? 'dark' : 'light');
257
+ this.themeManager.apply(toggle.checked ? 'dark' : 'light');
257
258
  });
258
259
 
259
260
  // Listen for theme changes from other sources
@@ -40,7 +40,9 @@ const Theme = {
40
40
  }
41
41
  try {
42
42
  localStorage.setItem(THEME_KEY, theme);
43
- } catch (_) {}
43
+ } catch {
44
+ // Ignore errors
45
+ }
44
46
  window.dispatchEvent(new CustomEvent('adminator:themeChanged', { detail: { theme } }));
45
47
  },
46
48
  toggle() {
@@ -50,7 +52,7 @@ const Theme = {
50
52
  current() {
51
53
  try {
52
54
  return localStorage.getItem(THEME_KEY) || 'light';
53
- } catch (_) {
55
+ } catch {
54
56
  return 'light';
55
57
  }
56
58
  },
@@ -24,7 +24,7 @@ export default (function () {
24
24
  if (mapInstance) {
25
25
  try {
26
26
  mapInstance.destroy();
27
- } catch (e) {
27
+ } catch {
28
28
  // Map instance cleanup
29
29
  }
30
30
  mapInstance = null;
@@ -166,7 +166,7 @@ export default (function () {
166
166
  tooltip.text(`${regionName}${value ? `: ${ value}` : ''}`);
167
167
  },
168
168
 
169
- onLoaded(map) {
169
+ onLoaded() {
170
170
  // Map loaded successfully
171
171
  },
172
172
  });
@@ -174,7 +174,7 @@ export default (function () {
174
174
  // Store instance for theme updates
175
175
  worldMapContainer.mapInstance = mapInstance;
176
176
 
177
- } catch (error) {
177
+ } catch {
178
178
  // Error initializing JSVectorMap
179
179
 
180
180
  // Fallback: show a simple message
@@ -238,7 +238,7 @@ export default (function () {
238
238
  container.style.backgroundColor = colors.backgroundColor;
239
239
  }
240
240
 
241
- } catch (error) {
241
+ } catch {
242
242
  // Theme update failed, reinitializing map
243
243
  vectorMapInit();
244
244
  }
@@ -261,7 +261,7 @@ export default (function () {
261
261
  if (mapInstance) {
262
262
  try {
263
263
  mapInstance.destroy();
264
- } catch (e) {
264
+ } catch {
265
265
  // Map cleanup on unload
266
266
  }
267
267
  mapInstance = null;
package/RELEASE_NOTES.md DELETED
@@ -1,92 +0,0 @@
1
- # 🚀 Adminator v2.7.0 - jQuery-Free Release
2
-
3
- ## 📋 Overview
4
- This major release completely removes jQuery dependency from the Adminator admin dashboard while maintaining all functionality and improving performance. The project now uses modern vanilla JavaScript with Bootstrap 5.3.7.
5
-
6
- ## ✨ Major Changes
7
-
8
- ### 🗑️ Removed jQuery Dependencies (600KB+ bundle reduction)
9
- - ❌ **jQuery Core** (3.7.1) → ✅ **Vanilla JavaScript**
10
- - ❌ **jQuery Sparkline** (2.4.0) → ✅ **Chart.js 4.5.0** mini charts
11
- - ❌ **Bootstrap Datepicker** (1.10.0) → ✅ **HTML5 date inputs** + vanilla JS
12
- - ❌ **DataTables** (1.10.18) → ✅ **Custom vanilla JS** table component
13
- - ❌ **Easy Pie Chart** (2.1.7) → ✅ **Custom SVG** pie charts
14
- - ❌ **jVectorMap** (2.0.4) → ✅ **JSVectorMap 1.6.0** (jQuery-free)
15
-
16
- ### 🔧 New Vanilla JavaScript Components
17
- - **Bootstrap 5 Components**: Modals, dropdowns, popovers, tooltips, accordions
18
- - **Enhanced Data Tables**: Sorting, pagination, search functionality
19
- - **Interactive Charts**: Chart.js-based sparklines with theme support
20
- - **Vector Maps**: Interactive world maps with markers and tooltips
21
- - **Date Pickers**: HTML5 date inputs with enhanced UX
22
- - **Theme System**: Improved dark/light mode with CSS variables
23
-
24
- ### 📱 Mobile Enhancements
25
- - Full-width search overlay for mobile devices
26
- - Enhanced dropdown behavior with overlay management
27
- - Touch-friendly interactions and gestures
28
- - Viewport-based responsive breakpoints
29
- - Prevents horizontal scrolling on mobile
30
-
31
- ### 🎨 Bootstrap 5 Migration
32
- - **Updated to Bootstrap 5.3.7** from Bootstrap 4
33
- - **Fixed deprecated classes**: `sr-only` → `visually-hidden`
34
- - **Updated data attributes**: `data-toggle` → `data-bs-toggle`
35
- - **Enhanced UI components**: New examples and improved styling
36
- - **Better accessibility**: Proper ARIA attributes and keyboard navigation
37
-
38
- ## 🚀 Performance Improvements
39
- - **Bundle size reduction**: ~600KB smaller JavaScript bundle
40
- - **Faster page loads**: Eliminated jQuery dependency
41
- - **Modern ES6+**: Class-based architecture with better maintainability
42
- - **Optimized builds**: Webpack 5.99.9 with modern optimizations
43
-
44
- ## 📦 New Features
45
- - **Theme Toggle**: Automatic injection with OS preference detection
46
- - **Comprehensive Documentation**: Updated CLAUDE.md with full architecture guide
47
- - **Mobile-First Design**: Enhanced mobile experience across all components
48
- - **Dark Mode**: Complete dark mode implementation with CSS variables
49
-
50
- ## 🔧 Technical Details
51
- - **Build System**: Webpack 5.99.9 with hot module replacement
52
- - **JavaScript**: ES6+ with Babel transpilation, ESLint 9.x flat config
53
- - **CSS**: Sass/SCSS with PostCSS processing
54
- - **Frontend**: 100% jQuery-free vanilla JavaScript
55
- - **Theme System**: CSS variables-based dark/light mode
56
-
57
- ## 📖 Documentation
58
- - Complete architecture documentation in `CLAUDE.md`
59
- - Development commands and workflow guidelines
60
- - Component integration examples
61
- - Mobile optimization techniques
62
-
63
- ## 🔗 Demo
64
- - **Live Demo**: https://puikinsh.github.io/Adminator-admin-dashboard/
65
- - **Development Server**: `npm start` (http://localhost:4000)
66
-
67
- ## 💻 Quick Start
68
- ```bash
69
- # Install dependencies
70
- npm install
71
-
72
- # Start development server
73
- npm start
74
-
75
- # Build for production
76
- npm run build
77
-
78
- # Run linters
79
- npm run lint
80
- ```
81
-
82
- ## 🎯 What's Next
83
- This release establishes a modern, maintainable foundation for the Adminator admin dashboard. All functionality has been preserved while significantly improving performance and developer experience.
84
-
85
- ## 🙏 Acknowledgments
86
- - Original design by [Colorlib](https://colorlib.com)
87
- - jQuery removal and modernization completed with comprehensive testing
88
- - Bootstrap 5 migration with full backward compatibility
89
-
90
- ---
91
-
92
- **Full Changelog**: https://github.com/puikinsh/Adminator-admin-dashboard/compare/v2.6.1...v2.7.0
@@ -1 +0,0 @@
1
- export default __webpack_public_path__ + "assets/c1e38fd9e0e74ba58f7a2b77ef29fdd3.svg";
@@ -1 +0,0 @@
1
- export default __webpack_public_path__ + "assets/f0fc8c798eac5636249c4ea287832422.svg";
package/dist/test.html DELETED
@@ -1,91 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="utf-8">
5
- <meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no">
6
- <title>Test</title>
7
- <style>
8
- #loader {
9
- transition: all 0.3s ease-in-out;
10
- opacity: 1;
11
- visibility: visible;
12
- position: fixed;
13
- height: 100vh;
14
- width: 100%;
15
- background: #fff;
16
- z-index: 90000;
17
- }
18
-
19
- #loader.fadeOut {
20
- opacity: 0;
21
- visibility: hidden;
22
- }
23
-
24
-
25
-
26
- .spinner {
27
- width: 40px;
28
- height: 40px;
29
- position: absolute;
30
- top: calc(50% - 20px);
31
- left: calc(50% - 20px);
32
- background-color: #333;
33
- border-radius: 100%;
34
- -webkit-animation: sk-scaleout 1.0s infinite ease-in-out;
35
- animation: sk-scaleout 1.0s infinite ease-in-out;
36
- }
37
-
38
- @-webkit-keyframes sk-scaleout {
39
- 0% { -webkit-transform: scale(0) }
40
- 100% {
41
- -webkit-transform: scale(1.0);
42
- opacity: 0;
43
- }
44
- }
45
-
46
- @keyframes sk-scaleout {
47
- 0% {
48
- -webkit-transform: scale(0);
49
- transform: scale(0);
50
- } 100% {
51
- -webkit-transform: scale(1.0);
52
- transform: scale(1.0);
53
- opacity: 0;
54
- }
55
- }
56
- </style>
57
- <script defer="defer" src="main.js"></script></head>
58
- <body class="app">
59
- <div id="loader">
60
- <div class="spinner"></div>
61
- </div>
62
-
63
- <script>
64
- window.addEventListener('load', function load() {
65
- const loader = document.getElementById('loader');
66
- setTimeout(function() {
67
- loader.classList.add('fadeOut');
68
- }, 300);
69
- });
70
- </script>
71
- <div class="page-container">
72
-
73
- <main class="main-content bgc-grey-100">
74
- <div id="mainContent">
75
- <div class="full-container">
76
- <button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="top" title="Tooltip on top">
77
- Tooltip on top
78
- </button>
79
- <button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="top" title="Tooltip on top">
80
- Tooltip on top
81
- </button>
82
-
83
- </div>
84
- </div>
85
- </main>
86
- <footer class="bdT ta-c p-30 lh-0 fsz-sm c-grey-600">
87
- <span>Copyright © 2025 Designed by <a href="https://colorlib.com" target="_blank" rel="nofollow noopener noreferrer" title="Colorlib">Colorlib</a>. All rights reserved.</span>
88
- </footer>
89
- </div>
90
- </body>
91
- </html>
package/src/test.html DELETED
@@ -1,96 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="utf-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
6
- <title>Test</title>
7
- <style>
8
- #loader {
9
- transition: all 0.3s ease-in-out;
10
- opacity: 1;
11
- visibility: visible;
12
- position: fixed;
13
- height: 100vh;
14
- width: 100%;
15
- background: #fff;
16
- z-index: 90000;
17
- }
18
-
19
- #loader.fadeOut {
20
- opacity: 0;
21
- visibility: hidden;
22
- }
23
-
24
-
25
-
26
- .spinner {
27
- width: 40px;
28
- height: 40px;
29
- position: absolute;
30
- top: calc(50% - 20px);
31
- left: calc(50% - 20px);
32
- background-color: #333;
33
- border-radius: 100%;
34
- -webkit-animation: sk-scaleout 1.0s infinite ease-in-out;
35
- animation: sk-scaleout 1.0s infinite ease-in-out;
36
- }
37
-
38
- @-webkit-keyframes sk-scaleout {
39
- 0% { -webkit-transform: scale(0) }
40
- 100% {
41
- -webkit-transform: scale(1.0);
42
- opacity: 0;
43
- }
44
- }
45
-
46
- @keyframes sk-scaleout {
47
- 0% {
48
- -webkit-transform: scale(0);
49
- transform: scale(0);
50
- } 100% {
51
- -webkit-transform: scale(1.0);
52
- transform: scale(1.0);
53
- opacity: 0;
54
- }
55
- }
56
- </style>
57
- </head>
58
- <body class="app">
59
- <div id='loader'>
60
- <div class="spinner"></div>
61
- </div>
62
-
63
- <script>
64
- window.addEventListener('load', function load() {
65
- const loader = document.getElementById('loader');
66
- setTimeout(function() {
67
- loader.classList.add('fadeOut');
68
- }, 300);
69
- });
70
- </script>
71
- <div class="page-container">
72
- <!-- <div class="header navbar">
73
- <div class="header-container">
74
-
75
- </div>
76
-
77
- </div> -->
78
- <main class='main-content bgc-grey-100'>
79
- <div id='mainContent'>
80
- <div class="full-container">
81
- <button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="top" title="Tooltip on top">
82
- Tooltip on top
83
- </button>
84
- <button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="top" title="Tooltip on top">
85
- Tooltip on top
86
- </button>
87
-
88
- </div>
89
- </div>
90
- </main>
91
- <footer class="bdT ta-c p-30 lh-0 fsz-sm c-grey-600">
92
- <span>Copyright © 2025 Designed by <a href="https://colorlib.com" target="_blank" rel="nofollow noopener noreferrer" title="Colorlib">Colorlib</a>. All rights reserved.</span>
93
- </footer>
94
- </div>
95
- </body>
96
- </html>