Update various scripts and styles including Lenis library

The Lenis library is updated to improve smooth scrolling. The lenis.js script is replaced by lenisSmoothScroll.js and certain lenis related CSS rules are removed. Also, it encompasses changes in the way some plugins are imported in different components, moving from inline script import to modular imports. Additionally, the customCss file location is updated in the astro.config.mjs file. New dependencies are added to the package and package-lock json.
This commit is contained in:
Emil Gulamov 2024-06-21 19:09:44 +04:00
parent b03d4658b9
commit f62575ac24
41 changed files with 147 additions and 628 deletions

View file

@ -208,16 +208,8 @@ Static files served directly to the browser are within the `public` directory at
public/ public/
└── scripts/ └── scripts/
└── vendor/ └── vendor/
├── gsap/ # Animations powered by GSAP (GreenSock Animation Platform) └── gsap/ # Animations powered by GSAP (GreenSock Animation Platform)
│ └── gsap.min.js └── gsap.min.js
├── lenis/ # Lenis script for smooth scrolling effects
│ └── lenis.js
└── preline/ # Preline UI plugins
├── accordion/
├── collapse/
├── dropdown/
├── overlay/
└── tabs/
``` ```
@ -367,41 +359,23 @@ Experience buttery smooth scrolling with [Lenis](https://lenis.studiofreight.com
Here's how we set up Lenis in `src/layouts/MainLayout.astro`: Here's how we set up Lenis in `src/layouts/MainLayout.astro`:
```astro ```astro
<script is:inline src="/scripts/vendor/lenis/lenis.js"></script> <script>
<script is:inline> import "@scripts/lenisSmoothScroll.js";
// Script to handle Lenis library settings for smooth scrolling
const lenis = new Lenis({
smooth: true,
smoothTouch: false
});
function raf(time) {
lenis.raf(time); // Update Lenis on each animation frame
requestAnimationFrame(raf); // Continuously invoke the raf function at refresh rate
}
requestAnimationFrame(raf); // Start the loop
</script> </script>
<style>
html.lenis, html.lenis body { // src/assets/scripts/lenisSmoothScroll.js
height: auto; import "@styles/lenis.css";
import Lenis from "lenis";
const lenis = new Lenis();
function raf(time) {
lenis.raf(time);
requestAnimationFrame(raf);
} }
.lenis.lenis-smooth { requestAnimationFrame(raf);
scroll-behavior: auto !important;
}
.lenis.lenis-smooth [data-lenis-prevent] {
overscroll-behavior: contain;
}
.lenis.lenis-stopped {
overflow: hidden;
}
.lenis.lenis-scrolling iframe {
pointer-events: none;
}
</style>
``` ```
Please note that smooth scrolling can affect accessibility and performance on some devices, so be sure to test it comprehensively across different environments. Please note that smooth scrolling can affect accessibility and performance on some devices, so be sure to test it comprehensively across different environments.

View file

@ -88,7 +88,7 @@ export default defineConfig({
github: "https://github.com/mearashadowfax/ScrewFast", github: "https://github.com/mearashadowfax/ScrewFast",
}, },
disable404Route: true, disable404Route: true,
customCss: ["./src/styles/starlight.css"], customCss: ["./src/assets/styles/starlight.css"],
favicon: "/favicon.ico", favicon: "/favicon.ico",
components: { components: {
SiteTitle: "./src/components/ui/starlight/SiteTitle.astro", SiteTitle: "./src/components/ui/starlight/SiteTitle.astro",

94
package-lock.json generated
View file

@ -13,11 +13,18 @@
"@astrojs/starlight-tailwind": "^2.0.3", "@astrojs/starlight-tailwind": "^2.0.3",
"@astrojs/tailwind": "^5.1.0", "@astrojs/tailwind": "^5.1.0",
"@astrojs/vercel": "^7.7.1", "@astrojs/vercel": "^7.7.1",
"@preline/accordion": "^2.3.0",
"@preline/collapse": "^2.3.0",
"@preline/dropdown": "^2.3.0",
"@preline/overlay": "^2.3.0",
"@preline/tabs": "^2.3.0",
"astro": "^4.10.3", "astro": "^4.10.3",
"astro-compressor": "^0.4.1", "astro-compressor": "^0.4.1",
"clipboard": "^2.0.11",
"globby": "^14.0.1", "globby": "^14.0.1",
"gsap": "^3.12.5", "gsap": "^3.12.5",
"html-minifier-terser": "^7.2.0", "html-minifier-terser": "^7.2.0",
"lenis": "^1.1.3",
"preline": "^2.3.0", "preline": "^2.3.0",
"sharp": "^0.33.4", "sharp": "^0.33.4",
"sharp-ico": "^0.1.5", "sharp-ico": "^0.1.5",
@ -785,6 +792,11 @@
"node": ">=14" "node": ">=14"
} }
}, },
"node_modules/@darkroom.engineering/tempus": {
"version": "0.0.46",
"resolved": "https://registry.npmjs.org/@darkroom.engineering/tempus/-/tempus-0.0.46.tgz",
"integrity": "sha512-s5vav3KMHYezvUCl4ee5epg0oimF6M8C9gAaKxFnFaTvX2q3ywFDryIv6XLd0mRFUt3S1uHDJqKaiEcs2ZVSvw=="
},
"node_modules/@emmetio/abbreviation": { "node_modules/@emmetio/abbreviation": {
"version": "2.3.3", "version": "2.3.3",
"resolved": "https://registry.npmjs.org/@emmetio/abbreviation/-/abbreviation-2.3.3.tgz", "resolved": "https://registry.npmjs.org/@emmetio/abbreviation/-/abbreviation-2.3.3.tgz",
@ -1932,6 +1944,31 @@
"url": "https://opencollective.com/popperjs" "url": "https://opencollective.com/popperjs"
} }
}, },
"node_modules/@preline/accordion": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/@preline/accordion/-/accordion-2.3.0.tgz",
"integrity": "sha512-i62TZq1xa0tFQSQN/4s+owLPli1TPohD312FZGc6/qF4w2/Z4cXzqCwbkfiZER2YRFTIm/cn8tGQJ25d00AFkg=="
},
"node_modules/@preline/collapse": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/@preline/collapse/-/collapse-2.3.0.tgz",
"integrity": "sha512-M3Ku1Pj7uezqflQiIe2KgsCFNZqFB44GowmsZRe0ItB2/OGC6hO0rHBEMZEf30CZeYPbsU06DleQ6QEYs7ujxg=="
},
"node_modules/@preline/dropdown": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/@preline/dropdown/-/dropdown-2.3.0.tgz",
"integrity": "sha512-tLcQS3Lzhmu7hW3XJVE2hSxe3b7pgtPtbKS3KanBOLTIDXu4XjFt45enolCYnsn64tOEsfhGnix/VNTo4kttyw=="
},
"node_modules/@preline/overlay": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/@preline/overlay/-/overlay-2.3.0.tgz",
"integrity": "sha512-aN9mR81RHEnh8Tg/WTRwdqwrX2JxObV2CMR61Q8hJphDLaZFZT2yPcnMaXawFS+cO839Wd+VvZDSeBFE1DYpEg=="
},
"node_modules/@preline/tabs": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/@preline/tabs/-/tabs-2.3.0.tgz",
"integrity": "sha512-ZSTdL7JmiztJEGNHalgdbvRSZFGZRAtsZwYq6wU5xeRvJlmBoF5xwnrnLANsxI7fuLrwgeoRbmZHoFAx4NqVCg=="
},
"node_modules/@rollup/pluginutils": { "node_modules/@rollup/pluginutils": {
"version": "4.2.1", "version": "4.2.1",
"resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz",
@ -3176,6 +3213,16 @@
"url": "https://github.com/sponsors/sindresorhus" "url": "https://github.com/sponsors/sindresorhus"
} }
}, },
"node_modules/clipboard": {
"version": "2.0.11",
"resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz",
"integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==",
"dependencies": {
"good-listener": "^1.2.2",
"select": "^1.1.2",
"tiny-emitter": "^2.0.0"
}
},
"node_modules/cliui": { "node_modules/cliui": {
"version": "8.0.1", "version": "8.0.1",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
@ -3484,6 +3531,11 @@
"url": "https://github.com/sponsors/wooorm" "url": "https://github.com/sponsors/wooorm"
} }
}, },
"node_modules/delegate": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz",
"integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw=="
},
"node_modules/delegates": { "node_modules/delegates": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
@ -4130,6 +4182,14 @@
"url": "https://github.com/sponsors/sindresorhus" "url": "https://github.com/sponsors/sindresorhus"
} }
}, },
"node_modules/good-listener": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz",
"integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==",
"dependencies": {
"delegate": "^3.1.2"
}
},
"node_modules/graceful-fs": { "node_modules/graceful-fs": {
"version": "4.2.11", "version": "4.2.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
@ -4952,6 +5012,30 @@
"node": ">=6" "node": ">=6"
} }
}, },
"node_modules/lenis": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/lenis/-/lenis-1.1.3.tgz",
"integrity": "sha512-Ny62QbNKFdnYPutULPMCgXU6YADKgkICBke41snSXDH1p9iIA1w1+RiHSfJEoMaRCa1SXer4Rzv0f4txCQcQpg==",
"dependencies": {
"@darkroom.engineering/tempus": "^0.0.46"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/darkroomengineering"
},
"peerDependencies": {
"react": ">=17.0.0",
"react-dom": ">=17.0.0"
},
"peerDependenciesMeta": {
"react": {
"optional": true
},
"react-dom": {
"optional": true
}
}
},
"node_modules/lilconfig": { "node_modules/lilconfig": {
"version": "3.1.1", "version": "3.1.1",
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz",
@ -7983,6 +8067,11 @@
"node": ">=4" "node": ">=4"
} }
}, },
"node_modules/select": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz",
"integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA=="
},
"node_modules/semver": { "node_modules/semver": {
"version": "7.6.2", "version": "7.6.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
@ -8578,6 +8667,11 @@
"node": ">=0.8" "node": ">=0.8"
} }
}, },
"node_modules/tiny-emitter": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
"integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q=="
},
"node_modules/to-data-view": { "node_modules/to-data-view": {
"version": "1.1.0", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/to-data-view/-/to-data-view-1.1.0.tgz", "resolved": "https://registry.npmjs.org/to-data-view/-/to-data-view-1.1.0.tgz",

View file

@ -16,11 +16,18 @@
"@astrojs/starlight-tailwind": "^2.0.3", "@astrojs/starlight-tailwind": "^2.0.3",
"@astrojs/tailwind": "^5.1.0", "@astrojs/tailwind": "^5.1.0",
"@astrojs/vercel": "^7.7.1", "@astrojs/vercel": "^7.7.1",
"@preline/accordion": "^2.3.0",
"@preline/collapse": "^2.3.0",
"@preline/dropdown": "^2.3.0",
"@preline/overlay": "^2.3.0",
"@preline/tabs": "^2.3.0",
"astro": "^4.10.3", "astro": "^4.10.3",
"astro-compressor": "^0.4.1", "astro-compressor": "^0.4.1",
"clipboard": "^2.0.11",
"globby": "^14.0.1", "globby": "^14.0.1",
"gsap": "^3.12.5", "gsap": "^3.12.5",
"html-minifier-terser": "^7.2.0", "html-minifier-terser": "^7.2.0",
"lenis": "^1.1.3",
"preline": "^2.3.0", "preline": "^2.3.0",
"sharp": "^0.33.4", "sharp": "^0.33.4",
"sharp-ico": "^0.1.5", "sharp-ico": "^0.1.5",

File diff suppressed because one or more lines are too long

View file

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2023 Html Stream
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -1,45 +0,0 @@
export interface IAccordion {
options?: {};
show(): void;
hide(): void;
}
export interface IBasePlugin<O, E> {
el: E;
options?: O;
events?: {};
}
declare class HSBasePlugin<O, E = HTMLElement> implements IBasePlugin<O, E> {
el: E;
options: O;
events?: any;
constructor(el: E, options: O, events?: any);
createCollection(collection: any[], element: any): void;
fireEvent(evt: string, payload?: any): any;
on(evt: string, cb: Function): void;
}
export interface ICollectionItem<T> {
id: string | number;
element: T;
}
declare class HSAccordion extends HSBasePlugin<{}> implements IAccordion {
private readonly toggle;
content: HTMLElement | null;
private readonly group;
private readonly isAlwaysOpened;
constructor(el: HTMLElement, options?: {}, events?: {});
private init;
show(): boolean;
hide(): boolean;
static getInstance(target: HTMLElement | string, isInstance?: boolean): HTMLElement | ICollectionItem<HSAccordion>;
static show(target: HTMLElement): void;
static hide(target: HTMLElement): void;
static autoInit(): void;
static on(evt: string, target: HTMLElement, cb: Function): void;
}
export {
HSAccordion as default,
};
export {};

View file

@ -1,17 +0,0 @@
!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var n=e();for(var o in n)("object"==typeof exports?exports:t)[o]=n[o]}}(self,(()=>(()=>{"use strict";var t={460:function(t,e,n){
/*
* HSAccordion
* @version: 2.0.3
* @author: HTMLStream
* @license: Licensed under MIT (https://preline.co/docs/license.html)
* Copyright 2023 HTMLStream
*/
var o,i=this&&this.__extends||(o=function(t,e){return o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},o(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}o(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)});Object.defineProperty(e,"__esModule",{value:!0});var r=n(969),c=function(t){function e(e,n,o){var i=t.call(this,e,n,o)||this;return i.toggle=i.el.querySelector(".hs-accordion-toggle")||null,i.content=i.el.querySelector(".hs-accordion-content")||null,i.group=i.el.closest(".hs-accordion-group")||null,i.isAlwaysOpened=i.group.hasAttribute("data-hs-accordion-always-open")||!1,i.toggle&&i.content&&i.init(),i}return i(e,t),e.prototype.init=function(){var t=this;this.createCollection(window.$hsAccordionCollection,this),this.toggle.addEventListener("click",(function(){t.el.classList.contains("active")?t.hide():t.show()}))},e.prototype.show=function(){var t=this;this.group&&!this.isAlwaysOpened&&this.group.querySelector(".hs-accordion.active")&&this.group.querySelector(".hs-accordion.active")!==this.el&&window.$hsAccordionCollection.find((function(e){return e.element.el===t.group.querySelector(".hs-accordion.active")})).element.hide();if(this.el.classList.contains("active"))return!1;this.el.classList.add("active"),this.content.style.display="block",this.content.style.height="0",setTimeout((function(){t.content.style.height="".concat(t.content.scrollHeight,"px")})),(0,r.afterTransition)(this.content,(function(){t.content.style.display="block",t.content.style.height="",t.fireEvent("open",t.el),(0,r.dispatch)("open.hs.accordion",t.el,t.el)}))},e.prototype.hide=function(){var t=this;if(!this.el.classList.contains("active"))return!1;this.el.classList.remove("active"),this.content.style.height="".concat(this.content.scrollHeight,"px"),setTimeout((function(){t.content.style.height="0"})),(0,r.afterTransition)(this.content,(function(){t.content.style.display="",t.content.style.height="0",t.fireEvent("close",t.el),(0,r.dispatch)("close.hs.accordion",t.el,t.el)}))},e.getInstance=function(t,e){var n=window.$hsAccordionCollection.find((function(e){return e.element.el===("string"==typeof t?document.querySelector(t):t)}));return n?e?n:n.element.el:null},e.show=function(t){var e=window.$hsAccordionCollection.find((function(e){return e.element.el===("string"==typeof t?document.querySelector(t):t)}));e&&"block"!==e.element.content.style.display&&e.element.show()},e.hide=function(t){var e=window.$hsAccordionCollection.find((function(e){return e.element.el===("string"==typeof t?document.querySelector(t):t)}));e&&"block"===e.element.content.style.display&&e.element.hide()},e.autoInit=function(){window.$hsAccordionCollection||(window.$hsAccordionCollection=[]),document.querySelectorAll(".hs-accordion:not(.--prevent-on-load-init)").forEach((function(t){window.$hsAccordionCollection.find((function(e){var n;return(null===(n=null==e?void 0:e.element)||void 0===n?void 0:n.el)===t}))||new e(t)}))},e.on=function(t,e,n){var o=window.$hsAccordionCollection.find((function(t){return t.element.el===("string"==typeof e?document.querySelector(e):e)}));o&&(o.element.events[t]=n)},e}(n(737).default);window.addEventListener("load",(function(){c.autoInit()})),"undefined"!=typeof window&&(window.HSAccordion=c),e.default=c},737:(t,e)=>{
/*
* HSBasePlugin
* @version: 2.0.3
* @author: HTMLStream
* @license: Licensed under MIT (https://preline.co/docs/license.html)
* Copyright 2023 HTMLStream
*/
Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e,n){this.el=t,this.options=e,this.events=n,this.el=t,this.options=e,this.events={}}return t.prototype.createCollection=function(t,e){var n;t.push({id:(null===(n=null==e?void 0:e.el)||void 0===n?void 0:n.id)||t.length+1,element:e})},t.prototype.fireEvent=function(t,e){if(void 0===e&&(e=null),this.events.hasOwnProperty(t))return this.events[t](e)},t.prototype.on=function(t,e){this.events[t]=e},t}();e.default=n},969:function(t,e){var n=this;Object.defineProperty(e,"__esModule",{value:!0}),e.menuSearchHistory=e.classToClassList=e.htmlToElement=e.afterTransition=e.dispatch=e.debounce=e.isFormElement=e.isParentOrElementHidden=e.isEnoughSpace=e.isIpadOS=e.isIOS=e.getClassPropertyAlt=e.getClassProperty=void 0;e.getClassProperty=function(t,e,n){return void 0===n&&(n=""),(window.getComputedStyle(t).getPropertyValue(e)||n).replace(" ","")};e.getClassPropertyAlt=function(t,e,n){void 0===n&&(n="");var o="";return t.classList.forEach((function(t){t.includes(e)&&(o=t)})),o.match(/:(.*)]/)?o.match(/:(.*)]/)[1]:n};e.isIOS=function(){return!!/iPad|iPhone|iPod/.test(navigator.platform)||navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&/MacIntel/.test(navigator.platform)};e.isIpadOS=function(){return navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&/MacIntel/.test(navigator.platform)};e.isEnoughSpace=function(t,e,n,o,i){void 0===n&&(n="auto"),void 0===o&&(o=10),void 0===i&&(i=null);var r=e.getBoundingClientRect(),c=i?i.getBoundingClientRect():null,s=window.innerHeight,l=c?r.top-c.top:r.top,a=(i?c.bottom:s)-r.bottom,u=t.clientHeight+o;return"bottom"===n?a>=u:"top"===n?l>=u:l>=u||a>=u};e.isFormElement=function(t){return t instanceof HTMLInputElement||t instanceof HTMLTextAreaElement||t instanceof HTMLSelectElement};var o=function(t){return!!t&&("none"===window.getComputedStyle(t).display||o(t.parentElement))};e.isParentOrElementHidden=o;e.debounce=function(t,e){var o;return void 0===e&&(e=200),function(){for(var i=[],r=0;r<arguments.length;r++)i[r]=arguments[r];clearTimeout(o),o=setTimeout((function(){t.apply(n,i)}),e)}};e.dispatch=function(t,e,n){void 0===n&&(n=null);var o=new CustomEvent(t,{detail:{payload:n},bubbles:!0,cancelable:!0,composed:!1});e.dispatchEvent(o)};e.afterTransition=function(t,e){var n=function(){e(),t.removeEventListener("transitionend",n,!0)};"all 0s ease 0s"!==window.getComputedStyle(t,null).getPropertyValue("transition")?t.addEventListener("transitionend",n,!0):e()};e.htmlToElement=function(t){var e=document.createElement("template");return t=t.trim(),e.innerHTML=t,e.content.firstChild};e.classToClassList=function(t,e,n){void 0===n&&(n=" "),t.split(n).forEach((function(t){return e.classList.add(t)}))};e.menuSearchHistory={historyIndex:-1,addHistory:function(t){this.historyIndex=t},existsInHistory:function(t){return t>this.historyIndex},clearHistory:function(){this.historyIndex=-1}}}},e={};var n=function n(o){var i=e[o];if(void 0!==i)return i.exports;var r=e[o]={exports:{}};return t[o].call(r.exports,r,r.exports,n),r.exports}(460);return n})()));

View file

@ -1,15 +0,0 @@
{
"name": "@preline/accordion",
"version": "2.0.2",
"description": "Preline UI is an open-source set of prebuilt UI components based on the utility-first Tailwind CSS framework.",
"main": "index.js",
"types": "index.d.ts",
"repository": "https://github.com/htmlstreamofficial/preline.git",
"homepage": "https://preline.co/plugins.html",
"keywords": ["preline", "html", "css", "next", "nuxt", "vue", "react", "angular", "javascript", "typescript", "tailwind", "tailwind components", "tailwind elements", "tailwind library", "tailwind sections", "tailwind css", "tailwind ui", "tailwind css react", "tailwind css vue", "tailwind css angular", "tailwind css laravel", "tailwindcss plugin", "tailwindcss plugins", "accordion"],
"author": "Htmlstream",
"license": "MIT",
"publishConfig": {
"access": "public"
}
}

View file

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2023 Html Stream
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -1,45 +0,0 @@
export interface ICollapse {
options?: {};
show(): void;
hide(): void;
}
export interface IBasePlugin<O, E> {
el: E;
options?: O;
events?: {};
}
declare class HSBasePlugin<O, E = HTMLElement> implements IBasePlugin<O, E> {
el: E;
options: O;
events?: any;
constructor(el: E, options: O, events?: any);
createCollection(collection: any[], element: any): void;
fireEvent(evt: string, payload?: any): any;
on(evt: string, cb: Function): void;
}
export interface ICollectionItem<T> {
id: string | number;
element: T;
}
declare class HSCollapse extends HSBasePlugin<{}> implements ICollapse {
private readonly contentId;
content: HTMLElement | null;
private animationInProcess;
constructor(el: HTMLElement, options?: {}, events?: {});
private init;
private hideAllMegaMenuItems;
show(): boolean;
hide(): boolean;
static getInstance(target: HTMLElement, isInstance?: boolean): HTMLElement | ICollectionItem<HSCollapse>;
static autoInit(): void;
static show(target: HTMLElement): void;
static hide(target: HTMLElement): void;
static on(evt: string, target: HTMLElement, cb: Function): void;
}
export {
HSCollapse as default,
};
export {};

File diff suppressed because one or more lines are too long

View file

@ -1,15 +0,0 @@
{
"name": "@preline/collapse",
"version": "2.0.2",
"description": "Preline UI is an open-source set of prebuilt UI components based on the utility-first Tailwind CSS framework.",
"main": "index.js",
"types": "index.d.ts",
"repository": "https://github.com/htmlstreamofficial/preline.git",
"homepage": "https://preline.co/plugins.html",
"keywords": ["preline", "html", "css", "next", "nuxt", "vue", "react", "angular", "javascript", "typescript", "tailwind", "tailwind components", "tailwind elements", "tailwind library", "tailwind sections", "tailwind css", "tailwind ui", "tailwind css react", "tailwind css vue", "tailwind css angular", "tailwind css laravel", "tailwindcss plugin", "tailwindcss plugins", "accordion"],
"author": "Htmlstream",
"license": "MIT",
"publishConfig": {
"access": "public"
}
}

View file

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2023 Html Stream
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -1,65 +0,0 @@
export interface IDropdown {
options?: {};
open(): void;
close(isAnimated: boolean): void;
forceClearState(): void;
}
export interface IHTMLElementPopper extends HTMLElement {
_popper: any;
}
export interface IBasePlugin<O, E> {
el: E;
options?: O;
events?: {};
}
declare class HSBasePlugin<O, E = HTMLElement> implements IBasePlugin<O, E> {
el: E;
options: O;
events?: any;
constructor(el: E, options: O, events?: any);
createCollection(collection: any[], element: any): void;
fireEvent(evt: string, payload?: any): any;
on(evt: string, cb: Function): void;
}
export interface ICollectionItem<T> {
id: string | number;
element: T;
}
declare class HSDropdown extends HSBasePlugin<{}, IHTMLElementPopper> implements IDropdown {
private static history;
private readonly toggle;
menu: HTMLElement | null;
private eventMode;
private readonly closeMode;
private animationInProcess;
constructor(el: IHTMLElementPopper, options?: {}, events?: {});
private init;
resizeHandler(): void;
private onClickHandler;
private onMouseEnterHandler;
private onMouseLeaveHandler;
private destroyPopper;
private absoluteStrategyModifiers;
open(): boolean;
close(isAnimated?: boolean): boolean;
forceClearState(): void;
static getInstance(target: HTMLElement | string, isInstance?: boolean): ICollectionItem<HSDropdown> | IHTMLElementPopper;
static autoInit(): void;
static open(target: HTMLElement): void;
static close(target: HTMLElement): void;
static accessibility(evt: KeyboardEvent): void;
static onEscape(evt: KeyboardEvent): void;
static onEnter(evt: KeyboardEvent): void;
static onArrow(isArrowUp?: boolean): boolean;
static onStartEnd(isStart?: boolean): boolean;
static onFirstLetter(code: string): boolean;
static closeCurrentlyOpened(evtTarget?: HTMLElement | null, isAnimated?: boolean): void;
static on(evt: string, target: HTMLElement, cb: Function): void;
}
export {
HSDropdown as default,
};
export {};

File diff suppressed because one or more lines are too long

View file

@ -1,15 +0,0 @@
{
"name": "@preline/dropdown",
"version": "2.0.2",
"description": "Preline UI is an open-source set of prebuilt UI components based on the utility-first Tailwind CSS framework.",
"main": "index.js",
"types": "index.d.ts",
"repository": "https://github.com/htmlstreamofficial/preline.git",
"homepage": "https://preline.co/plugins.html",
"keywords": ["preline", "html", "css", "next", "nuxt", "vue", "react", "angular", "javascript", "typescript", "tailwind", "tailwind components", "tailwind elements", "tailwind library", "tailwind sections", "tailwind css", "tailwind ui", "tailwind css react", "tailwind css vue", "tailwind css angular", "tailwind css laravel", "tailwindcss plugin", "tailwindcss plugins", "accordion"],
"author": "Htmlstream",
"license": "MIT",
"publishConfig": {
"access": "public"
}
}

View file

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2023 Html Stream
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -1,65 +0,0 @@
export interface IOverlayOptions {
hiddenClass?: string | null;
isClosePrev?: boolean;
backdropClasses?: string | null;
}
export interface IOverlay {
options?: IOverlayOptions;
open(): void;
close(): void;
}
export interface ICollectionItem<T> {
id: string | number;
element: T;
}
export interface IBasePlugin<O, E> {
el: E;
options?: O;
events?: {};
}
declare class HSBasePlugin<O, E = HTMLElement> implements IBasePlugin<O, E> {
el: E;
options: O;
events?: any;
constructor(el: E, options: O, events?: any);
createCollection(collection: any[], element: any): void;
fireEvent(evt: string, payload?: any): any;
on(evt: string, cb: Function): void;
}
declare class HSOverlay extends HSBasePlugin<{}> implements IOverlay {
private readonly hiddenClass;
private readonly isClosePrev;
private readonly backdropClasses;
private openNextOverlay;
private autoHide;
private readonly overlayId;
overlay: HTMLElement | null;
isCloseWhenClickInside: string;
isTabAccessibilityLimited: string;
hasAutofocus: string;
hasAbilityToCloseOnBackdropClick: string;
constructor(el: HTMLElement, options?: IOverlayOptions, events?: {});
private init;
private hideAuto;
private checkTimer;
private buildBackdrop;
private destroyBackdrop;
private focusElement;
open(): false | Promise<void>;
close(): Promise<unknown>;
static getInstance(target: HTMLElement, isInstance?: boolean): HTMLElement | ICollectionItem<HSOverlay>;
static autoInit(): void;
static open(target: HTMLElement): void;
static close(target: HTMLElement): void;
static accessibility(evt: KeyboardEvent): boolean;
static onEscape(target: ICollectionItem<HSOverlay>): void;
static onTab(target: ICollectionItem<HSOverlay>, focusableElements: HTMLElement[]): boolean;
static on(evt: string, target: HTMLElement, cb: Function): void;
}
export {
HSOverlay as default,
};
export {};

File diff suppressed because one or more lines are too long

View file

@ -1,15 +0,0 @@
{
"name": "@preline/overlay",
"version": "2.0.2",
"description": "Preline UI is an open-source set of prebuilt UI components based on the utility-first Tailwind CSS framework.",
"main": "index.js",
"types": "index.d.ts",
"repository": "https://github.com/htmlstreamofficial/preline.git",
"homepage": "https://preline.co/plugins.html",
"keywords": ["preline", "html", "css", "next", "nuxt", "vue", "react", "angular", "javascript", "typescript", "tailwind", "tailwind components", "tailwind elements", "tailwind library", "tailwind sections", "tailwind css", "tailwind ui", "tailwind css react", "tailwind css vue", "tailwind css angular", "tailwind css laravel", "tailwindcss plugin", "tailwindcss plugins", "accordion"],
"author": "Htmlstream",
"license": "MIT",
"publishConfig": {
"access": "public"
}
}

View file

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2023 Html Stream
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -1,50 +0,0 @@
export interface ITabs {
options?: {};
}
export interface IBasePlugin<O, E> {
el: E;
options?: O;
events?: {};
}
declare class HSBasePlugin<O, E = HTMLElement> implements IBasePlugin<O, E> {
el: E;
options: O;
events?: any;
constructor(el: E, options: O, events?: any);
createCollection(collection: any[], element: any): void;
fireEvent(evt: string, payload?: any): any;
on(evt: string, cb: Function): void;
}
export interface ICollectionItem<T> {
id: string | number;
element: T;
}
declare class HSTabs extends HSBasePlugin<{}> implements ITabs {
toggles: NodeListOf<HTMLElement> | null;
private readonly extraToggleId;
private readonly extraToggle;
private current;
private currentContentId;
currentContent: HTMLElement | null;
private prev;
private prevContentId;
private prevContent;
constructor(el: HTMLElement, options?: {}, events?: {});
private init;
private open;
private change;
static getInstance(target: HTMLElement | string, isInstance?: boolean): HSTabs | ICollectionItem<HSTabs>;
static autoInit(): void;
static open(target: HTMLElement): void;
static accessibility(evt: KeyboardEvent): void;
static onArrow(isOpposite?: boolean): void;
static onStartEnd(isOpposite?: boolean): void;
static on(evt: string, target: HTMLElement, cb: Function): void;
}
export {
HSTabs as default,
};
export {};

File diff suppressed because one or more lines are too long

View file

@ -1,15 +0,0 @@
{
"name": "@preline/tabs",
"version": "2.0.2",
"description": "Preline UI is an open-source set of prebuilt UI components based on the utility-first Tailwind CSS framework.",
"main": "index.js",
"types": "index.d.ts",
"repository": "https://github.com/htmlstreamofficial/preline.git",
"homepage": "https://preline.co/plugins.html",
"keywords": ["preline", "html", "css", "next", "nuxt", "vue", "react", "angular", "javascript", "typescript", "tailwind", "tailwind components", "tailwind elements", "tailwind library", "tailwind sections", "tailwind css", "tailwind ui", "tailwind css react", "tailwind css vue", "tailwind css angular", "tailwind css laravel", "tailwindcss plugin", "tailwindcss plugins", "accordion"],
"author": "Htmlstream",
"license": "MIT",
"publishConfig": {
"access": "public"
}
}

View file

@ -74,4 +74,6 @@ const makeId = (base: any, index: any) => `${base}${index + 1}`;
</section> </section>
<!--Import the necessary Accordion plugin--> <!--Import the necessary Accordion plugin-->
<!--https://preline.co/plugins/html/accordion.html--> <!--https://preline.co/plugins/html/accordion.html-->
<script is:inline src="/scripts/vendor/preline/accordion/index.js"></script> <script>
import "@preline/accordion/index.js";
</script>

View file

@ -208,5 +208,7 @@ const homeUrl = Astro.currentLocale === "fr" ? "/fr" : "/";
<!--Import the necessary Collapse and Overlay plugins--> <!--Import the necessary Collapse and Overlay plugins-->
<!--https://preline.co/plugins/html/collapse.html--> <!--https://preline.co/plugins/html/collapse.html-->
<!--https://preline.co/plugins/html/overlay.html--> <!--https://preline.co/plugins/html/overlay.html-->
<script is:inline src="/scripts/vendor/preline/collapse/index.js"></script> <script>
<script is:inline src="/scripts/vendor/preline/overlay/index.js"></script> import "@preline/collapse/index.js";
import "@preline/overlay/index.js";
</script>

View file

@ -91,4 +91,6 @@ interface Props {
</section> </section>
<!--Import the necessary Tabs plugin--> <!--Import the necessary Tabs plugin-->
<!--https://preline.co/plugins/html/tabs.html--> <!--https://preline.co/plugins/html/tabs.html-->
<script is:inline src="/scripts/vendor/preline/tabs/index.js"></script> <script>
import "@preline/tabs/index.js";
</script>

View file

@ -44,7 +44,9 @@ import Icon from "./icons/Icon.astro";
<!--Import the necessary Dropdown plugin--> <!--Import the necessary Dropdown plugin-->
<!--https://preline.co/plugins/html/dropdown.html--> <!--https://preline.co/plugins/html/dropdown.html-->
<script is:inline src="/scripts/vendor/preline/dropdown/index.js"></script> <script>
import "@preline/dropdown/index.js";
</script>
<script> <script>
// Type alias for supported languages // Type alias for supported languages

View file

@ -108,10 +108,11 @@ const socialPlatforms: SocialPlatform[] = [
<!--Import the necessary Dropdown and Clipboard plugins--> <!--Import the necessary Dropdown and Clipboard plugins-->
<!--https://preline.co/plugins/html/dropdown.html--> <!--https://preline.co/plugins/html/dropdown.html-->
<script is:inline src="/scripts/vendor/preline/dropdown/index.js"></script>
<!-- https://clipboardjs.com/ --> <!-- https://clipboardjs.com/ -->
<script is:inline src="/scripts/vendor/clipboard.min.js"></script> <script>
import "@preline/dropdown/index.js";
import "clipboard/dist/clipboard.min.js";
</script>
<script is:inline> <script is:inline>
// Initialization of Clipboard // Initialization of Clipboard

View file

@ -24,7 +24,7 @@ hero:
icon: external icon: external
link: https://github.com/mearashadowfax/ScrewFast link: https://github.com/mearashadowfax/ScrewFast
--- ---
import "../../../styles/starlight_main.css"; import "@styles/starlight_main.css";
import { Card, CardGrid } from '@astrojs/starlight/components'; import { Card, CardGrid } from '@astrojs/starlight/components';
<CardGrid stagger> <CardGrid stagger>

View file

@ -24,7 +24,7 @@ hero:
icon: external icon: external
link: https://github.com/mearashadowfax/ScrewFast link: https://github.com/mearashadowfax/ScrewFast
--- ---
import "../../../styles/starlight_main.css"; import "@styles/starlight_main.css";
import { Card, CardGrid } from '@astrojs/starlight/components'; import { Card, CardGrid } from '@astrojs/starlight/components';
<CardGrid stagger> <CardGrid stagger>

View file

@ -24,7 +24,7 @@ hero:
icon: external icon: external
link: https://github.com/mearashadowfax/ScrewFast link: https://github.com/mearashadowfax/ScrewFast
--- ---
import "../../../styles/starlight_main.css"; import "@styles/starlight_main.css";
import { Card, CardGrid } from '@astrojs/starlight/components'; import { Card, CardGrid } from '@astrojs/starlight/components';
<CardGrid stagger> <CardGrid stagger>

View file

@ -24,7 +24,7 @@ hero:
icon: external icon: external
link: https://github.com/mearashadowfax/ScrewFast link: https://github.com/mearashadowfax/ScrewFast
--- ---
import "../../../styles/starlight_main.css"; import "@styles/starlight_main.css";
import { Card, CardGrid } from '@astrojs/starlight/components'; import { Card, CardGrid } from '@astrojs/starlight/components';
<CardGrid stagger> <CardGrid stagger>

View file

@ -24,7 +24,7 @@ hero:
icon: external icon: external
link: https://github.com/mearashadowfax/ScrewFast link: https://github.com/mearashadowfax/ScrewFast
--- ---
import "../../../styles/starlight_main.css"; import "@styles/starlight_main.css";
import { Card, CardGrid } from '@astrojs/starlight/components'; import { Card, CardGrid } from '@astrojs/starlight/components';
<CardGrid stagger> <CardGrid stagger>

View file

@ -24,7 +24,7 @@ hero:
icon: external icon: external
link: https://github.com/mearashadowfax/ScrewFast link: https://github.com/mearashadowfax/ScrewFast
--- ---
import "@/styles/starlight_main.css"; import "@styles/starlight_main.css";
import { Card, CardGrid } from '@astrojs/starlight/components'; import { Card, CardGrid } from '@astrojs/starlight/components';
<CardGrid stagger> <CardGrid stagger>

View file

@ -24,7 +24,7 @@ hero:
icon: external icon: external
link: https://github.com/mearashadowfax/ScrewFast link: https://github.com/mearashadowfax/ScrewFast
--- ---
import "../../../styles/starlight_main.css"; import "@styles/starlight_main.css";
import { Card, CardGrid } from '@astrojs/starlight/components'; import { Card, CardGrid } from '@astrojs/starlight/components';
<CardGrid stagger> <CardGrid stagger>

View file

@ -39,17 +39,8 @@ We set the language of the page to English and add classes for scrollbar and scr
document.documentElement.classList.remove("dark"); document.documentElement.classList.remove("dark");
} }
</script> </script>
<script is:inline src="/scripts/vendor/lenis/lenis.js"></script> <script>
<script is:inline> import "@scripts/lenisSmoothScroll.js";
// Script to handle Lenis library settings for smooth scrolling
const lenis = new Lenis();
function raf(time) {
lenis.raf(time);
requestAnimationFrame(raf);
}
requestAnimationFrame(raf);
</script> </script>
</head> </head>
<body <body
@ -67,7 +58,7 @@ We set the language of the page to English and add classes for scrollbar and scr
</div> </div>
<FooterSection /> <FooterSection />
<style> <style>
/* CSS rules for the page scrollbar and scrolling experience with lenis library */ /* CSS rules for the page scrollbar */
.scrollbar-hide::-webkit-scrollbar { .scrollbar-hide::-webkit-scrollbar {
display: none; display: none;
} }
@ -76,27 +67,6 @@ We set the language of the page to English and add classes for scrollbar and scr
-ms-overflow-style: none; -ms-overflow-style: none;
scrollbar-width: none; scrollbar-width: none;
} }
html.lenis,
html.lenis body {
height: auto;
}
.lenis.lenis-smooth {
scroll-behavior: auto !important;
}
.lenis.lenis-smooth [data-lenis-prevent] {
overscroll-behavior: contain;
}
.lenis.lenis-stopped {
overflow: hidden;
}
.lenis.lenis-scrolling iframe {
pointer-events: none;
}
</style> </style>
</body> </body>
</html> </html>

View file

@ -8,7 +8,8 @@
"@content/*": ["src/content/*"], "@content/*": ["src/content/*"],
"@data/*": ["src/data_files/*"], "@data/*": ["src/data_files/*"],
"@images/*": ["src/images/*"], "@images/*": ["src/images/*"],
"@styles/*": ["src/styles/*"], "@scripts/*": ["src/assets/scripts/*"],
"@styles/*": ["src/assets/styles/*"],
"@utils/*": ["src/utils/*"] "@utils/*": ["src/utils/*"]
}, },
} }