Skip to content

Commit 558be4d

Browse files
committed
feat: Pinned Apps page 3
1 parent 5497239 commit 558be4d

File tree

2 files changed

+59
-13
lines changed

2 files changed

+59
-13
lines changed

src/components/Sidebar.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import {
2929
TimerIcon,
3030
CaretDoubleDownIcon,
3131
CaretDoubleUpIcon,
32+
PushPin,
3233
} from '@phosphor-icons/react';
3334

3435
import Fez from './Fez';
@@ -223,7 +224,11 @@ const Sidebar = ({isOpen, toggleSidebar, toggleModal, setIsPaletteOpen}) => {
223224
/>
224225
</button>
225226
{sidebarState.isAppsOpen && (<nav className={getGroupClass(isAppsActive)}>
226-
<NavLink to="/apps" className={getLinkClass}>
227+
<NavLink to="/apps/pinned" className={getLinkClass}>
228+
<PushPin size={24} />
229+
<span>Pinned Apps</span>
230+
</NavLink>
231+
<NavLink to="/apps" className={getLinkClass} end>
227232
<SquaresFourIcon size={24}/>
228233
<span>All Apps</span>
229234
</NavLink>

src/pages/PinnedAppPage.js

Lines changed: 53 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -141,47 +141,78 @@ const PinnedAppPage = () => {
141141
};
142142

143143
return (
144-
<div className="min-h-screen bg-gray-950 py-16 sm:py-24 relative">
145-
{/* Decorative Background Elements */}
146-
<div
147-
className="absolute top-0 inset-x-0 h-px bg-gradient-to-r from-transparent via-gray-800 to-transparent opacity-50"></div>
148-
<div
149-
className="absolute bottom-0 inset-x-0 h-px bg-gradient-to-r from-transparent via-gray-800 to-transparent opacity-50"></div>
144+
<div className="min-h-screen bg-gray-950 py-16 sm:py-24 relative overflow-hidden">
145+
{/* Techno Background */}
146+
<div className="absolute inset-0 z-0 pointer-events-none">
147+
{/* Grid */}
148+
<div className="absolute inset-0 opacity-[0.05]"
149+
style={{
150+
backgroundImage: 'linear-gradient(rgba(255, 255, 255, 0.1) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, 0.1) 1px, transparent 1px)',
151+
backgroundSize: '40px 40px'
152+
}}>
153+
</div>
154+
155+
{/* Glows */}
156+
<div
157+
className="absolute top-0 left-1/2 -translate-x-1/2 w-3/4 h-[500px] bg-primary-500/10 blur-[120px] rounded-full mix-blend-screen"/>
158+
<div
159+
className="absolute bottom-0 right-0 w-[600px] h-[600px] bg-blue-600/10 blur-[120px] rounded-full mix-blend-screen"/>
160+
161+
{/* Scanline Animation */}
162+
163+
<div className="absolute inset-x-0 h-24 bg-gradient-to-b from-transparent via-primary-400/20 to-transparent opacity-40 animate-scanline"></div>
164+
165+
</div>
150166

151167
<div className="mx-auto max-w-7xl px-6 lg:px-8 relative z-10">
152-
<div className="relative mb-16">
153-
<div className="hidden md:block absolute left-0 top-2">
168+
<div className="relative mb-16 text-center">
169+
<div className="absolute left-0 top-1/2 -translate-y-1/2 hidden md:block">
154170
<Link
155171
to="/"
156-
className="group text-gray-500 hover:text-white hover:underline flex items-center gap-2 text-xs font-mono uppercase tracking-widest transition-colors"
172+
className="group text-primary-400 hover:text-primary-300 hover:underline flex items-center gap-2 text-sm transition-colors"
157173
>
158-
<ArrowLeftIcon size={14}/> sys_root
174+
<ArrowLeftIcon size={18} className="transition-transform group-hover:-translate-x-1"/> Home
159175
</Link>
160176
</div>
161177

162178
<motion.div
179+
163180
initial={{opacity: 0, y: 20}}
181+
164182
animate={{opacity: 1, y: 0}}
183+
165184
transition={{duration: 0.5}}
185+
166186
className="text-center"
187+
167188
>
189+
168190
<div
169191
className="inline-flex items-center justify-center p-3 mb-4 rounded-full bg-gray-900/50 border border-gray-800 backdrop-blur-sm">
192+
170193
<TerminalWindow size={32} className="text-primary-500"/>
194+
171195
</div>
196+
172197
<h1 className="text-4xl md:text-5xl font-bold tracking-tighter text-white font-mono mb-4">
198+
173199
SYSTEM_CORE <span className="text-gray-600">//</span> PINNED
200+
174201
</h1>
202+
175203
<p className="text-sm md:text-base text-gray-400 max-w-2xl mx-auto font-mono tracking-wide">
204+
176205
[ ACCESSING ESSENTIAL MODULES AND TOOLS ]
206+
177207
</p>
208+
178209
</motion.div>
179210
</div>
180211

181212
{isLoading ? (
182213
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
183-
{[...Array(6)].map((_, i) => (
184-
<div key={i} className="bg-gray-900/50 border border-gray-800 rounded-2xl h-64 animate-pulse"></div>
214+
{[...Array(8)].map((_, i) => (
215+
<div key={i} className="bg-gray-900/30 border border-gray-800 rounded-3xl h-72 animate-pulse"></div>
185216
))}
186217
</div>
187218
) : (
@@ -199,6 +230,16 @@ const PinnedAppPage = () => {
199230
</div>
200231
)}
201232
</div>
233+
234+
<style>{`
235+
@keyframes scanline {
236+
0% { top: -10%; }
237+
100% { top: 110%; }
238+
}
239+
.animate-scanline {
240+
animation: scanline 8s linear infinite;
241+
}
242+
`}</style>
202243
</div>
203244
);
204245
};

0 commit comments

Comments
 (0)