create-arkajs 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/cli.js CHANGED
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-arkajs",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Scaffold tool untuk membuat project ARKAJS — mini framework client-side routing berbasis HTML/CSS/JS murni",
5
5
  "type": "module",
6
6
  "bin": {
@@ -19,8 +19,16 @@
19
19
  "starter",
20
20
  "vanilla-js"
21
21
  ],
22
- "author": "",
22
+ "author": "azqilana",
23
23
  "license": "MIT",
24
+ "repository": {
25
+ "type": "git",
26
+ "url": "git+https://github.com/azqilana/arkajs.git"
27
+ },
28
+ "homepage": "https://github.com/azqilana/arkajs#readme",
29
+ "bugs": {
30
+ "url": "https://github.com/azqilana/arkajs/issues"
31
+ },
24
32
  "engines": {
25
33
  "node": ">=14"
26
34
  }
@@ -143,3 +143,40 @@ main {
143
143
  .dok-list {
144
144
  padding-left: 20px;
145
145
  }
146
+
147
+ /* Sidebar */
148
+ .sidebar {
149
+ max-width: 960px;
150
+ margin: 0 auto;
151
+ padding: 0 20px 20px;
152
+ }
153
+
154
+ .sidebar h4 {
155
+ margin: 0 0 8px;
156
+ color: var(--fc);
157
+ }
158
+
159
+ .sidebar ul {
160
+ list-style: none;
161
+ padding: 0;
162
+ display: flex;
163
+ gap: 16px;
164
+ }
165
+
166
+ .sidebar a {
167
+ color: var(--muted);
168
+ text-decoration: none;
169
+ }
170
+
171
+ .sidebar a:hover {
172
+ color: var(--fc);
173
+ }
174
+
175
+ /* Footer */
176
+ .footer {
177
+ border-top: 1px solid var(--border);
178
+ text-align: center;
179
+ padding: 20px;
180
+ color: var(--muted);
181
+ font-size: 0.9rem;
182
+ }
@@ -0,0 +1,3 @@
1
+ <footer class="footer">
2
+ <p>&copy; 2026 ARKAJS. Dibangun dengan HTML, CSS, dan JavaScript murni.</p>
3
+ </footer>
@@ -1,12 +1,5 @@
1
1
  <header class="header">
2
2
  <div class="header__inner">
3
3
  <a href="/" class="logo">ARKA<span>JS</span></a>
4
- <nav class="navbar">
5
- <ul class="navbar__list">
6
- <li><a href="/">Beranda</a></li>
7
- <li><a href="/tentang">Tentang</a></li>
8
- <li><a href="/dokumentasi">Dokumentasi</a></li>
9
- </ul>
10
- </nav>
11
4
  </div>
12
5
  </header>
@@ -0,0 +1,7 @@
1
+ <nav class="navbar">
2
+ <ul class="navbar__list">
3
+ <li><a href="/">Beranda</a></li>
4
+ <li><a href="/tentang">Tentang</a></li>
5
+ <li><a href="/dokumentasi">Dokumentasi</a></li>
6
+ </ul>
7
+ </nav>
@@ -0,0 +1,8 @@
1
+ <aside class="sidebar">
2
+ <h4>Menu</h4>
3
+ <ul>
4
+ <li><a href="/">Beranda</a></li>
5
+ <li><a href="/tentang">Tentang</a></li>
6
+ <li><a href="/dokumentasi">Dokumentasi</a></li>
7
+ </ul>
8
+ </aside>
@@ -29,4 +29,17 @@ export default class kelolaRute {
29
29
  }
30
30
  }
31
31
  }
32
+ async cekStatis() {
33
+ try {
34
+ const resNavbar = await fetch("./rancangan/navbar.html");
35
+ const resSidebar = await fetch("./rancangan/sidebar.html");
36
+ const resFooter = await fetch("./rancangan/footer.html");
37
+ const navbar = await resNavbar.text();
38
+ const sidebar = await resSidebar.text();
39
+ const footer = await resFooter.text();
40
+ return { navbar, sidebar, footer };
41
+ } catch (error) {
42
+ console.log("Error:", error);
43
+ }
44
+ }
32
45
  }
@@ -5,6 +5,13 @@ const kR = new kelolaRute();
5
5
  const R= new Rakit();
6
6
 
7
7
  export default class kelolaNavigasi {
8
+ statisDimuat = false
9
+ async muatStatis(){
10
+ if(this.statisDimuat) return
11
+ const statis = await kR.cekStatis()
12
+ if(statis) R.ambilStatis(statis)
13
+ this.statisDimuat = true
14
+ }
8
15
  async kelolaKlik(e){
9
16
  const el = e.target.closest("a");
10
17
  const w_origin = window.location.origin;
@@ -18,6 +25,7 @@ export default class kelolaNavigasi {
18
25
  }
19
26
  }
20
27
  async kelolaW(){
28
+ await this.muatStatis()
21
29
  const hrefnya = window.location.pathname
22
30
  const hasil=await this.hasilCekRute(hrefnya)
23
31
  }
@@ -1,17 +1,33 @@
1
1
 
2
2
  export class Rakit {
3
+ constructor(){
4
+ this.navbarHtml = "";
5
+ this.statisDipasang = false;
6
+ }
3
7
  ambilHasil(hasil){
4
8
  this.pasangJudul(hasil.judul)
5
9
  this.pasangHeader(hasil.header)
6
10
  this.pasangCss(hasil.css)
7
11
  this.pasangMain(hasil.main)
8
12
  }
13
+ ambilStatis(statis){
14
+ this.navbarHtml = statis.navbar || "";
15
+ if(!this.statisDipasang){
16
+ this.pasangSidebar(statis.sidebar)
17
+ this.pasangFooter(statis.footer)
18
+ this.statisDipasang = true
19
+ }
20
+ }
9
21
  pasangJudul(judul){
10
22
  document.title=judul
11
23
  }
12
24
  pasangHeader(header){
13
25
  const Header=this.selectEl("#header")
14
26
  Header.innerHTML=header
27
+ if(this.navbarHtml){
28
+ const target = Header.querySelector(".header__inner") || Header
29
+ target.insertAdjacentHTML("beforeend", this.navbarHtml)
30
+ }
15
31
  }
16
32
  pasangMain(main){
17
33
  const Main =this.selectEl("#main")
@@ -21,7 +37,16 @@ export class Rakit {
21
37
  const Css=this.selectEl("#gaya")
22
38
  Css.innerHTML=css
23
39
  }
40
+ pasangSidebar(sidebar){
41
+ if(!sidebar) return
42
+ const Main=this.selectEl("#main")
43
+ Main.insertAdjacentHTML("afterend", sidebar)
44
+ }
45
+ pasangFooter(footer){
46
+ if(!footer) return
47
+ document.body.insertAdjacentHTML("beforeend", footer)
48
+ }
24
49
  selectEl(selector){
25
50
  return document.querySelector(selector)
26
51
  }
27
- }
52
+ }