@qoenutdevs/loading-screen
v1.0.1
Published
Premium animated loading screen built with Web Components and GSAP.
Maintainers
Readme
Ini sangat layak dijadikan package npm. Saya justru menyarankan jangan hanya export satu file index.js, tapi buat package yang rapi sehingga nanti bisa berkembang (misalnya nanti ada theme, mode baru, plugin, dsb).
Saya menyarankan struktur seperti ini.
@qoenutdevs/loading-screen
│
├── src/
│ ├── PremiumLoader.js
│ ├── styles/
│ └── assets/
│
├── dist/
│
├── demo/
│ ├── index.html
│ └── vite.config.js
│
├── package.json
├── README.md
├── LICENSE
├── index.js
└── .github/
└── workflows/
publish.ymlindex.js
Yang diexport cukup ini.
import "./src/PremiumLoader.js";
export { PremiumLoader } from "./src/PremiumLoader.js";Jadi ketika user menginstall package
npm i @qoenutdevs/loading-screencukup
import "@qoenutdevs/loading-screen";Custom element langsung ter-register.
atau
import { PremiumLoader } from "@qoenutdevs/loading-screen";package.json
Saya akan ubah menjadi seperti ini.
{
"name": "@qoenutdevs/loading-screen",
"version": "1.0.0",
"description": "Premium animated loading screen built with Web Components and GSAP.",
"type": "module",
"main": "index.js",
"module": "index.js",
"exports": {
".": "./index.js"
},
"files": [
"src",
"index.js",
"README.md",
"LICENSE"
],
"keywords": [
"loading",
"loader",
"spinner",
"webcomponent",
"gsap",
"animation",
"baccarat",
"dashboard"
],
"peerDependencies": {
"gsap": "^3.13.0"
},
"repository": {
"type": "git",
"url": "https://github.com/mkurniarmadhan/loading-screen.git"
},
"license": "MIT"
}Saya sengaja menjadikan gsap sebagai peerDependency supaya tidak bentrok dengan GSAP milik aplikasi pengguna.
README.md
Ini yang menurut saya akan membuat package-mu terlihat profesional.
@qoenutdevs/loading-screen
Premium animated loading screen built using Web Components and GSAP.
Perfect for
- Dashboard
- Admin Panel
- SaaS
- Casino
- Baccarat
- Game Lobby
- Landing Page
Installation
npm install @qoenutdevs/loading-screen gsapImport
import "@qoenutdevs/loading-screen";Basic Usage
<premium-loader></premium-loader>SaaS Mode
<premium-loader
mode="saas"
duration="4"
subtitle="Preparing Dashboard..."
></premium-loader>Baccarat Mode
<premium-loader
mode="baccarat"
duration="5"
subtitle="Dealer Ready"
></premium-loader>Logo
<premium-loader
logo-icon="/logo-icon.png"
logo-text="/logo-text.png"
></premium-loader>Hide Spinner
<premium-loader
show-spinner="false"
></premium-loader>Hide Progress
<premium-loader
show-progress="false"
></premium-loader>Custom Logo Size
<premium-loader
logo-icon-height="80px"
logo-text-height="50px"
></premium-loader>Available Attributes
| Attribute | Default | Description | | ---------------- | --------------------------- | ------------------ | | mode | saas | saas / baccarat | | duration | 4 | animation duration | | subtitle | Preparing your dashboard... | loading text | | logo-icon | - | icon image | | logo-text | - | text logo | | logo-icon-height | 64px | logo icon height | | logo-text-height | 38px | logo text height | | show-spinner | true | show spinner | | show-progress | true | show progress |
Events
The component emits an event when loading has finished.
window.addEventListener("premiumLoaderComplete", () => {
console.log("Loading Finished");
});Remove Programmatically
document.querySelector("premium-loader")?.remove();Framework Support
✅ HTML
✅ Laravel
✅ Livewire
✅ Vue
✅ React
✅ Vite
✅ NextJS
✅ Nuxt
Example
<body>
<premium-loader
mode="baccarat"
logo-icon="/logo.png"
logo-text="/brand.png"
duration="6"
subtitle="Loading Table..."
></premium-loader>
</body>Menurut saya masih bisa dibuat jauh lebih keren
Kalau kita mau menjadikan ini sebagai package open source yang benar-benar premium, saya akan melakukan refactor menjadi sekitar 1.500–2.000 baris dengan fitur-fitur seperti:
- 🎨 Theme System (
light,dark,glass,casino,neon) - 🎰 Banyak mode (
saas,baccarat,slots,roulette,poker) - 🖼️ Asset loader bawaan (preload gambar/font)
- 📦 API JavaScript (
PremiumLoader.show(),PremiumLoader.hide(),PremiumLoader.update()) - 📱 Responsif dan mobile-first
- 🧩 Dukungan plugin untuk animasi tambahan
- 🛠️ TypeScript (
index.d.ts) - 📚 Demo interaktif dengan Vite dan Storybook
- 🌐 Dokumentasi lengkap dan playground online
Dengan fondasi seperti itu, @qoenutdevs/loading-screen tidak hanya menjadi komponen loading sederhana, tetapi bisa berkembang menjadi library loading screen yang siap dipakai di berbagai framework dan proyek profesional. Saya rasa ini akan menjadi langkah yang bagus untuk membangun ekosistem package @qoenutdevs.
