admin-lte 4.0.0-rc3 → 4.0.0-rc4

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 (60) hide show
  1. package/.claude/settings.local.json +28 -0
  2. package/CHANGELOG.md +35 -0
  3. package/CLAUDE.md +106 -0
  4. package/README 2.md +106 -0
  5. package/README.md +9 -0
  6. package/dist/UI/general.html +7 -31
  7. package/dist/UI/icons.html +7 -31
  8. package/dist/UI/timeline.html +11 -35
  9. package/dist/css/adminlte.css +33 -3
  10. package/dist/css/adminlte.css.map +1 -1
  11. package/dist/css/adminlte.min.css +2 -2
  12. package/dist/css/adminlte.min.css.map +1 -1
  13. package/dist/css/adminlte.rtl.css +33 -3
  14. package/dist/css/adminlte.rtl.css.map +1 -1
  15. package/dist/css/adminlte.rtl.min.css +2 -2
  16. package/dist/css/adminlte.rtl.min.css.map +1 -1
  17. package/dist/docs/browser-support.html +7 -31
  18. package/dist/docs/color-mode.html +7 -31
  19. package/dist/docs/components/main-header.html +12 -36
  20. package/dist/docs/components/main-sidebar.html +7 -31
  21. package/dist/docs/faq.html +7 -31
  22. package/dist/docs/how-to-contribute.html +7 -31
  23. package/dist/docs/introduction.html +12 -36
  24. package/dist/docs/javascript/treeview.html +7 -31
  25. package/dist/docs/layout.html +7 -31
  26. package/dist/docs/license.html +7 -31
  27. package/dist/examples/lockscreen.html +2 -26
  28. package/dist/examples/login-v2.html +1 -25
  29. package/dist/examples/login.html +1 -25
  30. package/dist/examples/register-v2.html +1 -25
  31. package/dist/examples/register.html +1 -25
  32. package/dist/forms/general.html +7 -31
  33. package/dist/generate/theme.html +7 -31
  34. package/dist/index.html +17 -41
  35. package/dist/index2.html +29 -53
  36. package/dist/index3.html +11 -35
  37. package/dist/js/adminlte.js +15 -6
  38. package/dist/js/adminlte.js.map +1 -1
  39. package/dist/js/adminlte.min.js +1 -1
  40. package/dist/js/adminlte.min.js.map +1 -1
  41. package/dist/layout/collapsed-sidebar.html +7 -31
  42. package/dist/layout/fixed-complete.html +7 -31
  43. package/dist/layout/fixed-footer.html +7 -31
  44. package/dist/layout/fixed-header.html +7 -31
  45. package/dist/layout/fixed-sidebar.html +7 -31
  46. package/dist/layout/layout-custom-area.html +7 -31
  47. package/dist/layout/layout-rtl.html +7 -31
  48. package/dist/layout/logo-switch.html +8 -32
  49. package/dist/layout/sidebar-mini.html +7 -31
  50. package/dist/layout/unfixed-sidebar.html +7 -31
  51. package/dist/tables/simple.html +7 -31
  52. package/dist/widgets/cards.html +7 -31
  53. package/dist/widgets/info-box.html +7 -31
  54. package/dist/widgets/small-box.html +7 -31
  55. package/package.json +9 -8
  56. package/src/scss/_accessibility.scss +9 -2
  57. package/src/scss/_app-sidebar.scss +4 -0
  58. package/src/scss/adminlte.scss +1 -1
  59. package/src/ts/adminlte.ts +1 -1
  60. package/src/ts/push-menu.ts +17 -5
@@ -0,0 +1,28 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "WebFetch(domain:github.com)",
5
+ "Bash(npm run css-lint)",
6
+ "Bash(npm run build:*)",
7
+ "Bash(npm install)",
8
+ "Bash(npm run:*)",
9
+ "Bash(npm test:*)",
10
+ "Bash(npm install:*)",
11
+ "Bash(npm start)",
12
+ "WebFetch(domain:adminlte.io)",
13
+ "Bash(rm:*)",
14
+ "Bash(find:*)",
15
+ "Bash(sed:*)",
16
+ "Bash(gh pr list:*)",
17
+ "Bash(npm audit:*)",
18
+ "Bash(npm outdated)",
19
+ "Bash(npm update:*)",
20
+ "Bash(git add:*)",
21
+ "Bash(git commit:*)",
22
+ "Bash(git tag:*)",
23
+ "Bash(gh release create:*)",
24
+ "Bash(npm publish:*)"
25
+ ],
26
+ "deny": []
27
+ }
28
+ }
package/CHANGELOG.md CHANGED
@@ -5,6 +5,41 @@ All notable changes to AdminLTE will be documented in this file.
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
+ ## [Unreleased]
9
+
10
+ ## [4.0.0-rc4] - 2025-07-10
11
+
12
+ ### Updated
13
+ - **Dependencies:** Updated 8 packages to latest versions
14
+ - @rollup/plugin-typescript: 12.1.3 → 12.1.4
15
+ - @typescript-eslint/eslint-plugin: 8.35.1 → 8.36.0
16
+ - @typescript-eslint/parser: 8.35.1 → 8.36.0
17
+ - astro: 5.10.0 → 5.11.0
18
+ - eslint: 9.30.0 → 9.30.1
19
+ - prettier: 3.5.3 → 3.6.2
20
+ - rollup: 4.44.0 → 4.44.2
21
+ - stylelint: 16.21.0 → 16.21.1
22
+
23
+ ### Fixed
24
+ - **Windows Build Compatibility:** Fixed npm scripts to work cross-platform by replacing Unix-specific shell commands with `shx`
25
+ - Updated `copy-assets` script to use `shx mkdir` and `shx cp` commands
26
+ - Updated `flatten-build` script to use `shx cp` and `shx rm` commands
27
+ - Added `shx` package as dev dependency for cross-platform shell command support
28
+ - Resolves build failures on Windows systems with "The syntax of the command is incorrect" errors
29
+ - **TeamViewer Modal Compatibility:** Fixed modal fade animations for remote desktop compatibility
30
+ - Updated accessibility CSS to use `transition: none` and `opacity: 1` instead of `display: block`
31
+ - Maintains WCAG 2.1 AA compliance while ensuring modals work properly in TeamViewer sessions
32
+ - Added specific transform overrides for modal dialogs in reduced motion mode
33
+ - **Mobile Sidebar Scrolling:** Fixed sidebar closing unexpectedly when scrolling on mobile devices
34
+ - Updated touch event handling to differentiate between tap and scroll gestures
35
+ - Added proper overflow properties to sidebar wrapper for mobile viewport
36
+ - Sidebar now remains open during scroll operations on touch devices
37
+ - Resolves issue where scrolling in sidebar would immediately close it on mobile browsers
38
+ - **Image Path Resolution:** Fixed mobile image loading by using relative paths in HTML
39
+ - **Root Cause:** Absolute paths like `/assets/img/user.jpg` caused 404 errors on mobile
40
+ - **Solution:** Generate relative image paths in Astro components based on page location
41
+ - **Result:** Images now load correctly on all devices and deployment scenarios
42
+
8
43
  ## [4.0.0-rc3] - 2025-06-24
9
44
 
10
45
  ### Production Deployment & Cross-Platform Compatibility
package/CLAUDE.md ADDED
@@ -0,0 +1,106 @@
1
+ # CLAUDE.md
2
+
3
+ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
+
5
+ ## Project Overview
6
+
7
+ AdminLTE is a Bootstrap 5-based admin dashboard template with TypeScript components and SCSS styling. The project uses Astro for documentation generation and includes comprehensive build tooling for development and production.
8
+
9
+ ## Development Commands
10
+
11
+ ### Start Development
12
+ ```bash
13
+ npm start # Start development server with file watching (opens http://localhost:3000)
14
+ npm run dev # Same as npm start
15
+ ```
16
+
17
+ ### Build Commands
18
+ ```bash
19
+ npm run build # Quick development build (CSS + JS + assets + docs)
20
+ npm run production # Full production build with linting and optimization
21
+ npm run compile # Build all assets (CSS, JS, assets, docs)
22
+ ```
23
+
24
+ ### Asset-Specific Commands
25
+ ```bash
26
+ npm run css # Build CSS only (compile + prefix + RTL + minify)
27
+ npm run js # Build JavaScript only (compile + minify)
28
+ npm run assets # Process assets only
29
+ ```
30
+
31
+ ### Linting and Quality
32
+ ```bash
33
+ npm run lint # Run all linters (JS, CSS, docs, lockfile)
34
+ npm run js-lint # ESLint for JavaScript/TypeScript
35
+ npm run css-lint # Stylelint for SCSS
36
+ npm run docs-lint # Astro check for documentation
37
+ ```
38
+
39
+ ### Individual Build Steps
40
+ ```bash
41
+ npm run css-compile # Compile SCSS to CSS
42
+ npm run css-rtl # Generate RTL versions
43
+ npm run js-compile # Compile TypeScript to JavaScript
44
+ npm run docs-compile # Build documentation with Astro
45
+ ```
46
+
47
+ ## Architecture
48
+
49
+ ### Core Structure
50
+ - **src/ts/**: TypeScript source files for UI components
51
+ - **src/scss/**: SCSS source files for styling
52
+ - **src/html/**: Astro-based documentation and examples
53
+ - **src/config/**: Build configuration files
54
+ - **src/assets/**: Static assets (images, etc.)
55
+ - **dist/**: Built assets and documentation
56
+
57
+ ### Key Components (src/ts/)
58
+ - **adminlte.ts**: Main entry point that initializes all components
59
+ - **layout.ts**: Core layout management and theme handling
60
+ - **accessibility.ts**: WCAG 2.1 AA compliance features
61
+ - **card-widget.ts**: Collapsible card functionality
62
+ - **treeview.ts**: Navigation tree component
63
+ - **push-menu.ts**: Sidebar menu toggle
64
+ - **direct-chat.ts**: Chat widget functionality
65
+ - **fullscreen.ts**: Fullscreen mode toggle
66
+
67
+ ### Build System
68
+ - **Rollup**: JavaScript bundling (UMD format)
69
+ - **Sass**: SCSS compilation with Bootstrap integration
70
+ - **PostCSS**: CSS processing with autoprefixer and RTL support
71
+ - **Astro**: Static site generation for documentation
72
+ - **ESLint**: JavaScript/TypeScript linting with TypeScript ESLint, Unicorn, and Astro plugins
73
+
74
+ ### Styling Architecture
75
+ - Built on Bootstrap 5.3.7 with custom variables
76
+ - Modular SCSS structure in parts/ directory
77
+ - Dark mode support with separate variable files
78
+ - RTL (Right-to-Left) language support
79
+ - Accessibility-focused styling
80
+
81
+ ### Development Workflow
82
+ 1. Source files are watched during development
83
+ 2. CSS and JS are automatically compiled and copied to src/html/public/
84
+ 3. Astro serves documentation with hot reloading
85
+ 4. Production builds include minification and optimization
86
+
87
+ ## Key Files and Configurations
88
+
89
+ ### Build Configuration
90
+ - **src/config/rollup.config.js**: JavaScript bundling configuration
91
+ - **src/config/astro.config.mjs**: Documentation build configuration
92
+ - **src/config/postcss.config.mjs**: CSS processing configuration
93
+ - **eslint.config.js**: Linting rules and file ignores
94
+
95
+ ### Main Entry Points
96
+ - **src/ts/adminlte.ts**: Main TypeScript entry point
97
+ - **src/scss/adminlte.scss**: Main SCSS entry point
98
+ - **dist/js/adminlte.min.js**: Built JavaScript for production
99
+ - **dist/css/adminlte.min.css**: Built CSS for production
100
+
101
+ ### Development Notes
102
+ - The project uses ES modules (type: "module" in package.json)
103
+ - TypeScript configuration is in tsconfig.json
104
+ - File watching is handled by nodemon with specific patterns
105
+ - Assets are copied to src/html/public/ during build for Astro integration
106
+ - Production builds are flattened to dist/ root for deployment
package/README 2.md ADDED
@@ -0,0 +1,106 @@
1
+ # [AdminLTE - Bootstrap 5 Admin Dashboard](https://adminlte.io)
2
+
3
+ [![npm version](https://img.shields.io/npm/v/admin-lte/latest.svg)](https://www.npmjs.com/package/admin-lte)
4
+ [![Packagist](https://img.shields.io/packagist/v/almasaeed2010/adminlte.svg)](https://packagist.org/packages/almasaeed2010/adminlte)
5
+ [![cdn version](https://data.jsdelivr.com/v1/package/npm/admin-lte/badge)](https://www.jsdelivr.com/package/npm/admin-lte)
6
+ [![Discord Invite](https://img.shields.io/badge/discord-join%20now-green)](https://discord.gg/jfdvjwFqfz)
7
+ [![Netlify Status](https://api.netlify.com/api/v1/badges/1277b36b-08f3-43fa-826a-4b4d24614b3c/deploy-status)](https://app.netlify.com/sites/adminlte-v4/deploys)
8
+
9
+ **AdminLTE** is a fully responsive administration template. Based on **[Bootstrap 5](https://getbootstrap.com/)** framework and also the JavaScript plugins.
10
+ Highly customizable and easy to use. Fits many screen resolutions from small mobile devices to large desktops.
11
+
12
+ ## What's New in v4.0.0-rc3
13
+
14
+ **Production Deployment & Cross-Platform Compatibility** - This release resolves critical production deployment issues:
15
+
16
+ - **Fixed Production Builds** - Resolved CSS/JS path issues, sidebar navigation, and image loading in all deployment scenarios
17
+ - **Smart Path Resolution** - Automatic relative path calculation works for root deployment, sub-folders, and CDN hosting
18
+ - **RTL CSS Fix** - Eliminated rtlcss interference with standard LTR production builds
19
+ - **Updated Dependencies** - Bootstrap 5.3.7, Bootstrap Icons 1.13.1, OverlayScrollbars 2.11.0
20
+ - **Zero Console Errors** - Fixed all CDN integrity mismatches and runtime issues
21
+ - **FTP/Static Host Ready** - Perfect compatibility with traditional hosting and modern static platforms
22
+
23
+ **Key Improvements:**
24
+ - ✅ Development and production environments now behave identically
25
+ - ✅ Images, CSS, and JavaScript load correctly in any deployment structure
26
+ - ✅ Sidebar navigation displays properly with badges and arrow indicators
27
+ - ✅ All CDN resources load without console errors
28
+ - ✅ Complete production build included in repository for easy deployment
29
+
30
+ See the [CHANGELOG.md](CHANGELOG.md) for complete details.
31
+
32
+ ## Looking for Premium Templates?
33
+
34
+ AdminLTE.io just opened a new premium templates page. Hand picked to ensure the best quality and the most affordable
35
+ prices. Visit <https://adminlte.io/premium> for more information.
36
+
37
+ !["AdminLTE Presentation"](https://adminlte.io/AdminLTE3.png "AdminLTE Presentation")
38
+
39
+ **AdminLTE** has been carefully coded with clear comments in all of its JS, SCSS and HTML files.
40
+ SCSS has been used to increase code customizability.
41
+
42
+ ## Quick start
43
+
44
+ ### Development
45
+
46
+ To start developing with AdminLTE:
47
+
48
+ 1. **Install dependencies:** `npm install`
49
+ 2. **Start development server:** `npm start` *(opens browser at http://localhost:3000)*
50
+ 3. **Start coding!** Files auto-compile and refresh on changes
51
+
52
+ ### Production Build
53
+
54
+ To build for production:
55
+
56
+ 1. **Full production build:** `npm run production` *(includes linting and optimization)*
57
+ 2. **Quick build:** `npm run build` *(faster for development/testing)*
58
+
59
+ ### Available Scripts
60
+
61
+ - `npm start` - Start development server with file watching
62
+ - `npm run build` - Build all assets for development
63
+ - `npm run production` - Full production build with linting and bundlewatch
64
+ - `npm run lint` - Run all linters (JS, CSS, docs, lockfile)
65
+ - `npm run css` - Build CSS only
66
+ - `npm run js` - Build JavaScript only
67
+
68
+ ## Browser Support
69
+
70
+ AdminLTE supports all modern browsers with the latest Bootstrap 5.3.7:
71
+ - Chrome (latest)
72
+ - Firefox (latest)
73
+ - Safari (latest)
74
+ - Edge (latest)
75
+
76
+ ## Contributing
77
+
78
+ - Highly welcome.
79
+ - For your extra reference check [AdminLTE v4 Contribution Guide](https://github.com/ColorlibHQ/AdminLTE#contributing)
80
+ - First thing first, you should have bit knowledge about NodeJS.
81
+ - Github Knowledge.
82
+ - Install NodeJS LTS version.
83
+ - Clone this Repository to your machine and change to `master` branch.
84
+ - Go to Cloned Folder.
85
+ - In cli/bash run `npm install` it will install dependency from `package.json`.
86
+ - After installation completes, run `npm start`
87
+ - Cool, Send your changes in PR to `master` branch.
88
+
89
+ ## Sponsorship
90
+
91
+ Support AdminLTE development by becoming a sponsor.
92
+ [Github Sponsors](https://github.com/sponsors/danny007in) or
93
+ [PayPal](https://www.paypal.me/daniel007in)
94
+
95
+ ## License
96
+
97
+ AdminLTE is an open source project by [AdminLTE.io](https://adminlte.io) that is licensed under [MIT](https://opensource.org/licenses/MIT).
98
+ AdminLTE.io reserves the right to change the license of future releases.
99
+
100
+ ## Image Credits
101
+
102
+ - [Pixeden](http://www.pixeden.com/psd-web-elements/flat-responsive-showcase-psd)
103
+ - [Graphicsfuel](https://www.graphicsfuel.com/2013/02/13-high-resolution-blur-backgrounds/)
104
+ - [Pickaface](https://pickaface.net/)
105
+ - [Unsplash](https://unsplash.com/)
106
+ - [Uifaces](http://uifaces.com/)
package/README.md CHANGED
@@ -73,6 +73,15 @@ AdminLTE supports all modern browsers with the latest Bootstrap 5.3.7:
73
73
  - Safari (latest)
74
74
  - Edge (latest)
75
75
 
76
+ ## Platform Support
77
+
78
+ AdminLTE v4 build scripts work cross-platform:
79
+ - **Windows** - Command Prompt, PowerShell, Git Bash
80
+ - **macOS** - Terminal, iTerm2
81
+ - **Linux** - Bash, Zsh, and other Unix shells
82
+
83
+ All npm scripts use cross-platform utilities to ensure consistent behavior across different operating systems.
84
+
76
85
  ## Contributing
77
86
 
78
87
  - Highly welcome.
@@ -96,7 +96,7 @@
96
96
  <div class="d-flex">
97
97
  <div class="flex-shrink-0">
98
98
  <img
99
- src="/assets/img/user1-128x128.jpg"
99
+ src="../assets/img/user1-128x128.jpg"
100
100
  alt="User Avatar"
101
101
  class="img-size-50 rounded-circle me-3"
102
102
  />
@@ -122,7 +122,7 @@
122
122
  <div class="d-flex">
123
123
  <div class="flex-shrink-0">
124
124
  <img
125
- src="/assets/img/user8-128x128.jpg"
125
+ src="../assets/img/user8-128x128.jpg"
126
126
  alt="User Avatar"
127
127
  class="img-size-50 rounded-circle me-3"
128
128
  />
@@ -148,7 +148,7 @@
148
148
  <div class="d-flex">
149
149
  <div class="flex-shrink-0">
150
150
  <img
151
- src="/assets/img/user3-128x128.jpg"
151
+ src="../assets/img/user3-128x128.jpg"
152
152
  alt="User Avatar"
153
153
  class="img-size-50 rounded-circle me-3"
154
154
  />
@@ -213,7 +213,7 @@
213
213
  <li class="nav-item dropdown user-menu">
214
214
  <a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
215
215
  <img
216
- src="/assets/img/user2-160x160.jpg"
216
+ src="../assets/img/user2-160x160.jpg"
217
217
  class="user-image rounded-circle shadow"
218
218
  alt="User Image"
219
219
  />
@@ -223,7 +223,7 @@
223
223
  <!--begin::User Image-->
224
224
  <li class="user-header text-bg-primary">
225
225
  <img
226
- src="/assets/img/user2-160x160.jpg"
226
+ src="../assets/img/user2-160x160.jpg"
227
227
  class="rounded-circle shadow"
228
228
  alt="User Image"
229
229
  />
@@ -267,7 +267,7 @@
267
267
  <a href="../index.html" class="brand-link">
268
268
  <!--begin::Brand Image-->
269
269
  <img
270
- src="/assets/img/AdminLTELogo.png"
270
+ src="../assets/img/AdminLTELogo.png"
271
271
  alt="AdminLTE Logo"
272
272
  class="brand-image opacity-75 shadow"
273
273
  />
@@ -1897,31 +1897,7 @@
1897
1897
  }
1898
1898
  });
1899
1899
  </script>
1900
- <!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
1901
- <script>
1902
- document.addEventListener('DOMContentLoaded', () => {
1903
- // Find the link tag for the main AdminLTE CSS file.
1904
- const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
1905
- if (!cssLink) {
1906
- return; // Exit if the link isn't found
1907
- }
1908
-
1909
- // Extract the base path from the CSS href.
1910
- // e.g., from "../css/adminlte.css", we get "../"
1911
- // e.g., from "./css/adminlte.css", we get "./"
1912
- const cssHref = cssLink.getAttribute('href');
1913
- const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
1914
-
1915
- // Find all images with absolute paths and fix them.
1916
- document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
1917
- const originalSrc = img.getAttribute('src');
1918
- if (originalSrc) {
1919
- const relativeSrc = originalSrc.slice(1); // Remove leading '/'
1920
- img.src = deploymentPath + relativeSrc;
1921
- }
1922
- });
1923
- });
1924
- </script>
1900
+ <!--end::OverlayScrollbars Configure-->
1925
1901
  <!--begin::Bootstrap Tooltips-->
1926
1902
  <script>
1927
1903
  const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]');
@@ -96,7 +96,7 @@
96
96
  <div class="d-flex">
97
97
  <div class="flex-shrink-0">
98
98
  <img
99
- src="/assets/img/user1-128x128.jpg"
99
+ src="../assets/img/user1-128x128.jpg"
100
100
  alt="User Avatar"
101
101
  class="img-size-50 rounded-circle me-3"
102
102
  />
@@ -122,7 +122,7 @@
122
122
  <div class="d-flex">
123
123
  <div class="flex-shrink-0">
124
124
  <img
125
- src="/assets/img/user8-128x128.jpg"
125
+ src="../assets/img/user8-128x128.jpg"
126
126
  alt="User Avatar"
127
127
  class="img-size-50 rounded-circle me-3"
128
128
  />
@@ -148,7 +148,7 @@
148
148
  <div class="d-flex">
149
149
  <div class="flex-shrink-0">
150
150
  <img
151
- src="/assets/img/user3-128x128.jpg"
151
+ src="../assets/img/user3-128x128.jpg"
152
152
  alt="User Avatar"
153
153
  class="img-size-50 rounded-circle me-3"
154
154
  />
@@ -213,7 +213,7 @@
213
213
  <li class="nav-item dropdown user-menu">
214
214
  <a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
215
215
  <img
216
- src="/assets/img/user2-160x160.jpg"
216
+ src="../assets/img/user2-160x160.jpg"
217
217
  class="user-image rounded-circle shadow"
218
218
  alt="User Image"
219
219
  />
@@ -223,7 +223,7 @@
223
223
  <!--begin::User Image-->
224
224
  <li class="user-header text-bg-primary">
225
225
  <img
226
- src="/assets/img/user2-160x160.jpg"
226
+ src="../assets/img/user2-160x160.jpg"
227
227
  class="rounded-circle shadow"
228
228
  alt="User Image"
229
229
  />
@@ -267,7 +267,7 @@
267
267
  <a href="../index.html" class="brand-link">
268
268
  <!--begin::Brand Image-->
269
269
  <img
270
- src="/assets/img/AdminLTELogo.png"
270
+ src="../assets/img/AdminLTELogo.png"
271
271
  alt="AdminLTE Logo"
272
272
  class="brand-image opacity-75 shadow"
273
273
  />
@@ -838,31 +838,7 @@
838
838
  }
839
839
  });
840
840
  </script>
841
- <!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
842
- <script>
843
- document.addEventListener('DOMContentLoaded', () => {
844
- // Find the link tag for the main AdminLTE CSS file.
845
- const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
846
- if (!cssLink) {
847
- return; // Exit if the link isn't found
848
- }
849
-
850
- // Extract the base path from the CSS href.
851
- // e.g., from "../css/adminlte.css", we get "../"
852
- // e.g., from "./css/adminlte.css", we get "./"
853
- const cssHref = cssLink.getAttribute('href');
854
- const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
855
-
856
- // Find all images with absolute paths and fix them.
857
- document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
858
- const originalSrc = img.getAttribute('src');
859
- if (originalSrc) {
860
- const relativeSrc = originalSrc.slice(1); // Remove leading '/'
861
- img.src = deploymentPath + relativeSrc;
862
- }
863
- });
864
- });
865
- </script>
841
+ <!--end::OverlayScrollbars Configure-->
866
842
  <!--end::Script-->
867
843
  </body>
868
844
  <!--end::Body-->
@@ -96,7 +96,7 @@
96
96
  <div class="d-flex">
97
97
  <div class="flex-shrink-0">
98
98
  <img
99
- src="/assets/img/user1-128x128.jpg"
99
+ src="../assets/img/user1-128x128.jpg"
100
100
  alt="User Avatar"
101
101
  class="img-size-50 rounded-circle me-3"
102
102
  />
@@ -122,7 +122,7 @@
122
122
  <div class="d-flex">
123
123
  <div class="flex-shrink-0">
124
124
  <img
125
- src="/assets/img/user8-128x128.jpg"
125
+ src="../assets/img/user8-128x128.jpg"
126
126
  alt="User Avatar"
127
127
  class="img-size-50 rounded-circle me-3"
128
128
  />
@@ -148,7 +148,7 @@
148
148
  <div class="d-flex">
149
149
  <div class="flex-shrink-0">
150
150
  <img
151
- src="/assets/img/user3-128x128.jpg"
151
+ src="../assets/img/user3-128x128.jpg"
152
152
  alt="User Avatar"
153
153
  class="img-size-50 rounded-circle me-3"
154
154
  />
@@ -213,7 +213,7 @@
213
213
  <li class="nav-item dropdown user-menu">
214
214
  <a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
215
215
  <img
216
- src="/assets/img/user2-160x160.jpg"
216
+ src="../assets/img/user2-160x160.jpg"
217
217
  class="user-image rounded-circle shadow"
218
218
  alt="User Image"
219
219
  />
@@ -223,7 +223,7 @@
223
223
  <!--begin::User Image-->
224
224
  <li class="user-header text-bg-primary">
225
225
  <img
226
- src="/assets/img/user2-160x160.jpg"
226
+ src="../assets/img/user2-160x160.jpg"
227
227
  class="rounded-circle shadow"
228
228
  alt="User Image"
229
229
  />
@@ -267,7 +267,7 @@
267
267
  <a href="../index.html" class="brand-link">
268
268
  <!--begin::Brand Image-->
269
269
  <img
270
- src="/assets/img/AdminLTELogo.png"
270
+ src="../assets/img/AdminLTELogo.png"
271
271
  alt="AdminLTE Logo"
272
272
  class="brand-image opacity-75 shadow"
273
273
  />
@@ -821,10 +821,10 @@
821
821
  <span class="time"> <i class="bi bi-clock-fill"></i> 2 days ago </span>
822
822
  <h3 class="timeline-header"><a href="#">Mina Lee</a> uploaded new photos</h3>
823
823
  <div class="timeline-body">
824
- <img src="/assets/img/user1-128x128.jpg" alt="..." />
825
- <img src="/assets/img/user1-128x128.jpg" alt="..." />
826
- <img src="/assets/img/user1-128x128.jpg" alt="..." />
827
- <img src="/assets/img/user1-128x128.jpg" alt="..." />
824
+ <img src="../assets/img/user1-128x128.jpg" alt="..." />
825
+ <img src="../assets/img/user1-128x128.jpg" alt="..." />
826
+ <img src="../assets/img/user1-128x128.jpg" alt="..." />
827
+ <img src="../assets/img/user1-128x128.jpg" alt="..." />
828
828
  </div>
829
829
  </div>
830
830
  </div>
@@ -916,31 +916,7 @@
916
916
  }
917
917
  });
918
918
  </script>
919
- <!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
920
- <script>
921
- document.addEventListener('DOMContentLoaded', () => {
922
- // Find the link tag for the main AdminLTE CSS file.
923
- const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
924
- if (!cssLink) {
925
- return; // Exit if the link isn't found
926
- }
927
-
928
- // Extract the base path from the CSS href.
929
- // e.g., from "../css/adminlte.css", we get "../"
930
- // e.g., from "./css/adminlte.css", we get "./"
931
- const cssHref = cssLink.getAttribute('href');
932
- const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
933
-
934
- // Find all images with absolute paths and fix them.
935
- document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
936
- const originalSrc = img.getAttribute('src');
937
- if (originalSrc) {
938
- const relativeSrc = originalSrc.slice(1); // Remove leading '/'
939
- img.src = deploymentPath + relativeSrc;
940
- }
941
- });
942
- });
943
- </script>
919
+ <!--end::OverlayScrollbars Configure-->
944
920
  <!--end::Script-->
945
921
  </body>
946
922
  <!--end::Body-->