tatht commited on
Commit
3ffa6ff
·
verified ·
1 Parent(s): 1347ddc

Screenshot 2025-11-11 at 15.14.52

Browse files
Files changed (3) hide show
  1. README.md +7 -4
  2. components/footer.js +8 -0
  3. components/navbar.js +198 -0
README.md CHANGED
@@ -1,10 +1,13 @@
1
  ---
2
- title: Pixelperfect Ui Kit
3
- emoji: 😻
4
  colorFrom: green
5
- colorTo: yellow
 
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
1
  ---
2
+ title: PixelPerfect UI Kit 🎨
 
3
  colorFrom: green
4
+ colorTo: blue
5
+ emoji: 🐳
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite-v3
10
  ---
11
 
12
+ # Welcome to your new DeepSite project!
13
+ This project was created with [DeepSite](https://huggingface.co/deepsite).
components/footer.js ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ class CustomFooter extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ const isDark = document.documentElement.classList.contains('dark');
5
+ this.shadowRoot.innerHTML = `
6
+ <style>
7
+ :host {
8
+ display: block
components/navbar.js ADDED
@@ -0,0 +1,198 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomNavbar extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ const isDark = document.documentElement.classList.contains('dark');
5
+ this.shadowRoot.innerHTML = `
6
+ <style>
7
+ :host {
8
+ display: block;
9
+ position: sticky;
10
+ top: 0;
11
+ z-index: 50;
12
+ backdrop-filter: blur(10px);
13
+ background: ${isDark ? 'rgba(15, 23, 42, 0.8)' : 'rgba(255, 255, 255, 0.8)'};
14
+ border-bottom: 1px solid ${isDark ? 'rgba(148, 163, 184, 0.1)' : 'rgba(226, 232, 240, 0.5)'};
15
+ }
16
+
17
+ .navbar {
18
+ display: flex;
19
+ align-items: center;
20
+ justify-content: space-between;
21
+ padding: 1rem 2rem;
22
+ max-width: 1400px;
23
+ margin: 0 auto;
24
+ }
25
+
26
+ .logo {
27
+ font-size: 1.5rem;
28
+ font-weight: 800;
29
+ background: linear-gradient(135deg, #3b82f6, #8b5cf6);
30
+ -webkit-background-clip: text;
31
+ -webkit-text-fill-color: transparent;
32
+ cursor: pointer;
33
+ letter-spacing: -0.05em;
34
+ }
35
+
36
+ .nav-links {
37
+ display: flex;
38
+ gap: 2.5rem;
39
+ align-items: center;
40
+ }
41
+
42
+ .nav-link {
43
+ text-decoration: none;
44
+ color: ${isDark ? '#cbd5e1' : '#475569'};
45
+ font-weight: 500;
46
+ transition: all 0.3s ease;
47
+ position: relative;
48
+ font-size: 0.95rem;
49
+ }
50
+
51
+ .nav-link:hover {
52
+ color: #3b82f6;
53
+ transform: translateY(-2px);
54
+ }
55
+
56
+ .nav-link::after {
57
+ content: '';
58
+ position: absolute;
59
+ bottom: -5px;
60
+ left: 0;
61
+ width: 0;
62
+ height: 2px;
63
+ background: linear-gradient(90deg, #3b82f6, #8b5cf6);
64
+ transition: width 0.3s ease;
65
+ }
66
+
67
+ .nav-link:hover::after {
68
+ width: 100%;
69
+ }
70
+
71
+ .nav-actions {
72
+ display: flex;
73
+ gap: 1rem;
74
+ align-items: center;
75
+ }
76
+
77
+ .btn {
78
+ padding: 0.5rem 1.25rem;
79
+ border-radius: 0.5rem;
80
+ font-weight: 600;
81
+ cursor: pointer;
82
+ transition: all 0.3s ease;
83
+ text-decoration: none;
84
+ display: inline-flex;
85
+ align-items: center;
86
+ gap: 0.5rem;
87
+ }
88
+
89
+ .btn-primary {
90
+ background: linear-gradient(135deg, #3b82f6, #8b5cf6);
91
+ color: white;
92
+ border: none;
93
+ box-shadow: 0 4px 6px rgba(59, 130, 246, 0.3);
94
+ }
95
+
96
+ .btn-primary:hover {
97
+ transform: translateY(-2px);
98
+ box-shadow: 0 6px 12px rgba(59, 130, 246, 0.4);
99
+ }
100
+
101
+ .btn-secondary {
102
+ background: ${isDark ? 'rgba(30, 41, 59, 0.7)' : 'rgba(241, 245, 249, 0.7)'};
103
+ color: ${isDark ? '#e2e8f0' : '#334155'};
104
+ border: 1px solid ${isDark ? 'rgba(148, 163, 184, 0.2)' : 'rgba(226, 232, 240, 0.5)'};
105
+ backdrop-filter: blur(10px);
106
+ }
107
+
108
+ .btn-secondary:hover {
109
+ background: ${isDark ? 'rgba(51, 65, 85, 0.7)' : 'rgba(226, 232, 240, 0.7)'};
110
+ transform: translateY(-2px);
111
+ }
112
+
113
+ .theme-toggle {
114
+ background: none;
115
+ border: none;
116
+ cursor: pointer;
117
+ padding: 0.5rem;
118
+ border-radius: 0.5rem;
119
+ color: ${isDark ? '#cbd5e1' : '#475569'};
120
+ transition: all 0.3s ease;
121
+ }
122
+
123
+ .theme-toggle:hover {
124
+ background: ${isDark ? 'rgba(30, 41, 59, 0.5)' : 'rgba(241, 245, 249, 0.5)'};
125
+ transform: rotate(15deg);
126
+ }
127
+
128
+ .menu-toggle {
129
+ display: none;
130
+ background: none;
131
+ border: none;
132
+ cursor: pointer;
133
+ padding: 0.5rem;
134
+ color: ${isDark ? '#cbd5e1' : '#475569'};
135
+ }
136
+
137
+ @media (max-width: 768px) {
138
+ .nav-links {
139
+ display: none;
140
+ }
141
+
142
+ .menu-toggle {
143
+ display: block;
144
+ }
145
+
146
+ .navbar {
147
+ padding: 1rem;
148
+ }
149
+ }
150
+ </style>
151
+
152
+ <div class="navbar">
153
+ <div class="logo" onclick="window.scrollTo({top: 0, behavior: 'smooth'})">
154
+ PixelPerfect
155
+ </div>
156
+
157
+ <nav class="nav-links">
158
+ <a href="#features" class="nav-link">Features</a>
159
+ <a href="#dashboard" class="nav-link">Dashboard</a>
160
+ <a href="#analytics" class="nav-link">Analytics</a>
161
+ <a href="#team" class="nav-link">Team</a>
162
+ <a href="#contact" class="nav-link">Contact</a>
163
+ </nav>
164
+
165
+ <div class="nav-actions">
166
+ <button class="theme-toggle" id="themeToggle" aria-label="Toggle theme">
167
+ <i data-feather="${isDark ? 'sun' : 'moon'}"></i>
168
+ </button>
169
+ <a href="#signup" class="btn btn-primary">Get Started</a>
170
+ </div>
171
+
172
+ <button class="menu-toggle" id="menuToggle" aria-label="Toggle menu">
173
+ <i data-feather="menu"></i>
174
+ </button>
175
+ </div>
176
+ `;
177
+
178
+ // Theme toggle functionality
179
+ const themeBtn = this.shadowRoot.querySelector('#themeToggle');
180
+ if (themeBtn) {
181
+ themeBtn.addEventListener('click', () => {
182
+ const event = new CustomEvent('toggle-theme', { bubbles: true });
183
+ this.dispatchEvent(event);
184
+ });
185
+ }
186
+
187
+ // Mobile menu toggle
188
+ const menuBtn = this.shadowRoot.querySelector('#menuToggle');
189
+ if (menuBtn) {
190
+ menuBtn.addEventListener('click', () => {
191
+ const event = new CustomEvent('toggle-menu', { bubbles: true });
192
+ this.dispatchEvent(event);
193
+ });
194
+ }
195
+ }
196
+ }
197
+
198
+ customElements.define('custom-navbar', CustomNavbar);