_sidenav.astro 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627
  1. ---
  2. import { convertPathToHtml } from "../../../utils/index.js"
  3. const { path, mainPage, page } = Astro.props
  4. const htmlPath = convertPathToHtml(path);
  5. // Smart path resolution: calculate relative path based on directory depth
  6. const pathname = Astro.url.pathname;
  7. const pathSegments = pathname.split('/').filter(segment => segment !== '');
  8. const depth = pathSegments.length > 0 ? pathSegments.length - 1 : 0;
  9. const deploymentPath = depth === 0 ? './' : '../'.repeat(depth);
  10. ---
  11. <!--begin::Sidebar-->
  12. <aside class="app-sidebar bg-body-secondary shadow" data-bs-theme="dark">
  13. <!--begin::Sidebar Brand-->
  14. <div class="sidebar-brand">
  15. <!--begin::Brand Link-->
  16. <a href={htmlPath + "/index.html"} class="brand-link">
  17. <!--begin::Brand Image-->
  18. <img
  19. src={deploymentPath + "assets/img/AdminLTELogo.png"}
  20. alt="AdminLTE Logo"
  21. class="brand-image opacity-75 shadow"
  22. />
  23. <!--end::Brand Image-->
  24. <!--begin::Brand Text-->
  25. <span class="brand-text fw-light">AdminLTE 4</span>
  26. <!--end::Brand Text-->
  27. </a>
  28. <!--end::Brand Link-->
  29. </div>
  30. <!--end::Sidebar Brand-->
  31. <!--begin::Sidebar Wrapper-->
  32. <div class="sidebar-wrapper">
  33. <nav class="mt-2">
  34. <!--begin::Sidebar Menu-->
  35. <ul
  36. class="nav sidebar-menu flex-column"
  37. data-lte-toggle="treeview"
  38. role="navigation"
  39. aria-label="Main navigation"
  40. data-accordion="false"
  41. id="navigation"
  42. >
  43. <li class:list={["nav-item", mainPage === "dashboard" && "menu-open"]}>
  44. <a
  45. href="#"
  46. class:list={["nav-link", mainPage === "dashboard" && "active"]}
  47. >
  48. <i class="nav-icon bi bi-speedometer"></i>
  49. <p>
  50. Dashboard
  51. <i class="nav-arrow bi bi-chevron-right"></i>
  52. </p>
  53. </a>
  54. <ul class="nav nav-treeview">
  55. <li class="nav-item">
  56. <a
  57. href={htmlPath + "/index.html"}
  58. class:list={["nav-link", page === "index" && "active"]}
  59. >
  60. <i class="nav-icon bi bi-circle"></i>
  61. <p>Dashboard v1</p>
  62. </a>
  63. </li>
  64. <li class="nav-item">
  65. <a
  66. href={htmlPath + "/index2.html"}
  67. class:list={["nav-link", page === "index2" && "active"]}
  68. >
  69. <i class="nav-icon bi bi-circle"></i>
  70. <p>Dashboard v2</p>
  71. </a>
  72. </li>
  73. <li class="nav-item">
  74. <a
  75. href={htmlPath + "/index3.html"}
  76. class:list={["nav-link", page === "index3" && "active"]}
  77. >
  78. <i class="nav-icon bi bi-circle"></i>
  79. <p>Dashboard v3</p>
  80. </a>
  81. </li>
  82. </ul>
  83. </li>
  84. <li class="nav-item">
  85. <a
  86. href={htmlPath + "/generate/theme.html"}
  87. class:list={["nav-link", page === "theme-generate" && "active"]}
  88. >
  89. <i class="nav-icon bi bi-palette"></i>
  90. <p>Theme Generate</p>
  91. </a>
  92. </li>
  93. <li class:list={["nav-item", mainPage === "widgets" && "menu-open"]}>
  94. <a
  95. href="#"
  96. class:list={["nav-link", mainPage === "widgets" && "active"]}
  97. >
  98. <i class="nav-icon bi bi-box-seam-fill"></i>
  99. <p>
  100. Widgets
  101. <i class="nav-arrow bi bi-chevron-right"></i>
  102. </p>
  103. </a>
  104. <ul class="nav nav-treeview">
  105. <li class="nav-item">
  106. <a
  107. href={htmlPath + "/widgets/small-box.html"}
  108. class:list={["nav-link", page === "small-box" && "active"]}
  109. >
  110. <i class="nav-icon bi bi-circle"></i>
  111. <p>Small Box</p>
  112. </a>
  113. </li>
  114. <li class="nav-item">
  115. <a
  116. href={htmlPath + "/widgets/info-box.html"}
  117. class:list={["nav-link", page === "info-box" && "active"]}
  118. >
  119. <i class="nav-icon bi bi-circle"></i>
  120. <p>info Box</p>
  121. </a>
  122. </li>
  123. <li class="nav-item">
  124. <a
  125. href={htmlPath + "/widgets/cards.html"}
  126. class:list={["nav-link", page === "cards" && "active"]}
  127. >
  128. <i class="nav-icon bi bi-circle"></i>
  129. <p>Cards</p>
  130. </a>
  131. </li>
  132. </ul>
  133. </li>
  134. <li class:list={["nav-item", mainPage === "layout" && "menu-open"]}>
  135. <a
  136. href="#"
  137. class:list={["nav-link", mainPage === "layout" && "active"]}
  138. >
  139. <i class="nav-icon bi bi-clipboard-fill"></i>
  140. <p>
  141. Layout Options
  142. <span class="nav-badge badge text-bg-secondary me-3"
  143. >7</span
  144. >
  145. <i class="nav-arrow bi bi-chevron-right"></i>
  146. </p>
  147. </a>
  148. <ul class="nav nav-treeview">
  149. <li class="nav-item">
  150. <a
  151. href={htmlPath + "/layout/unfixed-sidebar.html"}
  152. class:list={[
  153. "nav-link",
  154. page === "unfixed-sidebar" && "active"
  155. ]}
  156. >
  157. <i class="nav-icon bi bi-circle"></i>
  158. <p>Default Sidebar</p>
  159. </a>
  160. </li>
  161. <li class="nav-item">
  162. <a
  163. href={htmlPath + "/layout/fixed-sidebar.html"}
  164. class:list={["nav-link", page === "fixed-sidebar" && "active"]}
  165. >
  166. <i class="nav-icon bi bi-circle"></i>
  167. <p>Fixed Sidebar</p>
  168. </a>
  169. </li>
  170. <li class="nav-item">
  171. <a
  172. href={htmlPath + "/layout/fixed-header.html"}
  173. class:list={["nav-link", page === "fixed-header" && "active"]}
  174. >
  175. <i class="nav-icon bi bi-circle"></i>
  176. <p>Fixed Header</p>
  177. </a>
  178. </li>
  179. <li class="nav-item">
  180. <a
  181. href={htmlPath + "/layout/fixed-footer.html"}
  182. class:list={["nav-link", page === "fixed-footer" && "active"]}
  183. >
  184. <i class="nav-icon bi bi-circle"></i>
  185. <p>Fixed Footer</p>
  186. </a>
  187. </li>
  188. <li class="nav-item">
  189. <a
  190. href={htmlPath + "/layout/fixed-complete.html"}
  191. class:list={["nav-link", page === "fixed-complete" && "active"]}
  192. >
  193. <i class="nav-icon bi bi-circle"></i>
  194. <p>Fixed Complete</p>
  195. </a>
  196. </li>
  197. <li class="nav-item">
  198. <a
  199. href={htmlPath + "/layout/layout-custom-area.html"}
  200. class:list={["nav-link", page === "layout-custom-area" && "active"]}
  201. >
  202. <i class="nav-icon bi bi-circle"></i>
  203. <p>Layout <small>+ Custom Area </small></p>
  204. </a>
  205. </li>
  206. <li class="nav-item">
  207. <a
  208. href={htmlPath + "/layout/sidebar-mini.html"}
  209. class:list={["nav-link", page === "sidebar-mini" && "active"]}
  210. >
  211. <i class="nav-icon bi bi-circle"></i>
  212. <p>Sidebar Mini</p>
  213. </a>
  214. </li>
  215. <li class="nav-item">
  216. <a
  217. href={htmlPath + "/layout/collapsed-sidebar.html"}
  218. class:list={[
  219. "nav-link",
  220. page === "collapsed-sidebar" && "active"
  221. ]}
  222. >
  223. <i class="nav-icon bi bi-circle"></i>
  224. <p>Sidebar Mini <small>+ Collapsed</small></p>
  225. </a>
  226. </li>
  227. <li class="nav-item">
  228. <a
  229. href={htmlPath + "/layout/collapsed-sidebar-without-hover.html"}
  230. class:list={[
  231. "nav-link",
  232. page === "collapsed-sidebar-without-hover" && "active",
  233. ]}
  234. >
  235. <i class="nav-icon bi bi-circle"></i>
  236. <p>Sidebar Mini <small>+ Collapsed + No Hover</small></p>
  237. </a>
  238. </li>
  239. <li class="nav-item">
  240. <a
  241. href={htmlPath + "/layout/logo-switch.html"}
  242. class:list={["nav-link", page === "logo-switch" && "active"]}
  243. >
  244. <i class="nav-icon bi bi-circle"></i>
  245. <p>Sidebar Mini <small>+ Logo Switch</small></p>
  246. </a>
  247. </li>
  248. <li class="nav-item">
  249. <a
  250. href={htmlPath + "/layout/layout-rtl.html"}
  251. class:list={["nav-link", page === "layout-rtl" && "active"]}
  252. >
  253. <i class="nav-icon bi bi-circle"></i>
  254. <p>Layout RTL</p>
  255. </a>
  256. </li>
  257. </ul>
  258. </li>
  259. <li
  260. class:list={["nav-item", mainPage === "ui-elements" && "menu-open"]}
  261. >
  262. <a
  263. href="#"
  264. class:list={["nav-link", mainPage === "ui-elements" && "active"]}
  265. >
  266. <i class="nav-icon bi bi-tree-fill"></i>
  267. <p>
  268. UI Elements
  269. <i class="nav-arrow bi bi-chevron-right"></i>
  270. </p>
  271. </a>
  272. <ul class="nav nav-treeview">
  273. <li class="nav-item">
  274. <a
  275. href={htmlPath + "/UI/general.html"}
  276. class:list={["nav-link", page === "general" && "active"]}
  277. >
  278. <i class="nav-icon bi bi-circle"></i>
  279. <p>General</p>
  280. </a>
  281. </li>
  282. <li class="nav-item">
  283. <a
  284. href={htmlPath + "/UI/icons.html"}
  285. class:list={["nav-link", page === "icons" && "active"]}
  286. >
  287. <i class="nav-icon bi bi-circle"></i>
  288. <p>Icons</p>
  289. </a>
  290. </li>
  291. <li class="nav-item">
  292. <a
  293. href={htmlPath + "/UI/timeline.html"}
  294. class:list={["nav-link", page === "timeline" && "active"]}
  295. >
  296. <i class="nav-icon bi bi-circle"></i>
  297. <p>Timeline</p>
  298. </a>
  299. </li>
  300. </ul>
  301. </li>
  302. <li class:list={["nav-item", mainPage === "forms" && "menu-open"]}>
  303. <a
  304. href="#"
  305. class:list={["nav-link", mainPage === "forms" && "active"]}
  306. >
  307. <i class="nav-icon bi bi-pencil-square"></i>
  308. <p>
  309. Forms
  310. <i class="nav-arrow bi bi-chevron-right"></i>
  311. </p>
  312. </a>
  313. <ul class="nav nav-treeview">
  314. <li class="nav-item">
  315. <a
  316. href={htmlPath + "/forms/general.html"}
  317. class:list={["nav-link", page === "general" && "active"]}
  318. >
  319. <i class="nav-icon bi bi-circle"></i>
  320. <p>General Elements</p>
  321. </a>
  322. </li>
  323. </ul>
  324. </li>
  325. <li class:list={["nav-item", mainPage === "tables" && "menu-open"]}>
  326. <a
  327. href="#"
  328. class:list={["nav-link", mainPage === "tables" && "active"]}
  329. >
  330. <i class="nav-icon bi bi-table"></i>
  331. <p>
  332. Tables
  333. <i class="nav-arrow bi bi-chevron-right"></i>
  334. </p>
  335. </a>
  336. <ul class="nav nav-treeview">
  337. <li class="nav-item">
  338. <a
  339. href={htmlPath + "/tables/simple.html"}
  340. class:list={["nav-link", page === "simple" && "active"]}
  341. >
  342. <i class="nav-icon bi bi-circle"></i>
  343. <p>Simple Tables</p>
  344. </a>
  345. </li>
  346. </ul>
  347. </li>
  348. <li class="nav-header">EXAMPLES</li>
  349. <li class="nav-item">
  350. <a href="#" class="nav-link">
  351. <i class="nav-icon bi bi-box-arrow-in-right"></i>
  352. <p>
  353. Auth
  354. <i class="nav-arrow bi bi-chevron-right"></i>
  355. </p>
  356. </a>
  357. <ul class="nav nav-treeview">
  358. <li class="nav-item">
  359. <a href="#" class="nav-link">
  360. <i class="nav-icon bi bi-box-arrow-in-right"></i>
  361. <p>
  362. Version 1
  363. <i class="nav-arrow bi bi-chevron-right"></i>
  364. </p>
  365. </a>
  366. <ul class="nav nav-treeview">
  367. <li class="nav-item">
  368. <a href={htmlPath + "/examples/login.html"} class="nav-link">
  369. <i class="nav-icon bi bi-circle"></i>
  370. <p>Login</p>
  371. </a>
  372. </li>
  373. <li class="nav-item">
  374. <a href={htmlPath + "/examples/register.html"} class="nav-link">
  375. <i class="nav-icon bi bi-circle"></i>
  376. <p>Register</p>
  377. </a>
  378. </li>
  379. </ul>
  380. </li>
  381. <li class="nav-item">
  382. <a href="#" class="nav-link">
  383. <i class="nav-icon bi bi-box-arrow-in-right"></i>
  384. <p>
  385. Version 2
  386. <i class="nav-arrow bi bi-chevron-right"></i>
  387. </p>
  388. </a>
  389. <ul class="nav nav-treeview">
  390. <li class="nav-item">
  391. <a href={htmlPath + "/examples/login-v2.html"} class="nav-link">
  392. <i class="nav-icon bi bi-circle"></i>
  393. <p>Login</p>
  394. </a>
  395. </li>
  396. <li class="nav-item">
  397. <a href={htmlPath + "/examples/register-v2.html"} class="nav-link">
  398. <i class="nav-icon bi bi-circle"></i>
  399. <p>Register</p>
  400. </a>
  401. </li>
  402. </ul>
  403. </li>
  404. <li class="nav-item">
  405. <a href={htmlPath + "/examples/lockscreen.html"} class="nav-link">
  406. <i class="nav-icon bi bi-circle"></i>
  407. <p>Lockscreen</p>
  408. </a>
  409. </li>
  410. </ul>
  411. </li>
  412. <li class="nav-header">DOCUMENTATIONS</li>
  413. <li class="nav-item">
  414. <a
  415. href={htmlPath + "/docs/introduction.html"}
  416. class:list={["nav-link", page === "introduction" && "active"]}
  417. >
  418. <i class="nav-icon bi bi-download"></i>
  419. <p>Installation</p>
  420. </a>
  421. </li>
  422. <li class="nav-item">
  423. <a
  424. href={htmlPath + "/docs/layout.html"}
  425. class:list={["nav-link", page === "layout" && "active"]}
  426. >
  427. <i class="nav-icon bi bi-grip-horizontal"></i>
  428. <p>Layout</p>
  429. </a>
  430. </li>
  431. <li class="nav-item">
  432. <a
  433. href={htmlPath + "/docs/color-mode.html"}
  434. class:list={["nav-link", page === "color-mode" && "active"]}
  435. >
  436. <i class="nav-icon bi bi-star-half"></i>
  437. <p>Color Mode</p>
  438. </a>
  439. </li>
  440. <li class:list={["nav-item", mainPage === "components" && "menu-open"]}>
  441. <a
  442. href="#"
  443. class:list={["nav-link", mainPage === "components" && "active"]}
  444. >
  445. <i class="nav-icon bi bi-ui-checks-grid"></i>
  446. <p>
  447. Components
  448. <i class="nav-arrow bi bi-chevron-right"></i>
  449. </p>
  450. </a>
  451. <ul class="nav nav-treeview">
  452. <li class="nav-item">
  453. <a
  454. href={htmlPath + "/docs/components/main-header.html"}
  455. class:list={["nav-link", page === "main-header" && "active"]}
  456. >
  457. <i class="nav-icon bi bi-circle"></i>
  458. <p>Main Header</p>
  459. </a>
  460. </li>
  461. <li class="nav-item">
  462. <a
  463. href={htmlPath + "/docs/components/main-sidebar.html"}
  464. class:list={["nav-link", page === "main-sidebar" && "active"]}
  465. >
  466. <i class="nav-icon bi bi-circle"></i>
  467. <p>Main Sidebar</p>
  468. </a>
  469. </li>
  470. </ul>
  471. </li>
  472. <li class:list={["nav-item", mainPage === "javascript" && "menu-open"]}>
  473. <a
  474. href="#"
  475. class:list={["nav-link", mainPage === "javascript" && "active"]}
  476. >
  477. <i class="nav-icon bi bi-filetype-js"></i>
  478. <p>
  479. Javascript
  480. <i class="nav-arrow bi bi-chevron-right"></i>
  481. </p>
  482. </a>
  483. <ul class="nav nav-treeview">
  484. <li class="nav-item">
  485. <a
  486. href={htmlPath + "/docs/javascript/treeview.html"}
  487. class:list={["nav-link", page === "treeview" && "active"]}
  488. >
  489. <i class="nav-icon bi bi-circle"></i>
  490. <p>Treeview</p>
  491. </a>
  492. </li>
  493. </ul>
  494. </li>
  495. <li class="nav-item">
  496. <a
  497. href={htmlPath + "/docs/browser-support.html"}
  498. class:list={["nav-link", page === "browser-support" && "active"]}
  499. >
  500. <i class="nav-icon bi bi-browser-edge"></i>
  501. <p>Browser Support</p>
  502. </a>
  503. </li>
  504. <li class="nav-item">
  505. <a
  506. href={htmlPath + "/docs/how-to-contribute.html"}
  507. class:list={["nav-link", page === "how-to-contribute" && "active"]}
  508. >
  509. <i class="nav-icon bi bi-hand-thumbs-up-fill"></i>
  510. <p>How To Contribute</p>
  511. </a>
  512. </li>
  513. <li class="nav-item">
  514. <a
  515. href={htmlPath + "/docs/faq.html"}
  516. class:list={["nav-link", page === "faq" && "active"]}
  517. >
  518. <i class="nav-icon bi bi-question-circle-fill"></i>
  519. <p>FAQ</p>
  520. </a>
  521. </li>
  522. <li class="nav-item">
  523. <a
  524. href={htmlPath + "/docs/license.html"}
  525. class:list={["nav-link", page === "license" && "active"]}
  526. >
  527. <i class="nav-icon bi bi-patch-check-fill"></i>
  528. <p>License</p>
  529. </a>
  530. </li>
  531. <li class="nav-header">MULTI LEVEL EXAMPLE</li>
  532. <li class="nav-item">
  533. <a href="#" class="nav-link">
  534. <i class="nav-icon bi bi-circle-fill"></i>
  535. <p>Level 1</p>
  536. </a>
  537. </li>
  538. <li class="nav-item">
  539. <a href="#" class="nav-link">
  540. <i class="nav-icon bi bi-circle-fill"></i>
  541. <p>
  542. Level 1
  543. <i class="nav-arrow bi bi-chevron-right"></i>
  544. </p>
  545. </a>
  546. <ul class="nav nav-treeview">
  547. <li class="nav-item">
  548. <a href="#" class="nav-link">
  549. <i class="nav-icon bi bi-circle"></i>
  550. <p>Level 2</p>
  551. </a>
  552. </li>
  553. <li class="nav-item">
  554. <a href="#" class="nav-link">
  555. <i class="nav-icon bi bi-circle"></i>
  556. <p>
  557. Level 2
  558. <i class="nav-arrow bi bi-chevron-right"></i>
  559. </p>
  560. </a>
  561. <ul class="nav nav-treeview">
  562. <li class="nav-item">
  563. <a href="#" class="nav-link">
  564. <i class="nav-icon bi bi-record-circle-fill"></i>
  565. <p>Level 3</p>
  566. </a>
  567. </li>
  568. <li class="nav-item">
  569. <a href="#" class="nav-link">
  570. <i class="nav-icon bi bi-record-circle-fill"></i>
  571. <p>Level 3</p>
  572. </a>
  573. </li>
  574. <li class="nav-item">
  575. <a href="#" class="nav-link">
  576. <i class="nav-icon bi bi-record-circle-fill"></i>
  577. <p>Level 3</p>
  578. </a>
  579. </li>
  580. </ul>
  581. </li>
  582. <li class="nav-item">
  583. <a href="#" class="nav-link">
  584. <i class="nav-icon bi bi-circle"></i>
  585. <p>Level 2</p>
  586. </a>
  587. </li>
  588. </ul>
  589. </li>
  590. <li class="nav-item">
  591. <a href="#" class="nav-link">
  592. <i class="nav-icon bi bi-circle-fill"></i>
  593. <p>Level 1</p>
  594. </a>
  595. </li>
  596. <li class="nav-header">LABELS</li>
  597. <li class="nav-item">
  598. <a href="#" class="nav-link">
  599. <i class="nav-icon bi bi-circle text-danger"></i>
  600. <p class="text">Important</p>
  601. </a>
  602. </li>
  603. <li class="nav-item">
  604. <a href="#" class="nav-link">
  605. <i class="nav-icon bi bi-circle text-warning"></i>
  606. <p>Warning</p>
  607. </a>
  608. </li>
  609. <li class="nav-item">
  610. <a href="#" class="nav-link">
  611. <i class="nav-icon bi bi-circle text-info"></i>
  612. <p>Informational</p>
  613. </a>
  614. </li>
  615. </ul>
  616. <!--end::Sidebar Menu-->
  617. </nav>
  618. </div>
  619. <!--end::Sidebar Wrapper-->
  620. </aside>
  621. <!--end::Sidebar-->