recipes.html 109 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161
  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Common Patterns &amp; Recipes | AdminLTE 4</title>
  6. <!--begin::Accessibility Meta Tags-->
  7. <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
  8. <meta name="color-scheme" content="light dark" />
  9. <meta name="theme-color" content="#007bff" media="(prefers-color-scheme: light)" />
  10. <meta name="theme-color" content="#1a1a1a" media="(prefers-color-scheme: dark)" />
  11. <!--end::Accessibility Meta Tags-->
  12. <!--begin::Primary Meta Tags-->
  13. <meta name="title" content="Common Patterns &amp; Recipes | AdminLTE 4" />
  14. <meta name="author" content="ColorlibHQ" />
  15. <meta
  16. name="description"
  17. content="AdminLTE is a Free Bootstrap 5 Admin Dashboard, 30 example pages using Vanilla JS. Fully accessible with WCAG 2.1 AA compliance."
  18. />
  19. <meta
  20. name="keywords"
  21. content="bootstrap 5, bootstrap, bootstrap 5 admin dashboard, bootstrap 5 dashboard, bootstrap 5 charts, bootstrap 5 calendar, bootstrap 5 datepicker, bootstrap 5 tables, bootstrap 5 datatable, vanilla js datatable, colorlibhq, colorlibhq dashboard, colorlibhq admin dashboard, accessible admin panel, WCAG compliant"
  22. />
  23. <!--end::Primary Meta Tags-->
  24. <!--begin::Accessibility Features-->
  25. <!-- Skip links will be dynamically added by accessibility.js -->
  26. <meta name="supported-color-schemes" content="light dark" />
  27. <link rel="preload" href="../css/adminlte.css" as="style" />
  28. <!--end::Accessibility Features-->
  29. <!--begin::Fonts-->
  30. <link
  31. rel="stylesheet"
  32. href="https://cdn.jsdelivr.net/npm/@fontsource/source-sans-3@5.0.12/index.css"
  33. integrity="sha256-tXJfXfp6Ewt1ilPzLDtQnJV4hclT9XuaZUKyUvmyr+Q="
  34. crossorigin="anonymous"
  35. media="print"
  36. onload="this.media = 'all'"
  37. />
  38. <!--end::Fonts-->
  39. <!--begin::Third Party Plugin(OverlayScrollbars)-->
  40. <link
  41. rel="stylesheet"
  42. href="https://cdn.jsdelivr.net/npm/overlayscrollbars@2.11.0/styles/overlayscrollbars.min.css"
  43. crossorigin="anonymous"
  44. />
  45. <!--end::Third Party Plugin(OverlayScrollbars)-->
  46. <!--begin::Third Party Plugin(Bootstrap Icons)-->
  47. <link
  48. rel="stylesheet"
  49. href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.13.1/font/bootstrap-icons.min.css"
  50. crossorigin="anonymous"
  51. />
  52. <!--end::Third Party Plugin(Bootstrap Icons)-->
  53. <!--begin::Required Plugin(AdminLTE)-->
  54. <link rel="stylesheet" href="../css/adminlte.css" />
  55. <!--end::Required Plugin(AdminLTE)-->
  56. </head>
  57. <body class="layout-fixed sidebar-expand-lg bg-body-tertiary docs-page">
  58. <div class="app-wrapper">
  59. <!--begin::Header-->
  60. <nav class="app-header navbar navbar-expand bg-body">
  61. <!--begin::Container-->
  62. <div class="container-fluid">
  63. <!--begin::Start Navbar Links-->
  64. <ul class="navbar-nav">
  65. <li class="nav-item">
  66. <a class="nav-link" data-lte-toggle="sidebar" href="#" role="button">
  67. <i class="bi bi-list"></i>
  68. </a>
  69. </li>
  70. <li class="nav-item d-none d-md-block">
  71. <a href="../docs/introduction.html" class="nav-link">
  72. <i class="bi bi-book me-1" aria-hidden="true"></i>
  73. Documentation
  74. </a>
  75. </li>
  76. <li class="nav-item d-none d-md-block">
  77. <a href="../index.html" class="nav-link">
  78. <i class="bi bi-arrow-left me-1" aria-hidden="true"></i>
  79. Back to live preview
  80. </a>
  81. </li>
  82. </ul>
  83. <!--end::Start Navbar Links-->
  84. <!--begin::End Navbar Links-->
  85. <ul class="navbar-nav ms-auto">
  86. <!--begin::Navbar Search-->
  87. <li class="nav-item">
  88. <a class="nav-link" data-widget="navbar-search" href="#" role="button">
  89. <i class="bi bi-search"></i>
  90. </a>
  91. </li>
  92. <!--end::Navbar Search-->
  93. <!--begin::Messages Dropdown Menu-->
  94. <li class="nav-item dropdown">
  95. <a class="nav-link" data-bs-toggle="dropdown" href="#">
  96. <i class="bi bi-chat-text"></i>
  97. <span class="navbar-badge badge text-bg-danger">3</span>
  98. </a>
  99. <div class="dropdown-menu dropdown-menu-lg dropdown-menu-end">
  100. <a href="#" class="dropdown-item">
  101. <!--begin::Message-->
  102. <div class="d-flex">
  103. <div class="flex-shrink-0">
  104. <img
  105. src="../assets/img/user1-128x128.jpg"
  106. alt="User Avatar"
  107. class="img-size-50 rounded-circle me-3"
  108. />
  109. </div>
  110. <div class="flex-grow-1">
  111. <h3 class="dropdown-item-title">
  112. Brad Diesel
  113. <span class="float-end fs-7 text-danger"
  114. ><i class="bi bi-star-fill"></i
  115. ></span>
  116. </h3>
  117. <p class="fs-7">Call me whenever you can...</p>
  118. <p class="fs-7 text-secondary">
  119. <i class="bi bi-clock-fill me-1"></i> 4 Hours Ago
  120. </p>
  121. </div>
  122. </div>
  123. <!--end::Message-->
  124. </a>
  125. <div class="dropdown-divider"></div>
  126. <a href="#" class="dropdown-item">
  127. <!--begin::Message-->
  128. <div class="d-flex">
  129. <div class="flex-shrink-0">
  130. <img
  131. src="../assets/img/user8-128x128.jpg"
  132. alt="User Avatar"
  133. class="img-size-50 rounded-circle me-3"
  134. />
  135. </div>
  136. <div class="flex-grow-1">
  137. <h3 class="dropdown-item-title">
  138. John Pierce
  139. <span class="float-end fs-7 text-secondary">
  140. <i class="bi bi-star-fill"></i>
  141. </span>
  142. </h3>
  143. <p class="fs-7">I got your message bro</p>
  144. <p class="fs-7 text-secondary">
  145. <i class="bi bi-clock-fill me-1"></i> 4 Hours Ago
  146. </p>
  147. </div>
  148. </div>
  149. <!--end::Message-->
  150. </a>
  151. <div class="dropdown-divider"></div>
  152. <a href="#" class="dropdown-item">
  153. <!--begin::Message-->
  154. <div class="d-flex">
  155. <div class="flex-shrink-0">
  156. <img
  157. src="../assets/img/user3-128x128.jpg"
  158. alt="User Avatar"
  159. class="img-size-50 rounded-circle me-3"
  160. />
  161. </div>
  162. <div class="flex-grow-1">
  163. <h3 class="dropdown-item-title">
  164. Nora Silvester
  165. <span class="float-end fs-7 text-warning">
  166. <i class="bi bi-star-fill"></i>
  167. </span>
  168. </h3>
  169. <p class="fs-7">The subject goes here</p>
  170. <p class="fs-7 text-secondary">
  171. <i class="bi bi-clock-fill me-1"></i> 4 Hours Ago
  172. </p>
  173. </div>
  174. </div>
  175. <!--end::Message-->
  176. </a>
  177. <div class="dropdown-divider"></div>
  178. <a href="#" class="dropdown-item dropdown-footer">See All Messages</a>
  179. </div>
  180. </li>
  181. <!--end::Messages Dropdown Menu-->
  182. <!--begin::Notifications Dropdown Menu-->
  183. <li class="nav-item dropdown">
  184. <a class="nav-link" data-bs-toggle="dropdown" href="#">
  185. <i class="bi bi-bell-fill"></i>
  186. <span class="navbar-badge badge text-bg-warning">15</span>
  187. </a>
  188. <div class="dropdown-menu dropdown-menu-lg dropdown-menu-end">
  189. <span class="dropdown-item dropdown-header">15 Notifications</span>
  190. <div class="dropdown-divider"></div>
  191. <a href="#" class="dropdown-item">
  192. <i class="bi bi-envelope me-2"></i> 4 new messages
  193. <span class="float-end text-secondary fs-7">3 mins</span>
  194. </a>
  195. <div class="dropdown-divider"></div>
  196. <a href="#" class="dropdown-item">
  197. <i class="bi bi-people-fill me-2"></i> 8 friend requests
  198. <span class="float-end text-secondary fs-7">12 hours</span>
  199. </a>
  200. <div class="dropdown-divider"></div>
  201. <a href="#" class="dropdown-item">
  202. <i class="bi bi-file-earmark-fill me-2"></i> 3 new reports
  203. <span class="float-end text-secondary fs-7">2 days</span>
  204. </a>
  205. <div class="dropdown-divider"></div>
  206. <a href="#" class="dropdown-item dropdown-footer"> See All Notifications </a>
  207. </div>
  208. </li>
  209. <!--end::Notifications Dropdown Menu-->
  210. <!--begin::Fullscreen Toggle-->
  211. <li class="nav-item">
  212. <a class="nav-link" href="#" data-lte-toggle="fullscreen">
  213. <i data-lte-icon="maximize" class="bi bi-arrows-fullscreen"></i>
  214. <i data-lte-icon="minimize" class="bi bi-fullscreen-exit d-none"></i>
  215. </a>
  216. </li>
  217. <!--end::Fullscreen Toggle-->
  218. <!--begin::Color Mode Toggle (#6010)-->
  219. <li class="nav-item dropdown">
  220. <a
  221. class="nav-link"
  222. href="#"
  223. id="bd-theme"
  224. aria-label="Toggle color scheme"
  225. data-bs-toggle="dropdown"
  226. aria-expanded="false"
  227. >
  228. <i class="bi bi-sun-fill" data-lte-theme-icon="light"></i>
  229. <i class="bi bi-moon-fill d-none" data-lte-theme-icon="dark"></i>
  230. <i class="bi bi-circle-half d-none" data-lte-theme-icon="auto"></i>
  231. </a>
  232. <ul
  233. class="dropdown-menu dropdown-menu-end"
  234. aria-labelledby="bd-theme"
  235. style="--bs-dropdown-min-width: 8rem"
  236. >
  237. <li>
  238. <button
  239. type="button"
  240. class="dropdown-item d-flex align-items-center"
  241. data-bs-theme-value="light"
  242. aria-pressed="false"
  243. >
  244. <i class="bi bi-sun-fill me-2"></i>
  245. Light
  246. <i class="bi bi-check-lg ms-auto d-none"></i>
  247. </button>
  248. </li>
  249. <li>
  250. <button
  251. type="button"
  252. class="dropdown-item d-flex align-items-center"
  253. data-bs-theme-value="dark"
  254. aria-pressed="false"
  255. >
  256. <i class="bi bi-moon-fill me-2"></i>
  257. Dark
  258. <i class="bi bi-check-lg ms-auto d-none"></i>
  259. </button>
  260. </li>
  261. <li>
  262. <button
  263. type="button"
  264. class="dropdown-item d-flex align-items-center active"
  265. data-bs-theme-value="auto"
  266. aria-pressed="true"
  267. >
  268. <i class="bi bi-circle-half me-2"></i>
  269. Auto
  270. <i class="bi bi-check-lg ms-auto d-none"></i>
  271. </button>
  272. </li>
  273. </ul>
  274. </li>
  275. <!--end::Color Mode Toggle-->
  276. <!--begin::User Menu Dropdown-->
  277. <li class="nav-item dropdown user-menu">
  278. <a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
  279. <img
  280. src="../assets/img/user2-160x160.jpg"
  281. class="user-image rounded-circle shadow"
  282. alt="User Image"
  283. />
  284. <span class="d-none d-md-inline">Alexander Pierce</span>
  285. </a>
  286. <ul class="dropdown-menu dropdown-menu-lg dropdown-menu-end">
  287. <!--begin::User Image-->
  288. <li class="user-header text-bg-primary">
  289. <img
  290. src="../assets/img/user2-160x160.jpg"
  291. class="rounded-circle shadow"
  292. alt="User Image"
  293. />
  294. <p>
  295. Alexander Pierce - Web Developer
  296. <small>Member since Nov. 2023</small>
  297. </p>
  298. </li>
  299. <!--end::User Image-->
  300. <!--begin::Menu Body-->
  301. <li class="user-body">
  302. <!--begin::Row-->
  303. <div class="row">
  304. <div class="col-4 text-center">
  305. <a href="#">Followers</a>
  306. </div>
  307. <div class="col-4 text-center">
  308. <a href="#">Sales</a>
  309. </div>
  310. <div class="col-4 text-center">
  311. <a href="#">Friends</a>
  312. </div>
  313. </div>
  314. <!--end::Row-->
  315. </li>
  316. <!--end::Menu Body-->
  317. <!--begin::Menu Footer-->
  318. <li class="user-footer">
  319. <a href="#" class="btn btn-outline-secondary">Profile</a>
  320. <a href="#" class="btn btn-outline-danger float-end">Sign out</a>
  321. </li>
  322. <!--end::Menu Footer-->
  323. </ul>
  324. </li>
  325. <!--end::User Menu Dropdown-->
  326. </ul>
  327. <!--end::End Navbar Links-->
  328. </div>
  329. <!--end::Container-->
  330. </nav>
  331. <!--end::Header-->
  332. <!--begin::Sidebar (docs mode)-->
  333. <aside class="app-sidebar bg-body-secondary shadow" data-bs-theme="dark">
  334. <!--begin::Sidebar Brand-->
  335. <div class="sidebar-brand">
  336. <a href="../docs/introduction.html" class="brand-link">
  337. <img
  338. src="../assets/img/AdminLTELogo.png"
  339. alt="AdminLTE Logo"
  340. class="brand-image opacity-75 shadow"
  341. />
  342. <span class="brand-text fw-light">
  343. AdminLTE 4 <span class="opacity-75">&middot; Docs</span>
  344. </span>
  345. </a>
  346. </div>
  347. <!--end::Sidebar Brand-->
  348. <!--begin::Sidebar Wrapper-->
  349. <div class="sidebar-wrapper">
  350. <nav class="mt-2">
  351. <!--begin::Sidebar Menu-->
  352. <ul
  353. class="nav sidebar-menu flex-column"
  354. data-lte-toggle="treeview"
  355. role="navigation"
  356. aria-label="Documentation navigation"
  357. data-accordion="false"
  358. id="docs-navigation"
  359. >
  360. <li class="nav-header">START HERE</li>
  361. <li class="nav-item">
  362. <a href="../docs/introduction.html" class="nav-link">
  363. <i class="nav-icon bi bi-download"></i>
  364. <p>Installation</p>
  365. </a>
  366. </li>
  367. <li class="nav-item">
  368. <a href="../docs/getting-started.html" class="nav-link">
  369. <i class="nav-icon bi bi-rocket-takeoff"></i>
  370. <p>Getting Started</p>
  371. </a>
  372. </li>
  373. <li class="nav-header">FOUNDATIONS</li>
  374. <li class="nav-item">
  375. <a href="../docs/layout.html" class="nav-link">
  376. <i class="nav-icon bi bi-grip-horizontal"></i>
  377. <p>Layout Classes</p>
  378. </a>
  379. </li>
  380. <li class="nav-item">
  381. <a href="../docs/layout-blueprint.html" class="nav-link">
  382. <i class="nav-icon bi bi-diagram-3"></i>
  383. <p>Layout Blueprint</p>
  384. </a>
  385. </li>
  386. <li class="nav-item">
  387. <a href="../docs/customization.html" class="nav-link">
  388. <i class="nav-icon bi bi-palette"></i>
  389. <p>Customization</p>
  390. </a>
  391. </li>
  392. <li class="nav-item">
  393. <a href="../docs/color-mode.html" class="nav-link">
  394. <i class="nav-icon bi bi-star-half"></i>
  395. <p>Color Mode</p>
  396. </a>
  397. </li>
  398. <li class="nav-item">
  399. <a href="../docs/rtl.html" class="nav-link">
  400. <i class="nav-icon bi bi-text-paragraph"></i>
  401. <p>RTL Support</p>
  402. </a>
  403. </li>
  404. <li class="nav-header">BUILDING</li>
  405. <li class="nav-item">
  406. <a href="../docs/recipes.html" class="nav-link active">
  407. <i class="nav-icon bi bi-clipboard-check"></i>
  408. <p>Recipes</p>
  409. </a>
  410. </li>
  411. <li class="nav-item">
  412. <a href="#" class="nav-link">
  413. <i class="nav-icon bi bi-ui-checks-grid"></i>
  414. <p>
  415. Components
  416. <i class="nav-arrow bi bi-chevron-right"></i>
  417. </p>
  418. </a>
  419. <ul class="nav nav-treeview">
  420. <li class="nav-item">
  421. <a href="../docs/components/main-header.html" class="nav-link">
  422. <i class="nav-icon bi bi-circle"></i>
  423. <p>Main Header</p>
  424. </a>
  425. </li>
  426. <li class="nav-item">
  427. <a href="../docs/components/main-sidebar.html" class="nav-link">
  428. <i class="nav-icon bi bi-circle"></i>
  429. <p>Main Sidebar</p>
  430. </a>
  431. </li>
  432. </ul>
  433. </li>
  434. <li class="nav-item">
  435. <a href="#" class="nav-link">
  436. <i class="nav-icon bi bi-filetype-js"></i>
  437. <p>
  438. JavaScript Plugins
  439. <i class="nav-arrow bi bi-chevron-right"></i>
  440. </p>
  441. </a>
  442. <ul class="nav nav-treeview">
  443. <li class="nav-item">
  444. <a href="../docs/javascript/plugins-overview.html" class="nav-link">
  445. <i class="nav-icon bi bi-circle"></i>
  446. <p>Overview</p>
  447. </a>
  448. </li>
  449. <li class="nav-item">
  450. <a href="../docs/javascript/layout.html" class="nav-link">
  451. <i class="nav-icon bi bi-circle"></i>
  452. <p>Layout</p>
  453. </a>
  454. </li>
  455. <li class="nav-item">
  456. <a href="../docs/javascript/pushmenu.html" class="nav-link">
  457. <i class="nav-icon bi bi-circle"></i>
  458. <p>PushMenu</p>
  459. </a>
  460. </li>
  461. <li class="nav-item">
  462. <a href="../docs/javascript/treeview.html" class="nav-link">
  463. <i class="nav-icon bi bi-circle"></i>
  464. <p>Treeview</p>
  465. </a>
  466. </li>
  467. <li class="nav-item">
  468. <a href="../docs/javascript/card-widget.html" class="nav-link">
  469. <i class="nav-icon bi bi-circle"></i>
  470. <p>Card Widget</p>
  471. </a>
  472. </li>
  473. <li class="nav-item">
  474. <a href="../docs/javascript/direct-chat.html" class="nav-link">
  475. <i class="nav-icon bi bi-circle"></i>
  476. <p>Direct Chat</p>
  477. </a>
  478. </li>
  479. <li class="nav-item">
  480. <a href="../docs/javascript/fullscreen.html" class="nav-link">
  481. <i class="nav-icon bi bi-circle"></i>
  482. <p>Fullscreen</p>
  483. </a>
  484. </li>
  485. <li class="nav-item">
  486. <a href="../docs/javascript/accessibility.html" class="nav-link">
  487. <i class="nav-icon bi bi-circle"></i>
  488. <p>Accessibility</p>
  489. </a>
  490. </li>
  491. </ul>
  492. </li>
  493. <li class="nav-item">
  494. <a href="../docs/integrations.html" class="nav-link">
  495. <i class="nav-icon bi bi-puzzle"></i>
  496. <p>Integrations</p>
  497. </a>
  498. </li>
  499. <li class="nav-header">SHIPPING</li>
  500. <li class="nav-item">
  501. <a href="../docs/migration.html" class="nav-link">
  502. <i class="nav-icon bi bi-arrow-up-right-square"></i>
  503. <p>Migration from v3</p>
  504. </a>
  505. </li>
  506. <li class="nav-item">
  507. <a href="../docs/deployment.html" class="nav-link">
  508. <i class="nav-icon bi bi-cloud-upload"></i>
  509. <p>Deployment</p>
  510. </a>
  511. </li>
  512. <li class="nav-item">
  513. <a href="../docs/browser-support.html" class="nav-link">
  514. <i class="nav-icon bi bi-browser-chrome"></i>
  515. <p>Browser Support</p>
  516. </a>
  517. </li>
  518. <li class="nav-header">RESOURCES</li>
  519. <li class="nav-item">
  520. <a href="../docs/faq.html" class="nav-link">
  521. <i class="nav-icon bi bi-question-circle"></i>
  522. <p>FAQ</p>
  523. </a>
  524. </li>
  525. <li class="nav-item">
  526. <a href="../docs/how-to-contribute.html" class="nav-link">
  527. <i class="nav-icon bi bi-people"></i>
  528. <p>Contributing</p>
  529. </a>
  530. </li>
  531. <li class="nav-item">
  532. <a href="../docs/license.html" class="nav-link">
  533. <i class="nav-icon bi bi-patch-check"></i>
  534. <p>License</p>
  535. </a>
  536. </li>
  537. <li class="nav-item">
  538. <a
  539. href="https://github.com/ColorlibHQ/AdminLTE"
  540. target="_blank"
  541. rel="noopener"
  542. class="nav-link"
  543. >
  544. <i class="nav-icon bi bi-github"></i>
  545. <p>
  546. GitHub
  547. <i class="bi bi-box-arrow-up-right ms-1" aria-hidden="true"></i>
  548. </p>
  549. </a>
  550. </li>
  551. </ul>
  552. <!--end::Sidebar Menu-->
  553. <!-- Back to preview CTA (bottom of sidebar) -->
  554. <div class="p-3 mt-3 border-top border-secondary border-opacity-25">
  555. <a
  556. href="../index.html"
  557. class="btn btn-sm btn-outline-light w-100 d-flex align-items-center justify-content-center gap-2"
  558. >
  559. <i class="bi bi-arrow-left" aria-hidden="true"></i>
  560. Back to live preview
  561. </a>
  562. </div>
  563. </nav>
  564. </div>
  565. <!--end::Sidebar Wrapper-->
  566. </aside>
  567. <!--end::Sidebar (docs mode)-->
  568. <main class="app-main">
  569. <div class="app-content-header">
  570. <div class="container-fluid">
  571. <div class="row">
  572. <div class="col-sm-6">
  573. <h3 class="mb-0">Common Patterns &amp; Recipes</h3>
  574. </div>
  575. <div class="col-sm-6">
  576. <ol class="breadcrumb float-sm-end">
  577. <li class="breadcrumb-item"><a href="#">Docs</a></li>
  578. <li class="breadcrumb-item active" aria-current="page">Recipes</li>
  579. </ol>
  580. </div>
  581. </div>
  582. </div>
  583. </div>
  584. <div class="app-content">
  585. <div class="container-fluid">
  586. <div class="row">
  587. <div class="col-12">
  588. <div class="card">
  589. <div class="card-body">
  590. <p>
  591. Copy-paste solutions for the patterns that show up in every admin dashboard.
  592. Each recipe assumes you’ve followed
  593. <a href="getting-started.html">Getting Started</a> and have a working AdminLTE
  594. page to build on.
  595. </p>
  596. <h5 id="a-multi-level-sidebar-with-icons-badges-and-headers">
  597. A multi-level sidebar with icons, badges, and headers
  598. </h5>
  599. <p>
  600. The demo dashboards use this exact pattern. Group sections with
  601. <code>.nav-header</code>, indicate item depth with nested
  602. <code>.nav-treeview</code> lists, and use <code>.navbar-badge</code> for
  603. counts.
  604. </p>
  605. <pre
  606. class="astro-code dark-plus"
  607. style="background-color: #1e1e1e; color: #d4d4d4; overflow-x: auto"
  608. tabindex="0"
  609. data-language="html"
  610. ><code><span class="line"><span style="color:#808080">&lt;</span><span style="color:#569CD6">aside</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;app-sidebar bg-body-secondary shadow&quot;</span><span style="color:#9CDCFE"> data-bs-theme</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;dark&quot;</span><span style="color:#808080">&gt;</span></span>
  611. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;sidebar-brand&quot;</span><span style="color:#808080">&gt;</span></span>
  612. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">a</span><span style="color:#9CDCFE"> href</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;/&quot;</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;brand-link&quot;</span><span style="color:#808080">&gt;</span></span>
  613. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">span</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;brand-text fw-light&quot;</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">My Dashboard</span><span style="color:#808080">&lt;/</span><span style="color:#569CD6">span</span><span style="color:#808080">&gt;</span></span>
  614. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">a</span><span style="color:#808080">&gt;</span></span>
  615. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  616. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;sidebar-wrapper&quot;</span><span style="color:#808080">&gt;</span></span>
  617. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">nav</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;mt-2&quot;</span><span style="color:#808080">&gt;</span></span>
  618. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">ul</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;nav sidebar-menu flex-column&quot;</span><span style="color:#9CDCFE"> data-lte-toggle</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;treeview&quot;</span><span style="color:#9CDCFE"> role</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;menu&quot;</span><span style="color:#808080">&gt;</span></span>
  619. <span class="line"></span>
  620. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">li</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;nav-header&quot;</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">MAIN</span><span style="color:#808080">&lt;/</span><span style="color:#569CD6">li</span><span style="color:#808080">&gt;</span></span>
  621. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">li</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;nav-item&quot;</span><span style="color:#808080">&gt;</span></span>
  622. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">a</span><span style="color:#9CDCFE"> href</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;/&quot;</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;nav-link active&quot;</span><span style="color:#808080">&gt;</span></span>
  623. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">i</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;nav-icon bi bi-speedometer&quot;</span><span style="color:#808080">&gt;&lt;/</span><span style="color:#569CD6">i</span><span style="color:#808080">&gt;</span></span>
  624. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">p</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">Dashboard</span><span style="color:#808080">&lt;/</span><span style="color:#569CD6">p</span><span style="color:#808080">&gt;</span></span>
  625. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">a</span><span style="color:#808080">&gt;</span></span>
  626. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">li</span><span style="color:#808080">&gt;</span></span>
  627. <span class="line"></span>
  628. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">li</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;nav-item&quot;</span><span style="color:#808080">&gt;</span></span>
  629. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">a</span><span style="color:#9CDCFE"> href</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;#&quot;</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;nav-link&quot;</span><span style="color:#808080">&gt;</span></span>
  630. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">i</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;nav-icon bi bi-folder&quot;</span><span style="color:#808080">&gt;&lt;/</span><span style="color:#569CD6">i</span><span style="color:#808080">&gt;</span></span>
  631. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">p</span><span style="color:#808080">&gt;</span></span>
  632. <span class="line"><span style="color:#D4D4D4"> Projects</span></span>
  633. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">span</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;badge text-bg-info ms-2&quot;</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">12</span><span style="color:#808080">&lt;/</span><span style="color:#569CD6">span</span><span style="color:#808080">&gt;</span></span>
  634. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">i</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;nav-arrow bi bi-chevron-right&quot;</span><span style="color:#808080">&gt;&lt;/</span><span style="color:#569CD6">i</span><span style="color:#808080">&gt;</span></span>
  635. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">p</span><span style="color:#808080">&gt;</span></span>
  636. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">a</span><span style="color:#808080">&gt;</span></span>
  637. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">ul</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;nav nav-treeview&quot;</span><span style="color:#808080">&gt;</span></span>
  638. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">li</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;nav-item&quot;</span><span style="color:#808080">&gt;</span></span>
  639. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">a</span><span style="color:#9CDCFE"> href</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;#&quot;</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;nav-link&quot;</span><span style="color:#808080">&gt;&lt;</span><span style="color:#569CD6">i</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;nav-icon bi bi-circle&quot;</span><span style="color:#808080">&gt;&lt;/</span><span style="color:#569CD6">i</span><span style="color:#808080">&gt;&lt;</span><span style="color:#569CD6">p</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">Active</span><span style="color:#808080">&lt;/</span><span style="color:#569CD6">p</span><span style="color:#808080">&gt;&lt;/</span><span style="color:#569CD6">a</span><span style="color:#808080">&gt;</span></span>
  640. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">li</span><span style="color:#808080">&gt;</span></span>
  641. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">li</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;nav-item&quot;</span><span style="color:#808080">&gt;</span></span>
  642. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">a</span><span style="color:#9CDCFE"> href</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;#&quot;</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;nav-link&quot;</span><span style="color:#808080">&gt;&lt;</span><span style="color:#569CD6">i</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;nav-icon bi bi-circle&quot;</span><span style="color:#808080">&gt;&lt;/</span><span style="color:#569CD6">i</span><span style="color:#808080">&gt;&lt;</span><span style="color:#569CD6">p</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">Archived</span><span style="color:#808080">&lt;/</span><span style="color:#569CD6">p</span><span style="color:#808080">&gt;&lt;/</span><span style="color:#569CD6">a</span><span style="color:#808080">&gt;</span></span>
  643. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">li</span><span style="color:#808080">&gt;</span></span>
  644. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">ul</span><span style="color:#808080">&gt;</span></span>
  645. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">li</span><span style="color:#808080">&gt;</span></span>
  646. <span class="line"></span>
  647. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">li</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;nav-header&quot;</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">REPORTS</span><span style="color:#808080">&lt;/</span><span style="color:#569CD6">li</span><span style="color:#808080">&gt;</span></span>
  648. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">li</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;nav-item&quot;</span><span style="color:#808080">&gt;</span></span>
  649. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">a</span><span style="color:#9CDCFE"> href</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;#&quot;</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;nav-link&quot;</span><span style="color:#808080">&gt;</span></span>
  650. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">i</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;nav-icon bi bi-bar-chart&quot;</span><span style="color:#808080">&gt;&lt;/</span><span style="color:#569CD6">i</span><span style="color:#808080">&gt;</span></span>
  651. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">p</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">Sales</span><span style="color:#808080">&lt;/</span><span style="color:#569CD6">p</span><span style="color:#808080">&gt;</span></span>
  652. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">span</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;badge text-bg-danger ms-auto&quot;</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">3</span><span style="color:#808080">&lt;/</span><span style="color:#569CD6">span</span><span style="color:#808080">&gt;</span></span>
  653. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">a</span><span style="color:#808080">&gt;</span></span>
  654. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">li</span><span style="color:#808080">&gt;</span></span>
  655. <span class="line"></span>
  656. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">ul</span><span style="color:#808080">&gt;</span></span>
  657. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">nav</span><span style="color:#808080">&gt;</span></span>
  658. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  659. <span class="line"><span style="color:#808080">&lt;/</span><span style="color:#569CD6">aside</span><span style="color:#808080">&gt;</span></span></code></pre>
  660. <p>
  661. To mark the current page as active, server-render the
  662. <code>.active</code> class onto the matching <code>.nav-link</code>. For SPA
  663. frameworks, add it on route change.
  664. </p>
  665. <h5 id="highlighting-the-active-sidebar-item-from-javascript">
  666. Highlighting the active sidebar item from JavaScript
  667. </h5>
  668. <p>
  669. If you’re rendering the sidebar once and want client-side route highlighting:
  670. </p>
  671. <pre
  672. class="astro-code dark-plus"
  673. style="background-color: #1e1e1e; color: #d4d4d4; overflow-x: auto"
  674. tabindex="0"
  675. data-language="js"
  676. ><code><span class="line"><span style="color:#569CD6">function</span><span style="color:#DCDCAA"> setActiveSidebarItem</span><span style="color:#D4D4D4">(</span><span style="color:#9CDCFE">href</span><span style="color:#D4D4D4">) {</span></span>
  677. <span class="line"><span style="color:#9CDCFE"> document</span><span style="color:#D4D4D4">.</span><span style="color:#DCDCAA">querySelectorAll</span><span style="color:#D4D4D4">(</span><span style="color:#CE9178">&quot;.sidebar-menu .nav-link&quot;</span><span style="color:#D4D4D4">).</span><span style="color:#DCDCAA">forEach</span><span style="color:#D4D4D4">((</span><span style="color:#9CDCFE">el</span><span style="color:#D4D4D4">) </span><span style="color:#569CD6">=&gt;</span><span style="color:#D4D4D4"> {</span></span>
  678. <span class="line"><span style="color:#9CDCFE"> el</span><span style="color:#D4D4D4">.</span><span style="color:#9CDCFE">classList</span><span style="color:#D4D4D4">.</span><span style="color:#DCDCAA">toggle</span><span style="color:#D4D4D4">(</span><span style="color:#CE9178">&quot;active&quot;</span><span style="color:#D4D4D4">, </span><span style="color:#9CDCFE">el</span><span style="color:#D4D4D4">.</span><span style="color:#DCDCAA">getAttribute</span><span style="color:#D4D4D4">(</span><span style="color:#CE9178">&quot;href&quot;</span><span style="color:#D4D4D4">) === </span><span style="color:#9CDCFE">href</span><span style="color:#D4D4D4">)</span></span>
  679. <span class="line"><span style="color:#D4D4D4"> })</span></span>
  680. <span class="line"><span style="color:#D4D4D4">}</span></span>
  681. <span class="line"></span>
  682. <span class="line"><span style="color:#6A9955">// Call on route change</span></span>
  683. <span class="line"><span style="color:#DCDCAA">setActiveSidebarItem</span><span style="color:#D4D4D4">(</span><span style="color:#9CDCFE">window</span><span style="color:#D4D4D4">.</span><span style="color:#9CDCFE">location</span><span style="color:#D4D4D4">.</span><span style="color:#9CDCFE">pathname</span><span style="color:#D4D4D4">)</span></span></code></pre>
  684. <h5 id="responsive-data-tables">Responsive data tables</h5>
  685. <p>
  686. Wrap a <code>&lt;table&gt;</code> in <code>.table-responsive</code> so it gets
  687. a horizontal scrollbar on narrow viewports instead of overflowing the card.
  688. </p>
  689. <pre
  690. class="astro-code dark-plus"
  691. style="background-color: #1e1e1e; color: #d4d4d4; overflow-x: auto"
  692. tabindex="0"
  693. data-language="html"
  694. ><code><span class="line"><span style="color:#808080">&lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;card&quot;</span><span style="color:#808080">&gt;</span></span>
  695. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;card-header&quot;</span><span style="color:#808080">&gt;</span></span>
  696. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">h3</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;card-title&quot;</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">Recent orders</span><span style="color:#808080">&lt;/</span><span style="color:#569CD6">h3</span><span style="color:#808080">&gt;</span></span>
  697. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  698. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;card-body p-0&quot;</span><span style="color:#808080">&gt;</span></span>
  699. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;table-responsive&quot;</span><span style="color:#808080">&gt;</span></span>
  700. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">table</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;table table-striped align-middle mb-0&quot;</span><span style="color:#808080">&gt;</span></span>
  701. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">thead</span><span style="color:#808080">&gt;</span></span>
  702. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">tr</span><span style="color:#808080">&gt;</span></span>
  703. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">th</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">#</span><span style="color:#808080">&lt;/</span><span style="color:#569CD6">th</span><span style="color:#808080">&gt;</span></span>
  704. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">th</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">Customer</span><span style="color:#808080">&lt;/</span><span style="color:#569CD6">th</span><span style="color:#808080">&gt;</span></span>
  705. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">th</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">Total</span><span style="color:#808080">&lt;/</span><span style="color:#569CD6">th</span><span style="color:#808080">&gt;</span></span>
  706. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">th</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">Status</span><span style="color:#808080">&lt;/</span><span style="color:#569CD6">th</span><span style="color:#808080">&gt;</span></span>
  707. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">th</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;text-end&quot;</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">Actions</span><span style="color:#808080">&lt;/</span><span style="color:#569CD6">th</span><span style="color:#808080">&gt;</span></span>
  708. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">tr</span><span style="color:#808080">&gt;</span></span>
  709. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">thead</span><span style="color:#808080">&gt;</span></span>
  710. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">tbody</span><span style="color:#808080">&gt;</span></span>
  711. <span class="line"><span style="color:#6A9955"> &lt;!-- rows --&gt;</span></span>
  712. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">tbody</span><span style="color:#808080">&gt;</span></span>
  713. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">table</span><span style="color:#808080">&gt;</span></span>
  714. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  715. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  716. <span class="line"><span style="color:#808080">&lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span></code></pre>
  717. <p>
  718. For interactive sorting/filtering/pagination, use
  719. <a href="integrations.html#tabulator">Tabulator</a> —
  720. <code>tables/data.html</code> in the demo has a full example.
  721. </p>
  722. <h5 id="a-user-dropdown-in-the-topbar">A user dropdown in the topbar</h5>
  723. <pre
  724. class="astro-code dark-plus"
  725. style="background-color: #1e1e1e; color: #d4d4d4; overflow-x: auto"
  726. tabindex="0"
  727. data-language="html"
  728. ><code><span class="line"><span style="color:#808080">&lt;</span><span style="color:#569CD6">li</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;nav-item dropdown user-menu&quot;</span><span style="color:#808080">&gt;</span></span>
  729. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">a</span><span style="color:#9CDCFE"> href</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;#&quot;</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;nav-link dropdown-toggle&quot;</span><span style="color:#9CDCFE"> data-bs-toggle</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;dropdown&quot;</span><span style="color:#808080">&gt;</span></span>
  730. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">span</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;d-none d-md-inline me-1&quot;</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">Jane Doe</span><span style="color:#808080">&lt;/</span><span style="color:#569CD6">span</span><span style="color:#808080">&gt;</span></span>
  731. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">i</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;bi bi-person-circle fs-5&quot;</span><span style="color:#808080">&gt;&lt;/</span><span style="color:#569CD6">i</span><span style="color:#808080">&gt;</span></span>
  732. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">a</span><span style="color:#808080">&gt;</span></span>
  733. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">ul</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;dropdown-menu dropdown-menu-end&quot;</span><span style="color:#808080">&gt;</span></span>
  734. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">li</span><span style="color:#808080">&gt;</span></span>
  735. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">a</span><span style="color:#9CDCFE"> href</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;/profile&quot;</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;dropdown-item&quot;</span><span style="color:#808080">&gt;</span></span>
  736. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">i</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;bi bi-person me-2&quot;</span><span style="color:#808080">&gt;&lt;/</span><span style="color:#569CD6">i</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">Profile</span></span>
  737. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">a</span><span style="color:#808080">&gt;</span></span>
  738. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">li</span><span style="color:#808080">&gt;</span></span>
  739. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">li</span><span style="color:#808080">&gt;</span></span>
  740. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">a</span><span style="color:#9CDCFE"> href</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;/settings&quot;</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;dropdown-item&quot;</span><span style="color:#808080">&gt;</span></span>
  741. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">i</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;bi bi-gear me-2&quot;</span><span style="color:#808080">&gt;&lt;/</span><span style="color:#569CD6">i</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">Settings</span></span>
  742. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">a</span><span style="color:#808080">&gt;</span></span>
  743. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">li</span><span style="color:#808080">&gt;</span></span>
  744. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">li</span><span style="color:#808080">&gt;&lt;</span><span style="color:#569CD6">hr</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;dropdown-divider&quot;</span><span style="color:#808080">&gt;&lt;/</span><span style="color:#569CD6">li</span><span style="color:#808080">&gt;</span></span>
  745. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">li</span><span style="color:#808080">&gt;</span></span>
  746. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">a</span><span style="color:#9CDCFE"> href</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;/logout&quot;</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;dropdown-item text-danger&quot;</span><span style="color:#808080">&gt;</span></span>
  747. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">i</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;bi bi-box-arrow-right me-2&quot;</span><span style="color:#808080">&gt;&lt;/</span><span style="color:#569CD6">i</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">Sign out</span></span>
  748. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">a</span><span style="color:#808080">&gt;</span></span>
  749. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">li</span><span style="color:#808080">&gt;</span></span>
  750. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">ul</span><span style="color:#808080">&gt;</span></span>
  751. <span class="line"><span style="color:#808080">&lt;/</span><span style="color:#569CD6">li</span><span style="color:#808080">&gt;</span></span></code></pre>
  752. <p>
  753. Put this inside the
  754. <code>&lt;ul class=&quot;navbar-nav ms-auto&quot;&gt;</code> in
  755. <code>.app-header</code>.
  756. </p>
  757. <h5 id="a-kpi-card-small-box">A KPI card (small-box)</h5>
  758. <p>The bright-coloured stat boxes at the top of most dashboards:</p>
  759. <pre
  760. class="astro-code dark-plus"
  761. style="background-color: #1e1e1e; color: #d4d4d4; overflow-x: auto"
  762. tabindex="0"
  763. data-language="html"
  764. ><code><span class="line"><span style="color:#808080">&lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;row g-3&quot;</span><span style="color:#808080">&gt;</span></span>
  765. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;col-lg-3 col-6&quot;</span><span style="color:#808080">&gt;</span></span>
  766. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;small-box text-bg-primary&quot;</span><span style="color:#808080">&gt;</span></span>
  767. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;inner&quot;</span><span style="color:#808080">&gt;</span></span>
  768. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">h3</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">150</span><span style="color:#808080">&lt;/</span><span style="color:#569CD6">h3</span><span style="color:#808080">&gt;</span></span>
  769. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">p</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">New orders</span><span style="color:#808080">&lt;/</span><span style="color:#569CD6">p</span><span style="color:#808080">&gt;</span></span>
  770. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  771. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">i</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;bi bi-cart small-box-icon&quot;</span><span style="color:#9CDCFE"> aria-hidden</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;true&quot;</span><span style="color:#808080">&gt;&lt;/</span><span style="color:#569CD6">i</span><span style="color:#808080">&gt;</span></span>
  772. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">a</span><span style="color:#9CDCFE"> href</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;#&quot;</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;small-box-footer link-light&quot;</span><span style="color:#808080">&gt;</span></span>
  773. <span class="line"><span style="color:#D4D4D4"> More info </span><span style="color:#808080">&lt;</span><span style="color:#569CD6">i</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;bi bi-arrow-right&quot;</span><span style="color:#808080">&gt;&lt;/</span><span style="color:#569CD6">i</span><span style="color:#808080">&gt;</span></span>
  774. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">a</span><span style="color:#808080">&gt;</span></span>
  775. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  776. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  777. <span class="line"><span style="color:#6A9955"> &lt;!-- repeat 3 more times with different values + colours --&gt;</span></span>
  778. <span class="line"><span style="color:#808080">&lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span></code></pre>
  779. <p>
  780. Swap <code>text-bg-primary</code> for <code>text-bg-success</code>,
  781. <code>text-bg-warning</code>, <code>text-bg-danger</code>, etc.
  782. </p>
  783. <h5 id="a-breadcrumb--page-title-row">A breadcrumb + page-title row</h5>
  784. <p>
  785. This is the standard <code>.app-content-header</code> pattern used across
  786. every demo page:
  787. </p>
  788. <pre
  789. class="astro-code dark-plus"
  790. style="background-color: #1e1e1e; color: #d4d4d4; overflow-x: auto"
  791. tabindex="0"
  792. data-language="html"
  793. ><code><span class="line"><span style="color:#808080">&lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;app-content-header&quot;</span><span style="color:#808080">&gt;</span></span>
  794. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;container-fluid&quot;</span><span style="color:#808080">&gt;</span></span>
  795. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;row&quot;</span><span style="color:#808080">&gt;</span></span>
  796. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;col-sm-6&quot;</span><span style="color:#808080">&gt;</span></span>
  797. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">h3</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;mb-0&quot;</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">Page Title</span><span style="color:#808080">&lt;/</span><span style="color:#569CD6">h3</span><span style="color:#808080">&gt;</span></span>
  798. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  799. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;col-sm-6&quot;</span><span style="color:#808080">&gt;</span></span>
  800. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">ol</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;breadcrumb float-sm-end&quot;</span><span style="color:#808080">&gt;</span></span>
  801. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">li</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;breadcrumb-item&quot;</span><span style="color:#808080">&gt;&lt;</span><span style="color:#569CD6">a</span><span style="color:#9CDCFE"> href</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;/&quot;</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">Home</span><span style="color:#808080">&lt;/</span><span style="color:#569CD6">a</span><span style="color:#808080">&gt;&lt;/</span><span style="color:#569CD6">li</span><span style="color:#808080">&gt;</span></span>
  802. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">li</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;breadcrumb-item&quot;</span><span style="color:#808080">&gt;&lt;</span><span style="color:#569CD6">a</span><span style="color:#9CDCFE"> href</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;/section&quot;</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">Section</span><span style="color:#808080">&lt;/</span><span style="color:#569CD6">a</span><span style="color:#808080">&gt;&lt;/</span><span style="color:#569CD6">li</span><span style="color:#808080">&gt;</span></span>
  803. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">li</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;breadcrumb-item active&quot;</span><span style="color:#9CDCFE"> aria-current</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;page&quot;</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">Current page</span><span style="color:#808080">&lt;/</span><span style="color:#569CD6">li</span><span style="color:#808080">&gt;</span></span>
  804. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">ol</span><span style="color:#808080">&gt;</span></span>
  805. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  806. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  807. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  808. <span class="line"><span style="color:#808080">&lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span></code></pre>
  809. <h5 id="a-timeline">A timeline</h5>
  810. <p>For activity feeds, audit logs, or roadmap views:</p>
  811. <pre
  812. class="astro-code dark-plus"
  813. style="background-color: #1e1e1e; color: #d4d4d4; overflow-x: auto"
  814. tabindex="0"
  815. data-language="html"
  816. ><code><span class="line"><span style="color:#808080">&lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;timeline&quot;</span><span style="color:#808080">&gt;</span></span>
  817. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  818. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">i</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;bi bi-envelope bg-info&quot;</span><span style="color:#9CDCFE"> aria-hidden</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;true&quot;</span><span style="color:#808080">&gt;&lt;/</span><span style="color:#569CD6">i</span><span style="color:#808080">&gt;</span></span>
  819. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;timeline-item&quot;</span><span style="color:#808080">&gt;</span></span>
  820. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">span</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;time&quot;</span><span style="color:#808080">&gt;&lt;</span><span style="color:#569CD6">i</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;bi bi-clock&quot;</span><span style="color:#808080">&gt;&lt;/</span><span style="color:#569CD6">i</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4"> 12:05</span><span style="color:#808080">&lt;/</span><span style="color:#569CD6">span</span><span style="color:#808080">&gt;</span></span>
  821. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">h3</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;timeline-header&quot;</span><span style="color:#808080">&gt;</span></span>
  822. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">a</span><span style="color:#9CDCFE"> href</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;#&quot;</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">Olivia</span><span style="color:#808080">&lt;/</span><span style="color:#569CD6">a</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4"> sent you a message</span></span>
  823. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">h3</span><span style="color:#808080">&gt;</span></span>
  824. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;timeline-body&quot;</span><span style="color:#808080">&gt;</span></span>
  825. <span class="line"><span style="color:#D4D4D4"> Hey, can we review the Q4 numbers tomorrow at 10?</span></span>
  826. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  827. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;timeline-footer&quot;</span><span style="color:#808080">&gt;</span></span>
  828. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">a</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;btn btn-primary btn-sm&quot;</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">Read more</span><span style="color:#808080">&lt;/</span><span style="color:#569CD6">a</span><span style="color:#808080">&gt;</span></span>
  829. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  830. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  831. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  832. <span class="line"><span style="color:#6A9955"> &lt;!-- repeat --&gt;</span></span>
  833. <span class="line"><span style="color:#808080">&lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span></code></pre>
  834. <p>
  835. The timeline component lives in <code>_timeline.scss</code> and has variants.
  836. See <a href="../UI/timeline.html"><code>/UI/timeline.html</code></a> for the
  837. full set.
  838. </p>
  839. <h5 id="a-direct-chat-widget">A direct-chat widget</h5>
  840. <p>
  841. The chat-style card used for live customer support, team chat, etc. Includes
  842. contact toggle and message bubbles.
  843. </p>
  844. <pre
  845. class="astro-code dark-plus"
  846. style="background-color: #1e1e1e; color: #d4d4d4; overflow-x: auto"
  847. tabindex="0"
  848. data-language="html"
  849. ><code><span class="line"><span style="color:#808080">&lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;card direct-chat direct-chat-primary&quot;</span><span style="color:#808080">&gt;</span></span>
  850. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;card-header&quot;</span><span style="color:#808080">&gt;</span></span>
  851. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">h3</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;card-title&quot;</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">Direct Chat</span><span style="color:#808080">&lt;/</span><span style="color:#569CD6">h3</span><span style="color:#808080">&gt;</span></span>
  852. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;card-tools&quot;</span><span style="color:#808080">&gt;</span></span>
  853. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">span</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;badge text-bg-primary&quot;</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">3 new</span><span style="color:#808080">&lt;/</span><span style="color:#569CD6">span</span><span style="color:#808080">&gt;</span></span>
  854. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">button</span><span style="color:#9CDCFE"> type</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;button&quot;</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;btn btn-tool&quot;</span><span style="color:#9CDCFE"> data-lte-toggle</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;chat-pane&quot;</span><span style="color:#9CDCFE"> title</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;Contacts&quot;</span><span style="color:#808080">&gt;</span></span>
  855. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">i</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;bi bi-people-fill&quot;</span><span style="color:#808080">&gt;&lt;/</span><span style="color:#569CD6">i</span><span style="color:#808080">&gt;</span></span>
  856. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">button</span><span style="color:#808080">&gt;</span></span>
  857. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  858. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  859. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;card-body&quot;</span><span style="color:#808080">&gt;</span></span>
  860. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;direct-chat-messages&quot;</span><span style="color:#808080">&gt;</span></span>
  861. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;direct-chat-msg&quot;</span><span style="color:#808080">&gt;</span></span>
  862. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;direct-chat-infos clearfix&quot;</span><span style="color:#808080">&gt;</span></span>
  863. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">span</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;direct-chat-name float-start&quot;</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">Olivia</span><span style="color:#808080">&lt;/</span><span style="color:#569CD6">span</span><span style="color:#808080">&gt;</span></span>
  864. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">span</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;direct-chat-timestamp float-end&quot;</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">12:05</span><span style="color:#808080">&lt;/</span><span style="color:#569CD6">span</span><span style="color:#808080">&gt;</span></span>
  865. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  866. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">img</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;direct-chat-img&quot;</span><span style="color:#9CDCFE"> src</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;/avatars/olivia.jpg&quot;</span><span style="color:#9CDCFE"> alt</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;&quot;</span><span style="color:#808080"> /&gt;</span></span>
  867. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;direct-chat-text&quot;</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">Hey, ready for the review?</span><span style="color:#808080">&lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  868. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  869. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;direct-chat-msg right&quot;</span><span style="color:#808080">&gt;</span></span>
  870. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;direct-chat-infos clearfix&quot;</span><span style="color:#808080">&gt;</span></span>
  871. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">span</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;direct-chat-name float-end&quot;</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">You</span><span style="color:#808080">&lt;/</span><span style="color:#569CD6">span</span><span style="color:#808080">&gt;</span></span>
  872. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">span</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;direct-chat-timestamp float-start&quot;</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">12:06</span><span style="color:#808080">&lt;/</span><span style="color:#569CD6">span</span><span style="color:#808080">&gt;</span></span>
  873. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  874. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">img</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;direct-chat-img&quot;</span><span style="color:#9CDCFE"> src</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;/avatars/me.jpg&quot;</span><span style="color:#9CDCFE"> alt</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;&quot;</span><span style="color:#808080"> /&gt;</span></span>
  875. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;direct-chat-text&quot;</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">Yes, on my way.</span><span style="color:#808080">&lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  876. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  877. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  878. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;direct-chat-contacts&quot;</span><span style="color:#808080">&gt;</span></span>
  879. <span class="line"><span style="color:#6A9955"> &lt;!-- contacts list, shown when chat-pane toggled --&gt;</span></span>
  880. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  881. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  882. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;card-footer&quot;</span><span style="color:#808080">&gt;</span></span>
  883. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">form</span><span style="color:#808080">&gt;</span></span>
  884. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;input-group&quot;</span><span style="color:#808080">&gt;</span></span>
  885. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">input</span><span style="color:#9CDCFE"> type</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;text&quot;</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;form-control&quot;</span><span style="color:#9CDCFE"> placeholder</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;Message…&quot;</span><span style="color:#808080"> /&gt;</span></span>
  886. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">button</span><span style="color:#9CDCFE"> type</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;submit&quot;</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;btn btn-primary&quot;</span><span style="color:#808080">&gt;</span></span>
  887. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">i</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;bi bi-send&quot;</span><span style="color:#808080">&gt;&lt;/</span><span style="color:#569CD6">i</span><span style="color:#808080">&gt;</span></span>
  888. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">button</span><span style="color:#808080">&gt;</span></span>
  889. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  890. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">form</span><span style="color:#808080">&gt;</span></span>
  891. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  892. <span class="line"><span style="color:#808080">&lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span></code></pre>
  893. <p>
  894. For a full-page chat application, see <code>/pages/chat.html</code> in the
  895. demo.
  896. </p>
  897. <h5 id="reacting-to-layoutsidebar-changes">
  898. Reacting to layout/sidebar changes
  899. </h5>
  900. <p>
  901. Listen for plugin events to coordinate with your own code — e.g., refit a
  902. chart when the sidebar collapses (so the chart re-measures its container
  903. width):
  904. </p>
  905. <pre
  906. class="astro-code dark-plus"
  907. style="background-color: #1e1e1e; color: #d4d4d4; overflow-x: auto"
  908. tabindex="0"
  909. data-language="js"
  910. ><code><span class="line"><span style="color:#569CD6">let</span><span style="color:#9CDCFE"> chart</span><span style="color:#D4D4D4"> = </span><span style="color:#6A9955">/* your ApexCharts instance */</span></span>
  911. <span class="line"></span>
  912. <span class="line"><span style="color:#9CDCFE">document</span><span style="color:#D4D4D4">.</span><span style="color:#DCDCAA">addEventListener</span><span style="color:#D4D4D4">(</span><span style="color:#CE9178">&quot;collapse.lte.push-menu&quot;</span><span style="color:#D4D4D4">, () </span><span style="color:#569CD6">=&gt;</span><span style="color:#D4D4D4"> {</span></span>
  913. <span class="line"><span style="color:#6A9955"> // wait for the transition to finish (~300ms by default)</span></span>
  914. <span class="line"><span style="color:#DCDCAA"> setTimeout</span><span style="color:#D4D4D4">(() </span><span style="color:#569CD6">=&gt;</span><span style="color:#9CDCFE"> chart</span><span style="color:#D4D4D4">.</span><span style="color:#DCDCAA">updateOptions</span><span style="color:#D4D4D4">({}), </span><span style="color:#B5CEA8">350</span><span style="color:#D4D4D4">)</span></span>
  915. <span class="line"><span style="color:#D4D4D4">})</span></span>
  916. <span class="line"></span>
  917. <span class="line"><span style="color:#9CDCFE">document</span><span style="color:#D4D4D4">.</span><span style="color:#DCDCAA">addEventListener</span><span style="color:#D4D4D4">(</span><span style="color:#CE9178">&quot;open.lte.push-menu&quot;</span><span style="color:#D4D4D4">, () </span><span style="color:#569CD6">=&gt;</span><span style="color:#D4D4D4"> {</span></span>
  918. <span class="line"><span style="color:#DCDCAA"> setTimeout</span><span style="color:#D4D4D4">(() </span><span style="color:#569CD6">=&gt;</span><span style="color:#9CDCFE"> chart</span><span style="color:#D4D4D4">.</span><span style="color:#DCDCAA">updateOptions</span><span style="color:#D4D4D4">({}), </span><span style="color:#B5CEA8">350</span><span style="color:#D4D4D4">)</span></span>
  919. <span class="line"><span style="color:#D4D4D4">})</span></span></code></pre>
  920. <p>
  921. The same pattern works for Tabulator, FullCalendar, and any other library that
  922. reads its container width on init.
  923. </p>
  924. <h5 id="loading-content-into-a-card-via-fetch">
  925. Loading content into a card via fetch
  926. </h5>
  927. <pre
  928. class="astro-code dark-plus"
  929. style="background-color: #1e1e1e; color: #d4d4d4; overflow-x: auto"
  930. tabindex="0"
  931. data-language="html"
  932. ><code><span class="line"><span style="color:#808080">&lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;card&quot;</span><span style="color:#9CDCFE"> id</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;users-card&quot;</span><span style="color:#808080">&gt;</span></span>
  933. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;card-header&quot;</span><span style="color:#808080">&gt;</span></span>
  934. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">h3</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;card-title&quot;</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">Users</span><span style="color:#808080">&lt;/</span><span style="color:#569CD6">h3</span><span style="color:#808080">&gt;</span></span>
  935. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;card-tools&quot;</span><span style="color:#808080">&gt;</span></span>
  936. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">span</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;spinner-border spinner-border-sm text-secondary d-none&quot;</span><span style="color:#9CDCFE"> id</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;users-spinner&quot;</span><span style="color:#9CDCFE"> role</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;status&quot;</span><span style="color:#808080">&gt;&lt;/</span><span style="color:#569CD6">span</span><span style="color:#808080">&gt;</span></span>
  937. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  938. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  939. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;card-body p-0&quot;</span><span style="color:#808080">&gt;</span></span>
  940. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> id</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;users-body&quot;</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;text-secondary p-3&quot;</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">Loading</span><span style="color:#569CD6">&amp;hellip;</span><span style="color:#808080">&lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  941. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  942. <span class="line"><span style="color:#808080">&lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  943. <span class="line"></span>
  944. <span class="line"><span style="color:#808080">&lt;</span><span style="color:#569CD6">script</span><span style="color:#808080">&gt;</span></span>
  945. <span class="line"><span style="color:#569CD6"> const</span><span style="color:#4FC1FF"> spinner</span><span style="color:#D4D4D4"> = </span><span style="color:#9CDCFE">document</span><span style="color:#D4D4D4">.</span><span style="color:#DCDCAA">getElementById</span><span style="color:#D4D4D4">(</span><span style="color:#CE9178">&quot;users-spinner&quot;</span><span style="color:#D4D4D4">)</span></span>
  946. <span class="line"><span style="color:#569CD6"> const</span><span style="color:#4FC1FF"> body</span><span style="color:#D4D4D4"> = </span><span style="color:#9CDCFE">document</span><span style="color:#D4D4D4">.</span><span style="color:#DCDCAA">getElementById</span><span style="color:#D4D4D4">(</span><span style="color:#CE9178">&quot;users-body&quot;</span><span style="color:#D4D4D4">)</span></span>
  947. <span class="line"></span>
  948. <span class="line"><span style="color:#9CDCFE"> spinner</span><span style="color:#D4D4D4">.</span><span style="color:#9CDCFE">classList</span><span style="color:#D4D4D4">.</span><span style="color:#DCDCAA">remove</span><span style="color:#D4D4D4">(</span><span style="color:#CE9178">&quot;d-none&quot;</span><span style="color:#D4D4D4">)</span></span>
  949. <span class="line"><span style="color:#DCDCAA"> fetch</span><span style="color:#D4D4D4">(</span><span style="color:#CE9178">&quot;/api/users&quot;</span><span style="color:#D4D4D4">)</span></span>
  950. <span class="line"><span style="color:#D4D4D4"> .</span><span style="color:#DCDCAA">then</span><span style="color:#D4D4D4">((</span><span style="color:#9CDCFE">r</span><span style="color:#D4D4D4">) </span><span style="color:#569CD6">=&gt;</span><span style="color:#9CDCFE"> r</span><span style="color:#D4D4D4">.</span><span style="color:#DCDCAA">text</span><span style="color:#D4D4D4">())</span></span>
  951. <span class="line"><span style="color:#D4D4D4"> .</span><span style="color:#DCDCAA">then</span><span style="color:#D4D4D4">((</span><span style="color:#9CDCFE">html</span><span style="color:#D4D4D4">) </span><span style="color:#569CD6">=&gt;</span><span style="color:#D4D4D4"> { </span><span style="color:#9CDCFE">body</span><span style="color:#D4D4D4">.</span><span style="color:#9CDCFE">innerHTML</span><span style="color:#D4D4D4"> = </span><span style="color:#9CDCFE">html</span><span style="color:#D4D4D4"> })</span></span>
  952. <span class="line"><span style="color:#D4D4D4"> .</span><span style="color:#DCDCAA">catch</span><span style="color:#D4D4D4">(() </span><span style="color:#569CD6">=&gt;</span><span style="color:#D4D4D4"> { </span><span style="color:#9CDCFE">body</span><span style="color:#D4D4D4">.</span><span style="color:#9CDCFE">textContent</span><span style="color:#D4D4D4"> = </span><span style="color:#CE9178">&quot;Failed to load.&quot;</span><span style="color:#D4D4D4"> })</span></span>
  953. <span class="line"><span style="color:#D4D4D4"> .</span><span style="color:#DCDCAA">finally</span><span style="color:#D4D4D4">(() </span><span style="color:#569CD6">=&gt;</span><span style="color:#9CDCFE"> spinner</span><span style="color:#D4D4D4">.</span><span style="color:#9CDCFE">classList</span><span style="color:#D4D4D4">.</span><span style="color:#DCDCAA">add</span><span style="color:#D4D4D4">(</span><span style="color:#CE9178">&quot;d-none&quot;</span><span style="color:#D4D4D4">))</span></span>
  954. <span class="line"><span style="color:#808080">&lt;/</span><span style="color:#569CD6">script</span><span style="color:#808080">&gt;</span></span></code></pre>
  955. <h5 id="confirming-destructive-actions-before-submission">
  956. Confirming destructive actions before submission
  957. </h5>
  958. <p>Bootstrap modal + a tiny confirmation pattern:</p>
  959. <pre
  960. class="astro-code dark-plus"
  961. style="background-color: #1e1e1e; color: #d4d4d4; overflow-x: auto"
  962. tabindex="0"
  963. data-language="html"
  964. ><code><span class="line"><span style="color:#808080">&lt;</span><span style="color:#569CD6">button</span><span style="color:#9CDCFE"> type</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;button&quot;</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;btn btn-danger&quot;</span><span style="color:#9CDCFE"> data-bs-toggle</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;modal&quot;</span><span style="color:#9CDCFE"> data-bs-target</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;#confirmDelete&quot;</span><span style="color:#808080">&gt;</span></span>
  965. <span class="line"><span style="color:#D4D4D4"> Delete account</span></span>
  966. <span class="line"><span style="color:#808080">&lt;/</span><span style="color:#569CD6">button</span><span style="color:#808080">&gt;</span></span>
  967. <span class="line"></span>
  968. <span class="line"><span style="color:#808080">&lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;modal fade&quot;</span><span style="color:#9CDCFE"> id</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;confirmDelete&quot;</span><span style="color:#9CDCFE"> tabindex</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;-1&quot;</span><span style="color:#808080">&gt;</span></span>
  969. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;modal-dialog&quot;</span><span style="color:#808080">&gt;</span></span>
  970. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;modal-content&quot;</span><span style="color:#808080">&gt;</span></span>
  971. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;modal-header&quot;</span><span style="color:#808080">&gt;</span></span>
  972. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">h5</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;modal-title&quot;</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">Delete account?</span><span style="color:#808080">&lt;/</span><span style="color:#569CD6">h5</span><span style="color:#808080">&gt;</span></span>
  973. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">button</span><span style="color:#9CDCFE"> type</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;button&quot;</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;btn-close&quot;</span><span style="color:#9CDCFE"> data-bs-dismiss</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;modal&quot;</span><span style="color:#808080">&gt;&lt;/</span><span style="color:#569CD6">button</span><span style="color:#808080">&gt;</span></span>
  974. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  975. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;modal-body&quot;</span><span style="color:#808080">&gt;</span></span>
  976. <span class="line"><span style="color:#D4D4D4"> This permanently deletes your account and all associated data. This cannot be undone.</span></span>
  977. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  978. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;modal-footer&quot;</span><span style="color:#808080">&gt;</span></span>
  979. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">button</span><span style="color:#9CDCFE"> type</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;button&quot;</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;btn btn-outline-secondary&quot;</span><span style="color:#9CDCFE"> data-bs-dismiss</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;modal&quot;</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">Cancel</span><span style="color:#808080">&lt;/</span><span style="color:#569CD6">button</span><span style="color:#808080">&gt;</span></span>
  980. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">form</span><span style="color:#9CDCFE"> action</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;/account/delete&quot;</span><span style="color:#9CDCFE"> method</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;POST&quot;</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;d-inline&quot;</span><span style="color:#808080">&gt;</span></span>
  981. <span class="line"><span style="color:#808080"> &lt;</span><span style="color:#569CD6">button</span><span style="color:#9CDCFE"> type</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;submit&quot;</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">&quot;btn btn-danger&quot;</span><span style="color:#808080">&gt;</span><span style="color:#D4D4D4">Yes, delete it</span><span style="color:#808080">&lt;/</span><span style="color:#569CD6">button</span><span style="color:#808080">&gt;</span></span>
  982. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">form</span><span style="color:#808080">&gt;</span></span>
  983. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  984. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  985. <span class="line"><span style="color:#808080"> &lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span>
  986. <span class="line"><span style="color:#808080">&lt;/</span><span style="color:#569CD6">div</span><span style="color:#808080">&gt;</span></span></code></pre>
  987. <p>
  988. The <a href="color-mode.html">Color Mode</a>,
  989. <a href="javascript/accessibility.html">Accessibility</a>, and the bundled JS
  990. handle Escape-to-close, focus trap, and keyboard navigation inside the modal
  991. automatically.
  992. </p>
  993. <h5 id="where-to-next">Where to next</h5>
  994. <ul>
  995. <li>
  996. <a href="javascript/plugins-overview.html">JavaScript Plugins Overview</a> —
  997. every plugin’s event names and methods
  998. </li>
  999. <li>
  1000. <a href="integrations.html">Recommended Integrations</a> — when you need
  1001. more than what’s in this list
  1002. </li>
  1003. <li>
  1004. <a href="customization.html">Customization</a> — change colours, sidebar
  1005. width, breakpoints
  1006. </li>
  1007. </ul>
  1008. </div>
  1009. </div>
  1010. </div>
  1011. </div>
  1012. </div>
  1013. </div>
  1014. </main>
  1015. <!--begin::Footer-->
  1016. <footer class="app-footer">
  1017. <!--begin::To the end-->
  1018. <div class="float-end d-none d-sm-inline">Anything you want</div>
  1019. <!--end::To the end-->
  1020. <!--begin::Copyright-->
  1021. <strong>
  1022. Copyright &copy; 2014-2026&nbsp;
  1023. <a href="https://adminlte.io" class="text-decoration-none">AdminLTE.io</a>.
  1024. </strong>
  1025. All rights reserved.
  1026. <!--end::Copyright-->
  1027. </footer>
  1028. <!--end::Footer-->
  1029. </div>
  1030. <!--begin::Third Party Plugin(OverlayScrollbars)-->
  1031. <script
  1032. src="https://cdn.jsdelivr.net/npm/overlayscrollbars@2.11.0/browser/overlayscrollbars.browser.es6.min.js"
  1033. crossorigin="anonymous"
  1034. ></script>
  1035. <!--end::Third Party Plugin(OverlayScrollbars)--><!--begin::Required Plugin(popperjs for Bootstrap 5)-->
  1036. <script
  1037. src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/umd/popper.min.js"
  1038. crossorigin="anonymous"
  1039. ></script>
  1040. <!--end::Required Plugin(popperjs for Bootstrap 5)--><!--begin::Required Plugin(Bootstrap 5)-->
  1041. <script
  1042. src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/js/bootstrap.min.js"
  1043. crossorigin="anonymous"
  1044. ></script>
  1045. <!--end::Required Plugin(Bootstrap 5)--><!--begin::Required Plugin(AdminLTE)-->
  1046. <script src="../js/adminlte.js"></script>
  1047. <!--end::Required Plugin(AdminLTE)--><!--begin::OverlayScrollbars Configure-->
  1048. <script>
  1049. const SELECTOR_SIDEBAR_WRAPPER = '.sidebar-wrapper';
  1050. const Default = {
  1051. scrollbarTheme: 'os-theme-light',
  1052. scrollbarAutoHide: 'leave',
  1053. scrollbarClickScroll: true,
  1054. };
  1055. document.addEventListener('DOMContentLoaded', function () {
  1056. const sidebarWrapper = document.querySelector(SELECTOR_SIDEBAR_WRAPPER);
  1057. // Disable OverlayScrollbars on mobile devices to prevent touch interference
  1058. const isMobile = window.innerWidth <= 992;
  1059. if (
  1060. sidebarWrapper &&
  1061. OverlayScrollbarsGlobal?.OverlayScrollbars !== undefined &&
  1062. !isMobile
  1063. ) {
  1064. OverlayScrollbarsGlobal.OverlayScrollbars(sidebarWrapper, {
  1065. scrollbars: {
  1066. theme: Default.scrollbarTheme,
  1067. autoHide: Default.scrollbarAutoHide,
  1068. clickScroll: Default.scrollbarClickScroll,
  1069. },
  1070. });
  1071. }
  1072. });
  1073. </script>
  1074. <!--end::OverlayScrollbars Configure--><!--begin::Color Mode Toggle (#6010)-->
  1075. <script>
  1076. (() => {
  1077. 'use strict';
  1078. const STORAGE_KEY = 'lte-theme';
  1079. const getStoredTheme = () => localStorage.getItem(STORAGE_KEY);
  1080. const setStoredTheme = (theme) => localStorage.setItem(STORAGE_KEY, theme);
  1081. const prefersDark = () => globalThis.matchMedia('(prefers-color-scheme: dark)').matches;
  1082. const getPreferredTheme = () => {
  1083. const stored = getStoredTheme();
  1084. if (stored) return stored;
  1085. return prefersDark() ? 'dark' : 'light';
  1086. };
  1087. const setTheme = (theme) => {
  1088. const resolved = theme === 'auto' ? (prefersDark() ? 'dark' : 'light') : theme;
  1089. document.documentElement.setAttribute('data-bs-theme', resolved);
  1090. };
  1091. setTheme(getPreferredTheme());
  1092. const showActiveTheme = (theme) => {
  1093. // Highlight the active dropdown option
  1094. document.querySelectorAll('[data-bs-theme-value]').forEach((el) => {
  1095. el.classList.remove('active');
  1096. el.setAttribute('aria-pressed', 'false');
  1097. const check = el.querySelector('.bi-check-lg');
  1098. if (check) check.classList.add('d-none');
  1099. });
  1100. const active = document.querySelector(`[data-bs-theme-value="${theme}"]`);
  1101. if (active) {
  1102. active.classList.add('active');
  1103. active.setAttribute('aria-pressed', 'true');
  1104. const check = active.querySelector('.bi-check-lg');
  1105. if (check) check.classList.remove('d-none');
  1106. }
  1107. // Sync the topbar trigger icon
  1108. document.querySelectorAll('[data-lte-theme-icon]').forEach((icon) => {
  1109. icon.classList.toggle('d-none', icon.dataset.lteThemeIcon !== theme);
  1110. });
  1111. };
  1112. globalThis.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
  1113. const stored = getStoredTheme();
  1114. if (!stored || stored === 'auto') setTheme(getPreferredTheme());
  1115. });
  1116. document.addEventListener('DOMContentLoaded', () => {
  1117. showActiveTheme(getPreferredTheme());
  1118. document.querySelectorAll('[data-bs-theme-value]').forEach((toggle) => {
  1119. toggle.addEventListener('click', () => {
  1120. const theme = toggle.getAttribute('data-bs-theme-value');
  1121. setStoredTheme(theme);
  1122. setTheme(theme);
  1123. showActiveTheme(theme);
  1124. });
  1125. });
  1126. });
  1127. })();
  1128. </script>
  1129. <!--end::Color Mode Toggle-->
  1130. </body>
  1131. </html>