lonestar108 commited on
Commit
f1c25f6
Β·
verified Β·
1 Parent(s): 77595f8

implement nice styling for the lefthand sidebar

Browse files
Files changed (3) hide show
  1. components/sidebar.js +176 -0
  2. index.html +4 -4
  3. style.css +9 -0
components/sidebar.js ADDED
@@ -0,0 +1,176 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CryptoSidebar extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ :host {
7
+ display: block;
8
+ position: fixed;
9
+ left: 0;
10
+ top: 0;
11
+ bottom: 0;
12
+ width: 280px;
13
+ background: rgba(17, 24, 39, 0.95);
14
+ backdrop-filter: blur(10px);
15
+ border-right: 1px solid rgba(255, 255, 255, 0.05);
16
+ z-index: 40;
17
+ transform: translateX(-100%);
18
+ transition: transform 0.3s ease;
19
+ }
20
+
21
+ :host(.open) {
22
+ transform: translateX(0);
23
+ }
24
+
25
+ .sidebar-content {
26
+ height: 100%;
27
+ padding: 1.5rem;
28
+ overflow-y: auto;
29
+ scrollbar-width: thin;
30
+ }
31
+
32
+ .sidebar-header {
33
+ display: flex;
34
+ align-items: center;
35
+ padding-bottom: 1.5rem;
36
+ border-bottom: 1px solid rgba(255, 255, 255, 0.05);
37
+ margin-bottom: 1.5rem;
38
+ }
39
+
40
+ .logo {
41
+ display: flex;
42
+ align-items: center;
43
+ gap: 0.75rem;
44
+ font-weight: 600;
45
+ font-size: 1.25rem;
46
+ }
47
+
48
+ .logo-icon {
49
+ color: #6366f1;
50
+ }
51
+
52
+ .nav-section {
53
+ margin-bottom: 2rem;
54
+ }
55
+
56
+ .nav-title {
57
+ font-size: 0.875rem;
58
+ font-weight: 500;
59
+ color: rgba(156, 163, 175, 0.8);
60
+ margin-bottom: 1rem;
61
+ text-transform: uppercase;
62
+ letter-spacing: 0.05em;
63
+ }
64
+
65
+ .nav-link {
66
+ display: flex;
67
+ align-items: center;
68
+ gap: 0.75rem;
69
+ padding: 0.75rem;
70
+ border-radius: 0.5rem;
71
+ color: rgba(209, 213, 219, 0.9);
72
+ font-weight: 500;
73
+ transition: all 0.2s ease;
74
+ margin-bottom: 0.25rem;
75
+ }
76
+
77
+ .nav-link:hover {
78
+ background: rgba(55, 65, 81, 0.5);
79
+ color: white;
80
+ }
81
+
82
+ .nav-link.active {
83
+ background: rgba(99, 102, 241, 0.1);
84
+ color: #6366f1;
85
+ }
86
+
87
+ .nav-link i {
88
+ width: 1.25rem;
89
+ height: 1.25rem;
90
+ }
91
+
92
+ .sidebar-toggle {
93
+ position: absolute;
94
+ right: -3rem;
95
+ top: 1rem;
96
+ background: rgba(17, 24, 39, 0.9);
97
+ border: 1px solid rgba(255, 255, 255, 0.05);
98
+ border-radius: 0.375rem;
99
+ padding: 0.5rem;
100
+ color: rgba(209, 213, 219, 0.9);
101
+ cursor: pointer;
102
+ transition: all 0.2s ease;
103
+ }
104
+
105
+ .sidebar-toggle:hover {
106
+ background: rgba(55, 65, 81, 0.5);
107
+ color: white;
108
+ }
109
+ </style>
110
+
111
+ <button class="sidebar-toggle" id="toggle-sidebar">
112
+ <i data-feather="menu"></i>
113
+ </button>
114
+
115
+ <div class="sidebar-content">
116
+ <div class="sidebar-header">
117
+ <div class="logo">
118
+ <i data-feather="activity" class="logo-icon"></i>
119
+ <span>Crypto Pulse</span>
120
+ </div>
121
+ </div>
122
+
123
+ <div class="nav-section">
124
+ <h4 class="nav-title">Dashboard</h4>
125
+ <a href="/" class="nav-link active">
126
+ <i data-feather="home"></i>
127
+ <span>Overview</span>
128
+ </a>
129
+ <a href="#" class="nav-link">
130
+ <i data-feather="trending-up"></i>
131
+ <span>Market Trends</span>
132
+ </a>
133
+ <a href="#" class="nav-link">
134
+ <i data-feather="heart"></i>
135
+ <span>Watchlist</span>
136
+ </a>
137
+ </div>
138
+
139
+ <div class="nav-section">
140
+ <h4 class="nav-title">Analytics</h4>
141
+ <a href="#" class="nav-link">
142
+ <i data-feather="bar-chart-2"></i>
143
+ <span>Charts</span>
144
+ </a>
145
+ <a href="#" class="nav-link">
146
+ <i data-feather="alert-circle"></i>
147
+ <span>Alerts</span>
148
+ </a>
149
+ <a href="#" class="nav-link">
150
+ <i data-feather="clock"></i>
151
+ <span>Historical Data</span>
152
+ </a>
153
+ </div>
154
+
155
+ <div class="nav-section">
156
+ <h4 class="nav-title">Settings</h4>
157
+ <a href="#" class="nav-link">
158
+ <i data-feather="settings"></i>
159
+ <span>Preferences</span>
160
+ </a>
161
+ <a href="#" class="nav-link">
162
+ <i data-feather="help-circle"></i>
163
+ <span>Help</span>
164
+ </a>
165
+ </div>
166
+ </div>
167
+ `;
168
+
169
+ const toggleBtn = this.shadowRoot.getElementById('toggle-sidebar');
170
+ toggleBtn.addEventListener('click', () => {
171
+ this.classList.toggle('open');
172
+ });
173
+ }
174
+ }
175
+
176
+ customElements.define('crypto-sidebar', CryptoSidebar);
index.html CHANGED
@@ -27,9 +27,9 @@
27
  </script>
28
  </head>
29
  <body class="bg-gray-900 text-gray-100 min-h-screen">
 
30
  <crypto-header></crypto-header>
31
-
32
- <main class="container mx-auto px-4 py-8">
33
  <div class="flex flex-col lg:flex-row gap-8">
34
  <div class="lg:w-1/4">
35
  <crypto-filters></crypto-filters>
@@ -44,9 +44,9 @@
44
  </main>
45
 
46
  <crypto-footer></crypto-footer>
47
-
48
  <script src="components/header.js"></script>
49
- <script src="components/filters.js"></script>
50
  <script src="components/footer.js"></script>
51
  <script src="script.js"></script>
52
  <script>feather.replace();</script>
 
27
  </script>
28
  </head>
29
  <body class="bg-gray-900 text-gray-100 min-h-screen">
30
+ <crypto-sidebar></crypto-sidebar>
31
  <crypto-header></crypto-header>
32
+ <main class="container mx-auto px-4 py-8">
 
33
  <div class="flex flex-col lg:flex-row gap-8">
34
  <div class="lg:w-1/4">
35
  <crypto-filters></crypto-filters>
 
44
  </main>
45
 
46
  <crypto-footer></crypto-footer>
47
+ <script src="components/sidebar.js"></script>
48
  <script src="components/header.js"></script>
49
+ <script src="components/filters.js"></script>
50
  <script src="components/footer.js"></script>
51
  <script src="script.js"></script>
52
  <script>feather.replace();</script>
style.css CHANGED
@@ -30,6 +30,15 @@
30
  ::-webkit-scrollbar-thumb:hover {
31
  background: #6b7280;
32
  }
 
 
 
 
 
 
 
 
 
33
 
34
  /* Custom transitions */
35
  .smooth-transition {
 
30
  ::-webkit-scrollbar-thumb:hover {
31
  background: #6b7280;
32
  }
33
+ /* Sidebar adjustment for main content */
34
+ main {
35
+ margin-left: 280px;
36
+ transition: margin-left 0.3s ease;
37
+ }
38
+
39
+ body:has(crypto-sidebar:not(.open)) main {
40
+ margin-left: 0;
41
+ }
42
 
43
  /* Custom transitions */
44
  .smooth-transition {