You can edit page where you want to add this > Add a Code Block

Paste this code into Code Block
<div class="tp-container">
<input type="text" id="searchInput" onkeyup="searchTable()" class="search-input" placeholder="Search for songs or artists...">
<table id="songTable">
<thead>
<tr>
<th onclick="sortTable(0)">Song Name</th>
<th onclick="sortTable(1)">Artist Name</th>
</tr>
</thead>
<tbody>
<tr><td>Shape of You</td><td>Ed Sheeran</td></tr>
<tr><td>Blinding Lights</td><td>The Weeknd</td></tr>
<tr><td>Someone Like You</td><td>Adele</td></tr>
<tr><td>Bohemian Rhapsody</td><td>Queen</td></tr>
<tr><td>Stay</td><td>Justin Bieber</td></tr>
<tr><td>Levitating</td><td>Dua Lipa</td></tr>
<tr><td>Believer</td><td>Imagine Dragons</td></tr>
<tr><td>Senorita</td><td>Shawn Mendes</td></tr>
<tr><td>Thinking Out Loud</td><td>Ed Sheeran</td></tr>
<tr><td>Bad Guy</td><td>Billie Eilish</td></tr>
<tr><td>Rockstar</td><td>Post Malone</td></tr>
<tr><td>Perfect</td><td>Ed Sheeran</td></tr>
<tr><td>Havana</td><td>Camila Cabello</td></tr>
<tr><td>Memories</td><td>Maroon 5</td></tr>
<tr><td>Rolling in the Deep</td><td>Adele</td></tr>
</tbody>
</table>
</div>
<script>
// Search function
function searchTable() {
const input = document.getElementById("searchInput");
const filter = input.value.toLowerCase();
const table = document.getElementById("songTable");
const tr = table.getElementsByTagName("tr");
for (let i = 1; i < tr.length; i++) {
let td = tr[i].getElementsByTagName("td");
let match = false;
for (let j = 0; j < td.length; j++) {
if (td[j].innerText.toLowerCase().indexOf(filter) > -1) {
match = true;
break;
}
}
tr[i].style.display = match ? "" : "none";
}
}
// Sort function
function sortTable(columnIndex) {
const table = document.getElementById("songTable");
let rows = Array.from(table.rows).slice(1);
const isAscending = table.getAttribute("data-sort-asc") === "true";
rows.sort((rowA, rowB) => {
const cellA = rowA.cells[columnIndex].innerText.toLowerCase();
const cellB = rowB.cells[columnIndex].innerText.toLowerCase();
if (cellA < cellB) return isAscending ? -1 : 1;
if (cellA > cellB) return isAscending ? 1 : -1;
return 0;
});
table.setAttribute("data-sort-asc", !isAscending);
// Clear previous sort icons
const headers = table.querySelectorAll("th");
headers.forEach((th, idx) => th.classList.remove("sort-asc", "sort-desc"));
// Set current sort icon
headers[columnIndex].classList.toggle("sort-asc", isAscending);
headers[columnIndex].classList.toggle("sort-desc", !isAscending);
rows.forEach(row => table.appendChild(row));
}
</script>
<style>
.tp-container {
max-width: 600px;
margin: 20px auto;
background-color: #fff;
border-radius: 8px;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
padding: 20px;
}
.search-input {
margin-bottom: 15px;
padding: 8px;
width: 100%;
border: 1px solid #ccc;
border-radius: 4px;
}
table {
width: 100%;
border-collapse: collapse;
}
th, td {
padding: 12px;
text-align: left;
border-bottom: 1px solid #ddd;
}
th {
cursor: pointer;
position: relative;
}
th:hover {
background-color: #f1f1f1;
}
th:after {
content: '';
position: absolute;
right: 10px;
transition: all 0.3s ease;
}
th.sort-asc:after {
content: '▲';
}
th.sort-desc:after {
content: '▼';
}
tr:hover {
background-color: #f9f9f9;
}
</style>

Result
