Release 4.0.0-rc4: Updated dependencies and refined mobile image fix

- Updated 8 npm packages to latest versions including TypeScript, Astro, and linting tools
- Refined mobile image loading solution by removing JavaScript runtime fix in favor of HTML-level path generation
- All images now use relative paths generated at build time for optimal compatibility

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Aigars Silkalns 2025-07-10 12:11:37 +03:00
parent a9e3a52379
commit 01aefe5ac0
82 changed files with 1195 additions and 1521 deletions

View File

@ -7,6 +7,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
## [4.0.0-rc4] - 2025-07-10
### Updated
- **Dependencies:** Updated 8 packages to latest versions
- @rollup/plugin-typescript: 12.1.3 → 12.1.4
- @typescript-eslint/eslint-plugin: 8.35.1 → 8.36.0
- @typescript-eslint/parser: 8.35.1 → 8.36.0
- astro: 5.10.0 → 5.11.0
- eslint: 9.30.0 → 9.30.1
- prettier: 3.5.3 → 3.6.2
- rollup: 4.44.0 → 4.44.2
- stylelint: 16.21.0 → 16.21.1
### Fixed
- **Windows Build Compatibility:** Fixed npm scripts to work cross-platform by replacing Unix-specific shell commands with `shx`
- Updated `copy-assets` script to use `shx mkdir` and `shx cp` commands
@ -17,6 +30,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Updated accessibility CSS to use `transition: none` and `opacity: 1` instead of `display: block`
- Maintains WCAG 2.1 AA compliance while ensuring modals work properly in TeamViewer sessions
- Added specific transform overrides for modal dialogs in reduced motion mode
- **Mobile Sidebar Scrolling:** Fixed sidebar closing unexpectedly when scrolling on mobile devices
- Updated touch event handling to differentiate between tap and scroll gestures
- Added proper overflow properties to sidebar wrapper for mobile viewport
- Sidebar now remains open during scroll operations on touch devices
- Resolves issue where scrolling in sidebar would immediately close it on mobile browsers
- **Image Path Resolution:** Fixed mobile image loading by using relative paths in HTML
- **Root Cause:** Absolute paths like `/assets/img/user.jpg` caused 404 errors on mobile
- **Solution:** Generate relative image paths in Astro components based on page location
- **Result:** Images now load correctly on all devices and deployment scenarios
## [4.0.0-rc3] - 2025-06-24

106
README 2.md Normal file
View File

@ -0,0 +1,106 @@
# [AdminLTE - Bootstrap 5 Admin Dashboard](https://adminlte.io)
[![npm version](https://img.shields.io/npm/v/admin-lte/latest.svg)](https://www.npmjs.com/package/admin-lte)
[![Packagist](https://img.shields.io/packagist/v/almasaeed2010/adminlte.svg)](https://packagist.org/packages/almasaeed2010/adminlte)
[![cdn version](https://data.jsdelivr.com/v1/package/npm/admin-lte/badge)](https://www.jsdelivr.com/package/npm/admin-lte)
[![Discord Invite](https://img.shields.io/badge/discord-join%20now-green)](https://discord.gg/jfdvjwFqfz)
[![Netlify Status](https://api.netlify.com/api/v1/badges/1277b36b-08f3-43fa-826a-4b4d24614b3c/deploy-status)](https://app.netlify.com/sites/adminlte-v4/deploys)
**AdminLTE** is a fully responsive administration template. Based on **[Bootstrap 5](https://getbootstrap.com/)** framework and also the JavaScript plugins.
Highly customizable and easy to use. Fits many screen resolutions from small mobile devices to large desktops.
## What's New in v4.0.0-rc3
**Production Deployment & Cross-Platform Compatibility** - This release resolves critical production deployment issues:
- **Fixed Production Builds** - Resolved CSS/JS path issues, sidebar navigation, and image loading in all deployment scenarios
- **Smart Path Resolution** - Automatic relative path calculation works for root deployment, sub-folders, and CDN hosting
- **RTL CSS Fix** - Eliminated rtlcss interference with standard LTR production builds
- **Updated Dependencies** - Bootstrap 5.3.7, Bootstrap Icons 1.13.1, OverlayScrollbars 2.11.0
- **Zero Console Errors** - Fixed all CDN integrity mismatches and runtime issues
- **FTP/Static Host Ready** - Perfect compatibility with traditional hosting and modern static platforms
**Key Improvements:**
- ✅ Development and production environments now behave identically
- ✅ Images, CSS, and JavaScript load correctly in any deployment structure
- ✅ Sidebar navigation displays properly with badges and arrow indicators
- ✅ All CDN resources load without console errors
- ✅ Complete production build included in repository for easy deployment
See the [CHANGELOG.md](CHANGELOG.md) for complete details.
## Looking for Premium Templates?
AdminLTE.io just opened a new premium templates page. Hand picked to ensure the best quality and the most affordable
prices. Visit <https://adminlte.io/premium> for more information.
!["AdminLTE Presentation"](https://adminlte.io/AdminLTE3.png "AdminLTE Presentation")
**AdminLTE** has been carefully coded with clear comments in all of its JS, SCSS and HTML files.
SCSS has been used to increase code customizability.
## Quick start
### Development
To start developing with AdminLTE:
1. **Install dependencies:** `npm install`
2. **Start development server:** `npm start` *(opens browser at http://localhost:3000)*
3. **Start coding!** Files auto-compile and refresh on changes
### Production Build
To build for production:
1. **Full production build:** `npm run production` *(includes linting and optimization)*
2. **Quick build:** `npm run build` *(faster for development/testing)*
### Available Scripts
- `npm start` - Start development server with file watching
- `npm run build` - Build all assets for development
- `npm run production` - Full production build with linting and bundlewatch
- `npm run lint` - Run all linters (JS, CSS, docs, lockfile)
- `npm run css` - Build CSS only
- `npm run js` - Build JavaScript only
## Browser Support
AdminLTE supports all modern browsers with the latest Bootstrap 5.3.7:
- Chrome (latest)
- Firefox (latest)
- Safari (latest)
- Edge (latest)
## Contributing
- Highly welcome.
- For your extra reference check [AdminLTE v4 Contribution Guide](https://github.com/ColorlibHQ/AdminLTE#contributing)
- First thing first, you should have bit knowledge about NodeJS.
- Github Knowledge.
- Install NodeJS LTS version.
- Clone this Repository to your machine and change to `master` branch.
- Go to Cloned Folder.
- In cli/bash run `npm install` it will install dependency from `package.json`.
- After installation completes, run `npm start`
- Cool, Send your changes in PR to `master` branch.
## Sponsorship
Support AdminLTE development by becoming a sponsor.
[Github Sponsors](https://github.com/sponsors/danny007in) or
[PayPal](https://www.paypal.me/daniel007in)
## License
AdminLTE is an open source project by [AdminLTE.io](https://adminlte.io) that is licensed under [MIT](https://opensource.org/licenses/MIT).
AdminLTE.io reserves the right to change the license of future releases.
## Image Credits
- [Pixeden](http://www.pixeden.com/psd-web-elements/flat-responsive-showcase-psd)
- [Graphicsfuel](https://www.graphicsfuel.com/2013/02/13-high-resolution-blur-backgrounds/)
- [Pickaface](https://pickaface.net/)
- [Unsplash](https://unsplash.com/)
- [Uifaces](http://uifaces.com/)

38
dist/UI/general.html vendored
View File

@ -96,7 +96,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user1-128x128.jpg"
src="../assets/img/user1-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -122,7 +122,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user8-128x128.jpg"
src="../assets/img/user8-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -148,7 +148,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user3-128x128.jpg"
src="../assets/img/user3-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -213,7 +213,7 @@
<li class="nav-item dropdown user-menu">
<a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="user-image rounded-circle shadow"
alt="User Image"
/>
@ -223,7 +223,7 @@
<!--begin::User Image-->
<li class="user-header text-bg-primary">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="rounded-circle shadow"
alt="User Image"
/>
@ -267,7 +267,7 @@
<a href="../index.html" class="brand-link">
<!--begin::Brand Image-->
<img
src="/assets/img/AdminLTELogo.png"
src="../assets/img/AdminLTELogo.png"
alt="AdminLTE Logo"
class="brand-image opacity-75 shadow"
/>
@ -1897,31 +1897,7 @@
}
});
</script>
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
<script>
document.addEventListener('DOMContentLoaded', () => {
// Find the link tag for the main AdminLTE CSS file.
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
if (!cssLink) {
return; // Exit if the link isn't found
}
// Extract the base path from the CSS href.
// e.g., from "../css/adminlte.css", we get "../"
// e.g., from "./css/adminlte.css", we get "./"
const cssHref = cssLink.getAttribute('href');
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
// Find all images with absolute paths and fix them.
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
const originalSrc = img.getAttribute('src');
if (originalSrc) {
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
img.src = deploymentPath + relativeSrc;
}
});
});
</script>
<!--end::OverlayScrollbars Configure-->
<!--begin::Bootstrap Tooltips-->
<script>
const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]');

38
dist/UI/icons.html vendored
View File

@ -96,7 +96,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user1-128x128.jpg"
src="../assets/img/user1-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -122,7 +122,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user8-128x128.jpg"
src="../assets/img/user8-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -148,7 +148,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user3-128x128.jpg"
src="../assets/img/user3-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -213,7 +213,7 @@
<li class="nav-item dropdown user-menu">
<a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="user-image rounded-circle shadow"
alt="User Image"
/>
@ -223,7 +223,7 @@
<!--begin::User Image-->
<li class="user-header text-bg-primary">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="rounded-circle shadow"
alt="User Image"
/>
@ -267,7 +267,7 @@
<a href="../index.html" class="brand-link">
<!--begin::Brand Image-->
<img
src="/assets/img/AdminLTELogo.png"
src="../assets/img/AdminLTELogo.png"
alt="AdminLTE Logo"
class="brand-image opacity-75 shadow"
/>
@ -838,31 +838,7 @@
}
});
</script>
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
<script>
document.addEventListener('DOMContentLoaded', () => {
// Find the link tag for the main AdminLTE CSS file.
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
if (!cssLink) {
return; // Exit if the link isn't found
}
// Extract the base path from the CSS href.
// e.g., from "../css/adminlte.css", we get "../"
// e.g., from "./css/adminlte.css", we get "./"
const cssHref = cssLink.getAttribute('href');
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
// Find all images with absolute paths and fix them.
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
const originalSrc = img.getAttribute('src');
if (originalSrc) {
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
img.src = deploymentPath + relativeSrc;
}
});
});
</script>
<!--end::OverlayScrollbars Configure-->
<!--end::Script-->
</body>
<!--end::Body-->

46
dist/UI/timeline.html vendored
View File

@ -96,7 +96,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user1-128x128.jpg"
src="../assets/img/user1-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -122,7 +122,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user8-128x128.jpg"
src="../assets/img/user8-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -148,7 +148,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user3-128x128.jpg"
src="../assets/img/user3-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -213,7 +213,7 @@
<li class="nav-item dropdown user-menu">
<a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="user-image rounded-circle shadow"
alt="User Image"
/>
@ -223,7 +223,7 @@
<!--begin::User Image-->
<li class="user-header text-bg-primary">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="rounded-circle shadow"
alt="User Image"
/>
@ -267,7 +267,7 @@
<a href="../index.html" class="brand-link">
<!--begin::Brand Image-->
<img
src="/assets/img/AdminLTELogo.png"
src="../assets/img/AdminLTELogo.png"
alt="AdminLTE Logo"
class="brand-image opacity-75 shadow"
/>
@ -821,10 +821,10 @@
<span class="time"> <i class="bi bi-clock-fill"></i> 2 days ago </span>
<h3 class="timeline-header"><a href="#">Mina Lee</a> uploaded new photos</h3>
<div class="timeline-body">
<img src="/assets/img/user1-128x128.jpg" alt="..." />
<img src="/assets/img/user1-128x128.jpg" alt="..." />
<img src="/assets/img/user1-128x128.jpg" alt="..." />
<img src="/assets/img/user1-128x128.jpg" alt="..." />
<img src="../assets/img/user1-128x128.jpg" alt="..." />
<img src="../assets/img/user1-128x128.jpg" alt="..." />
<img src="../assets/img/user1-128x128.jpg" alt="..." />
<img src="../assets/img/user1-128x128.jpg" alt="..." />
</div>
</div>
</div>
@ -916,31 +916,7 @@
}
});
</script>
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
<script>
document.addEventListener('DOMContentLoaded', () => {
// Find the link tag for the main AdminLTE CSS file.
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
if (!cssLink) {
return; // Exit if the link isn't found
}
// Extract the base path from the CSS href.
// e.g., from "../css/adminlte.css", we get "../"
// e.g., from "./css/adminlte.css", we get "./"
const cssHref = cssLink.getAttribute('href');
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
// Find all images with absolute paths and fix them.
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
const originalSrc = img.getAttribute('src');
if (originalSrc) {
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
img.src = deploymentPath + relativeSrc;
}
});
});
</script>
<!--end::OverlayScrollbars Configure-->
<!--end::Script-->
</body>
<!--end::Body-->

148
dist/css/adminlte.css vendored
View File

@ -1,6 +1,6 @@
@charset "UTF-8";
/*!
* AdminLTE v4.0.0-beta3
* AdminLTE v4.0.0-rc3
* Author: Colorlib
* Website: AdminLTE.io <https://adminlte.io>
* License: Open source - MIT <https://opensource.org/licenses/MIT>
@ -273,8 +273,10 @@ p {
}
abbr[title] {
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help;
-webkit-text-decoration-skip-ink: none;
text-decoration-skip-ink: none;
}
@ -2115,6 +2117,8 @@ progress {
font-weight: 400;
line-height: 1.5;
color: var(--bs-body-color);
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
background-color: var(--bs-body-bg);
background-clip: padding-box;
@ -2150,6 +2154,10 @@ progress {
display: block;
padding: 0;
}
.form-control::-moz-placeholder {
color: var(--bs-secondary-color);
opacity: 1;
}
.form-control::placeholder {
color: var(--bs-secondary-color);
opacity: 1;
@ -2266,6 +2274,8 @@ textarea.form-control-lg {
font-weight: 400;
line-height: 1.5;
color: var(--bs-body-color);
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
background-color: var(--bs-body-bg);
background-image: var(--bs-form-select-bg-img), var(--bs-form-select-bg-icon, none);
@ -2348,6 +2358,8 @@ textarea.form-control-lg {
height: 1em;
margin-top: 0.25em;
vertical-align: top;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
background-color: var(--bs-form-check-bg);
background-image: var(--bs-form-check-bg-image);
@ -2355,6 +2367,7 @@ textarea.form-control-lg {
background-position: center;
background-size: contain;
border: var(--bs-border-width) solid var(--bs-border-color);
-webkit-print-color-adjust: exact;
print-color-adjust: exact;
}
.form-check-input[type=checkbox] {
@ -2453,6 +2466,8 @@ textarea.form-control-lg {
width: 100%;
height: 1.5rem;
padding: 0;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
background-color: transparent;
}
@ -2472,15 +2487,18 @@ textarea.form-control-lg {
width: 1rem;
height: 1rem;
margin-top: -0.25rem;
-webkit-appearance: none;
appearance: none;
background-color: #0d6efd;
border: 0;
border-radius: 1rem;
box-shadow: 0 0.1rem 0.25rem rgba(0, 0, 0, 0.1);
-webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
.form-range::-webkit-slider-thumb {
-webkit-transition: none;
transition: none;
}
}
@ -2500,15 +2518,18 @@ textarea.form-control-lg {
.form-range::-moz-range-thumb {
width: 1rem;
height: 1rem;
-moz-appearance: none;
appearance: none;
background-color: #0d6efd;
border: 0;
border-radius: 1rem;
box-shadow: 0 0.1rem 0.25rem rgba(0, 0, 0, 0.1);
-moz-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
.form-range::-moz-range-thumb {
-moz-transition: none;
transition: none;
}
}
@ -2572,10 +2593,17 @@ textarea.form-control-lg {
.form-floating > .form-control-plaintext {
padding: 1rem 0.75rem;
}
.form-floating > .form-control::-moz-placeholder, .form-floating > .form-control-plaintext::-moz-placeholder {
color: transparent;
}
.form-floating > .form-control::placeholder,
.form-floating > .form-control-plaintext::placeholder {
color: transparent;
}
.form-floating > .form-control:not(:-moz-placeholder), .form-floating > .form-control-plaintext:not(:-moz-placeholder) {
padding-top: 1.625rem;
padding-bottom: 0.625rem;
}
.form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown),
.form-floating > .form-control-plaintext:focus,
.form-floating > .form-control-plaintext:not(:placeholder-shown) {
@ -2592,6 +2620,9 @@ textarea.form-control-lg {
padding-bottom: 0.625rem;
padding-left: 0.75rem;
}
.form-floating > .form-control:not(:-moz-placeholder) ~ label {
transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);
}
.form-floating > .form-control:focus ~ label,
.form-floating > .form-control:not(:placeholder-shown) ~ label,
.form-floating > .form-control-plaintext ~ label,
@ -2601,6 +2632,15 @@ textarea.form-control-lg {
.form-floating > .form-control:-webkit-autofill ~ label {
transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);
}
.form-floating > textarea:not(:-moz-placeholder) ~ label::after {
position: absolute;
inset: 1rem 0.375rem;
z-index: -1;
height: 1.5em;
content: "";
background-color: var(--bs-body-bg);
border-radius: var(--bs-border-radius);
}
.form-floating > textarea:focus ~ label::after,
.form-floating > textarea:not(:placeholder-shown) ~ label::after {
position: absolute;
@ -2920,6 +2960,8 @@ textarea.form-control-lg {
text-decoration: none;
vertical-align: middle;
cursor: pointer;
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
border: var(--bs-btn-border-width) solid var(--bs-btn-border-color);
border-radius: var(--bs-btn-border-radius);
@ -5319,6 +5361,8 @@ textarea.form-control-lg {
}
.btn-close:disabled, .btn-close.disabled {
pointer-events: none;
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
opacity: var(--bs-btn-close-disabled-opacity);
}
@ -5374,6 +5418,7 @@ textarea.form-control-lg {
--bs-toast-zindex: 1090;
position: absolute;
z-index: var(--bs-toast-zindex);
width: -moz-max-content;
width: max-content;
max-width: 100%;
pointer-events: none;
@ -6766,13 +6811,16 @@ textarea.form-control-lg {
}
}
.placeholder-wave {
-webkit-mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);
mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);
-webkit-mask-size: 200% 100%;
mask-size: 200% 100%;
animation: placeholder-wave 2s linear infinite;
}
@keyframes placeholder-wave {
100% {
-webkit-mask-position: -200% 0%;
mask-position: -200% 0%;
}
}
@ -7150,22 +7198,27 @@ textarea.form-control-lg {
}
.object-fit-contain {
-o-object-fit: contain !important;
object-fit: contain !important;
}
.object-fit-cover {
-o-object-fit: cover !important;
object-fit: cover !important;
}
.object-fit-fill {
-o-object-fit: fill !important;
object-fit: fill !important;
}
.object-fit-scale {
-o-object-fit: scale-down !important;
object-fit: scale-down !important;
}
.object-fit-none {
-o-object-fit: none !important;
object-fit: none !important;
}
@ -8396,26 +8449,32 @@ textarea.form-control-lg {
}
.column-gap-0 {
-moz-column-gap: 0 !important;
column-gap: 0 !important;
}
.column-gap-1 {
-moz-column-gap: 0.25rem !important;
column-gap: 0.25rem !important;
}
.column-gap-2 {
-moz-column-gap: 0.5rem !important;
column-gap: 0.5rem !important;
}
.column-gap-3 {
-moz-column-gap: 1rem !important;
column-gap: 1rem !important;
}
.column-gap-4 {
-moz-column-gap: 1.5rem !important;
column-gap: 1.5rem !important;
}
.column-gap-5 {
-moz-column-gap: 3rem !important;
column-gap: 3rem !important;
}
@ -8980,14 +9039,20 @@ textarea.form-control-lg {
}
.user-select-all {
-webkit-user-select: all !important;
-moz-user-select: all !important;
user-select: all !important;
}
.user-select-auto {
-webkit-user-select: auto !important;
-moz-user-select: auto !important;
user-select: auto !important;
}
.user-select-none {
-webkit-user-select: none !important;
-moz-user-select: none !important;
user-select: none !important;
}
@ -9254,18 +9319,23 @@ textarea.form-control-lg {
float: none !important;
}
.object-fit-sm-contain {
-o-object-fit: contain !important;
object-fit: contain !important;
}
.object-fit-sm-cover {
-o-object-fit: cover !important;
object-fit: cover !important;
}
.object-fit-sm-fill {
-o-object-fit: fill !important;
object-fit: fill !important;
}
.object-fit-sm-scale {
-o-object-fit: scale-down !important;
object-fit: scale-down !important;
}
.object-fit-sm-none {
-o-object-fit: none !important;
object-fit: none !important;
}
.d-sm-inline {
@ -9881,21 +9951,27 @@ textarea.form-control-lg {
row-gap: 3rem !important;
}
.column-gap-sm-0 {
-moz-column-gap: 0 !important;
column-gap: 0 !important;
}
.column-gap-sm-1 {
-moz-column-gap: 0.25rem !important;
column-gap: 0.25rem !important;
}
.column-gap-sm-2 {
-moz-column-gap: 0.5rem !important;
column-gap: 0.5rem !important;
}
.column-gap-sm-3 {
-moz-column-gap: 1rem !important;
column-gap: 1rem !important;
}
.column-gap-sm-4 {
-moz-column-gap: 1.5rem !important;
column-gap: 1.5rem !important;
}
.column-gap-sm-5 {
-moz-column-gap: 3rem !important;
column-gap: 3rem !important;
}
.text-sm-start {
@ -9919,18 +9995,23 @@ textarea.form-control-lg {
float: none !important;
}
.object-fit-md-contain {
-o-object-fit: contain !important;
object-fit: contain !important;
}
.object-fit-md-cover {
-o-object-fit: cover !important;
object-fit: cover !important;
}
.object-fit-md-fill {
-o-object-fit: fill !important;
object-fit: fill !important;
}
.object-fit-md-scale {
-o-object-fit: scale-down !important;
object-fit: scale-down !important;
}
.object-fit-md-none {
-o-object-fit: none !important;
object-fit: none !important;
}
.d-md-inline {
@ -10546,21 +10627,27 @@ textarea.form-control-lg {
row-gap: 3rem !important;
}
.column-gap-md-0 {
-moz-column-gap: 0 !important;
column-gap: 0 !important;
}
.column-gap-md-1 {
-moz-column-gap: 0.25rem !important;
column-gap: 0.25rem !important;
}
.column-gap-md-2 {
-moz-column-gap: 0.5rem !important;
column-gap: 0.5rem !important;
}
.column-gap-md-3 {
-moz-column-gap: 1rem !important;
column-gap: 1rem !important;
}
.column-gap-md-4 {
-moz-column-gap: 1.5rem !important;
column-gap: 1.5rem !important;
}
.column-gap-md-5 {
-moz-column-gap: 3rem !important;
column-gap: 3rem !important;
}
.text-md-start {
@ -10584,18 +10671,23 @@ textarea.form-control-lg {
float: none !important;
}
.object-fit-lg-contain {
-o-object-fit: contain !important;
object-fit: contain !important;
}
.object-fit-lg-cover {
-o-object-fit: cover !important;
object-fit: cover !important;
}
.object-fit-lg-fill {
-o-object-fit: fill !important;
object-fit: fill !important;
}
.object-fit-lg-scale {
-o-object-fit: scale-down !important;
object-fit: scale-down !important;
}
.object-fit-lg-none {
-o-object-fit: none !important;
object-fit: none !important;
}
.d-lg-inline {
@ -11211,21 +11303,27 @@ textarea.form-control-lg {
row-gap: 3rem !important;
}
.column-gap-lg-0 {
-moz-column-gap: 0 !important;
column-gap: 0 !important;
}
.column-gap-lg-1 {
-moz-column-gap: 0.25rem !important;
column-gap: 0.25rem !important;
}
.column-gap-lg-2 {
-moz-column-gap: 0.5rem !important;
column-gap: 0.5rem !important;
}
.column-gap-lg-3 {
-moz-column-gap: 1rem !important;
column-gap: 1rem !important;
}
.column-gap-lg-4 {
-moz-column-gap: 1.5rem !important;
column-gap: 1.5rem !important;
}
.column-gap-lg-5 {
-moz-column-gap: 3rem !important;
column-gap: 3rem !important;
}
.text-lg-start {
@ -11249,18 +11347,23 @@ textarea.form-control-lg {
float: none !important;
}
.object-fit-xl-contain {
-o-object-fit: contain !important;
object-fit: contain !important;
}
.object-fit-xl-cover {
-o-object-fit: cover !important;
object-fit: cover !important;
}
.object-fit-xl-fill {
-o-object-fit: fill !important;
object-fit: fill !important;
}
.object-fit-xl-scale {
-o-object-fit: scale-down !important;
object-fit: scale-down !important;
}
.object-fit-xl-none {
-o-object-fit: none !important;
object-fit: none !important;
}
.d-xl-inline {
@ -11876,21 +11979,27 @@ textarea.form-control-lg {
row-gap: 3rem !important;
}
.column-gap-xl-0 {
-moz-column-gap: 0 !important;
column-gap: 0 !important;
}
.column-gap-xl-1 {
-moz-column-gap: 0.25rem !important;
column-gap: 0.25rem !important;
}
.column-gap-xl-2 {
-moz-column-gap: 0.5rem !important;
column-gap: 0.5rem !important;
}
.column-gap-xl-3 {
-moz-column-gap: 1rem !important;
column-gap: 1rem !important;
}
.column-gap-xl-4 {
-moz-column-gap: 1.5rem !important;
column-gap: 1.5rem !important;
}
.column-gap-xl-5 {
-moz-column-gap: 3rem !important;
column-gap: 3rem !important;
}
.text-xl-start {
@ -11914,18 +12023,23 @@ textarea.form-control-lg {
float: none !important;
}
.object-fit-xxl-contain {
-o-object-fit: contain !important;
object-fit: contain !important;
}
.object-fit-xxl-cover {
-o-object-fit: cover !important;
object-fit: cover !important;
}
.object-fit-xxl-fill {
-o-object-fit: fill !important;
object-fit: fill !important;
}
.object-fit-xxl-scale {
-o-object-fit: scale-down !important;
object-fit: scale-down !important;
}
.object-fit-xxl-none {
-o-object-fit: none !important;
object-fit: none !important;
}
.d-xxl-inline {
@ -12541,21 +12655,27 @@ textarea.form-control-lg {
row-gap: 3rem !important;
}
.column-gap-xxl-0 {
-moz-column-gap: 0 !important;
column-gap: 0 !important;
}
.column-gap-xxl-1 {
-moz-column-gap: 0.25rem !important;
column-gap: 0.25rem !important;
}
.column-gap-xxl-2 {
-moz-column-gap: 0.5rem !important;
column-gap: 0.5rem !important;
}
.column-gap-xxl-3 {
-moz-column-gap: 1rem !important;
column-gap: 1rem !important;
}
.column-gap-xxl-4 {
-moz-column-gap: 1.5rem !important;
column-gap: 1.5rem !important;
}
.column-gap-xxl-5 {
-moz-column-gap: 3rem !important;
column-gap: 3rem !important;
}
.text-xxl-start {
@ -13183,6 +13303,8 @@ textarea.form-control-lg {
}
.sidebar-expand-sm.layout-fixed .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-sm.sidebar-open .nav-link > .nav-badge,
.sidebar-expand-sm.sidebar-open .nav-link > p > .nav-badge {
@ -13213,6 +13335,8 @@ textarea.form-control-lg {
}
.sidebar-expand-sm .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-sm.sidebar-open .app-sidebar {
margin-left: 0;
@ -13251,6 +13375,8 @@ textarea.form-control-lg {
}
.sidebar-expand-md.layout-fixed .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-md.sidebar-open .nav-link > .nav-badge,
.sidebar-expand-md.sidebar-open .nav-link > p > .nav-badge {
@ -13281,6 +13407,8 @@ textarea.form-control-lg {
}
.sidebar-expand-md .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-md.sidebar-open .app-sidebar {
margin-left: 0;
@ -13319,6 +13447,8 @@ textarea.form-control-lg {
}
.sidebar-expand-lg.layout-fixed .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-lg.sidebar-open .nav-link > .nav-badge,
.sidebar-expand-lg.sidebar-open .nav-link > p > .nav-badge {
@ -13349,6 +13479,8 @@ textarea.form-control-lg {
}
.sidebar-expand-lg .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-lg.sidebar-open .app-sidebar {
margin-left: 0;
@ -13387,6 +13519,8 @@ textarea.form-control-lg {
}
.sidebar-expand-xl.layout-fixed .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-xl.sidebar-open .nav-link > .nav-badge,
.sidebar-expand-xl.sidebar-open .nav-link > p > .nav-badge {
@ -13417,6 +13551,8 @@ textarea.form-control-lg {
}
.sidebar-expand-xl .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-xl.sidebar-open .app-sidebar {
margin-left: 0;
@ -13455,6 +13591,8 @@ textarea.form-control-lg {
}
.sidebar-expand-xxl.layout-fixed .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-xxl.sidebar-open .nav-link > .nav-badge,
.sidebar-expand-xxl.sidebar-open .nav-link > p > .nav-badge {
@ -13485,6 +13623,8 @@ textarea.form-control-lg {
}
.sidebar-expand-xxl .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-xxl.sidebar-open .app-sidebar {
margin-left: 0;
@ -13522,6 +13662,8 @@ textarea.form-control-lg {
}
.sidebar-expand.layout-fixed .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand.sidebar-open .nav-link > .nav-badge,
.sidebar-expand.sidebar-open .nav-link > p > .nav-badge {
@ -13550,6 +13692,8 @@ textarea.form-control-lg {
}
.sidebar-expand .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand.sidebar-open .app-sidebar {
margin-left: 0;
@ -15446,4 +15590,4 @@ fieldset legend {
}
}
/*# sourceMappingURL=adminlte.css.map */
/*# sourceMappingURL=adminlte.css.map */

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
@charset "UTF-8";
/*!
* AdminLTE v4.0.0-beta3
* AdminLTE v4.0.0-rc3
* Author: Colorlib
* Website: AdminLTE.io <https://adminlte.io>
* License: Open source - MIT <https://opensource.org/licenses/MIT>
@ -13277,6 +13277,8 @@ textarea.form-control-lg {
}
.sidebar-expand-sm.layout-fixed .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-sm.sidebar-open .nav-link > .nav-badge,
.sidebar-expand-sm.sidebar-open .nav-link > p > .nav-badge {
@ -13307,6 +13309,8 @@ textarea.form-control-lg {
}
.sidebar-expand-sm .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-sm.sidebar-open .app-sidebar {
margin-right: 0;
@ -13345,6 +13349,8 @@ textarea.form-control-lg {
}
.sidebar-expand-md.layout-fixed .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-md.sidebar-open .nav-link > .nav-badge,
.sidebar-expand-md.sidebar-open .nav-link > p > .nav-badge {
@ -13375,6 +13381,8 @@ textarea.form-control-lg {
}
.sidebar-expand-md .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-md.sidebar-open .app-sidebar {
margin-right: 0;
@ -13413,6 +13421,8 @@ textarea.form-control-lg {
}
.sidebar-expand-lg.layout-fixed .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-lg.sidebar-open .nav-link > .nav-badge,
.sidebar-expand-lg.sidebar-open .nav-link > p > .nav-badge {
@ -13443,6 +13453,8 @@ textarea.form-control-lg {
}
.sidebar-expand-lg .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-lg.sidebar-open .app-sidebar {
margin-right: 0;
@ -13481,6 +13493,8 @@ textarea.form-control-lg {
}
.sidebar-expand-xl.layout-fixed .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-xl.sidebar-open .nav-link > .nav-badge,
.sidebar-expand-xl.sidebar-open .nav-link > p > .nav-badge {
@ -13511,6 +13525,8 @@ textarea.form-control-lg {
}
.sidebar-expand-xl .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-xl.sidebar-open .app-sidebar {
margin-right: 0;
@ -13549,6 +13565,8 @@ textarea.form-control-lg {
}
.sidebar-expand-xxl.layout-fixed .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-xxl.sidebar-open .nav-link > .nav-badge,
.sidebar-expand-xxl.sidebar-open .nav-link > p > .nav-badge {
@ -13579,6 +13597,8 @@ textarea.form-control-lg {
}
.sidebar-expand-xxl .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-xxl.sidebar-open .app-sidebar {
margin-right: 0;
@ -13616,6 +13636,8 @@ textarea.form-control-lg {
}
.sidebar-expand.layout-fixed .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand.sidebar-open .nav-link > .nav-badge,
.sidebar-expand.sidebar-open .nav-link > p > .nav-badge {
@ -13644,6 +13666,8 @@ textarea.form-control-lg {
}
.sidebar-expand .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand.sidebar-open .app-sidebar {
margin-right: 0;
@ -15539,5 +15563,4 @@ fieldset legend {
content: " (" attr(href) ")";
}
}
/*# sourceMappingURL=adminlte.rtl.css.map */

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -96,7 +96,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user1-128x128.jpg"
src="../assets/img/user1-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -122,7 +122,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user8-128x128.jpg"
src="../assets/img/user8-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -148,7 +148,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user3-128x128.jpg"
src="../assets/img/user3-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -213,7 +213,7 @@
<li class="nav-item dropdown user-menu">
<a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="user-image rounded-circle shadow"
alt="User Image"
/>
@ -223,7 +223,7 @@
<!--begin::User Image-->
<li class="user-header text-bg-primary">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="rounded-circle shadow"
alt="User Image"
/>
@ -267,7 +267,7 @@
<a href="../index.html" class="brand-link">
<!--begin::Brand Image-->
<img
src="/assets/img/AdminLTELogo.png"
src="../assets/img/AdminLTELogo.png"
alt="AdminLTE Logo"
class="brand-image opacity-75 shadow"
/>
@ -853,31 +853,7 @@
}
});
</script>
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
<script>
document.addEventListener('DOMContentLoaded', () => {
// Find the link tag for the main AdminLTE CSS file.
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
if (!cssLink) {
return; // Exit if the link isn't found
}
// Extract the base path from the CSS href.
// e.g., from "../css/adminlte.css", we get "../"
// e.g., from "./css/adminlte.css", we get "./"
const cssHref = cssLink.getAttribute('href');
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
// Find all images with absolute paths and fix them.
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
const originalSrc = img.getAttribute('src');
if (originalSrc) {
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
img.src = deploymentPath + relativeSrc;
}
});
});
</script>
<!--end::OverlayScrollbars Configure-->
<!--end::Script-->
</body>
<!--end::Body-->

View File

@ -96,7 +96,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user1-128x128.jpg"
src="../assets/img/user1-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -122,7 +122,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user8-128x128.jpg"
src="../assets/img/user8-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -148,7 +148,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user3-128x128.jpg"
src="../assets/img/user3-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -213,7 +213,7 @@
<li class="nav-item dropdown user-menu">
<a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="user-image rounded-circle shadow"
alt="User Image"
/>
@ -223,7 +223,7 @@
<!--begin::User Image-->
<li class="user-header text-bg-primary">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="rounded-circle shadow"
alt="User Image"
/>
@ -267,7 +267,7 @@
<a href="../index.html" class="brand-link">
<!--begin::Brand Image-->
<img
src="/assets/img/AdminLTELogo.png"
src="../assets/img/AdminLTELogo.png"
alt="AdminLTE Logo"
class="brand-image opacity-75 shadow"
/>
@ -1096,31 +1096,7 @@
}
});
</script>
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
<script>
document.addEventListener('DOMContentLoaded', () => {
// Find the link tag for the main AdminLTE CSS file.
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
if (!cssLink) {
return; // Exit if the link isn't found
}
// Extract the base path from the CSS href.
// e.g., from "../css/adminlte.css", we get "../"
// e.g., from "./css/adminlte.css", we get "./"
const cssHref = cssLink.getAttribute('href');
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
// Find all images with absolute paths and fix them.
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
const originalSrc = img.getAttribute('src');
if (originalSrc) {
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
img.src = deploymentPath + relativeSrc;
}
});
});
</script>
<!--end::OverlayScrollbars Configure-->
<script>
// Color Mode Toggler
(() => {

View File

@ -96,7 +96,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user1-128x128.jpg"
src="../../assets/img/user1-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -122,7 +122,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user8-128x128.jpg"
src="../../assets/img/user8-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -148,7 +148,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user3-128x128.jpg"
src="../../assets/img/user3-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -213,7 +213,7 @@
<li class="nav-item dropdown user-menu">
<a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
<img
src="/assets/img/user2-160x160.jpg"
src="../../assets/img/user2-160x160.jpg"
class="user-image rounded-circle shadow"
alt="User Image"
/>
@ -223,7 +223,7 @@
<!--begin::User Image-->
<li class="user-header text-bg-primary">
<img
src="/assets/img/user2-160x160.jpg"
src="../../assets/img/user2-160x160.jpg"
class="rounded-circle shadow"
alt="User Image"
/>
@ -267,7 +267,7 @@
<a href="../../index.html" class="brand-link">
<!--begin::Brand Image-->
<img
src="/assets/img/AdminLTELogo.png"
src="../../assets/img/AdminLTELogo.png"
alt="AdminLTE Logo"
class="brand-image opacity-75 shadow"
/>
@ -813,7 +813,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user1-128x128.jpg"
src="../../assets/img/user1-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -839,7 +839,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user8-128x128.jpg"
src="../../assets/img/user8-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -865,7 +865,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user3-128x128.jpg"
src="../../assets/img/user3-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -919,7 +919,7 @@
<li class="nav-item dropdown user-menu">
<a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
<img
src="/assets/img/user2-160x160.jpg"
src="../../assets/img/user2-160x160.jpg"
class="user-image rounded-circle shadow"
alt="User Image"
/>
@ -929,7 +929,7 @@
<!-- User image -->
<li class="user-header text-bg-primary">
<img
src="/assets/img/user2-160x160.jpg"
src="../../assets/img/user2-160x160.jpg"
class="rounded-circle shadow"
alt="User Image"
/>
@ -1222,31 +1222,7 @@
}
});
</script>
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
<script>
document.addEventListener('DOMContentLoaded', () => {
// Find the link tag for the main AdminLTE CSS file.
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
if (!cssLink) {
return; // Exit if the link isn't found
}
// Extract the base path from the CSS href.
// e.g., from "../css/adminlte.css", we get "../"
// e.g., from "./css/adminlte.css", we get "./"
const cssHref = cssLink.getAttribute('href');
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
// Find all images with absolute paths and fix them.
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
const originalSrc = img.getAttribute('src');
if (originalSrc) {
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
img.src = deploymentPath + relativeSrc;
}
});
});
</script>
<!--end::OverlayScrollbars Configure-->
<!--end::Script-->
</body>
<!--end::Body-->

View File

@ -96,7 +96,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user1-128x128.jpg"
src="../../assets/img/user1-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -122,7 +122,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user8-128x128.jpg"
src="../../assets/img/user8-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -148,7 +148,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user3-128x128.jpg"
src="../../assets/img/user3-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -213,7 +213,7 @@
<li class="nav-item dropdown user-menu">
<a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
<img
src="/assets/img/user2-160x160.jpg"
src="../../assets/img/user2-160x160.jpg"
class="user-image rounded-circle shadow"
alt="User Image"
/>
@ -223,7 +223,7 @@
<!--begin::User Image-->
<li class="user-header text-bg-primary">
<img
src="/assets/img/user2-160x160.jpg"
src="../../assets/img/user2-160x160.jpg"
class="rounded-circle shadow"
alt="User Image"
/>
@ -267,7 +267,7 @@
<a href="../../index.html" class="brand-link">
<!--begin::Brand Image-->
<img
src="/assets/img/AdminLTELogo.png"
src="../../assets/img/AdminLTELogo.png"
alt="AdminLTE Logo"
class="brand-image opacity-75 shadow"
/>
@ -951,31 +951,7 @@
}
});
</script>
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
<script>
document.addEventListener('DOMContentLoaded', () => {
// Find the link tag for the main AdminLTE CSS file.
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
if (!cssLink) {
return; // Exit if the link isn't found
}
// Extract the base path from the CSS href.
// e.g., from "../css/adminlte.css", we get "../"
// e.g., from "./css/adminlte.css", we get "./"
const cssHref = cssLink.getAttribute('href');
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
// Find all images with absolute paths and fix them.
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
const originalSrc = img.getAttribute('src');
if (originalSrc) {
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
img.src = deploymentPath + relativeSrc;
}
});
});
</script>
<!--end::OverlayScrollbars Configure-->
<!--end::Script-->
</body>
<!--end::Body-->

38
dist/docs/faq.html vendored
View File

@ -96,7 +96,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user1-128x128.jpg"
src="../assets/img/user1-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -122,7 +122,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user8-128x128.jpg"
src="../assets/img/user8-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -148,7 +148,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user3-128x128.jpg"
src="../assets/img/user3-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -213,7 +213,7 @@
<li class="nav-item dropdown user-menu">
<a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="user-image rounded-circle shadow"
alt="User Image"
/>
@ -223,7 +223,7 @@
<!--begin::User Image-->
<li class="user-header text-bg-primary">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="rounded-circle shadow"
alt="User Image"
/>
@ -267,7 +267,7 @@
<a href="../index.html" class="brand-link">
<!--begin::Brand Image-->
<img
src="/assets/img/AdminLTELogo.png"
src="../assets/img/AdminLTELogo.png"
alt="AdminLTE Logo"
class="brand-image opacity-75 shadow"
/>
@ -835,31 +835,7 @@
}
});
</script>
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
<script>
document.addEventListener('DOMContentLoaded', () => {
// Find the link tag for the main AdminLTE CSS file.
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
if (!cssLink) {
return; // Exit if the link isn't found
}
// Extract the base path from the CSS href.
// e.g., from "../css/adminlte.css", we get "../"
// e.g., from "./css/adminlte.css", we get "./"
const cssHref = cssLink.getAttribute('href');
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
// Find all images with absolute paths and fix them.
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
const originalSrc = img.getAttribute('src');
if (originalSrc) {
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
img.src = deploymentPath + relativeSrc;
}
});
});
</script>
<!--end::OverlayScrollbars Configure-->
<!--end::Script-->
</body>
<!--end::Body-->

View File

@ -96,7 +96,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user1-128x128.jpg"
src="../assets/img/user1-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -122,7 +122,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user8-128x128.jpg"
src="../assets/img/user8-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -148,7 +148,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user3-128x128.jpg"
src="../assets/img/user3-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -213,7 +213,7 @@
<li class="nav-item dropdown user-menu">
<a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="user-image rounded-circle shadow"
alt="User Image"
/>
@ -223,7 +223,7 @@
<!--begin::User Image-->
<li class="user-header text-bg-primary">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="rounded-circle shadow"
alt="User Image"
/>
@ -267,7 +267,7 @@
<a href="../index.html" class="brand-link">
<!--begin::Brand Image-->
<img
src="/assets/img/AdminLTELogo.png"
src="../assets/img/AdminLTELogo.png"
alt="AdminLTE Logo"
class="brand-image opacity-75 shadow"
/>
@ -908,31 +908,7 @@
}
});
</script>
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
<script>
document.addEventListener('DOMContentLoaded', () => {
// Find the link tag for the main AdminLTE CSS file.
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
if (!cssLink) {
return; // Exit if the link isn't found
}
// Extract the base path from the CSS href.
// e.g., from "../css/adminlte.css", we get "../"
// e.g., from "./css/adminlte.css", we get "./"
const cssHref = cssLink.getAttribute('href');
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
// Find all images with absolute paths and fix them.
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
const originalSrc = img.getAttribute('src');
if (originalSrc) {
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
img.src = deploymentPath + relativeSrc;
}
});
});
</script>
<!--end::OverlayScrollbars Configure-->
<!--end::Script-->
</body>
<!--end::Body-->

View File

@ -96,7 +96,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user1-128x128.jpg"
src="../assets/img/user1-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -122,7 +122,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user8-128x128.jpg"
src="../assets/img/user8-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -148,7 +148,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user3-128x128.jpg"
src="../assets/img/user3-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -213,7 +213,7 @@
<li class="nav-item dropdown user-menu">
<a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="user-image rounded-circle shadow"
alt="User Image"
/>
@ -223,7 +223,7 @@
<!--begin::User Image-->
<li class="user-header text-bg-primary">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="rounded-circle shadow"
alt="User Image"
/>
@ -267,7 +267,7 @@
<a href="../index.html" class="brand-link">
<!--begin::Brand Image-->
<img
src="/assets/img/AdminLTELogo.png"
src="../assets/img/AdminLTELogo.png"
alt="AdminLTE Logo"
class="brand-image opacity-75 shadow"
/>
@ -783,7 +783,7 @@
tabindex="0"
data-language="html"
><code><span class="line"><span style="color:#808080">&lt;</span><span style="color:#569CD6">script</span></span>
<span class="line"><span style="color:#9CDCFE"> src</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;https://cdn.jsdelivr.net/npm/admin-lte@4.0.0-beta3/dist/js/adminlte.min.js&quot;</span></span>
<span class="line"><span style="color:#9CDCFE"> src</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;https://cdn.jsdelivr.net/npm/admin-lte@4.0.0-rc3/dist/js/adminlte.min.js&quot;</span></span>
<span class="line"><span style="color:#9CDCFE"> crossorigin</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;anonymous&quot;</span></span>
<span class="line"><span style="color:#808080">&gt;&lt;/</span><span style="color:#569CD6">script</span><span style="color:#808080">&gt;</span></span></code></pre>
<pre
@ -793,7 +793,7 @@
data-language="html"
><code><span class="line"><span style="color:#808080">&lt;</span><span style="color:#569CD6">link</span></span>
<span class="line"><span style="color:#9CDCFE"> rel</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;stylesheet&quot;</span></span>
<span class="line"><span style="color:#9CDCFE"> href</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;https://cdn.jsdelivr.net/npm/admin-lte@4.0.0-beta3/dist/css/adminlte.min.css&quot;</span></span>
<span class="line"><span style="color:#9CDCFE"> href</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;https://cdn.jsdelivr.net/npm/admin-lte@4.0.0-rc3/dist/css/adminlte.min.css&quot;</span></span>
<span class="line"><span style="color:#9CDCFE"> crossorigin</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;anonymous&quot;</span></span>
<span class="line"><span style="color:#808080">/&gt;</span></span></code></pre>
<h3 id="using-the-command-line">Using The Command Line:</h3>
@ -809,21 +809,21 @@
style="background-color: #1e1e1e; color: #d4d4d4; overflow-x: auto"
tabindex="0"
data-language="bash"
><code><span class="line"><span style="color:#DCDCAA">npm</span><span style="color:#CE9178"> install</span><span style="color:#CE9178"> admin-lte@4.0.0-beta3</span><span style="color:#569CD6"> --save</span></span></code></pre>
><code><span class="line"><span style="color:#DCDCAA">npm</span><span style="color:#CE9178"> install</span><span style="color:#CE9178"> admin-lte@4.0.0-rc3</span><span style="color:#569CD6"> --save</span></span></code></pre>
<h4 id="via-yarn">Via Yarn</h4>
<pre
class="astro-code dark-plus"
style="background-color: #1e1e1e; color: #d4d4d4; overflow-x: auto"
tabindex="0"
data-language="bash"
><code><span class="line"><span style="color:#DCDCAA">yarn</span><span style="color:#CE9178"> add</span><span style="color:#CE9178"> admin-lte@4.0.0-beta3</span></span></code></pre>
><code><span class="line"><span style="color:#DCDCAA">yarn</span><span style="color:#CE9178"> add</span><span style="color:#CE9178"> admin-lte@4.0.0-rc3</span></span></code></pre>
<h4 id="via-composer">Via Composer</h4>
<pre
class="astro-code dark-plus"
style="background-color: #1e1e1e; color: #d4d4d4; overflow-x: auto"
tabindex="0"
data-language="bash"
><code><span class="line"><span style="color:#DCDCAA">composer</span><span style="color:#CE9178"> require</span><span style="color:#CE9178"> &quot;almasaeed2010/adminlte=4.0.0-beta3&quot;</span></span></code></pre>
><code><span class="line"><span style="color:#DCDCAA">composer</span><span style="color:#CE9178"> require</span><span style="color:#CE9178"> &quot;almasaeed2010/adminlte=4.0.0-rc3&quot;</span></span></code></pre>
<h4 id="via-git">Via Git</h4>
<pre
class="astro-code dark-plus"
@ -892,31 +892,7 @@
}
});
</script>
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
<script>
document.addEventListener('DOMContentLoaded', () => {
// Find the link tag for the main AdminLTE CSS file.
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
if (!cssLink) {
return; // Exit if the link isn't found
}
// Extract the base path from the CSS href.
// e.g., from "../css/adminlte.css", we get "../"
// e.g., from "./css/adminlte.css", we get "./"
const cssHref = cssLink.getAttribute('href');
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
// Find all images with absolute paths and fix them.
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
const originalSrc = img.getAttribute('src');
if (originalSrc) {
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
img.src = deploymentPath + relativeSrc;
}
});
});
</script>
<!--end::OverlayScrollbars Configure-->
<!--end::Script-->
</body>
<!--end::Body-->

View File

@ -96,7 +96,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user1-128x128.jpg"
src="../../assets/img/user1-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -122,7 +122,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user8-128x128.jpg"
src="../../assets/img/user8-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -148,7 +148,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user3-128x128.jpg"
src="../../assets/img/user3-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -213,7 +213,7 @@
<li class="nav-item dropdown user-menu">
<a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
<img
src="/assets/img/user2-160x160.jpg"
src="../../assets/img/user2-160x160.jpg"
class="user-image rounded-circle shadow"
alt="User Image"
/>
@ -223,7 +223,7 @@
<!--begin::User Image-->
<li class="user-header text-bg-primary">
<img
src="/assets/img/user2-160x160.jpg"
src="../../assets/img/user2-160x160.jpg"
class="rounded-circle shadow"
alt="User Image"
/>
@ -267,7 +267,7 @@
<a href="../../index.html" class="brand-link">
<!--begin::Brand Image-->
<img
src="/assets/img/AdminLTELogo.png"
src="../../assets/img/AdminLTELogo.png"
alt="AdminLTE Logo"
class="brand-image opacity-75 shadow"
/>
@ -849,31 +849,7 @@
}
});
</script>
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
<script>
document.addEventListener('DOMContentLoaded', () => {
// Find the link tag for the main AdminLTE CSS file.
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
if (!cssLink) {
return; // Exit if the link isn't found
}
// Extract the base path from the CSS href.
// e.g., from "../css/adminlte.css", we get "../"
// e.g., from "./css/adminlte.css", we get "./"
const cssHref = cssLink.getAttribute('href');
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
// Find all images with absolute paths and fix them.
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
const originalSrc = img.getAttribute('src');
if (originalSrc) {
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
img.src = deploymentPath + relativeSrc;
}
});
});
</script>
<!--end::OverlayScrollbars Configure-->
<!--end::Script-->
</body>
<!--end::Body-->

38
dist/docs/layout.html vendored
View File

@ -96,7 +96,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user1-128x128.jpg"
src="../assets/img/user1-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -122,7 +122,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user8-128x128.jpg"
src="../assets/img/user8-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -148,7 +148,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user3-128x128.jpg"
src="../assets/img/user3-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -213,7 +213,7 @@
<li class="nav-item dropdown user-menu">
<a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="user-image rounded-circle shadow"
alt="User Image"
/>
@ -223,7 +223,7 @@
<!--begin::User Image-->
<li class="user-header text-bg-primary">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="rounded-circle shadow"
alt="User Image"
/>
@ -267,7 +267,7 @@
<a href="../index.html" class="brand-link">
<!--begin::Brand Image-->
<img
src="/assets/img/AdminLTELogo.png"
src="../assets/img/AdminLTELogo.png"
alt="AdminLTE Logo"
class="brand-image opacity-75 shadow"
/>
@ -859,31 +859,7 @@
}
});
</script>
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
<script>
document.addEventListener('DOMContentLoaded', () => {
// Find the link tag for the main AdminLTE CSS file.
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
if (!cssLink) {
return; // Exit if the link isn't found
}
// Extract the base path from the CSS href.
// e.g., from "../css/adminlte.css", we get "../"
// e.g., from "./css/adminlte.css", we get "./"
const cssHref = cssLink.getAttribute('href');
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
// Find all images with absolute paths and fix them.
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
const originalSrc = img.getAttribute('src');
if (originalSrc) {
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
img.src = deploymentPath + relativeSrc;
}
});
});
</script>
<!--end::OverlayScrollbars Configure-->
<!--end::Script-->
</body>
<!--end::Body-->

View File

@ -96,7 +96,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user1-128x128.jpg"
src="../assets/img/user1-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -122,7 +122,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user8-128x128.jpg"
src="../assets/img/user8-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -148,7 +148,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user3-128x128.jpg"
src="../assets/img/user3-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -213,7 +213,7 @@
<li class="nav-item dropdown user-menu">
<a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="user-image rounded-circle shadow"
alt="User Image"
/>
@ -223,7 +223,7 @@
<!--begin::User Image-->
<li class="user-header text-bg-primary">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="rounded-circle shadow"
alt="User Image"
/>
@ -267,7 +267,7 @@
<a href="../index.html" class="brand-link">
<!--begin::Brand Image-->
<img
src="/assets/img/AdminLTELogo.png"
src="../assets/img/AdminLTELogo.png"
alt="AdminLTE Logo"
class="brand-image opacity-75 shadow"
/>
@ -833,31 +833,7 @@
}
});
</script>
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
<script>
document.addEventListener('DOMContentLoaded', () => {
// Find the link tag for the main AdminLTE CSS file.
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
if (!cssLink) {
return; // Exit if the link isn't found
}
// Extract the base path from the CSS href.
// e.g., from "../css/adminlte.css", we get "../"
// e.g., from "./css/adminlte.css", we get "./"
const cssHref = cssLink.getAttribute('href');
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
// Find all images with absolute paths and fix them.
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
const originalSrc = img.getAttribute('src');
if (originalSrc) {
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
img.src = deploymentPath + relativeSrc;
}
});
});
</script>
<!--end::OverlayScrollbars Configure-->
<!--end::Script-->
</body>
<!--end::Body-->

View File

@ -65,7 +65,7 @@
<div class="lockscreen-name">John Doe</div>
<div class="lockscreen-item">
<div class="lockscreen-image">
<img src="/assets/img/user1-128x128.jpg" alt="User Image" />
<img src="../assets/img/user1-128x128.jpg" alt="User Image" />
</div>
<form class="lockscreen-credentials">
<div class="input-group">
@ -133,31 +133,7 @@
}
});
</script>
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
<script>
document.addEventListener('DOMContentLoaded', () => {
// Find the link tag for the main AdminLTE CSS file.
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
if (!cssLink) {
return; // Exit if the link isn't found
}
// Extract the base path from the CSS href.
// e.g., from "../css/adminlte.css", we get "../"
// e.g., from "./css/adminlte.css", we get "./"
const cssHref = cssLink.getAttribute('href');
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
// Find all images with absolute paths and fix them.
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
const originalSrc = img.getAttribute('src');
if (originalSrc) {
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
img.src = deploymentPath + relativeSrc;
}
});
});
</script>
<!--end::OverlayScrollbars Configure-->
</body>
<!--end::Body-->
</html>

View File

@ -160,31 +160,7 @@
}
});
</script>
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
<script>
document.addEventListener('DOMContentLoaded', () => {
// Find the link tag for the main AdminLTE CSS file.
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
if (!cssLink) {
return; // Exit if the link isn't found
}
// Extract the base path from the CSS href.
// e.g., from "../css/adminlte.css", we get "../"
// e.g., from "./css/adminlte.css", we get "./"
const cssHref = cssLink.getAttribute('href');
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
// Find all images with absolute paths and fix them.
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
const originalSrc = img.getAttribute('src');
if (originalSrc) {
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
img.src = deploymentPath + relativeSrc;
}
});
});
</script>
<!--end::OverlayScrollbars Configure-->
<!--end::Script-->
</body>
<!--end::Body-->

View File

@ -150,31 +150,7 @@
}
});
</script>
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
<script>
document.addEventListener('DOMContentLoaded', () => {
// Find the link tag for the main AdminLTE CSS file.
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
if (!cssLink) {
return; // Exit if the link isn't found
}
// Extract the base path from the CSS href.
// e.g., from "../css/adminlte.css", we get "../"
// e.g., from "./css/adminlte.css", we get "./"
const cssHref = cssLink.getAttribute('href');
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
// Find all images with absolute paths and fix them.
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
const originalSrc = img.getAttribute('src');
if (originalSrc) {
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
img.src = deploymentPath + relativeSrc;
}
});
});
</script>
<!--end::OverlayScrollbars Configure-->
<!--end::Script-->
</body>
<!--end::Body-->

View File

@ -169,31 +169,7 @@
}
});
</script>
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
<script>
document.addEventListener('DOMContentLoaded', () => {
// Find the link tag for the main AdminLTE CSS file.
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
if (!cssLink) {
return; // Exit if the link isn't found
}
// Extract the base path from the CSS href.
// e.g., from "../css/adminlte.css", we get "../"
// e.g., from "./css/adminlte.css", we get "./"
const cssHref = cssLink.getAttribute('href');
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
// Find all images with absolute paths and fix them.
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
const originalSrc = img.getAttribute('src');
if (originalSrc) {
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
img.src = deploymentPath + relativeSrc;
}
});
});
</script>
<!--end::OverlayScrollbars Configure-->
<!--end::Script-->
</body>
<!--end::Body-->

View File

@ -155,31 +155,7 @@
}
});
</script>
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
<script>
document.addEventListener('DOMContentLoaded', () => {
// Find the link tag for the main AdminLTE CSS file.
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
if (!cssLink) {
return; // Exit if the link isn't found
}
// Extract the base path from the CSS href.
// e.g., from "../css/adminlte.css", we get "../"
// e.g., from "./css/adminlte.css", we get "./"
const cssHref = cssLink.getAttribute('href');
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
// Find all images with absolute paths and fix them.
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
const originalSrc = img.getAttribute('src');
if (originalSrc) {
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
img.src = deploymentPath + relativeSrc;
}
});
});
</script>
<!--end::OverlayScrollbars Configure-->
<!--end::Script-->
</body>
<!--end::Body-->

View File

@ -96,7 +96,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user1-128x128.jpg"
src="../assets/img/user1-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -122,7 +122,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user8-128x128.jpg"
src="../assets/img/user8-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -148,7 +148,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user3-128x128.jpg"
src="../assets/img/user3-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -213,7 +213,7 @@
<li class="nav-item dropdown user-menu">
<a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="user-image rounded-circle shadow"
alt="User Image"
/>
@ -223,7 +223,7 @@
<!--begin::User Image-->
<li class="user-header text-bg-primary">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="rounded-circle shadow"
alt="User Image"
/>
@ -267,7 +267,7 @@
<a href="../index.html" class="brand-link">
<!--begin::Brand Image-->
<img
src="/assets/img/AdminLTELogo.png"
src="../assets/img/AdminLTELogo.png"
alt="AdminLTE Logo"
class="brand-image opacity-75 shadow"
/>
@ -1253,31 +1253,7 @@
}
});
</script>
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
<script>
document.addEventListener('DOMContentLoaded', () => {
// Find the link tag for the main AdminLTE CSS file.
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
if (!cssLink) {
return; // Exit if the link isn't found
}
// Extract the base path from the CSS href.
// e.g., from "../css/adminlte.css", we get "../"
// e.g., from "./css/adminlte.css", we get "./"
const cssHref = cssLink.getAttribute('href');
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
// Find all images with absolute paths and fix them.
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
const originalSrc = img.getAttribute('src');
if (originalSrc) {
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
img.src = deploymentPath + relativeSrc;
}
});
});
</script>
<!--end::OverlayScrollbars Configure-->
<!--end::Script-->
</body>
<!--end::Body-->

View File

@ -96,7 +96,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user1-128x128.jpg"
src="../assets/img/user1-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -122,7 +122,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user8-128x128.jpg"
src="../assets/img/user8-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -148,7 +148,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user3-128x128.jpg"
src="../assets/img/user3-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -213,7 +213,7 @@
<li class="nav-item dropdown user-menu">
<a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="user-image rounded-circle shadow"
alt="User Image"
/>
@ -223,7 +223,7 @@
<!--begin::User Image-->
<li class="user-header text-bg-primary">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="rounded-circle shadow"
alt="User Image"
/>
@ -267,7 +267,7 @@
<a href="../index.html" class="brand-link">
<!--begin::Brand Image-->
<img
src="/assets/img/AdminLTELogo.png"
src="../assets/img/AdminLTELogo.png"
alt="AdminLTE Logo"
class="brand-image opacity-75 shadow"
/>
@ -678,31 +678,7 @@
}
});
</script>
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
<script>
document.addEventListener('DOMContentLoaded', () => {
// Find the link tag for the main AdminLTE CSS file.
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
if (!cssLink) {
return; // Exit if the link isn't found
}
// Extract the base path from the CSS href.
// e.g., from "../css/adminlte.css", we get "../"
// e.g., from "./css/adminlte.css", we get "./"
const cssHref = cssLink.getAttribute('href');
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
// Find all images with absolute paths and fix them.
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
const originalSrc = img.getAttribute('src');
if (originalSrc) {
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
img.src = deploymentPath + relativeSrc;
}
});
});
</script>
<!--end::OverlayScrollbars Configure-->
<script>
document.addEventListener('DOMContentLoaded', () => {
const appSidebar = document.querySelector('.app-sidebar');

58
dist/index.html vendored
View File

@ -110,7 +110,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user1-128x128.jpg"
src="./assets/img/user1-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -136,7 +136,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user8-128x128.jpg"
src="./assets/img/user8-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -162,7 +162,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user3-128x128.jpg"
src="./assets/img/user3-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -227,7 +227,7 @@
<li class="nav-item dropdown user-menu">
<a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
<img
src="/assets/img/user2-160x160.jpg"
src="./assets/img/user2-160x160.jpg"
class="user-image rounded-circle shadow"
alt="User Image"
/>
@ -237,7 +237,7 @@
<!--begin::User Image-->
<li class="user-header text-bg-primary">
<img
src="/assets/img/user2-160x160.jpg"
src="./assets/img/user2-160x160.jpg"
class="rounded-circle shadow"
alt="User Image"
/>
@ -281,7 +281,7 @@
<a href="./index.html" class="brand-link">
<!--begin::Brand Image-->
<img
src="/assets/img/AdminLTELogo.png"
src="./assets/img/AdminLTELogo.png"
alt="AdminLTE Logo"
class="brand-image opacity-75 shadow"
/>
@ -936,7 +936,7 @@
<!-- /.direct-chat-infos -->
<img
class="direct-chat-img"
src="/assets/img/user1-128x128.jpg"
src="./assets/img/user1-128x128.jpg"
alt="message user image"
/>
<!-- /.direct-chat-img -->
@ -955,7 +955,7 @@
<!-- /.direct-chat-infos -->
<img
class="direct-chat-img"
src="/assets/img/user3-128x128.jpg"
src="./assets/img/user3-128x128.jpg"
alt="message user image"
/>
<!-- /.direct-chat-img -->
@ -972,7 +972,7 @@
<!-- /.direct-chat-infos -->
<img
class="direct-chat-img"
src="/assets/img/user1-128x128.jpg"
src="./assets/img/user1-128x128.jpg"
alt="message user image"
/>
<!-- /.direct-chat-img -->
@ -991,7 +991,7 @@
<!-- /.direct-chat-infos -->
<img
class="direct-chat-img"
src="/assets/img/user3-128x128.jpg"
src="./assets/img/user3-128x128.jpg"
alt="message user image"
/>
<!-- /.direct-chat-img -->
@ -1008,7 +1008,7 @@
<a href="#">
<img
class="contacts-list-img"
src="/assets/img/user1-128x128.jpg"
src="./assets/img/user1-128x128.jpg"
alt="User Avatar"
/>
<div class="contacts-list-info">
@ -1026,7 +1026,7 @@
<a href="#">
<img
class="contacts-list-img"
src="/assets/img/user7-128x128.jpg"
src="./assets/img/user7-128x128.jpg"
alt="User Avatar"
/>
<div class="contacts-list-info">
@ -1044,7 +1044,7 @@
<a href="#">
<img
class="contacts-list-img"
src="/assets/img/user3-128x128.jpg"
src="./assets/img/user3-128x128.jpg"
alt="User Avatar"
/>
<div class="contacts-list-info">
@ -1062,7 +1062,7 @@
<a href="#">
<img
class="contacts-list-img"
src="/assets/img/user5-128x128.jpg"
src="./assets/img/user5-128x128.jpg"
alt="User Avatar"
/>
<div class="contacts-list-info">
@ -1080,7 +1080,7 @@
<a href="#">
<img
class="contacts-list-img"
src="/assets/img/user6-128x128.jpg"
src="./assets/img/user6-128x128.jpg"
alt="User Avatar"
/>
<div class="contacts-list-info">
@ -1098,7 +1098,7 @@
<a href="#">
<img
class="contacts-list-img"
src="/assets/img/user8-128x128.jpg"
src="./assets/img/user8-128x128.jpg"
alt="User Avatar"
/>
<div class="contacts-list-info">
@ -1239,31 +1239,7 @@
}
});
</script>
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
<script>
document.addEventListener('DOMContentLoaded', () => {
// Find the link tag for the main AdminLTE CSS file.
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
if (!cssLink) {
return; // Exit if the link isn't found
}
// Extract the base path from the CSS href.
// e.g., from "../css/adminlte.css", we get "../"
// e.g., from "./css/adminlte.css", we get "./"
const cssHref = cssLink.getAttribute('href');
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
// Find all images with absolute paths and fix them.
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
const originalSrc = img.getAttribute('src');
if (originalSrc) {
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
img.src = deploymentPath + relativeSrc;
}
});
});
</script>
<!--end::OverlayScrollbars Configure-->
<!-- OPTIONAL SCRIPTS -->
<!-- sortablejs -->
<script

82
dist/index2.html vendored
View File

@ -101,7 +101,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user1-128x128.jpg"
src="./assets/img/user1-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -127,7 +127,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user8-128x128.jpg"
src="./assets/img/user8-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -153,7 +153,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user3-128x128.jpg"
src="./assets/img/user3-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -218,7 +218,7 @@
<li class="nav-item dropdown user-menu">
<a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
<img
src="/assets/img/user2-160x160.jpg"
src="./assets/img/user2-160x160.jpg"
class="user-image rounded-circle shadow"
alt="User Image"
/>
@ -228,7 +228,7 @@
<!--begin::User Image-->
<li class="user-header text-bg-primary">
<img
src="/assets/img/user2-160x160.jpg"
src="./assets/img/user2-160x160.jpg"
class="rounded-circle shadow"
alt="User Image"
/>
@ -272,7 +272,7 @@
<a href="./index.html" class="brand-link">
<!--begin::Brand Image-->
<img
src="/assets/img/AdminLTELogo.png"
src="./assets/img/AdminLTELogo.png"
alt="AdminLTE Logo"
class="brand-image opacity-75 shadow"
/>
@ -1001,7 +1001,7 @@
<!-- /.direct-chat-infos -->
<img
class="direct-chat-img"
src="/assets/img/user1-128x128.jpg"
src="./assets/img/user1-128x128.jpg"
alt="message user image"
/>
<!-- /.direct-chat-img -->
@ -1022,7 +1022,7 @@
<!-- /.direct-chat-infos -->
<img
class="direct-chat-img"
src="/assets/img/user3-128x128.jpg"
src="./assets/img/user3-128x128.jpg"
alt="message user image"
/>
<!-- /.direct-chat-img -->
@ -1039,7 +1039,7 @@
<!-- /.direct-chat-infos -->
<img
class="direct-chat-img"
src="/assets/img/user1-128x128.jpg"
src="./assets/img/user1-128x128.jpg"
alt="message user image"
/>
<!-- /.direct-chat-img -->
@ -1060,7 +1060,7 @@
<!-- /.direct-chat-infos -->
<img
class="direct-chat-img"
src="/assets/img/user3-128x128.jpg"
src="./assets/img/user3-128x128.jpg"
alt="message user image"
/>
<!-- /.direct-chat-img -->
@ -1077,7 +1077,7 @@
<a href="#">
<img
class="contacts-list-img"
src="/assets/img/user1-128x128.jpg"
src="./assets/img/user1-128x128.jpg"
alt="User Avatar"
/>
<div class="contacts-list-info">
@ -1097,7 +1097,7 @@
<a href="#">
<img
class="contacts-list-img"
src="/assets/img/user7-128x128.jpg"
src="./assets/img/user7-128x128.jpg"
alt="User Avatar"
/>
<div class="contacts-list-info">
@ -1115,7 +1115,7 @@
<a href="#">
<img
class="contacts-list-img"
src="/assets/img/user3-128x128.jpg"
src="./assets/img/user3-128x128.jpg"
alt="User Avatar"
/>
<div class="contacts-list-info">
@ -1133,7 +1133,7 @@
<a href="#">
<img
class="contacts-list-img"
src="/assets/img/user5-128x128.jpg"
src="./assets/img/user5-128x128.jpg"
alt="User Avatar"
/>
<div class="contacts-list-info">
@ -1151,7 +1151,7 @@
<a href="#">
<img
class="contacts-list-img"
src="/assets/img/user6-128x128.jpg"
src="./assets/img/user6-128x128.jpg"
alt="User Avatar"
/>
<div class="contacts-list-info">
@ -1169,7 +1169,7 @@
<a href="#">
<img
class="contacts-list-img"
src="/assets/img/user8-128x128.jpg"
src="./assets/img/user8-128x128.jpg"
alt="User Avatar"
/>
<div class="contacts-list-info">
@ -1235,7 +1235,7 @@
<div class="col-3 p-2">
<img
class="img-fluid rounded-circle"
src="/assets/img/user1-128x128.jpg"
src="./assets/img/user1-128x128.jpg"
alt="User Image"
/>
<a
@ -1249,7 +1249,7 @@
<div class="col-3 p-2">
<img
class="img-fluid rounded-circle"
src="/assets/img/user1-128x128.jpg"
src="./assets/img/user1-128x128.jpg"
alt="User Image"
/>
<a
@ -1263,7 +1263,7 @@
<div class="col-3 p-2">
<img
class="img-fluid rounded-circle"
src="/assets/img/user7-128x128.jpg"
src="./assets/img/user7-128x128.jpg"
alt="User Image"
/>
<a
@ -1277,7 +1277,7 @@
<div class="col-3 p-2">
<img
class="img-fluid rounded-circle"
src="/assets/img/user6-128x128.jpg"
src="./assets/img/user6-128x128.jpg"
alt="User Image"
/>
<a
@ -1291,7 +1291,7 @@
<div class="col-3 p-2">
<img
class="img-fluid rounded-circle"
src="/assets/img/user2-160x160.jpg"
src="./assets/img/user2-160x160.jpg"
alt="User Image"
/>
<a
@ -1305,7 +1305,7 @@
<div class="col-3 p-2">
<img
class="img-fluid rounded-circle"
src="/assets/img/user5-128x128.jpg"
src="./assets/img/user5-128x128.jpg"
alt="User Image"
/>
<a
@ -1319,7 +1319,7 @@
<div class="col-3 p-2">
<img
class="img-fluid rounded-circle"
src="/assets/img/user4-128x128.jpg"
src="./assets/img/user4-128x128.jpg"
alt="User Image"
/>
<a
@ -1333,7 +1333,7 @@
<div class="col-3 p-2">
<img
class="img-fluid rounded-circle"
src="/assets/img/user3-128x128.jpg"
src="./assets/img/user3-128x128.jpg"
alt="User Image"
/>
<a
@ -1605,7 +1605,7 @@
<div class="d-flex border-top py-2 px-1">
<div class="col-2">
<img
src="/assets/img/default-150x150.png"
src="./assets/img/default-150x150.png"
alt="Product Image"
class="img-size-50"
/>
@ -1622,7 +1622,7 @@
<div class="d-flex border-top py-2 px-1">
<div class="col-2">
<img
src="/assets/img/default-150x150.png"
src="./assets/img/default-150x150.png"
alt="Product Image"
class="img-size-50"
/>
@ -1641,7 +1641,7 @@
<div class="d-flex border-top py-2 px-1">
<div class="col-2">
<img
src="/assets/img/default-150x150.png"
src="./assets/img/default-150x150.png"
alt="Product Image"
class="img-size-50"
/>
@ -1660,7 +1660,7 @@
<div class="d-flex border-top py-2 px-1">
<div class="col-2">
<img
src="/assets/img/default-150x150.png"
src="./assets/img/default-150x150.png"
alt="Product Image"
class="img-size-50"
/>
@ -1748,31 +1748,7 @@
}
});
</script>
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
<script>
document.addEventListener('DOMContentLoaded', () => {
// Find the link tag for the main AdminLTE CSS file.
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
if (!cssLink) {
return; // Exit if the link isn't found
}
// Extract the base path from the CSS href.
// e.g., from "../css/adminlte.css", we get "../"
// e.g., from "./css/adminlte.css", we get "./"
const cssHref = cssLink.getAttribute('href');
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
// Find all images with absolute paths and fix them.
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
const originalSrc = img.getAttribute('src');
if (originalSrc) {
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
img.src = deploymentPath + relativeSrc;
}
});
});
</script>
<!--end::OverlayScrollbars Configure-->
<!-- OPTIONAL SCRIPTS -->
<!-- apexcharts -->
<script

46
dist/index3.html vendored
View File

@ -101,7 +101,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user1-128x128.jpg"
src="./assets/img/user1-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -127,7 +127,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user8-128x128.jpg"
src="./assets/img/user8-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -153,7 +153,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user3-128x128.jpg"
src="./assets/img/user3-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -218,7 +218,7 @@
<li class="nav-item dropdown user-menu">
<a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
<img
src="/assets/img/user2-160x160.jpg"
src="./assets/img/user2-160x160.jpg"
class="user-image rounded-circle shadow"
alt="User Image"
/>
@ -228,7 +228,7 @@
<!--begin::User Image-->
<li class="user-header text-bg-primary">
<img
src="/assets/img/user2-160x160.jpg"
src="./assets/img/user2-160x160.jpg"
class="rounded-circle shadow"
alt="User Image"
/>
@ -272,7 +272,7 @@
<a href="./index.html" class="brand-link">
<!--begin::Brand Image-->
<img
src="/assets/img/AdminLTELogo.png"
src="./assets/img/AdminLTELogo.png"
alt="AdminLTE Logo"
class="brand-image opacity-75 shadow"
/>
@ -813,7 +813,7 @@
<tr>
<td>
<img
src="/assets/img/default-150x150.png"
src="./assets/img/default-150x150.png"
alt="Product 1"
class="rounded-circle img-size-32 me-2"
/>
@ -834,7 +834,7 @@
<tr>
<td>
<img
src="/assets/img/default-150x150.png"
src="./assets/img/default-150x150.png"
alt="Product 1"
class="rounded-circle img-size-32 me-2"
/>
@ -855,7 +855,7 @@
<tr>
<td>
<img
src="/assets/img/default-150x150.png"
src="./assets/img/default-150x150.png"
alt="Product 1"
class="rounded-circle img-size-32 me-2"
/>
@ -876,7 +876,7 @@
<tr>
<td>
<img
src="/assets/img/default-150x150.png"
src="./assets/img/default-150x150.png"
alt="Product 1"
class="rounded-circle img-size-32 me-2"
/>
@ -1094,31 +1094,7 @@
}
});
</script>
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
<script>
document.addEventListener('DOMContentLoaded', () => {
// Find the link tag for the main AdminLTE CSS file.
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
if (!cssLink) {
return; // Exit if the link isn't found
}
// Extract the base path from the CSS href.
// e.g., from "../css/adminlte.css", we get "../"
// e.g., from "./css/adminlte.css", we get "./"
const cssHref = cssLink.getAttribute('href');
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
// Find all images with absolute paths and fix them.
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
const originalSrc = img.getAttribute('src');
if (originalSrc) {
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
img.src = deploymentPath + relativeSrc;
}
});
});
</script>
<!--end::OverlayScrollbars Configure-->
<!-- OPTIONAL SCRIPTS -->
<!-- apexcharts -->
<script

21
dist/js/adminlte.js vendored
View File

@ -682,12 +682,21 @@
const sidebarOverlay = document.createElement('div');
sidebarOverlay.className = CLASS_NAME_SIDEBAR_OVERLAY;
document.querySelector(SELECTOR_APP_WRAPPER)?.append(sidebarOverlay);
sidebarOverlay.addEventListener('touchstart', event => {
event.preventDefault();
const target = event.currentTarget;
const data = new PushMenu(target, Defaults);
data.collapse();
let isTouchMoved = false;
sidebarOverlay.addEventListener('touchstart', () => {
isTouchMoved = false;
}, { passive: true });
sidebarOverlay.addEventListener('touchmove', () => {
isTouchMoved = true;
}, { passive: true });
sidebarOverlay.addEventListener('touchend', event => {
if (!isTouchMoved) {
event.preventDefault();
const target = event.currentTarget;
const data = new PushMenu(target, Defaults);
data.collapse();
}
}, { passive: false });
sidebarOverlay.addEventListener('click', event => {
event.preventDefault();
const target = event.currentTarget;
@ -1122,7 +1131,7 @@
};
/**
* AdminLTE v4.0.0-rc1
* AdminLTE v4.0.0-rc3
* Author: Colorlib
* Website: AdminLTE.io <https://adminlte.io>
* License: Open source - MIT <https://opensource.org/licenses/MIT>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -96,7 +96,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user1-128x128.jpg"
src="../assets/img/user1-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -122,7 +122,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user8-128x128.jpg"
src="../assets/img/user8-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -148,7 +148,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user3-128x128.jpg"
src="../assets/img/user3-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -213,7 +213,7 @@
<li class="nav-item dropdown user-menu">
<a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="user-image rounded-circle shadow"
alt="User Image"
/>
@ -223,7 +223,7 @@
<!--begin::User Image-->
<li class="user-header text-bg-primary">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="rounded-circle shadow"
alt="User Image"
/>
@ -267,7 +267,7 @@
<a href="../index.html" class="brand-link">
<!--begin::Brand Image-->
<img
src="/assets/img/AdminLTELogo.png"
src="../assets/img/AdminLTELogo.png"
alt="AdminLTE Logo"
class="brand-image opacity-75 shadow"
/>
@ -850,31 +850,7 @@
}
});
</script>
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
<script>
document.addEventListener('DOMContentLoaded', () => {
// Find the link tag for the main AdminLTE CSS file.
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
if (!cssLink) {
return; // Exit if the link isn't found
}
// Extract the base path from the CSS href.
// e.g., from "../css/adminlte.css", we get "../"
// e.g., from "./css/adminlte.css", we get "./"
const cssHref = cssLink.getAttribute('href');
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
// Find all images with absolute paths and fix them.
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
const originalSrc = img.getAttribute('src');
if (originalSrc) {
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
img.src = deploymentPath + relativeSrc;
}
});
});
</script>
<!--end::OverlayScrollbars Configure-->
<!--end::Script-->
</body>
<!--end::Body-->

View File

@ -98,7 +98,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user1-128x128.jpg"
src="../assets/img/user1-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -124,7 +124,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user8-128x128.jpg"
src="../assets/img/user8-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -150,7 +150,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user3-128x128.jpg"
src="../assets/img/user3-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -215,7 +215,7 @@
<li class="nav-item dropdown user-menu">
<a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="user-image rounded-circle shadow"
alt="User Image"
/>
@ -225,7 +225,7 @@
<!--begin::User Image-->
<li class="user-header text-bg-primary">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="rounded-circle shadow"
alt="User Image"
/>
@ -269,7 +269,7 @@
<a href="../index.html" class="brand-link">
<!--begin::Brand Image-->
<img
src="/assets/img/AdminLTELogo.png"
src="../assets/img/AdminLTELogo.png"
alt="AdminLTE Logo"
class="brand-image opacity-75 shadow"
/>
@ -852,31 +852,7 @@
}
});
</script>
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
<script>
document.addEventListener('DOMContentLoaded', () => {
// Find the link tag for the main AdminLTE CSS file.
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
if (!cssLink) {
return; // Exit if the link isn't found
}
// Extract the base path from the CSS href.
// e.g., from "../css/adminlte.css", we get "../"
// e.g., from "./css/adminlte.css", we get "./"
const cssHref = cssLink.getAttribute('href');
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
// Find all images with absolute paths and fix them.
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
const originalSrc = img.getAttribute('src');
if (originalSrc) {
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
img.src = deploymentPath + relativeSrc;
}
});
});
</script>
<!--end::OverlayScrollbars Configure-->
<!--end::Script-->
</body>
<!--end::Body-->

View File

@ -96,7 +96,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user1-128x128.jpg"
src="../assets/img/user1-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -122,7 +122,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user8-128x128.jpg"
src="../assets/img/user8-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -148,7 +148,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user3-128x128.jpg"
src="../assets/img/user3-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -213,7 +213,7 @@
<li class="nav-item dropdown user-menu">
<a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="user-image rounded-circle shadow"
alt="User Image"
/>
@ -223,7 +223,7 @@
<!--begin::User Image-->
<li class="user-header text-bg-primary">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="rounded-circle shadow"
alt="User Image"
/>
@ -267,7 +267,7 @@
<a href="../index.html" class="brand-link">
<!--begin::Brand Image-->
<img
src="/assets/img/AdminLTELogo.png"
src="../assets/img/AdminLTELogo.png"
alt="AdminLTE Logo"
class="brand-image opacity-75 shadow"
/>
@ -849,31 +849,7 @@
}
});
</script>
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
<script>
document.addEventListener('DOMContentLoaded', () => {
// Find the link tag for the main AdminLTE CSS file.
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
if (!cssLink) {
return; // Exit if the link isn't found
}
// Extract the base path from the CSS href.
// e.g., from "../css/adminlte.css", we get "../"
// e.g., from "./css/adminlte.css", we get "./"
const cssHref = cssLink.getAttribute('href');
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
// Find all images with absolute paths and fix them.
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
const originalSrc = img.getAttribute('src');
if (originalSrc) {
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
img.src = deploymentPath + relativeSrc;
}
});
});
</script>
<!--end::OverlayScrollbars Configure-->
<!--end::Script-->
</body>
<!--end::Body-->

View File

@ -96,7 +96,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user1-128x128.jpg"
src="../assets/img/user1-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -122,7 +122,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user8-128x128.jpg"
src="../assets/img/user8-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -148,7 +148,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user3-128x128.jpg"
src="../assets/img/user3-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -213,7 +213,7 @@
<li class="nav-item dropdown user-menu">
<a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="user-image rounded-circle shadow"
alt="User Image"
/>
@ -223,7 +223,7 @@
<!--begin::User Image-->
<li class="user-header text-bg-primary">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="rounded-circle shadow"
alt="User Image"
/>
@ -267,7 +267,7 @@
<a href="../index.html" class="brand-link">
<!--begin::Brand Image-->
<img
src="/assets/img/AdminLTELogo.png"
src="../assets/img/AdminLTELogo.png"
alt="AdminLTE Logo"
class="brand-image opacity-75 shadow"
/>
@ -849,31 +849,7 @@
}
});
</script>
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
<script>
document.addEventListener('DOMContentLoaded', () => {
// Find the link tag for the main AdminLTE CSS file.
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
if (!cssLink) {
return; // Exit if the link isn't found
}
// Extract the base path from the CSS href.
// e.g., from "../css/adminlte.css", we get "../"
// e.g., from "./css/adminlte.css", we get "./"
const cssHref = cssLink.getAttribute('href');
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
// Find all images with absolute paths and fix them.
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
const originalSrc = img.getAttribute('src');
if (originalSrc) {
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
img.src = deploymentPath + relativeSrc;
}
});
});
</script>
<!--end::OverlayScrollbars Configure-->
<!--end::Script-->
</body>
<!--end::Body-->

View File

@ -96,7 +96,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user1-128x128.jpg"
src="../assets/img/user1-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -122,7 +122,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user8-128x128.jpg"
src="../assets/img/user8-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -148,7 +148,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user3-128x128.jpg"
src="../assets/img/user3-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -213,7 +213,7 @@
<li class="nav-item dropdown user-menu">
<a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="user-image rounded-circle shadow"
alt="User Image"
/>
@ -223,7 +223,7 @@
<!--begin::User Image-->
<li class="user-header text-bg-primary">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="rounded-circle shadow"
alt="User Image"
/>
@ -267,7 +267,7 @@
<a href="../index.html" class="brand-link">
<!--begin::Brand Image-->
<img
src="/assets/img/AdminLTELogo.png"
src="../assets/img/AdminLTELogo.png"
alt="AdminLTE Logo"
class="brand-image opacity-75 shadow"
/>
@ -850,31 +850,7 @@
}
});
</script>
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
<script>
document.addEventListener('DOMContentLoaded', () => {
// Find the link tag for the main AdminLTE CSS file.
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
if (!cssLink) {
return; // Exit if the link isn't found
}
// Extract the base path from the CSS href.
// e.g., from "../css/adminlte.css", we get "../"
// e.g., from "./css/adminlte.css", we get "./"
const cssHref = cssLink.getAttribute('href');
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
// Find all images with absolute paths and fix them.
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
const originalSrc = img.getAttribute('src');
if (originalSrc) {
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
img.src = deploymentPath + relativeSrc;
}
});
});
</script>
<!--end::OverlayScrollbars Configure-->
<!--end::Script-->
</body>
<!--end::Body-->

View File

@ -96,7 +96,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user1-128x128.jpg"
src="../assets/img/user1-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -122,7 +122,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user8-128x128.jpg"
src="../assets/img/user8-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -148,7 +148,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user3-128x128.jpg"
src="../assets/img/user3-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -213,7 +213,7 @@
<li class="nav-item dropdown user-menu">
<a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="user-image rounded-circle shadow"
alt="User Image"
/>
@ -223,7 +223,7 @@
<!--begin::User Image-->
<li class="user-header text-bg-primary">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="rounded-circle shadow"
alt="User Image"
/>
@ -267,7 +267,7 @@
<a href="../index.html" class="brand-link">
<!--begin::Brand Image-->
<img
src="/assets/img/AdminLTELogo.png"
src="../assets/img/AdminLTELogo.png"
alt="AdminLTE Logo"
class="brand-image opacity-75 shadow"
/>
@ -882,31 +882,7 @@
}
});
</script>
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
<script>
document.addEventListener('DOMContentLoaded', () => {
// Find the link tag for the main AdminLTE CSS file.
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
if (!cssLink) {
return; // Exit if the link isn't found
}
// Extract the base path from the CSS href.
// e.g., from "../css/adminlte.css", we get "../"
// e.g., from "./css/adminlte.css", we get "./"
const cssHref = cssLink.getAttribute('href');
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
// Find all images with absolute paths and fix them.
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
const originalSrc = img.getAttribute('src');
if (originalSrc) {
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
img.src = deploymentPath + relativeSrc;
}
});
});
</script>
<!--end::OverlayScrollbars Configure-->
<!--end::Script-->
</body>
<!--end::Body-->

View File

@ -96,7 +96,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user1-128x128.jpg"
src="../assets/img/user1-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -122,7 +122,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user8-128x128.jpg"
src="../assets/img/user8-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -148,7 +148,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user3-128x128.jpg"
src="../assets/img/user3-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -213,7 +213,7 @@
<li class="nav-item dropdown user-menu">
<a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="user-image rounded-circle shadow"
alt="User Image"
/>
@ -223,7 +223,7 @@
<!--begin::User Image-->
<li class="user-header text-bg-primary">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="rounded-circle shadow"
alt="User Image"
/>
@ -267,7 +267,7 @@
<a href="../index.html" class="brand-link">
<!--begin::Brand Image-->
<img
src="/assets/img/AdminLTELogo.png"
src="../assets/img/AdminLTELogo.png"
alt="AdminLTE Logo"
class="brand-image opacity-75 shadow"
/>
@ -850,31 +850,7 @@
}
});
</script>
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
<script>
document.addEventListener('DOMContentLoaded', () => {
// Find the link tag for the main AdminLTE CSS file.
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
if (!cssLink) {
return; // Exit if the link isn't found
}
// Extract the base path from the CSS href.
// e.g., from "../css/adminlte.css", we get "../"
// e.g., from "./css/adminlte.css", we get "./"
const cssHref = cssLink.getAttribute('href');
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
// Find all images with absolute paths and fix them.
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
const originalSrc = img.getAttribute('src');
if (originalSrc) {
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
img.src = deploymentPath + relativeSrc;
}
});
});
</script>
<!--end::OverlayScrollbars Configure-->
<!--end::Script-->
</body>
<!--end::Body-->

View File

@ -96,7 +96,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user1-128x128.jpg"
src="../assets/img/user1-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -122,7 +122,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user8-128x128.jpg"
src="../assets/img/user8-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -148,7 +148,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user3-128x128.jpg"
src="../assets/img/user3-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -213,7 +213,7 @@
<li class="nav-item dropdown user-menu">
<a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="user-image rounded-circle shadow"
alt="User Image"
/>
@ -223,7 +223,7 @@
<!--begin::User Image-->
<li class="user-header text-bg-primary">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="rounded-circle shadow"
alt="User Image"
/>
@ -267,14 +267,14 @@
<a href="../index.html" class="brand-link logo-switch">
<!--begin::Brand Image Small-->
<img
src="/assets/img/AdminLTELogo.png"
src="../assets/img/AdminLTELogo.png"
alt="AdminLTE Logo Small"
class="brand-image-xl logo-xs opacity-75 shadow"
/>
<!--end::Brand Image Small-->
<!--begin::Brand Image Large-->
<img
src="/assets/img/AdminLTEFullLogo.png"
src="../assets/img/AdminLTEFullLogo.png"
alt="AdminLTE Logo Large"
class="brand-image-xs logo-xl opacity-75"
/>
@ -487,31 +487,7 @@
}
});
</script>
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
<script>
document.addEventListener('DOMContentLoaded', () => {
// Find the link tag for the main AdminLTE CSS file.
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
if (!cssLink) {
return; // Exit if the link isn't found
}
// Extract the base path from the CSS href.
// e.g., from "../css/adminlte.css", we get "../"
// e.g., from "./css/adminlte.css", we get "./"
const cssHref = cssLink.getAttribute('href');
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
// Find all images with absolute paths and fix them.
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
const originalSrc = img.getAttribute('src');
if (originalSrc) {
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
img.src = deploymentPath + relativeSrc;
}
});
});
</script>
<!--end::OverlayScrollbars Configure-->
<!--end::Script-->
</body>
<!--end::Body-->

View File

@ -96,7 +96,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user1-128x128.jpg"
src="../assets/img/user1-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -122,7 +122,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user8-128x128.jpg"
src="../assets/img/user8-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -148,7 +148,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user3-128x128.jpg"
src="../assets/img/user3-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -213,7 +213,7 @@
<li class="nav-item dropdown user-menu">
<a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="user-image rounded-circle shadow"
alt="User Image"
/>
@ -223,7 +223,7 @@
<!--begin::User Image-->
<li class="user-header text-bg-primary">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="rounded-circle shadow"
alt="User Image"
/>
@ -267,7 +267,7 @@
<a href="../index.html" class="brand-link">
<!--begin::Brand Image-->
<img
src="/assets/img/AdminLTELogo.png"
src="../assets/img/AdminLTELogo.png"
alt="AdminLTE Logo"
class="brand-image opacity-75 shadow"
/>
@ -850,31 +850,7 @@
}
});
</script>
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
<script>
document.addEventListener('DOMContentLoaded', () => {
// Find the link tag for the main AdminLTE CSS file.
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
if (!cssLink) {
return; // Exit if the link isn't found
}
// Extract the base path from the CSS href.
// e.g., from "../css/adminlte.css", we get "../"
// e.g., from "./css/adminlte.css", we get "./"
const cssHref = cssLink.getAttribute('href');
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
// Find all images with absolute paths and fix them.
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
const originalSrc = img.getAttribute('src');
if (originalSrc) {
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
img.src = deploymentPath + relativeSrc;
}
});
});
</script>
<!--end::OverlayScrollbars Configure-->
<!--end::Script-->
</body>
<!--end::Body-->

View File

@ -96,7 +96,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user1-128x128.jpg"
src="../assets/img/user1-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -122,7 +122,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user8-128x128.jpg"
src="../assets/img/user8-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -148,7 +148,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user3-128x128.jpg"
src="../assets/img/user3-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -213,7 +213,7 @@
<li class="nav-item dropdown user-menu">
<a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="user-image rounded-circle shadow"
alt="User Image"
/>
@ -223,7 +223,7 @@
<!--begin::User Image-->
<li class="user-header text-bg-primary">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="rounded-circle shadow"
alt="User Image"
/>
@ -267,7 +267,7 @@
<a href="../index.html" class="brand-link">
<!--begin::Brand Image-->
<img
src="/assets/img/AdminLTELogo.png"
src="../assets/img/AdminLTELogo.png"
alt="AdminLTE Logo"
class="brand-image opacity-75 shadow"
/>
@ -849,31 +849,7 @@
}
});
</script>
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
<script>
document.addEventListener('DOMContentLoaded', () => {
// Find the link tag for the main AdminLTE CSS file.
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
if (!cssLink) {
return; // Exit if the link isn't found
}
// Extract the base path from the CSS href.
// e.g., from "../css/adminlte.css", we get "../"
// e.g., from "./css/adminlte.css", we get "./"
const cssHref = cssLink.getAttribute('href');
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
// Find all images with absolute paths and fix them.
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
const originalSrc = img.getAttribute('src');
if (originalSrc) {
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
img.src = deploymentPath + relativeSrc;
}
});
});
</script>
<!--end::OverlayScrollbars Configure-->
<!--end::Script-->
</body>
<!--end::Body-->

View File

@ -96,7 +96,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user1-128x128.jpg"
src="../assets/img/user1-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -122,7 +122,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user8-128x128.jpg"
src="../assets/img/user8-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -148,7 +148,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user3-128x128.jpg"
src="../assets/img/user3-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -213,7 +213,7 @@
<li class="nav-item dropdown user-menu">
<a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="user-image rounded-circle shadow"
alt="User Image"
/>
@ -223,7 +223,7 @@
<!--begin::User Image-->
<li class="user-header text-bg-primary">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="rounded-circle shadow"
alt="User Image"
/>
@ -267,7 +267,7 @@
<a href="../index.html" class="brand-link">
<!--begin::Brand Image-->
<img
src="/assets/img/AdminLTELogo.png"
src="../assets/img/AdminLTELogo.png"
alt="AdminLTE Logo"
class="brand-image opacity-75 shadow"
/>
@ -1100,31 +1100,7 @@
}
});
</script>
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
<script>
document.addEventListener('DOMContentLoaded', () => {
// Find the link tag for the main AdminLTE CSS file.
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
if (!cssLink) {
return; // Exit if the link isn't found
}
// Extract the base path from the CSS href.
// e.g., from "../css/adminlte.css", we get "../"
// e.g., from "./css/adminlte.css", we get "./"
const cssHref = cssLink.getAttribute('href');
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
// Find all images with absolute paths and fix them.
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
const originalSrc = img.getAttribute('src');
if (originalSrc) {
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
img.src = deploymentPath + relativeSrc;
}
});
});
</script>
<!--end::OverlayScrollbars Configure-->
<!--end::Script-->
</body>
<!--end::Body-->

View File

@ -96,7 +96,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user1-128x128.jpg"
src="../assets/img/user1-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -122,7 +122,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user8-128x128.jpg"
src="../assets/img/user8-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -148,7 +148,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user3-128x128.jpg"
src="../assets/img/user3-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -213,7 +213,7 @@
<li class="nav-item dropdown user-menu">
<a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="user-image rounded-circle shadow"
alt="User Image"
/>
@ -223,7 +223,7 @@
<!--begin::User Image-->
<li class="user-header text-bg-primary">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="rounded-circle shadow"
alt="User Image"
/>
@ -267,7 +267,7 @@
<a href="../index.html" class="brand-link">
<!--begin::Brand Image-->
<img
src="/assets/img/AdminLTELogo.png"
src="../assets/img/AdminLTELogo.png"
alt="AdminLTE Logo"
class="brand-image opacity-75 shadow"
/>
@ -1055,31 +1055,7 @@
}
});
</script>
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
<script>
document.addEventListener('DOMContentLoaded', () => {
// Find the link tag for the main AdminLTE CSS file.
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
if (!cssLink) {
return; // Exit if the link isn't found
}
// Extract the base path from the CSS href.
// e.g., from "../css/adminlte.css", we get "../"
// e.g., from "./css/adminlte.css", we get "./"
const cssHref = cssLink.getAttribute('href');
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
// Find all images with absolute paths and fix them.
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
const originalSrc = img.getAttribute('src');
if (originalSrc) {
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
img.src = deploymentPath + relativeSrc;
}
});
});
</script>
<!--end::OverlayScrollbars Configure-->
<!--end::Script-->
</body>
<!--end::Body-->

View File

@ -96,7 +96,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user1-128x128.jpg"
src="../assets/img/user1-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -122,7 +122,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user8-128x128.jpg"
src="../assets/img/user8-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -148,7 +148,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user3-128x128.jpg"
src="../assets/img/user3-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -213,7 +213,7 @@
<li class="nav-item dropdown user-menu">
<a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="user-image rounded-circle shadow"
alt="User Image"
/>
@ -223,7 +223,7 @@
<!--begin::User Image-->
<li class="user-header text-bg-primary">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="rounded-circle shadow"
alt="User Image"
/>
@ -267,7 +267,7 @@
<a href="../index.html" class="brand-link">
<!--begin::Brand Image-->
<img
src="/assets/img/AdminLTELogo.png"
src="../assets/img/AdminLTELogo.png"
alt="AdminLTE Logo"
class="brand-image opacity-75 shadow"
/>
@ -1073,31 +1073,7 @@
}
});
</script>
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
<script>
document.addEventListener('DOMContentLoaded', () => {
// Find the link tag for the main AdminLTE CSS file.
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
if (!cssLink) {
return; // Exit if the link isn't found
}
// Extract the base path from the CSS href.
// e.g., from "../css/adminlte.css", we get "../"
// e.g., from "./css/adminlte.css", we get "./"
const cssHref = cssLink.getAttribute('href');
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
// Find all images with absolute paths and fix them.
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
const originalSrc = img.getAttribute('src');
if (originalSrc) {
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
img.src = deploymentPath + relativeSrc;
}
});
});
</script>
<!--end::OverlayScrollbars Configure-->
<!--end::Script-->
</body>
<!--end::Body-->

View File

@ -96,7 +96,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user1-128x128.jpg"
src="../assets/img/user1-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -122,7 +122,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user8-128x128.jpg"
src="../assets/img/user8-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -148,7 +148,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user3-128x128.jpg"
src="../assets/img/user3-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -213,7 +213,7 @@
<li class="nav-item dropdown user-menu">
<a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="user-image rounded-circle shadow"
alt="User Image"
/>
@ -223,7 +223,7 @@
<!--begin::User Image-->
<li class="user-header text-bg-primary">
<img
src="/assets/img/user2-160x160.jpg"
src="../assets/img/user2-160x160.jpg"
class="rounded-circle shadow"
alt="User Image"
/>
@ -267,7 +267,7 @@
<a href="../index.html" class="brand-link">
<!--begin::Brand Image-->
<img
src="/assets/img/AdminLTELogo.png"
src="../assets/img/AdminLTELogo.png"
alt="AdminLTE Logo"
class="brand-image opacity-75 shadow"
/>
@ -935,31 +935,7 @@
}
});
</script>
<!--end::OverlayScrollbars Configure--><!-- Image path runtime fix -->
<script>
document.addEventListener('DOMContentLoaded', () => {
// Find the link tag for the main AdminLTE CSS file.
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
if (!cssLink) {
return; // Exit if the link isn't found
}
// Extract the base path from the CSS href.
// e.g., from "../css/adminlte.css", we get "../"
// e.g., from "./css/adminlte.css", we get "./"
const cssHref = cssLink.getAttribute('href');
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
// Find all images with absolute paths and fix them.
document.querySelectorAll('img[src^="/assets/"]').forEach((img) => {
const originalSrc = img.getAttribute('src');
if (originalSrc) {
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
img.src = deploymentPath + relativeSrc;
}
});
});
</script>
<!--end::OverlayScrollbars Configure-->
<!--end::Script-->
</body>
<!--end::Body-->

460
package-lock.json generated
View File

@ -1102,10 +1102,11 @@
}
},
"node_modules/@eslint/js": {
"version": "9.30.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.30.0.tgz",
"integrity": "sha512-Wzw3wQwPvc9sHM+NjakWTcPx11mbZyiYHuwWa/QfZ7cIRX7WK54PSk7bdyXDaoaopUcMatv1zaQvOAAO8hCdww==",
"version": "9.30.1",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.30.1.tgz",
"integrity": "sha512-zXhuECFlyep42KZUhWjfvsmXGX39W8K8LFb8AWXM9gSV9dQB+MrJGLKvW6Zw0Ggnbpw0VHTtrhFXYe3Gym18jg==",
"dev": true,
"license": "MIT",
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
@ -2210,9 +2211,9 @@
}
},
"node_modules/@rollup/plugin-typescript": {
"version": "12.1.3",
"resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-12.1.3.tgz",
"integrity": "sha512-gAx0AYwkyjqOw4JrZV34N/abvAobLhczyLkZ7FVL2UXPrO4zv8oqTfYT3DLBRan1EXasp4SUuEJXqPTk0gnJzw==",
"version": "12.1.4",
"resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-12.1.4.tgz",
"integrity": "sha512-s5Hx+EtN60LMlDBvl5f04bEiFZmAepk27Q+mr85L/00zPDn1jtzlTV6FWn81MaIwqfWzKxmOJrBWHU6vtQyedQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -2277,9 +2278,9 @@
}
},
"node_modules/@rollup/rollup-android-arm-eabi": {
"version": "4.44.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.44.0.tgz",
"integrity": "sha512-xEiEE5oDW6tK4jXCAyliuntGR+amEMO7HLtdSshVuhFnKTYoeYMyXQK7pLouAJJj5KHdwdn87bfHAR2nSdNAUA==",
"version": "4.44.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.44.2.tgz",
"integrity": "sha512-g0dF8P1e2QYPOj1gu7s/3LVP6kze9A7m6x0BZ9iTdXK8N5c2V7cpBKHV3/9A4Zd8xxavdhK0t4PnqjkqVmUc9Q==",
"cpu": [
"arm"
],
@ -2291,9 +2292,9 @@
]
},
"node_modules/@rollup/rollup-android-arm64": {
"version": "4.44.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.44.0.tgz",
"integrity": "sha512-uNSk/TgvMbskcHxXYHzqwiyBlJ/lGcv8DaUfcnNwict8ba9GTTNxfn3/FAoFZYgkaXXAdrAA+SLyKplyi349Jw==",
"version": "4.44.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.44.2.tgz",
"integrity": "sha512-Yt5MKrOosSbSaAK5Y4J+vSiID57sOvpBNBR6K7xAaQvk3MkcNVV0f9fE20T+41WYN8hDn6SGFlFrKudtx4EoxA==",
"cpu": [
"arm64"
],
@ -2305,9 +2306,9 @@
]
},
"node_modules/@rollup/rollup-darwin-arm64": {
"version": "4.44.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.44.0.tgz",
"integrity": "sha512-VGF3wy0Eq1gcEIkSCr8Ke03CWT+Pm2yveKLaDvq51pPpZza3JX/ClxXOCmTYYq3us5MvEuNRTaeyFThCKRQhOA==",
"version": "4.44.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.44.2.tgz",
"integrity": "sha512-EsnFot9ZieM35YNA26nhbLTJBHD0jTwWpPwmRVDzjylQT6gkar+zenfb8mHxWpRrbn+WytRRjE0WKsfaxBkVUA==",
"cpu": [
"arm64"
],
@ -2319,9 +2320,9 @@
]
},
"node_modules/@rollup/rollup-darwin-x64": {
"version": "4.44.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.44.0.tgz",
"integrity": "sha512-fBkyrDhwquRvrTxSGH/qqt3/T0w5Rg0L7ZIDypvBPc1/gzjJle6acCpZ36blwuwcKD/u6oCE/sRWlUAcxLWQbQ==",
"version": "4.44.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.44.2.tgz",
"integrity": "sha512-dv/t1t1RkCvJdWWxQ2lWOO+b7cMsVw5YFaS04oHpZRWehI1h0fV1gF4wgGCTyQHHjJDfbNpwOi6PXEafRBBezw==",
"cpu": [
"x64"
],
@ -2333,9 +2334,9 @@
]
},
"node_modules/@rollup/rollup-freebsd-arm64": {
"version": "4.44.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.44.0.tgz",
"integrity": "sha512-u5AZzdQJYJXByB8giQ+r4VyfZP+walV+xHWdaFx/1VxsOn6eWJhK2Vl2eElvDJFKQBo/hcYIBg/jaKS8ZmKeNQ==",
"version": "4.44.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.44.2.tgz",
"integrity": "sha512-W4tt4BLorKND4qeHElxDoim0+BsprFTwb+vriVQnFFtT/P6v/xO5I99xvYnVzKWrK6j7Hb0yp3x7V5LUbaeOMg==",
"cpu": [
"arm64"
],
@ -2347,9 +2348,9 @@
]
},
"node_modules/@rollup/rollup-freebsd-x64": {
"version": "4.44.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.44.0.tgz",
"integrity": "sha512-qC0kS48c/s3EtdArkimctY7h3nHicQeEUdjJzYVJYR3ct3kWSafmn6jkNCA8InbUdge6PVx6keqjk5lVGJf99g==",
"version": "4.44.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.44.2.tgz",
"integrity": "sha512-tdT1PHopokkuBVyHjvYehnIe20fxibxFCEhQP/96MDSOcyjM/shlTkZZLOufV3qO6/FQOSiJTBebhVc12JyPTA==",
"cpu": [
"x64"
],
@ -2361,9 +2362,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
"version": "4.44.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.44.0.tgz",
"integrity": "sha512-x+e/Z9H0RAWckn4V2OZZl6EmV0L2diuX3QB0uM1r6BvhUIv6xBPL5mrAX2E3e8N8rEHVPwFfz/ETUbV4oW9+lQ==",
"version": "4.44.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.44.2.tgz",
"integrity": "sha512-+xmiDGGaSfIIOXMzkhJ++Oa0Gwvl9oXUeIiwarsdRXSe27HUIvjbSIpPxvnNsRebsNdUo7uAiQVgBD1hVriwSQ==",
"cpu": [
"arm"
],
@ -2375,9 +2376,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
"version": "4.44.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.44.0.tgz",
"integrity": "sha512-1exwiBFf4PU/8HvI8s80icyCcnAIB86MCBdst51fwFmH5dyeoWVPVgmQPcKrMtBQ0W5pAs7jBCWuRXgEpRzSCg==",
"version": "4.44.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.44.2.tgz",
"integrity": "sha512-bDHvhzOfORk3wt8yxIra8N4k/N0MnKInCW5OGZaeDYa/hMrdPaJzo7CSkjKZqX4JFUWjUGm88lI6QJLCM7lDrA==",
"cpu": [
"arm"
],
@ -2389,9 +2390,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-gnu": {
"version": "4.44.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.44.0.tgz",
"integrity": "sha512-ZTR2mxBHb4tK4wGf9b8SYg0Y6KQPjGpR4UWwTFdnmjB4qRtoATZ5dWn3KsDwGa5Z2ZBOE7K52L36J9LueKBdOQ==",
"version": "4.44.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.44.2.tgz",
"integrity": "sha512-NMsDEsDiYghTbeZWEGnNi4F0hSbGnsuOG+VnNvxkKg0IGDvFh7UVpM/14mnMwxRxUf9AdAVJgHPvKXf6FpMB7A==",
"cpu": [
"arm64"
],
@ -2403,9 +2404,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-musl": {
"version": "4.44.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.44.0.tgz",
"integrity": "sha512-GFWfAhVhWGd4r6UxmnKRTBwP1qmModHtd5gkraeW2G490BpFOZkFtem8yuX2NyafIP/mGpRJgTJ2PwohQkUY/Q==",
"version": "4.44.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.44.2.tgz",
"integrity": "sha512-lb5bxXnxXglVq+7imxykIp5xMq+idehfl+wOgiiix0191av84OqbjUED+PRC5OA8eFJYj5xAGcpAZ0pF2MnW+A==",
"cpu": [
"arm64"
],
@ -2417,9 +2418,9 @@
]
},
"node_modules/@rollup/rollup-linux-loongarch64-gnu": {
"version": "4.44.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.44.0.tgz",
"integrity": "sha512-xw+FTGcov/ejdusVOqKgMGW3c4+AgqrfvzWEVXcNP6zq2ue+lsYUgJ+5Rtn/OTJf7e2CbgTFvzLW2j0YAtj0Gg==",
"version": "4.44.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.44.2.tgz",
"integrity": "sha512-Yl5Rdpf9pIc4GW1PmkUGHdMtbx0fBLE1//SxDmuf3X0dUC57+zMepow2LK0V21661cjXdTn8hO2tXDdAWAqE5g==",
"cpu": [
"loong64"
],
@ -2431,9 +2432,9 @@
]
},
"node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
"version": "4.44.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.44.0.tgz",
"integrity": "sha512-bKGibTr9IdF0zr21kMvkZT4K6NV+jjRnBoVMt2uNMG0BYWm3qOVmYnXKzx7UhwrviKnmK46IKMByMgvpdQlyJQ==",
"version": "4.44.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.44.2.tgz",
"integrity": "sha512-03vUDH+w55s680YYryyr78jsO1RWU9ocRMaeV2vMniJJW/6HhoTBwyyiiTPVHNWLnhsnwcQ0oH3S9JSBEKuyqw==",
"cpu": [
"ppc64"
],
@ -2445,9 +2446,9 @@
]
},
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
"version": "4.44.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.44.0.tgz",
"integrity": "sha512-vV3cL48U5kDaKZtXrti12YRa7TyxgKAIDoYdqSIOMOFBXqFj2XbChHAtXquEn2+n78ciFgr4KIqEbydEGPxXgA==",
"version": "4.44.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.44.2.tgz",
"integrity": "sha512-iYtAqBg5eEMG4dEfVlkqo05xMOk6y/JXIToRca2bAWuqjrJYJlx/I7+Z+4hSrsWU8GdJDFPL4ktV3dy4yBSrzg==",
"cpu": [
"riscv64"
],
@ -2459,9 +2460,9 @@
]
},
"node_modules/@rollup/rollup-linux-riscv64-musl": {
"version": "4.44.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.44.0.tgz",
"integrity": "sha512-TDKO8KlHJuvTEdfw5YYFBjhFts2TR0VpZsnLLSYmB7AaohJhM8ctDSdDnUGq77hUh4m/djRafw+9zQpkOanE2Q==",
"version": "4.44.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.44.2.tgz",
"integrity": "sha512-e6vEbgaaqz2yEHqtkPXa28fFuBGmUJ0N2dOJK8YUfijejInt9gfCSA7YDdJ4nYlv67JfP3+PSWFX4IVw/xRIPg==",
"cpu": [
"riscv64"
],
@ -2473,9 +2474,9 @@
]
},
"node_modules/@rollup/rollup-linux-s390x-gnu": {
"version": "4.44.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.44.0.tgz",
"integrity": "sha512-8541GEyktXaw4lvnGp9m84KENcxInhAt6vPWJ9RodsB/iGjHoMB2Pp5MVBCiKIRxrxzJhGCxmNzdu+oDQ7kwRA==",
"version": "4.44.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.44.2.tgz",
"integrity": "sha512-evFOtkmVdY3udE+0QKrV5wBx7bKI0iHz5yEVx5WqDJkxp9YQefy4Mpx3RajIVcM6o7jxTvVd/qpC1IXUhGc1Mw==",
"cpu": [
"s390x"
],
@ -2487,9 +2488,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-gnu": {
"version": "4.44.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.44.0.tgz",
"integrity": "sha512-iUVJc3c0o8l9Sa/qlDL2Z9UP92UZZW1+EmQ4xfjTc1akr0iUFZNfxrXJ/R1T90h/ILm9iXEY6+iPrmYB3pXKjw==",
"version": "4.44.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.44.2.tgz",
"integrity": "sha512-/bXb0bEsWMyEkIsUL2Yt5nFB5naLAwyOWMEviQfQY1x3l5WsLKgvZf66TM7UTfED6erckUVUJQ/jJ1FSpm3pRQ==",
"cpu": [
"x64"
],
@ -2501,9 +2502,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-musl": {
"version": "4.44.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.44.0.tgz",
"integrity": "sha512-PQUobbhLTQT5yz/SPg116VJBgz+XOtXt8D1ck+sfJJhuEsMj2jSej5yTdp8CvWBSceu+WW+ibVL6dm0ptG5fcA==",
"version": "4.44.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.44.2.tgz",
"integrity": "sha512-3D3OB1vSSBXmkGEZR27uiMRNiwN08/RVAcBKwhUYPaiZ8bcvdeEwWPvbnXvvXHY+A/7xluzcN+kaiOFNiOZwWg==",
"cpu": [
"x64"
],
@ -2515,9 +2516,9 @@
]
},
"node_modules/@rollup/rollup-win32-arm64-msvc": {
"version": "4.44.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.44.0.tgz",
"integrity": "sha512-M0CpcHf8TWn+4oTxJfh7LQuTuaYeXGbk0eageVjQCKzYLsajWS/lFC94qlRqOlyC2KvRT90ZrfXULYmukeIy7w==",
"version": "4.44.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.44.2.tgz",
"integrity": "sha512-VfU0fsMK+rwdK8mwODqYeM2hDrF2WiHaSmCBrS7gColkQft95/8tphyzv2EupVxn3iE0FI78wzffoULH1G+dkw==",
"cpu": [
"arm64"
],
@ -2529,9 +2530,9 @@
]
},
"node_modules/@rollup/rollup-win32-ia32-msvc": {
"version": "4.44.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.44.0.tgz",
"integrity": "sha512-3XJ0NQtMAXTWFW8FqZKcw3gOQwBtVWP/u8TpHP3CRPXD7Pd6s8lLdH3sHWh8vqKCyyiI8xW5ltJScQmBU9j7WA==",
"version": "4.44.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.44.2.tgz",
"integrity": "sha512-+qMUrkbUurpE6DVRjiJCNGZBGo9xM4Y0FXU5cjgudWqIBWbcLkjE3XprJUsOFgC6xjBClwVa9k6O3A7K3vxb5Q==",
"cpu": [
"ia32"
],
@ -2543,9 +2544,9 @@
]
},
"node_modules/@rollup/rollup-win32-x64-msvc": {
"version": "4.44.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.44.0.tgz",
"integrity": "sha512-Q2Mgwt+D8hd5FIPUuPDsvPR7Bguza6yTkJxspDGkZj7tBRn2y4KSWYuIXpftFSjBra76TbKerCV7rgFPQrn+wQ==",
"version": "4.44.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.44.2.tgz",
"integrity": "sha512-3+QZROYfJ25PDcxFF66UEk8jGWigHJeecZILvkPkyQN7oc5BvFo4YEXFkOs154j3FTMp9mn9Ky8RCOwastduEA==",
"cpu": [
"x64"
],
@ -2851,16 +2852,17 @@
"dev": true
},
"node_modules/@typescript-eslint/eslint-plugin": {
"version": "8.35.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.35.1.tgz",
"integrity": "sha512-9XNTlo7P7RJxbVeICaIIIEipqxLKguyh+3UbXuT2XQuFp6d8VOeDEGuz5IiX0dgZo8CiI6aOFLg4e8cF71SFVg==",
"version": "8.36.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.36.0.tgz",
"integrity": "sha512-lZNihHUVB6ZZiPBNgOQGSxUASI7UJWhT8nHyUGCnaQ28XFCw98IfrMCG3rUl1uwUWoAvodJQby2KTs79UTcrAg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/regexpp": "^4.10.0",
"@typescript-eslint/scope-manager": "8.35.1",
"@typescript-eslint/type-utils": "8.35.1",
"@typescript-eslint/utils": "8.35.1",
"@typescript-eslint/visitor-keys": "8.35.1",
"@typescript-eslint/scope-manager": "8.36.0",
"@typescript-eslint/type-utils": "8.36.0",
"@typescript-eslint/utils": "8.36.0",
"@typescript-eslint/visitor-keys": "8.36.0",
"graphemer": "^1.4.0",
"ignore": "^7.0.0",
"natural-compare": "^1.4.0",
@ -2874,19 +2876,20 @@
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
"@typescript-eslint/parser": "^8.35.1",
"@typescript-eslint/parser": "^8.36.0",
"eslint": "^8.57.0 || ^9.0.0",
"typescript": ">=4.8.4 <5.9.0"
}
},
"node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/project-service": {
"version": "8.35.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.35.1.tgz",
"integrity": "sha512-VYxn/5LOpVxADAuP3NrnxxHYfzVtQzLKeldIhDhzC8UHaiQvYlXvKuVho1qLduFbJjjy5U5bkGwa3rUGUb1Q6Q==",
"version": "8.36.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.36.0.tgz",
"integrity": "sha512-JAhQFIABkWccQYeLMrHadu/fhpzmSQ1F1KXkpzqiVxA/iYI6UnRt2trqXHt1sYEcw1mxLnB9rKMsOxXPxowN/g==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/tsconfig-utils": "^8.35.1",
"@typescript-eslint/types": "^8.35.1",
"@typescript-eslint/tsconfig-utils": "^8.36.0",
"@typescript-eslint/types": "^8.36.0",
"debug": "^4.3.4"
},
"engines": {
@ -2901,13 +2904,14 @@
}
},
"node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": {
"version": "8.35.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.35.1.tgz",
"integrity": "sha512-s/Bpd4i7ht2934nG+UoSPlYXd08KYz3bmjLEb7Ye1UVob0d1ENiT3lY8bsCmik4RqfSbPw9xJJHbugpPpP5JUg==",
"version": "8.36.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.36.0.tgz",
"integrity": "sha512-wCnapIKnDkN62fYtTGv2+RY8FlnBYA3tNm0fm91kc2BjPhV2vIjwwozJ7LToaLAyb1ca8BxrS7vT+Pvvf7RvqA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/types": "8.35.1",
"@typescript-eslint/visitor-keys": "8.35.1"
"@typescript-eslint/types": "8.36.0",
"@typescript-eslint/visitor-keys": "8.36.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@ -2918,10 +2922,11 @@
}
},
"node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/tsconfig-utils": {
"version": "8.35.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.35.1.tgz",
"integrity": "sha512-K5/U9VmT9dTHoNowWZpz+/TObS3xqC5h0xAIjXPw+MNcKV9qg6eSatEnmeAwkjHijhACH0/N7bkhKvbt1+DXWQ==",
"version": "8.36.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.36.0.tgz",
"integrity": "sha512-Nhh3TIEgN18mNbdXpd5Q8mSCBnrZQeY9V7Ca3dqYvNDStNIGRmJA6dmrIPMJ0kow3C7gcQbpsG2rPzy1Ks/AnA==",
"dev": true,
"license": "MIT",
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
@ -2934,10 +2939,11 @@
}
},
"node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": {
"version": "8.35.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.35.1.tgz",
"integrity": "sha512-q/O04vVnKHfrrhNAscndAn1tuQhIkwqnaW+eu5waD5IPts2eX1dgJxgqcPx5BX109/qAz7IG6VrEPTOYKCNfRQ==",
"version": "8.36.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.36.0.tgz",
"integrity": "sha512-xGms6l5cTJKQPZOKM75Dl9yBfNdGeLRsIyufewnxT4vZTrjC0ImQT4fj8QmtJK84F58uSh5HVBSANwcfiXxABQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
@ -2947,15 +2953,16 @@
}
},
"node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": {
"version": "8.35.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.35.1.tgz",
"integrity": "sha512-Vvpuvj4tBxIka7cPs6Y1uvM7gJgdF5Uu9F+mBJBPY4MhvjrjWGK4H0lVgLJd/8PWZ23FTqsaJaLEkBCFUk8Y9g==",
"version": "8.36.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.36.0.tgz",
"integrity": "sha512-JaS8bDVrfVJX4av0jLpe4ye0BpAaUW7+tnS4Y4ETa3q7NoZgzYbN9zDQTJ8kPb5fQ4n0hliAt9tA4Pfs2zA2Hg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/project-service": "8.35.1",
"@typescript-eslint/tsconfig-utils": "8.35.1",
"@typescript-eslint/types": "8.35.1",
"@typescript-eslint/visitor-keys": "8.35.1",
"@typescript-eslint/project-service": "8.36.0",
"@typescript-eslint/tsconfig-utils": "8.36.0",
"@typescript-eslint/types": "8.36.0",
"@typescript-eslint/visitor-keys": "8.36.0",
"debug": "^4.3.4",
"fast-glob": "^3.3.2",
"is-glob": "^4.0.3",
@ -2975,15 +2982,16 @@
}
},
"node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": {
"version": "8.35.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.35.1.tgz",
"integrity": "sha512-lhnwatFmOFcazAsUm3ZnZFpXSxiwoa1Lj50HphnDe1Et01NF4+hrdXONSUHIcbVu2eFb1bAf+5yjXkGVkXBKAQ==",
"version": "8.36.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.36.0.tgz",
"integrity": "sha512-VOqmHu42aEMT+P2qYjylw6zP/3E/HvptRwdn/PZxyV27KhZg2IOszXod4NcXisWzPAGSS4trE/g4moNj6XmH2g==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.7.0",
"@typescript-eslint/scope-manager": "8.35.1",
"@typescript-eslint/types": "8.35.1",
"@typescript-eslint/typescript-estree": "8.35.1"
"@typescript-eslint/scope-manager": "8.36.0",
"@typescript-eslint/types": "8.36.0",
"@typescript-eslint/typescript-estree": "8.36.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@ -2998,12 +3006,13 @@
}
},
"node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": {
"version": "8.35.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.35.1.tgz",
"integrity": "sha512-VRwixir4zBWCSTP/ljEo091lbpypz57PoeAQ9imjG+vbeof9LplljsL1mos4ccG6H9IjfrVGM359RozUnuFhpw==",
"version": "8.36.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.36.0.tgz",
"integrity": "sha512-vZrhV2lRPWDuGoxcmrzRZyxAggPL+qp3WzUrlZD+slFueDiYHxeBa34dUXPuC0RmGKzl4lS5kFJYvKCq9cnNDA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/types": "8.35.1",
"@typescript-eslint/types": "8.36.0",
"eslint-visitor-keys": "^4.2.1"
},
"engines": {
@ -3019,6 +3028,7 @@
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
"integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
"dev": true,
"license": "Apache-2.0",
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
@ -3037,15 +3047,16 @@
}
},
"node_modules/@typescript-eslint/parser": {
"version": "8.35.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.35.1.tgz",
"integrity": "sha512-3MyiDfrfLeK06bi/g9DqJxP5pV74LNv4rFTyvGDmT3x2p1yp1lOd+qYZfiRPIOf/oON+WRZR5wxxuF85qOar+w==",
"version": "8.36.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.36.0.tgz",
"integrity": "sha512-FuYgkHwZLuPbZjQHzJXrtXreJdFMKl16BFYyRrLxDhWr6Qr7Kbcu2s1Yhu8tsiMXw1S0W1pjfFfYEt+R604s+Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/scope-manager": "8.35.1",
"@typescript-eslint/types": "8.35.1",
"@typescript-eslint/typescript-estree": "8.35.1",
"@typescript-eslint/visitor-keys": "8.35.1",
"@typescript-eslint/scope-manager": "8.36.0",
"@typescript-eslint/types": "8.36.0",
"@typescript-eslint/typescript-estree": "8.36.0",
"@typescript-eslint/visitor-keys": "8.36.0",
"debug": "^4.3.4"
},
"engines": {
@ -3061,13 +3072,14 @@
}
},
"node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/project-service": {
"version": "8.35.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.35.1.tgz",
"integrity": "sha512-VYxn/5LOpVxADAuP3NrnxxHYfzVtQzLKeldIhDhzC8UHaiQvYlXvKuVho1qLduFbJjjy5U5bkGwa3rUGUb1Q6Q==",
"version": "8.36.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.36.0.tgz",
"integrity": "sha512-JAhQFIABkWccQYeLMrHadu/fhpzmSQ1F1KXkpzqiVxA/iYI6UnRt2trqXHt1sYEcw1mxLnB9rKMsOxXPxowN/g==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/tsconfig-utils": "^8.35.1",
"@typescript-eslint/types": "^8.35.1",
"@typescript-eslint/tsconfig-utils": "^8.36.0",
"@typescript-eslint/types": "^8.36.0",
"debug": "^4.3.4"
},
"engines": {
@ -3082,13 +3094,14 @@
}
},
"node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": {
"version": "8.35.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.35.1.tgz",
"integrity": "sha512-s/Bpd4i7ht2934nG+UoSPlYXd08KYz3bmjLEb7Ye1UVob0d1ENiT3lY8bsCmik4RqfSbPw9xJJHbugpPpP5JUg==",
"version": "8.36.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.36.0.tgz",
"integrity": "sha512-wCnapIKnDkN62fYtTGv2+RY8FlnBYA3tNm0fm91kc2BjPhV2vIjwwozJ7LToaLAyb1ca8BxrS7vT+Pvvf7RvqA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/types": "8.35.1",
"@typescript-eslint/visitor-keys": "8.35.1"
"@typescript-eslint/types": "8.36.0",
"@typescript-eslint/visitor-keys": "8.36.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@ -3099,10 +3112,11 @@
}
},
"node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/tsconfig-utils": {
"version": "8.35.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.35.1.tgz",
"integrity": "sha512-K5/U9VmT9dTHoNowWZpz+/TObS3xqC5h0xAIjXPw+MNcKV9qg6eSatEnmeAwkjHijhACH0/N7bkhKvbt1+DXWQ==",
"version": "8.36.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.36.0.tgz",
"integrity": "sha512-Nhh3TIEgN18mNbdXpd5Q8mSCBnrZQeY9V7Ca3dqYvNDStNIGRmJA6dmrIPMJ0kow3C7gcQbpsG2rPzy1Ks/AnA==",
"dev": true,
"license": "MIT",
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
@ -3115,10 +3129,11 @@
}
},
"node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": {
"version": "8.35.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.35.1.tgz",
"integrity": "sha512-q/O04vVnKHfrrhNAscndAn1tuQhIkwqnaW+eu5waD5IPts2eX1dgJxgqcPx5BX109/qAz7IG6VrEPTOYKCNfRQ==",
"version": "8.36.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.36.0.tgz",
"integrity": "sha512-xGms6l5cTJKQPZOKM75Dl9yBfNdGeLRsIyufewnxT4vZTrjC0ImQT4fj8QmtJK84F58uSh5HVBSANwcfiXxABQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
@ -3128,15 +3143,16 @@
}
},
"node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": {
"version": "8.35.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.35.1.tgz",
"integrity": "sha512-Vvpuvj4tBxIka7cPs6Y1uvM7gJgdF5Uu9F+mBJBPY4MhvjrjWGK4H0lVgLJd/8PWZ23FTqsaJaLEkBCFUk8Y9g==",
"version": "8.36.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.36.0.tgz",
"integrity": "sha512-JaS8bDVrfVJX4av0jLpe4ye0BpAaUW7+tnS4Y4ETa3q7NoZgzYbN9zDQTJ8kPb5fQ4n0hliAt9tA4Pfs2zA2Hg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/project-service": "8.35.1",
"@typescript-eslint/tsconfig-utils": "8.35.1",
"@typescript-eslint/types": "8.35.1",
"@typescript-eslint/visitor-keys": "8.35.1",
"@typescript-eslint/project-service": "8.36.0",
"@typescript-eslint/tsconfig-utils": "8.36.0",
"@typescript-eslint/types": "8.36.0",
"@typescript-eslint/visitor-keys": "8.36.0",
"debug": "^4.3.4",
"fast-glob": "^3.3.2",
"is-glob": "^4.0.3",
@ -3156,12 +3172,13 @@
}
},
"node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": {
"version": "8.35.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.35.1.tgz",
"integrity": "sha512-VRwixir4zBWCSTP/ljEo091lbpypz57PoeAQ9imjG+vbeof9LplljsL1mos4ccG6H9IjfrVGM359RozUnuFhpw==",
"version": "8.36.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.36.0.tgz",
"integrity": "sha512-vZrhV2lRPWDuGoxcmrzRZyxAggPL+qp3WzUrlZD+slFueDiYHxeBa34dUXPuC0RmGKzl4lS5kFJYvKCq9cnNDA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/types": "8.35.1",
"@typescript-eslint/types": "8.36.0",
"eslint-visitor-keys": "^4.2.1"
},
"engines": {
@ -3177,6 +3194,7 @@
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
"integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
"dev": true,
"license": "Apache-2.0",
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
@ -3242,13 +3260,14 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
"version": "8.35.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.35.1.tgz",
"integrity": "sha512-HOrUBlfVRz5W2LIKpXzZoy6VTZzMu2n8q9C2V/cFngIC5U1nStJgv0tMV4sZPzdf4wQm9/ToWUFPMN9Vq9VJQQ==",
"version": "8.36.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.36.0.tgz",
"integrity": "sha512-5aaGYG8cVDd6cxfk/ynpYzxBRZJk7w/ymto6uiyUFtdCozQIsQWh7M28/6r57Fwkbweng8qAzoMCPwSJfWlmsg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/typescript-estree": "8.35.1",
"@typescript-eslint/utils": "8.35.1",
"@typescript-eslint/typescript-estree": "8.36.0",
"@typescript-eslint/utils": "8.36.0",
"debug": "^4.3.4",
"ts-api-utils": "^2.1.0"
},
@ -3265,13 +3284,14 @@
}
},
"node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/project-service": {
"version": "8.35.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.35.1.tgz",
"integrity": "sha512-VYxn/5LOpVxADAuP3NrnxxHYfzVtQzLKeldIhDhzC8UHaiQvYlXvKuVho1qLduFbJjjy5U5bkGwa3rUGUb1Q6Q==",
"version": "8.36.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.36.0.tgz",
"integrity": "sha512-JAhQFIABkWccQYeLMrHadu/fhpzmSQ1F1KXkpzqiVxA/iYI6UnRt2trqXHt1sYEcw1mxLnB9rKMsOxXPxowN/g==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/tsconfig-utils": "^8.35.1",
"@typescript-eslint/types": "^8.35.1",
"@typescript-eslint/tsconfig-utils": "^8.36.0",
"@typescript-eslint/types": "^8.36.0",
"debug": "^4.3.4"
},
"engines": {
@ -3286,13 +3306,14 @@
}
},
"node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/scope-manager": {
"version": "8.35.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.35.1.tgz",
"integrity": "sha512-s/Bpd4i7ht2934nG+UoSPlYXd08KYz3bmjLEb7Ye1UVob0d1ENiT3lY8bsCmik4RqfSbPw9xJJHbugpPpP5JUg==",
"version": "8.36.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.36.0.tgz",
"integrity": "sha512-wCnapIKnDkN62fYtTGv2+RY8FlnBYA3tNm0fm91kc2BjPhV2vIjwwozJ7LToaLAyb1ca8BxrS7vT+Pvvf7RvqA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/types": "8.35.1",
"@typescript-eslint/visitor-keys": "8.35.1"
"@typescript-eslint/types": "8.36.0",
"@typescript-eslint/visitor-keys": "8.36.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@ -3303,10 +3324,11 @@
}
},
"node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/tsconfig-utils": {
"version": "8.35.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.35.1.tgz",
"integrity": "sha512-K5/U9VmT9dTHoNowWZpz+/TObS3xqC5h0xAIjXPw+MNcKV9qg6eSatEnmeAwkjHijhACH0/N7bkhKvbt1+DXWQ==",
"version": "8.36.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.36.0.tgz",
"integrity": "sha512-Nhh3TIEgN18mNbdXpd5Q8mSCBnrZQeY9V7Ca3dqYvNDStNIGRmJA6dmrIPMJ0kow3C7gcQbpsG2rPzy1Ks/AnA==",
"dev": true,
"license": "MIT",
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
@ -3319,10 +3341,11 @@
}
},
"node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": {
"version": "8.35.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.35.1.tgz",
"integrity": "sha512-q/O04vVnKHfrrhNAscndAn1tuQhIkwqnaW+eu5waD5IPts2eX1dgJxgqcPx5BX109/qAz7IG6VrEPTOYKCNfRQ==",
"version": "8.36.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.36.0.tgz",
"integrity": "sha512-xGms6l5cTJKQPZOKM75Dl9yBfNdGeLRsIyufewnxT4vZTrjC0ImQT4fj8QmtJK84F58uSh5HVBSANwcfiXxABQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
@ -3332,15 +3355,16 @@
}
},
"node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": {
"version": "8.35.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.35.1.tgz",
"integrity": "sha512-Vvpuvj4tBxIka7cPs6Y1uvM7gJgdF5Uu9F+mBJBPY4MhvjrjWGK4H0lVgLJd/8PWZ23FTqsaJaLEkBCFUk8Y9g==",
"version": "8.36.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.36.0.tgz",
"integrity": "sha512-JaS8bDVrfVJX4av0jLpe4ye0BpAaUW7+tnS4Y4ETa3q7NoZgzYbN9zDQTJ8kPb5fQ4n0hliAt9tA4Pfs2zA2Hg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/project-service": "8.35.1",
"@typescript-eslint/tsconfig-utils": "8.35.1",
"@typescript-eslint/types": "8.35.1",
"@typescript-eslint/visitor-keys": "8.35.1",
"@typescript-eslint/project-service": "8.36.0",
"@typescript-eslint/tsconfig-utils": "8.36.0",
"@typescript-eslint/types": "8.36.0",
"@typescript-eslint/visitor-keys": "8.36.0",
"debug": "^4.3.4",
"fast-glob": "^3.3.2",
"is-glob": "^4.0.3",
@ -3360,15 +3384,16 @@
}
},
"node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": {
"version": "8.35.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.35.1.tgz",
"integrity": "sha512-lhnwatFmOFcazAsUm3ZnZFpXSxiwoa1Lj50HphnDe1Et01NF4+hrdXONSUHIcbVu2eFb1bAf+5yjXkGVkXBKAQ==",
"version": "8.36.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.36.0.tgz",
"integrity": "sha512-VOqmHu42aEMT+P2qYjylw6zP/3E/HvptRwdn/PZxyV27KhZg2IOszXod4NcXisWzPAGSS4trE/g4moNj6XmH2g==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.7.0",
"@typescript-eslint/scope-manager": "8.35.1",
"@typescript-eslint/types": "8.35.1",
"@typescript-eslint/typescript-estree": "8.35.1"
"@typescript-eslint/scope-manager": "8.36.0",
"@typescript-eslint/types": "8.36.0",
"@typescript-eslint/typescript-estree": "8.36.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@ -3383,12 +3408,13 @@
}
},
"node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": {
"version": "8.35.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.35.1.tgz",
"integrity": "sha512-VRwixir4zBWCSTP/ljEo091lbpypz57PoeAQ9imjG+vbeof9LplljsL1mos4ccG6H9IjfrVGM359RozUnuFhpw==",
"version": "8.36.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.36.0.tgz",
"integrity": "sha512-vZrhV2lRPWDuGoxcmrzRZyxAggPL+qp3WzUrlZD+slFueDiYHxeBa34dUXPuC0RmGKzl4lS5kFJYvKCq9cnNDA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/types": "8.35.1",
"@typescript-eslint/types": "8.36.0",
"eslint-visitor-keys": "^4.2.1"
},
"engines": {
@ -3404,6 +3430,7 @@
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
"integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
"dev": true,
"license": "Apache-2.0",
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
@ -3950,9 +3977,9 @@
}
},
"node_modules/astro": {
"version": "5.10.0",
"resolved": "https://registry.npmjs.org/astro/-/astro-5.10.0.tgz",
"integrity": "sha512-g/t54kVzQnFVijs+GbbbX/NBAFTl/3yNAEA/AQYq4FumLLVv7n4BIF+jKhcPGn9iFGyT1Cjvr7KB/qYyNvHEIg==",
"version": "5.11.0",
"resolved": "https://registry.npmjs.org/astro/-/astro-5.11.0.tgz",
"integrity": "sha512-MEICntERthUxJPSSDsDiZuwiCMrsaYy3fnDhp4c6ScUfldCB8RBnB/myYdpTFXpwYBy6SgVsHQ1H4MuuA7ro/Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -5983,10 +6010,11 @@
}
},
"node_modules/eslint": {
"version": "9.30.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.30.0.tgz",
"integrity": "sha512-iN/SiPxmQu6EVkf+m1qpBxzUhE12YqFLOSySuOyVLJLEF9nzTf+h/1AJYc1JWzCnktggeNrjvQGLngDzXirU6g==",
"version": "9.30.1",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.30.1.tgz",
"integrity": "sha512-zmxXPNMOXmwm9E0yQLi5uqXHs7uq2UIiqEKo3Gq+3fwo1XrJ+hijAZImyF7hclW3E6oHz43Yk3RP8at6OTKflQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.12.1",
@ -5994,7 +6022,7 @@
"@eslint/config-helpers": "^0.3.0",
"@eslint/core": "^0.14.0",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "9.30.0",
"@eslint/js": "9.30.1",
"@eslint/plugin-kit": "^0.3.1",
"@humanfs/node": "^0.16.6",
"@humanwhocodes/module-importer": "^1.0.1",
@ -11153,9 +11181,9 @@
}
},
"node_modules/prettier": {
"version": "3.5.3",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz",
"integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==",
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz",
"integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==",
"dev": true,
"license": "MIT",
"bin": {
@ -12045,9 +12073,9 @@
}
},
"node_modules/rollup": {
"version": "4.44.0",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.44.0.tgz",
"integrity": "sha512-qHcdEzLCiktQIfwBq420pn2dP+30uzqYxv9ETm91wdt2R9AFcWfjNAmje4NWlnCIQ5RMTzVf0ZyisOKqHR6RwA==",
"version": "4.44.2",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.44.2.tgz",
"integrity": "sha512-PVoapzTwSEcelaWGth3uR66u7ZRo6qhPHc0f2uRO9fX6XDVNrIiGYS0Pj9+R8yIIYSD/mCx2b16Ws9itljKSPg==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -12061,26 +12089,26 @@
"npm": ">=8.0.0"
},
"optionalDependencies": {
"@rollup/rollup-android-arm-eabi": "4.44.0",
"@rollup/rollup-android-arm64": "4.44.0",
"@rollup/rollup-darwin-arm64": "4.44.0",
"@rollup/rollup-darwin-x64": "4.44.0",
"@rollup/rollup-freebsd-arm64": "4.44.0",
"@rollup/rollup-freebsd-x64": "4.44.0",
"@rollup/rollup-linux-arm-gnueabihf": "4.44.0",
"@rollup/rollup-linux-arm-musleabihf": "4.44.0",
"@rollup/rollup-linux-arm64-gnu": "4.44.0",
"@rollup/rollup-linux-arm64-musl": "4.44.0",
"@rollup/rollup-linux-loongarch64-gnu": "4.44.0",
"@rollup/rollup-linux-powerpc64le-gnu": "4.44.0",
"@rollup/rollup-linux-riscv64-gnu": "4.44.0",
"@rollup/rollup-linux-riscv64-musl": "4.44.0",
"@rollup/rollup-linux-s390x-gnu": "4.44.0",
"@rollup/rollup-linux-x64-gnu": "4.44.0",
"@rollup/rollup-linux-x64-musl": "4.44.0",
"@rollup/rollup-win32-arm64-msvc": "4.44.0",
"@rollup/rollup-win32-ia32-msvc": "4.44.0",
"@rollup/rollup-win32-x64-msvc": "4.44.0",
"@rollup/rollup-android-arm-eabi": "4.44.2",
"@rollup/rollup-android-arm64": "4.44.2",
"@rollup/rollup-darwin-arm64": "4.44.2",
"@rollup/rollup-darwin-x64": "4.44.2",
"@rollup/rollup-freebsd-arm64": "4.44.2",
"@rollup/rollup-freebsd-x64": "4.44.2",
"@rollup/rollup-linux-arm-gnueabihf": "4.44.2",
"@rollup/rollup-linux-arm-musleabihf": "4.44.2",
"@rollup/rollup-linux-arm64-gnu": "4.44.2",
"@rollup/rollup-linux-arm64-musl": "4.44.2",
"@rollup/rollup-linux-loongarch64-gnu": "4.44.2",
"@rollup/rollup-linux-powerpc64le-gnu": "4.44.2",
"@rollup/rollup-linux-riscv64-gnu": "4.44.2",
"@rollup/rollup-linux-riscv64-musl": "4.44.2",
"@rollup/rollup-linux-s390x-gnu": "4.44.2",
"@rollup/rollup-linux-x64-gnu": "4.44.2",
"@rollup/rollup-linux-x64-musl": "4.44.2",
"@rollup/rollup-win32-arm64-msvc": "4.44.2",
"@rollup/rollup-win32-ia32-msvc": "4.44.2",
"@rollup/rollup-win32-x64-msvc": "4.44.2",
"fsevents": "~2.3.2"
}
},
@ -12978,9 +13006,9 @@
}
},
"node_modules/stylelint": {
"version": "16.21.0",
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.21.0.tgz",
"integrity": "sha512-ki3PpJGG7xhm3WtINoWGnlvqAmbqSexoRMbEMJzlwewSIOqPRKPlq452c22xAdEJISVi80r+I7KL9GPUiwFgbg==",
"version": "16.21.1",
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.21.1.tgz",
"integrity": "sha512-WCXdXnYK2tpCbebgMF0Bme3YZH/Rh/UXerj75twYo4uLULlcrLwFVdZTvTEF8idFnAcW21YUDJFyKOfaf6xJRw==",
"dev": true,
"funding": [
{
@ -13021,7 +13049,7 @@
"micromatch": "^4.0.8",
"normalize-path": "^3.0.0",
"picocolors": "^1.1.1",
"postcss": "^8.5.5",
"postcss": "^8.5.6",
"postcss-resolve-nested-selector": "^0.1.6",
"postcss-safe-parser": "^7.0.1",
"postcss-selector-parser": "^7.1.0",

View File

@ -1,7 +1,7 @@
{
"name": "admin-lte",
"description": "Responsive open source admin dashboard and control panel.",
"version": "4.0.0-rc3",
"version": "4.0.0-rc4",
"type": "module",
"license": "MIT",
"author": "Colorlib <https://colorlib.com>",

View File

@ -18,8 +18,13 @@ export default defineConfig({
publicDir: './src/html/public',
cacheDir: './dist/.astro',
outDir: './dist/html',
server: {
host: '0.0.0.0',
port: 3000
},
vite: {
server: {
host: '0.0.0.0',
watch: {
ignored: ['!**/dist/**']
}

View File

@ -43,28 +43,3 @@ document.addEventListener("DOMContentLoaded", function () {
</script>
<!--end::OverlayScrollbars Configure-->
<!-- Image path runtime fix -->
<script is:inline>
document.addEventListener('DOMContentLoaded', () => {
// Find the link tag for the main AdminLTE CSS file.
const cssLink = document.querySelector('link[href*="css/adminlte.css"]');
if (!cssLink) {
return; // Exit if the link isn't found
}
// Extract the base path from the CSS href.
// e.g., from "../css/adminlte.css", we get "../"
// e.g., from "./css/adminlte.css", we get "./"
const cssHref = cssLink.getAttribute('href');
const deploymentPath = cssHref.slice(0, cssHref.indexOf('css/adminlte.css'));
// Find all images with absolute paths and fix them.
document.querySelectorAll('img[src^="/assets/"]').forEach(img => {
const originalSrc = img.getAttribute('src');
if (originalSrc) {
const relativeSrc = originalSrc.slice(1); // Remove leading '/'
img.src = deploymentPath + relativeSrc;
}
});
});
</script>

View File

@ -2,6 +2,12 @@
import { convertPathToHtml } from "../../../utils/index.js"
const { path, mainPage, page } = Astro.props
const htmlPath = convertPathToHtml(path);
// Smart path resolution: calculate relative path based on directory depth
const pathname = Astro.url.pathname;
const pathSegments = pathname.split('/').filter(segment => segment !== '');
const depth = pathSegments.length > 0 ? pathSegments.length - 1 : 0;
const deploymentPath = depth === 0 ? './' : '../'.repeat(depth);
---
<!--begin::Sidebar-->
@ -12,7 +18,7 @@ const htmlPath = convertPathToHtml(path);
<a href={htmlPath + "/index.html"} class="brand-link">
<!--begin::Brand Image-->
<img
src="/assets/img/AdminLTELogo.png"
src={deploymentPath + "assets/img/AdminLTELogo.png"}
alt="AdminLTE Logo"
class="brand-image opacity-75 shadow"
/>

View File

@ -1,5 +1,9 @@
---
// const { path } = Astro.props
// Smart path resolution: calculate relative path based on directory depth
const pathname = Astro.url.pathname;
const pathSegments = pathname.split('/').filter(segment => segment !== '');
const depth = pathSegments.length > 0 ? pathSegments.length - 1 : 0;
const deploymentPath = depth === 0 ? './' : '../'.repeat(depth);
---
<!--begin::Header-->
@ -44,7 +48,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user1-128x128.jpg"
src={deploymentPath + "assets/img/user1-128x128.jpg"}
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -70,7 +74,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user8-128x128.jpg"
src={deploymentPath + "assets/img/user8-128x128.jpg"}
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -96,7 +100,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user3-128x128.jpg"
src={deploymentPath + "assets/img/user3-128x128.jpg"}
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -166,7 +170,7 @@
<li class="nav-item dropdown user-menu">
<a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
<img
src="/assets/img/user2-160x160.jpg"
src={deploymentPath + "assets/img/user2-160x160.jpg"}
class="user-image rounded-circle shadow"
alt="User Image"
/>
@ -176,7 +180,7 @@
<!--begin::User Image-->
<li class="user-header text-bg-primary">
<img
src="/assets/img/user2-160x160.jpg"
src={deploymentPath + "assets/img/user2-160x160.jpg"}
class="rounded-circle shadow"
alt="User Image"
/>

View File

@ -16,7 +16,7 @@ _**Important Note**: You needed to add separately cdn links for plugins in your
```html
<script
src="https://cdn.jsdelivr.net/npm/admin-lte@4.0.0-beta3/dist/js/adminlte.min.js"
src="https://cdn.jsdelivr.net/npm/admin-lte@4.0.0-rc3/dist/js/adminlte.min.js"
crossorigin="anonymous"
></script>
```
@ -24,7 +24,7 @@ _**Important Note**: You needed to add separately cdn links for plugins in your
```html
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/admin-lte@4.0.0-beta3/dist/css/adminlte.min.css"
href="https://cdn.jsdelivr.net/npm/admin-lte@4.0.0-rc3/dist/css/adminlte.min.css"
crossorigin="anonymous"
/>
```
@ -36,19 +36,19 @@ _**Important Note**: To install it via npm/Yarn, you need at least Node.js 14 or
#### Via npm
```bash
npm install admin-lte@4.0.0-beta3 --save
npm install admin-lte@4.0.0-rc3 --save
```
#### Via Yarn
```bash
yarn add admin-lte@4.0.0-beta3
yarn add admin-lte@4.0.0-rc3
```
#### Via Composer
```bash
composer require "almasaeed2010/adminlte=4.0.0-beta3"
composer require "almasaeed2010/adminlte=4.0.0-rc3"
```
#### Via Git

View File

@ -9,6 +9,12 @@ const title = "AdminLTE 4 | Timeline Elements"
const path = "../../../dist"
const mainPage = "ui-elements"
const page = "timeline";
// Smart path resolution: calculate relative path based on directory depth
const pathname = Astro.url.pathname;
const pathSegments = pathname.split('/').filter(segment => segment !== '');
const depth = pathSegments.length > 0 ? pathSegments.length - 1 : 0;
const deploymentPath = depth === 0 ? './' : '../'.repeat(depth);
---
<!DOCTYPE html>
@ -147,19 +153,19 @@ const page = "timeline";
</h3>
<div class="timeline-body">
<img
src="/assets/img/user1-128x128.jpg"
src={deploymentPath + "assets/img/user1-128x128.jpg"}
alt="..."
/>
<img
src="/assets/img/user1-128x128.jpg"
src={deploymentPath + "assets/img/user1-128x128.jpg"}
alt="..."
/>
<img
src="/assets/img/user1-128x128.jpg"
src={deploymentPath + "assets/img/user1-128x128.jpg"}
alt="..."
/>
<img
src="/assets/img/user1-128x128.jpg"
src={deploymentPath + "assets/img/user1-128x128.jpg"}
alt="..."
/>
</div>

View File

@ -10,6 +10,12 @@ const title = "Main Header Component | AdminLTE 4"
const path = "../../../../dist"
const mainPage = "components"
const page = "main-header"
// Smart path resolution: calculate relative path based on directory depth
const pathname = Astro.url.pathname;
const pathSegments = pathname.split('/').filter(segment => segment !== '');
const depth = pathSegments.length > 0 ? pathSegments.length - 1 : 0;
const deploymentPath = depth === 0 ? './' : '../'.repeat(depth);
---
<!DOCTYPE html>
@ -126,7 +132,7 @@ const page = "main-header"
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user1-128x128.jpg"
src={deploymentPath + "assets/img/user1-128x128.jpg"}
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -152,7 +158,7 @@ const page = "main-header"
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user8-128x128.jpg"
src={deploymentPath + "assets/img/user8-128x128.jpg"}
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -178,7 +184,7 @@ const page = "main-header"
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="/assets/img/user3-128x128.jpg"
src={deploymentPath + "assets/img/user3-128x128.jpg"}
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
@ -249,7 +255,7 @@ const page = "main-header"
data-bs-toggle="dropdown"
>
<img
src="/assets/img/user2-160x160.jpg"
src={deploymentPath + "assets/img/user2-160x160.jpg"}
class="user-image rounded-circle shadow"
alt="User Image"
/>
@ -261,7 +267,7 @@ const page = "main-header"
<!-- User image -->
<li class="user-header text-bg-primary">
<img
src="/assets/img/user2-160x160.jpg"
src={deploymentPath + "assets/img/user2-160x160.jpg"}
class="rounded-circle shadow"
alt="User Image"
/>

View File

@ -6,6 +6,12 @@ const title = "AdminLTE 4 | Lockscreen"
const path = "../../../dist"
const htmlPath = ".."
const year = new Date().getFullYear();
// Smart path resolution: calculate relative path based on directory depth
const pathname = Astro.url.pathname;
const pathSegments = pathname.split('/').filter(segment => segment !== '');
const depth = pathSegments.length > 0 ? pathSegments.length - 1 : 0;
const deploymentPath = depth === 0 ? './' : '../'.repeat(depth);
---
<!DOCTYPE html>
@ -26,7 +32,7 @@ const year = new Date().getFullYear();
<div class="lockscreen-item">
<div class="lockscreen-image">
<img src="/assets/img/user1-128x128.jpg" alt="User Image" />
<img src={deploymentPath + "assets/img/user1-128x128.jpg"} alt="User Image" />
</div>
<form class="lockscreen-credentials">

View File

@ -8,6 +8,12 @@ import { convertPathToHtml } from "../../../utils/index.js"
const title = "AdminLTE 4 | Theme Customize"
const path = "../../../dist"
const htmlPath = convertPathToHtml(path);
// Smart path resolution: calculate relative path based on directory depth
const pathname = Astro.url.pathname;
const pathSegments = pathname.split('/').filter(segment => segment !== '');
const depth = pathSegments.length > 0 ? pathSegments.length - 1 : 0;
const deploymentPath = depth === 0 ? './' : '../'.repeat(depth);
---
<!doctype html>
@ -30,7 +36,7 @@ const htmlPath = convertPathToHtml(path);
<a href={htmlPath + "/index.html"} class="brand-link">
<!--begin::Brand Image-->
<img
src="/assets/img/AdminLTELogo.png"
src={deploymentPath + "assets/img/AdminLTELogo.png"}
alt="AdminLTE Logo"
class="brand-image opacity-75 shadow"
/>

View File

@ -9,6 +9,12 @@ const title = "AdminLTE v4 | Dashboard"
const path = "../../dist"
const mainPage = "dashboard"
const page = "index";
// Smart path resolution: calculate relative path based on directory depth
const pathname = Astro.url.pathname;
const pathSegments = pathname.split('/').filter(segment => segment !== '');
const depth = pathSegments.length > 0 ? pathSegments.length - 1 : 0;
const deploymentPath = depth === 0 ? './' : '../'.repeat(depth);
---
<!doctype html>
@ -266,7 +272,7 @@ const page = "index";
<!-- /.direct-chat-infos -->
<img
class="direct-chat-img"
src="/assets/img/user1-128x128.jpg"
src={deploymentPath + "assets/img/user1-128x128.jpg"}
alt="message user image"
/>
<!-- /.direct-chat-img -->
@ -290,7 +296,7 @@ const page = "index";
<!-- /.direct-chat-infos -->
<img
class="direct-chat-img"
src="/assets/img/user3-128x128.jpg"
src={deploymentPath + "assets/img/user3-128x128.jpg"}
alt="message user image"
/>
<!-- /.direct-chat-img -->
@ -314,7 +320,7 @@ const page = "index";
<!-- /.direct-chat-infos -->
<img
class="direct-chat-img"
src="/assets/img/user1-128x128.jpg"
src={deploymentPath + "assets/img/user1-128x128.jpg"}
alt="message user image"
/>
<!-- /.direct-chat-img -->
@ -338,7 +344,7 @@ const page = "index";
<!-- /.direct-chat-infos -->
<img
class="direct-chat-img"
src="/assets/img/user3-128x128.jpg"
src={deploymentPath + "assets/img/user3-128x128.jpg"}
alt="message user image"
/>
<!-- /.direct-chat-img -->
@ -356,7 +362,7 @@ const page = "index";
<a href="#">
<img
class="contacts-list-img"
src="/assets/img/user1-128x128.jpg"
src={deploymentPath + "assets/img/user1-128x128.jpg"}
alt="User Avatar"
/>
@ -379,7 +385,7 @@ const page = "index";
<a href="#">
<img
class="contacts-list-img"
src="/assets/img/user7-128x128.jpg"
src={deploymentPath + "assets/img/user7-128x128.jpg"}
alt="User Avatar"
/>
@ -402,7 +408,7 @@ const page = "index";
<a href="#">
<img
class="contacts-list-img"
src="/assets/img/user3-128x128.jpg"
src={deploymentPath + "assets/img/user3-128x128.jpg"}
alt="User Avatar"
/>
@ -425,7 +431,7 @@ const page = "index";
<a href="#">
<img
class="contacts-list-img"
src="/assets/img/user5-128x128.jpg"
src={deploymentPath + "assets/img/user5-128x128.jpg"}
alt="User Avatar"
/>
@ -448,7 +454,7 @@ const page = "index";
<a href="#">
<img
class="contacts-list-img"
src="/assets/img/user6-128x128.jpg"
src={deploymentPath + "assets/img/user6-128x128.jpg"}
alt="User Avatar"
/>
@ -471,7 +477,7 @@ const page = "index";
<a href="#">
<img
class="contacts-list-img"
src="/assets/img/user8-128x128.jpg"
src={deploymentPath + "assets/img/user8-128x128.jpg"}
alt="User Avatar"
/>

View File

@ -9,6 +9,12 @@ const title = "AdminLTE | Dashboard v2"
const path = "../../dist"
const mainPage = "dashboard"
const page = "index2";
// Smart path resolution: calculate relative path based on directory depth
const pathname = Astro.url.pathname;
const pathSegments = pathname.split('/').filter(segment => segment !== '');
const depth = pathSegments.length > 0 ? pathSegments.length - 1 : 0;
const deploymentPath = depth === 0 ? './' : '../'.repeat(depth);
---
<!doctype html>
@ -366,7 +372,7 @@ const page = "index2";
<!-- /.direct-chat-infos -->
<img
class="direct-chat-img"
src="/assets/img/user1-128x128.jpg"
src={deploymentPath + "assets/img/user1-128x128.jpg"}
alt="message user image"
/>
<!-- /.direct-chat-img -->
@ -391,7 +397,7 @@ const page = "index2";
<!-- /.direct-chat-infos -->
<img
class="direct-chat-img"
src="/assets/img/user3-128x128.jpg"
src={deploymentPath + "assets/img/user3-128x128.jpg"}
alt="message user image"
/>
<!-- /.direct-chat-img -->
@ -415,7 +421,7 @@ const page = "index2";
<!-- /.direct-chat-infos -->
<img
class="direct-chat-img"
src="/assets/img/user1-128x128.jpg"
src={deploymentPath + "assets/img/user1-128x128.jpg"}
alt="message user image"
/>
<!-- /.direct-chat-img -->
@ -440,7 +446,7 @@ const page = "index2";
<!-- /.direct-chat-infos -->
<img
class="direct-chat-img"
src="/assets/img/user3-128x128.jpg"
src={deploymentPath + "assets/img/user3-128x128.jpg"}
alt="message user image"
/>
<!-- /.direct-chat-img -->
@ -458,7 +464,7 @@ const page = "index2";
<a href="#">
<img
class="contacts-list-img"
src="/assets/img/user1-128x128.jpg"
src={deploymentPath + "assets/img/user1-128x128.jpg"}
alt="User Avatar"
/>
@ -481,7 +487,7 @@ const page = "index2";
<a href="#">
<img
class="contacts-list-img"
src="/assets/img/user7-128x128.jpg"
src={deploymentPath + "assets/img/user7-128x128.jpg"}
alt="User Avatar"
/>
@ -504,7 +510,7 @@ const page = "index2";
<a href="#">
<img
class="contacts-list-img"
src="/assets/img/user3-128x128.jpg"
src={deploymentPath + "assets/img/user3-128x128.jpg"}
alt="User Avatar"
/>
@ -527,7 +533,7 @@ const page = "index2";
<a href="#">
<img
class="contacts-list-img"
src="/assets/img/user5-128x128.jpg"
src={deploymentPath + "assets/img/user5-128x128.jpg"}
alt="User Avatar"
/>
@ -550,7 +556,7 @@ const page = "index2";
<a href="#">
<img
class="contacts-list-img"
src="/assets/img/user6-128x128.jpg"
src={deploymentPath + "assets/img/user6-128x128.jpg"}
alt="User Avatar"
/>
@ -573,7 +579,7 @@ const page = "index2";
<a href="#">
<img
class="contacts-list-img"
src="/assets/img/user8-128x128.jpg"
src={deploymentPath + "assets/img/user8-128x128.jpg"}
alt="User Avatar"
/>
@ -655,7 +661,7 @@ const page = "index2";
<div class="col-3 p-2">
<img
class="img-fluid rounded-circle"
src="/assets/img/user1-128x128.jpg"
src={deploymentPath + "assets/img/user1-128x128.jpg"}
alt="User Image"
/>
<a
@ -669,7 +675,7 @@ const page = "index2";
<div class="col-3 p-2">
<img
class="img-fluid rounded-circle"
src="/assets/img/user1-128x128.jpg"
src={deploymentPath + "assets/img/user1-128x128.jpg"}
alt="User Image"
/>
<a
@ -683,7 +689,7 @@ const page = "index2";
<div class="col-3 p-2">
<img
class="img-fluid rounded-circle"
src="/assets/img/user7-128x128.jpg"
src={deploymentPath + "assets/img/user7-128x128.jpg"}
alt="User Image"
/>
<a
@ -697,7 +703,7 @@ const page = "index2";
<div class="col-3 p-2">
<img
class="img-fluid rounded-circle"
src="/assets/img/user6-128x128.jpg"
src={deploymentPath + "assets/img/user6-128x128.jpg"}
alt="User Image"
/>
<a
@ -711,7 +717,7 @@ const page = "index2";
<div class="col-3 p-2">
<img
class="img-fluid rounded-circle"
src="/assets/img/user2-160x160.jpg"
src={deploymentPath + "assets/img/user2-160x160.jpg"}
alt="User Image"
/>
<a
@ -725,7 +731,7 @@ const page = "index2";
<div class="col-3 p-2">
<img
class="img-fluid rounded-circle"
src="/assets/img/user5-128x128.jpg"
src={deploymentPath + "assets/img/user5-128x128.jpg"}
alt="User Image"
/>
<a
@ -739,7 +745,7 @@ const page = "index2";
<div class="col-3 p-2">
<img
class="img-fluid rounded-circle"
src="/assets/img/user4-128x128.jpg"
src={deploymentPath + "assets/img/user4-128x128.jpg"}
alt="User Image"
/>
<a
@ -753,7 +759,7 @@ const page = "index2";
<div class="col-3 p-2">
<img
class="img-fluid rounded-circle"
src="/assets/img/user3-128x128.jpg"
src={deploymentPath + "assets/img/user3-128x128.jpg"}
alt="User Image"
/>
<a
@ -1078,7 +1084,7 @@ const page = "index2";
<div class="d-flex border-top py-2 px-1">
<div class="col-2">
<img
src="/assets/img/default-150x150.png"
src={deploymentPath + "assets/img/default-150x150.png"}
alt="Product Image"
class="img-size-50"
/>
@ -1099,7 +1105,7 @@ const page = "index2";
<div class="d-flex border-top py-2 px-1">
<div class="col-2">
<img
src="/assets/img/default-150x150.png"
src={deploymentPath + "assets/img/default-150x150.png"}
alt="Product Image"
class="img-size-50"
/>
@ -1120,7 +1126,7 @@ const page = "index2";
<div class="d-flex border-top py-2 px-1">
<div class="col-2">
<img
src="/assets/img/default-150x150.png"
src={deploymentPath + "assets/img/default-150x150.png"}
alt="Product Image"
class="img-size-50"
/>
@ -1142,7 +1148,7 @@ const page = "index2";
<div class="d-flex border-top py-2 px-1">
<div class="col-2">
<img
src="/assets/img/default-150x150.png"
src={deploymentPath + "assets/img/default-150x150.png"}
alt="Product Image"
class="img-size-50"
/>

View File

@ -9,6 +9,12 @@ const title = "AdminLTE | Dashboard v3"
const path = "../../dist"
const mainPage = "dashboard"
const page = "index3";
// Smart path resolution: calculate relative path based on directory depth
const pathname = Astro.url.pathname;
const pathSegments = pathname.split('/').filter(segment => segment !== '');
const depth = pathSegments.length > 0 ? pathSegments.length - 1 : 0;
const deploymentPath = depth === 0 ? './' : '../'.repeat(depth);
---
<!DOCTYPE html>
@ -126,7 +132,7 @@ const page = "index3";
<tr>
<td>
<img
src="/assets/img/default-150x150.png"
src={deploymentPath + "assets/img/default-150x150.png"}
alt="Product 1"
class="rounded-circle img-size-32 me-2"
/>
@ -149,7 +155,7 @@ const page = "index3";
<tr>
<td>
<img
src="/assets/img/default-150x150.png"
src={deploymentPath + "assets/img/default-150x150.png"}
alt="Product 1"
class="rounded-circle img-size-32 me-2"
/>
@ -172,7 +178,7 @@ const page = "index3";
<tr>
<td>
<img
src="/assets/img/default-150x150.png"
src={deploymentPath + "assets/img/default-150x150.png"}
alt="Product 1"
class="rounded-circle img-size-32 me-2"
/>
@ -195,7 +201,7 @@ const page = "index3";
<tr>
<td>
<img
src="/assets/img/default-150x150.png"
src={deploymentPath + "assets/img/default-150x150.png"}
alt="Product 1"
class="rounded-circle img-size-32 me-2"
/>

View File

@ -8,6 +8,12 @@ import { convertPathToHtml } from "../../../utils/index.js"
const title = "AdminLTE 4 | Sidebar Mini"
const path = "../../../dist"
const htmlPath = convertPathToHtml(path);
// Smart path resolution: calculate relative path based on directory depth
const pathname = Astro.url.pathname;
const pathSegments = pathname.split('/').filter(segment => segment !== '');
const depth = pathSegments.length > 0 ? pathSegments.length - 1 : 0;
const deploymentPath = depth === 0 ? './' : '../'.repeat(depth);
---
<!DOCTYPE html>
@ -30,14 +36,14 @@ const htmlPath = convertPathToHtml(path);
<a href={htmlPath + "/index.html"} class="brand-link logo-switch">
<!--begin::Brand Image Small-->
<img
src="/assets/img/AdminLTELogo.png"
src={deploymentPath + "assets/img/AdminLTELogo.png"}
alt="AdminLTE Logo Small"
class="brand-image-xl logo-xs opacity-75 shadow"
/>
<!--end::Brand Image Small-->
<!--begin::Brand Image Large-->
<img
src="/assets/img/AdminLTEFullLogo.png"
src={deploymentPath + "assets/img/AdminLTEFullLogo.png"}
alt="AdminLTE Logo Large"
class="brand-image-xs logo-xl opacity-75"
/>

View File

@ -1,6 +1,6 @@
@charset "UTF-8";
/*!
* AdminLTE v4.0.0-beta3
* AdminLTE v4.0.0-rc3
* Author: Colorlib
* Website: AdminLTE.io <https://adminlte.io>
* License: Open source - MIT <https://opensource.org/licenses/MIT>
@ -273,8 +273,10 @@ p {
}
abbr[title] {
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help;
-webkit-text-decoration-skip-ink: none;
text-decoration-skip-ink: none;
}
@ -2115,6 +2117,8 @@ progress {
font-weight: 400;
line-height: 1.5;
color: var(--bs-body-color);
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
background-color: var(--bs-body-bg);
background-clip: padding-box;
@ -2150,6 +2154,10 @@ progress {
display: block;
padding: 0;
}
.form-control::-moz-placeholder {
color: var(--bs-secondary-color);
opacity: 1;
}
.form-control::placeholder {
color: var(--bs-secondary-color);
opacity: 1;
@ -2266,6 +2274,8 @@ textarea.form-control-lg {
font-weight: 400;
line-height: 1.5;
color: var(--bs-body-color);
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
background-color: var(--bs-body-bg);
background-image: var(--bs-form-select-bg-img), var(--bs-form-select-bg-icon, none);
@ -2348,6 +2358,8 @@ textarea.form-control-lg {
height: 1em;
margin-top: 0.25em;
vertical-align: top;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
background-color: var(--bs-form-check-bg);
background-image: var(--bs-form-check-bg-image);
@ -2355,6 +2367,7 @@ textarea.form-control-lg {
background-position: center;
background-size: contain;
border: var(--bs-border-width) solid var(--bs-border-color);
-webkit-print-color-adjust: exact;
print-color-adjust: exact;
}
.form-check-input[type=checkbox] {
@ -2453,6 +2466,8 @@ textarea.form-control-lg {
width: 100%;
height: 1.5rem;
padding: 0;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
background-color: transparent;
}
@ -2472,15 +2487,18 @@ textarea.form-control-lg {
width: 1rem;
height: 1rem;
margin-top: -0.25rem;
-webkit-appearance: none;
appearance: none;
background-color: #0d6efd;
border: 0;
border-radius: 1rem;
box-shadow: 0 0.1rem 0.25rem rgba(0, 0, 0, 0.1);
-webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
.form-range::-webkit-slider-thumb {
-webkit-transition: none;
transition: none;
}
}
@ -2500,15 +2518,18 @@ textarea.form-control-lg {
.form-range::-moz-range-thumb {
width: 1rem;
height: 1rem;
-moz-appearance: none;
appearance: none;
background-color: #0d6efd;
border: 0;
border-radius: 1rem;
box-shadow: 0 0.1rem 0.25rem rgba(0, 0, 0, 0.1);
-moz-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
.form-range::-moz-range-thumb {
-moz-transition: none;
transition: none;
}
}
@ -2572,10 +2593,17 @@ textarea.form-control-lg {
.form-floating > .form-control-plaintext {
padding: 1rem 0.75rem;
}
.form-floating > .form-control::-moz-placeholder, .form-floating > .form-control-plaintext::-moz-placeholder {
color: transparent;
}
.form-floating > .form-control::placeholder,
.form-floating > .form-control-plaintext::placeholder {
color: transparent;
}
.form-floating > .form-control:not(:-moz-placeholder), .form-floating > .form-control-plaintext:not(:-moz-placeholder) {
padding-top: 1.625rem;
padding-bottom: 0.625rem;
}
.form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown),
.form-floating > .form-control-plaintext:focus,
.form-floating > .form-control-plaintext:not(:placeholder-shown) {
@ -2592,6 +2620,9 @@ textarea.form-control-lg {
padding-bottom: 0.625rem;
padding-left: 0.75rem;
}
.form-floating > .form-control:not(:-moz-placeholder) ~ label {
transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);
}
.form-floating > .form-control:focus ~ label,
.form-floating > .form-control:not(:placeholder-shown) ~ label,
.form-floating > .form-control-plaintext ~ label,
@ -2601,6 +2632,15 @@ textarea.form-control-lg {
.form-floating > .form-control:-webkit-autofill ~ label {
transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);
}
.form-floating > textarea:not(:-moz-placeholder) ~ label::after {
position: absolute;
inset: 1rem 0.375rem;
z-index: -1;
height: 1.5em;
content: "";
background-color: var(--bs-body-bg);
border-radius: var(--bs-border-radius);
}
.form-floating > textarea:focus ~ label::after,
.form-floating > textarea:not(:placeholder-shown) ~ label::after {
position: absolute;
@ -2920,6 +2960,8 @@ textarea.form-control-lg {
text-decoration: none;
vertical-align: middle;
cursor: pointer;
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
border: var(--bs-btn-border-width) solid var(--bs-btn-border-color);
border-radius: var(--bs-btn-border-radius);
@ -5319,6 +5361,8 @@ textarea.form-control-lg {
}
.btn-close:disabled, .btn-close.disabled {
pointer-events: none;
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
opacity: var(--bs-btn-close-disabled-opacity);
}
@ -5374,6 +5418,7 @@ textarea.form-control-lg {
--bs-toast-zindex: 1090;
position: absolute;
z-index: var(--bs-toast-zindex);
width: -moz-max-content;
width: max-content;
max-width: 100%;
pointer-events: none;
@ -6766,13 +6811,16 @@ textarea.form-control-lg {
}
}
.placeholder-wave {
-webkit-mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);
mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);
-webkit-mask-size: 200% 100%;
mask-size: 200% 100%;
animation: placeholder-wave 2s linear infinite;
}
@keyframes placeholder-wave {
100% {
-webkit-mask-position: -200% 0%;
mask-position: -200% 0%;
}
}
@ -7150,22 +7198,27 @@ textarea.form-control-lg {
}
.object-fit-contain {
-o-object-fit: contain !important;
object-fit: contain !important;
}
.object-fit-cover {
-o-object-fit: cover !important;
object-fit: cover !important;
}
.object-fit-fill {
-o-object-fit: fill !important;
object-fit: fill !important;
}
.object-fit-scale {
-o-object-fit: scale-down !important;
object-fit: scale-down !important;
}
.object-fit-none {
-o-object-fit: none !important;
object-fit: none !important;
}
@ -8396,26 +8449,32 @@ textarea.form-control-lg {
}
.column-gap-0 {
-moz-column-gap: 0 !important;
column-gap: 0 !important;
}
.column-gap-1 {
-moz-column-gap: 0.25rem !important;
column-gap: 0.25rem !important;
}
.column-gap-2 {
-moz-column-gap: 0.5rem !important;
column-gap: 0.5rem !important;
}
.column-gap-3 {
-moz-column-gap: 1rem !important;
column-gap: 1rem !important;
}
.column-gap-4 {
-moz-column-gap: 1.5rem !important;
column-gap: 1.5rem !important;
}
.column-gap-5 {
-moz-column-gap: 3rem !important;
column-gap: 3rem !important;
}
@ -8980,14 +9039,20 @@ textarea.form-control-lg {
}
.user-select-all {
-webkit-user-select: all !important;
-moz-user-select: all !important;
user-select: all !important;
}
.user-select-auto {
-webkit-user-select: auto !important;
-moz-user-select: auto !important;
user-select: auto !important;
}
.user-select-none {
-webkit-user-select: none !important;
-moz-user-select: none !important;
user-select: none !important;
}
@ -9254,18 +9319,23 @@ textarea.form-control-lg {
float: none !important;
}
.object-fit-sm-contain {
-o-object-fit: contain !important;
object-fit: contain !important;
}
.object-fit-sm-cover {
-o-object-fit: cover !important;
object-fit: cover !important;
}
.object-fit-sm-fill {
-o-object-fit: fill !important;
object-fit: fill !important;
}
.object-fit-sm-scale {
-o-object-fit: scale-down !important;
object-fit: scale-down !important;
}
.object-fit-sm-none {
-o-object-fit: none !important;
object-fit: none !important;
}
.d-sm-inline {
@ -9881,21 +9951,27 @@ textarea.form-control-lg {
row-gap: 3rem !important;
}
.column-gap-sm-0 {
-moz-column-gap: 0 !important;
column-gap: 0 !important;
}
.column-gap-sm-1 {
-moz-column-gap: 0.25rem !important;
column-gap: 0.25rem !important;
}
.column-gap-sm-2 {
-moz-column-gap: 0.5rem !important;
column-gap: 0.5rem !important;
}
.column-gap-sm-3 {
-moz-column-gap: 1rem !important;
column-gap: 1rem !important;
}
.column-gap-sm-4 {
-moz-column-gap: 1.5rem !important;
column-gap: 1.5rem !important;
}
.column-gap-sm-5 {
-moz-column-gap: 3rem !important;
column-gap: 3rem !important;
}
.text-sm-start {
@ -9919,18 +9995,23 @@ textarea.form-control-lg {
float: none !important;
}
.object-fit-md-contain {
-o-object-fit: contain !important;
object-fit: contain !important;
}
.object-fit-md-cover {
-o-object-fit: cover !important;
object-fit: cover !important;
}
.object-fit-md-fill {
-o-object-fit: fill !important;
object-fit: fill !important;
}
.object-fit-md-scale {
-o-object-fit: scale-down !important;
object-fit: scale-down !important;
}
.object-fit-md-none {
-o-object-fit: none !important;
object-fit: none !important;
}
.d-md-inline {
@ -10546,21 +10627,27 @@ textarea.form-control-lg {
row-gap: 3rem !important;
}
.column-gap-md-0 {
-moz-column-gap: 0 !important;
column-gap: 0 !important;
}
.column-gap-md-1 {
-moz-column-gap: 0.25rem !important;
column-gap: 0.25rem !important;
}
.column-gap-md-2 {
-moz-column-gap: 0.5rem !important;
column-gap: 0.5rem !important;
}
.column-gap-md-3 {
-moz-column-gap: 1rem !important;
column-gap: 1rem !important;
}
.column-gap-md-4 {
-moz-column-gap: 1.5rem !important;
column-gap: 1.5rem !important;
}
.column-gap-md-5 {
-moz-column-gap: 3rem !important;
column-gap: 3rem !important;
}
.text-md-start {
@ -10584,18 +10671,23 @@ textarea.form-control-lg {
float: none !important;
}
.object-fit-lg-contain {
-o-object-fit: contain !important;
object-fit: contain !important;
}
.object-fit-lg-cover {
-o-object-fit: cover !important;
object-fit: cover !important;
}
.object-fit-lg-fill {
-o-object-fit: fill !important;
object-fit: fill !important;
}
.object-fit-lg-scale {
-o-object-fit: scale-down !important;
object-fit: scale-down !important;
}
.object-fit-lg-none {
-o-object-fit: none !important;
object-fit: none !important;
}
.d-lg-inline {
@ -11211,21 +11303,27 @@ textarea.form-control-lg {
row-gap: 3rem !important;
}
.column-gap-lg-0 {
-moz-column-gap: 0 !important;
column-gap: 0 !important;
}
.column-gap-lg-1 {
-moz-column-gap: 0.25rem !important;
column-gap: 0.25rem !important;
}
.column-gap-lg-2 {
-moz-column-gap: 0.5rem !important;
column-gap: 0.5rem !important;
}
.column-gap-lg-3 {
-moz-column-gap: 1rem !important;
column-gap: 1rem !important;
}
.column-gap-lg-4 {
-moz-column-gap: 1.5rem !important;
column-gap: 1.5rem !important;
}
.column-gap-lg-5 {
-moz-column-gap: 3rem !important;
column-gap: 3rem !important;
}
.text-lg-start {
@ -11249,18 +11347,23 @@ textarea.form-control-lg {
float: none !important;
}
.object-fit-xl-contain {
-o-object-fit: contain !important;
object-fit: contain !important;
}
.object-fit-xl-cover {
-o-object-fit: cover !important;
object-fit: cover !important;
}
.object-fit-xl-fill {
-o-object-fit: fill !important;
object-fit: fill !important;
}
.object-fit-xl-scale {
-o-object-fit: scale-down !important;
object-fit: scale-down !important;
}
.object-fit-xl-none {
-o-object-fit: none !important;
object-fit: none !important;
}
.d-xl-inline {
@ -11876,21 +11979,27 @@ textarea.form-control-lg {
row-gap: 3rem !important;
}
.column-gap-xl-0 {
-moz-column-gap: 0 !important;
column-gap: 0 !important;
}
.column-gap-xl-1 {
-moz-column-gap: 0.25rem !important;
column-gap: 0.25rem !important;
}
.column-gap-xl-2 {
-moz-column-gap: 0.5rem !important;
column-gap: 0.5rem !important;
}
.column-gap-xl-3 {
-moz-column-gap: 1rem !important;
column-gap: 1rem !important;
}
.column-gap-xl-4 {
-moz-column-gap: 1.5rem !important;
column-gap: 1.5rem !important;
}
.column-gap-xl-5 {
-moz-column-gap: 3rem !important;
column-gap: 3rem !important;
}
.text-xl-start {
@ -11914,18 +12023,23 @@ textarea.form-control-lg {
float: none !important;
}
.object-fit-xxl-contain {
-o-object-fit: contain !important;
object-fit: contain !important;
}
.object-fit-xxl-cover {
-o-object-fit: cover !important;
object-fit: cover !important;
}
.object-fit-xxl-fill {
-o-object-fit: fill !important;
object-fit: fill !important;
}
.object-fit-xxl-scale {
-o-object-fit: scale-down !important;
object-fit: scale-down !important;
}
.object-fit-xxl-none {
-o-object-fit: none !important;
object-fit: none !important;
}
.d-xxl-inline {
@ -12541,21 +12655,27 @@ textarea.form-control-lg {
row-gap: 3rem !important;
}
.column-gap-xxl-0 {
-moz-column-gap: 0 !important;
column-gap: 0 !important;
}
.column-gap-xxl-1 {
-moz-column-gap: 0.25rem !important;
column-gap: 0.25rem !important;
}
.column-gap-xxl-2 {
-moz-column-gap: 0.5rem !important;
column-gap: 0.5rem !important;
}
.column-gap-xxl-3 {
-moz-column-gap: 1rem !important;
column-gap: 1rem !important;
}
.column-gap-xxl-4 {
-moz-column-gap: 1.5rem !important;
column-gap: 1.5rem !important;
}
.column-gap-xxl-5 {
-moz-column-gap: 3rem !important;
column-gap: 3rem !important;
}
.text-xxl-start {
@ -13183,6 +13303,8 @@ textarea.form-control-lg {
}
.sidebar-expand-sm.layout-fixed .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-sm.sidebar-open .nav-link > .nav-badge,
.sidebar-expand-sm.sidebar-open .nav-link > p > .nav-badge {
@ -13213,6 +13335,8 @@ textarea.form-control-lg {
}
.sidebar-expand-sm .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-sm.sidebar-open .app-sidebar {
margin-left: 0;
@ -13251,6 +13375,8 @@ textarea.form-control-lg {
}
.sidebar-expand-md.layout-fixed .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-md.sidebar-open .nav-link > .nav-badge,
.sidebar-expand-md.sidebar-open .nav-link > p > .nav-badge {
@ -13281,6 +13407,8 @@ textarea.form-control-lg {
}
.sidebar-expand-md .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-md.sidebar-open .app-sidebar {
margin-left: 0;
@ -13319,6 +13447,8 @@ textarea.form-control-lg {
}
.sidebar-expand-lg.layout-fixed .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-lg.sidebar-open .nav-link > .nav-badge,
.sidebar-expand-lg.sidebar-open .nav-link > p > .nav-badge {
@ -13349,6 +13479,8 @@ textarea.form-control-lg {
}
.sidebar-expand-lg .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-lg.sidebar-open .app-sidebar {
margin-left: 0;
@ -13387,6 +13519,8 @@ textarea.form-control-lg {
}
.sidebar-expand-xl.layout-fixed .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-xl.sidebar-open .nav-link > .nav-badge,
.sidebar-expand-xl.sidebar-open .nav-link > p > .nav-badge {
@ -13417,6 +13551,8 @@ textarea.form-control-lg {
}
.sidebar-expand-xl .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-xl.sidebar-open .app-sidebar {
margin-left: 0;
@ -13455,6 +13591,8 @@ textarea.form-control-lg {
}
.sidebar-expand-xxl.layout-fixed .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-xxl.sidebar-open .nav-link > .nav-badge,
.sidebar-expand-xxl.sidebar-open .nav-link > p > .nav-badge {
@ -13485,6 +13623,8 @@ textarea.form-control-lg {
}
.sidebar-expand-xxl .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-xxl.sidebar-open .app-sidebar {
margin-left: 0;
@ -13522,6 +13662,8 @@ textarea.form-control-lg {
}
.sidebar-expand.layout-fixed .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand.sidebar-open .nav-link > .nav-badge,
.sidebar-expand.sidebar-open .nav-link > p > .nav-badge {
@ -13550,6 +13692,8 @@ textarea.form-control-lg {
}
.sidebar-expand .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand.sidebar-open .app-sidebar {
margin-left: 0;
@ -15446,4 +15590,4 @@ fieldset legend {
}
}
/*# sourceMappingURL=adminlte.css.map */
/*# sourceMappingURL=adminlte.css.map */

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
@charset "UTF-8";
/*!
* AdminLTE v4.0.0-beta3
* AdminLTE v4.0.0-rc3
* Author: Colorlib
* Website: AdminLTE.io <https://adminlte.io>
* License: Open source - MIT <https://opensource.org/licenses/MIT>
@ -13277,6 +13277,8 @@ textarea.form-control-lg {
}
.sidebar-expand-sm.layout-fixed .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-sm.sidebar-open .nav-link > .nav-badge,
.sidebar-expand-sm.sidebar-open .nav-link > p > .nav-badge {
@ -13307,6 +13309,8 @@ textarea.form-control-lg {
}
.sidebar-expand-sm .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-sm.sidebar-open .app-sidebar {
margin-right: 0;
@ -13345,6 +13349,8 @@ textarea.form-control-lg {
}
.sidebar-expand-md.layout-fixed .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-md.sidebar-open .nav-link > .nav-badge,
.sidebar-expand-md.sidebar-open .nav-link > p > .nav-badge {
@ -13375,6 +13381,8 @@ textarea.form-control-lg {
}
.sidebar-expand-md .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-md.sidebar-open .app-sidebar {
margin-right: 0;
@ -13413,6 +13421,8 @@ textarea.form-control-lg {
}
.sidebar-expand-lg.layout-fixed .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-lg.sidebar-open .nav-link > .nav-badge,
.sidebar-expand-lg.sidebar-open .nav-link > p > .nav-badge {
@ -13443,6 +13453,8 @@ textarea.form-control-lg {
}
.sidebar-expand-lg .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-lg.sidebar-open .app-sidebar {
margin-right: 0;
@ -13481,6 +13493,8 @@ textarea.form-control-lg {
}
.sidebar-expand-xl.layout-fixed .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-xl.sidebar-open .nav-link > .nav-badge,
.sidebar-expand-xl.sidebar-open .nav-link > p > .nav-badge {
@ -13511,6 +13525,8 @@ textarea.form-control-lg {
}
.sidebar-expand-xl .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-xl.sidebar-open .app-sidebar {
margin-right: 0;
@ -13549,6 +13565,8 @@ textarea.form-control-lg {
}
.sidebar-expand-xxl.layout-fixed .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-xxl.sidebar-open .nav-link > .nav-badge,
.sidebar-expand-xxl.sidebar-open .nav-link > p > .nav-badge {
@ -13579,6 +13597,8 @@ textarea.form-control-lg {
}
.sidebar-expand-xxl .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand-xxl.sidebar-open .app-sidebar {
margin-right: 0;
@ -13616,6 +13636,8 @@ textarea.form-control-lg {
}
.sidebar-expand.layout-fixed .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand.sidebar-open .nav-link > .nav-badge,
.sidebar-expand.sidebar-open .nav-link > p > .nav-badge {
@ -13644,6 +13666,8 @@ textarea.form-control-lg {
}
.sidebar-expand .app-sidebar .sidebar-wrapper {
height: calc(100vh - (calc(3.5rem + 1px)));
overflow-x: hidden;
overflow-y: auto;
}
.sidebar-expand.sidebar-open .app-sidebar {
margin-right: 0;
@ -15539,5 +15563,4 @@ fieldset legend {
content: " (" attr(href) ")";
}
}
/*# sourceMappingURL=adminlte.rtl.css.map */

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -682,12 +682,21 @@
const sidebarOverlay = document.createElement('div');
sidebarOverlay.className = CLASS_NAME_SIDEBAR_OVERLAY;
document.querySelector(SELECTOR_APP_WRAPPER)?.append(sidebarOverlay);
sidebarOverlay.addEventListener('touchstart', event => {
event.preventDefault();
const target = event.currentTarget;
const data = new PushMenu(target, Defaults);
data.collapse();
let isTouchMoved = false;
sidebarOverlay.addEventListener('touchstart', () => {
isTouchMoved = false;
}, { passive: true });
sidebarOverlay.addEventListener('touchmove', () => {
isTouchMoved = true;
}, { passive: true });
sidebarOverlay.addEventListener('touchend', event => {
if (!isTouchMoved) {
event.preventDefault();
const target = event.currentTarget;
const data = new PushMenu(target, Defaults);
data.collapse();
}
}, { passive: false });
sidebarOverlay.addEventListener('click', event => {
event.preventDefault();
const target = event.currentTarget;
@ -1122,7 +1131,7 @@
};
/**
* AdminLTE v4.0.0-rc1
* AdminLTE v4.0.0-rc3
* Author: Colorlib
* Website: AdminLTE.io <https://adminlte.io>
* License: Open source - MIT <https://opensource.org/licenses/MIT>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -485,6 +485,8 @@
.sidebar-wrapper {
height: subtract(100vh, add($lte-app-header-height, 1px));
overflow-x: hidden;
overflow-y: auto;
}
}
}
@ -524,6 +526,8 @@
.sidebar-wrapper {
height: subtract(100vh, add($lte-app-header-height, 1px));
overflow-x: hidden;
overflow-y: auto;
}
}

View File

@ -1,5 +1,5 @@
/*!
* AdminLTE v4.0.0-beta3
* AdminLTE v4.0.0-rc3
* Author: Colorlib
* Website: AdminLTE.io <https://adminlte.io>
* License: Open source - MIT <https://opensource.org/licenses/MIT>

View File

@ -8,7 +8,7 @@ import PushMenu from './push-menu.js'
import { initAccessibility } from './accessibility.js'
/**
* AdminLTE v4.0.0-rc1
* AdminLTE v4.0.0-rc3
* Author: Colorlib
* Website: AdminLTE.io <https://adminlte.io>
* License: Open source - MIT <https://opensource.org/licenses/MIT>

View File

@ -150,12 +150,24 @@ onDOMContentLoaded(() => {
sidebarOverlay.className = CLASS_NAME_SIDEBAR_OVERLAY
document.querySelector(SELECTOR_APP_WRAPPER)?.append(sidebarOverlay)
sidebarOverlay.addEventListener('touchstart', event => {
event.preventDefault()
const target = event.currentTarget as HTMLElement
const data = new PushMenu(target, Defaults)
data.collapse()
let isTouchMoved = false
sidebarOverlay.addEventListener('touchstart', () => {
isTouchMoved = false
}, { passive: true })
sidebarOverlay.addEventListener('touchmove', () => {
isTouchMoved = true
}, { passive: true })
sidebarOverlay.addEventListener('touchend', event => {
if (!isTouchMoved) {
event.preventDefault()
const target = event.currentTarget as HTMLElement
const data = new PushMenu(target, Defaults)
data.collapse()
}
}, { passive: false })
sidebarOverlay.addEventListener('click', event => {
event.preventDefault()
const target = event.currentTarget as HTMLElement