File size: 6,767 Bytes
044250c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3951d02
 
 
044250c
3951d02
044250c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Tracks - Mr.FLEN</title>
    <link rel="icon" type="image/x-icon" href="/static/favicon.ico">
    <link rel="stylesheet" href="style.css">
    <script src="https://cdn.tailwindcss.com"></script>
    <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
    <script src="https://unpkg.com/feather-icons"></script>
    <script>
        tailwind.config = {
            theme: {
                extend: {
                    colors: {
                        primary: '#0B2D2F',
                        accent: '#FF914D',
                        magenta: '#C5427A',
                        paper: '#0A0F10'
                    }
                }
            }
        }
    </script>
</head>
<body class="bg-paper text-white min-h-screen flex flex-col">
    <custom-navbar></custom-navbar>
    
    <main class="flex-1 py-12 px-4">
        <div class="max-w-6xl mx-auto">
            <div class="text-center mb-12">
                <h1 class="text-4xl md:text-5xl font-bold mb-4">
                    <span class="bg-gradient-to-r from-accent to-magenta bg-clip-text text-transparent">
                        ALL TRACKS
                    </span>
                </h1>
                <p class="text-lg text-gray-400 max-w-2xl mx-auto">
                    Explore the complete collection of 15 tracks from "Still Lie Right Next to Me"
                </p>
            </div>

            <!-- View Toggle -->
            <div class="flex justify-end mb-6">
                <div class="flex gap-2 bg-primary/20 rounded-full p-1 backdrop-blur-sm">
                <button id="gridView" class="px-4 py-2 rounded-full bg-accent text-paper transition-all duration-300">
                    <i data-feather="grid" class="w-4 h-4"></i>
                </button>
                <button id="listView" class="px-4 py-2 rounded-full text-gray-400 hover:text-white transition-all duration-300">
                    <i data-feather="list" class="w-4 h-4"></i>
                </button>
            </div>
            </div>

            <!-- Search and Filter -->
            <div class="mb-8 grid grid-cols-1 md:grid-cols-2 gap-4">
                <div class="relative">
                    <input type="text" id="searchInput" placeholder="Search tracks..." 
                           class="w-full bg-primary/20 border border-accent/20 rounded-full py-3 px-6 backdrop-blur-sm focus:border-accent focus:outline-none transition-all duration-300">
                    <i data-feather="search" class="absolute right-6 top-1/2 transform -translate-y-1/2 text-gray-400">
                </div>
                <select id="tagFilter" class="w-full bg-primary/20 border border-accent/20 rounded-full py-3 px-6 backdrop-blur-sm focus:border-accent focus:outline-none transition-all duration-300">
                        <option value="">All Tags</option>
                        <option value="Deep House">Deep House</option>
                        <option value="Melodic House">Melodic House</option>
                        <option value="AfterHours">AfterHours</option>
                        <option value="Hypnotic">Hypnotic</option>
                        <option value="Atmospheric">Atmospheric</option>
                        <option value="Melodic">Melodic</option>
                        <option value="Urban">Urban</option>
                    </select>
</div>
            </div>

            <!-- Tracks Container -->
            <div id="tracksContainer" class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
                    <!-- Tracks will be populated by JavaScript -->
                </div>
            </div>
        </div>
    </main>

    <custom-footer></custom-footer>

    <script src="components/navbar.js"></script>
    <script src="components/footer.js"></script>
    <script src="script.js"></script>
    <script>
        feather.replace();
        
        document.addEventListener('DOMContentLoaded', function() {
            loadAllTracks();
            initializeViewToggle();
            initializeSearch();
        });

        function loadAllTracks() {
            const container = document.getElementById('tracksContainer');
            if (!container) return;

            container.innerHTML = `
                <div class="col-span-full text-center py-8">
                    <div class="inline-block animate-spin rounded-full h-8 w-8 border-b-2 border-accent"></div>
                </div>
            `;

            setTimeout(() => {
                renderTrackCards(albumData.tracks, container);
            }, 1000);
        }

        function initializeViewToggle() {
            const gridView = document.getElementById('gridView');
            const listView = document.getElementById('listView');
            const container = document.getElementById('tracksContainer');

            gridView.addEventListener('click', () => {
                gridView.classList.add('bg-accent', 'text-paper');
                listView.classList.remove('bg-accent', 'text-paper');
                container.className = 'grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6');
            });

            listView.addEventListener('click', () => {
                listView.classList.add('bg-accent', 'text-paper');
                gridView.classList.remove('bg-accent', 'text-paper');
                container.className = 'grid grid-cols-1 gap-4';
            });
        }

        function initializeSearch() {
            const searchInput = document.getElementById('searchInput');
            const tagFilter = document.getElementById('tagFilter');

            const filterTracks = () => {
                const searchTerm = searchInput.value.toLowerCase();
                const selectedTag = tagFilter.value;

                const filteredTracks = albumData.tracks.filter(track => {
                    const matchesSearch = track.title.toLowerCase().includes(searchTerm) ||
                                  (track.desc && track.desc.toLowerCase().includes(searchTerm));
                    const matchesTag = !selectedTag || 
                                     (track.tags && track.tags.includes(selectedTag));
                    
                    return matchesSearch && matchesTag;
                });

                const container = document.getElementById('tracksContainer');
                renderTrackCards(filteredTracks, container);
            };

            searchInput.addEventListener('input', filterTracks);
            tagFilter.addEventListener('change', filterTracks);
        }
    </script>
</body>
</html>