feat: refined UI components and updated app data

This commit is contained in:
NIJAT
2025-12-29 12:36:28 +04:00
parent f83293afe2
commit 00d521750e
13 changed files with 1098 additions and 885 deletions

View File

@@ -1,7 +1,5 @@
'use client';
import { Package, Download, Terminal } from 'lucide-react';
interface AurDrawerSettingsProps {
aurAppNames: string[];
hasYayInstalled: boolean;
@@ -11,7 +9,7 @@ interface AurDrawerSettingsProps {
}
/**
* AurDrawerSettings - Settings panel for AUR configuration inside the drawer
* AurDrawerSettings - Compact UI with smooth button animations
*/
export function AurDrawerSettings({
aurAppNames,
@@ -21,95 +19,81 @@ export function AurDrawerSettings({
setSelectedHelper,
}: AurDrawerSettingsProps) {
return (
<div className="mb-6 rounded-xl border border-[#1793d1]/20 bg-[#1793d1]/5 overflow-hidden">
{/* Header */}
<div className="px-5 py-4 border-b border-[#1793d1]/10 flex items-start gap-3">
<div className="p-2 rounded-lg bg-[#1793d1]/10 text-[#1793d1] shrink-0">
<Package className="w-5 h-5" />
</div>
<div>
<h4 className="text-sm font-semibold text-[var(--text-primary)]">
AUR Packages Detected
</h4>
<p className="text-xs text-[var(--text-muted)] mt-1 leading-relaxed">
These apps require an AUR helper: <span className="text-[var(--text-primary)] opacity-80">{aurAppNames.join(', ')}</span>
</p>
</div>
<div className="mb-4 rounded-xl bg-[var(--bg-tertiary)] border border-[var(--border-primary)]/40 overflow-hidden">
{/* Header with all apps listed */}
<div className="px-4 py-3 border-b border-[var(--border-primary)]/30">
<p className="text-xs text-[var(--text-muted)] leading-relaxed">
<span className="font-medium text-[var(--text-primary)]">AUR packages: </span>
{aurAppNames.join(', ')}
</p>
</div>
{/* Controls Grid */}
<div className="p-5 grid grid-cols-1 md:grid-cols-2 gap-6">
{/* 1. Installation Mode */}
<div>
<label className="text-xs font-medium text-[var(--text-muted)] uppercase tracking-wider mb-2.5 flex items-center gap-2">
<Download className="w-3.5 h-3.5" />
Installation Logic
</label>
<div className="flex bg-[var(--bg-tertiary)] p-1 rounded-lg border border-[var(--border-primary)]/50">
<button
onClick={() => setHasYayInstalled(false)}
className={`flex-1 py-2 px-3 text-xs font-medium rounded-md transition-all ${!hasYayInstalled
? 'bg-[var(--bg-secondary)] text-[var(--text-primary)] shadow-sm border border-[var(--border-primary)]/50'
: 'text-[var(--text-muted)] hover:text-[var(--text-secondary)]'
}`}
>
Install New
</button>
<button
onClick={() => setHasYayInstalled(true)}
className={`flex-1 py-2 px-3 text-xs font-medium rounded-md transition-all ${hasYayInstalled
? 'bg-[var(--bg-secondary)] text-[var(--text-primary)] shadow-sm border border-[var(--border-primary)]/50'
: 'text-[var(--text-muted)] hover:text-[var(--text-secondary)]'
}`}
>
I Have One
</button>
</div>
<p className="text-[10px] text-[var(--text-muted)] mt-2 opacity-70 px-1">
{hasYayInstalled
? "Script will use your existing helper"
: "Script will install the helper first"}
</p>
</div>
{/* 2. Helper Selection */}
<div>
<label className="text-xs font-medium text-[var(--text-muted)] uppercase tracking-wider mb-2.5 flex items-center gap-2">
<Terminal className="w-3.5 h-3.5" />
Preferred Helper
</label>
<div className="grid grid-cols-2 gap-2">
{/* Controls with animated buttons */}
<div className="px-4 py-3 flex flex-col sm:flex-row sm:items-center gap-4 text-xs">
{/* Helper selection */}
<div className="flex items-center gap-3">
<span className="text-[var(--text-secondary)] font-medium">AUR helper:</span>
<div className="flex bg-[var(--bg-secondary)] rounded-lg p-1 border border-[var(--border-primary)]/30">
<button
onClick={() => setSelectedHelper('yay')}
className={`relative px-3 py-2 rounded-lg text-left border transition-all ${selectedHelper === 'yay'
? 'bg-[#1793d1]/10 border-[#1793d1]/30 text-[#1793d1]'
: 'bg-[var(--bg-tertiary)] border-[var(--border-primary)]/50 text-[var(--text-muted)] hover:bg-[var(--bg-hover)]'
className={`relative px-3 py-1.5 rounded-md font-medium transition-all duration-200 ease-out ${selectedHelper === 'yay'
? 'bg-[var(--text-primary)] text-[var(--bg-primary)] shadow-sm'
: 'text-[var(--text-muted)] hover:text-[var(--text-primary)]'
}`}
style={{
transform: selectedHelper === 'yay' ? 'scale(1)' : 'scale(0.98)',
}}
>
<span className="block text-xs font-bold">yay</span>
<span className="block text-[10px] opacity-70 mt-0.5">Go-based</span>
{selectedHelper === 'yay' && (
<div className="absolute top-2 right-2 w-1.5 h-1.5 rounded-full bg-[#1793d1]" />
)}
yay <span className="opacity-60 font-normal">(Go)</span>
</button>
<button
onClick={() => setSelectedHelper('paru')}
className={`relative px-3 py-2 rounded-lg text-left border transition-all ${selectedHelper === 'paru'
? 'bg-[#1793d1]/10 border-[#1793d1]/30 text-[#1793d1]'
: 'bg-[var(--bg-tertiary)] border-[var(--border-primary)]/50 text-[var(--text-muted)] hover:bg-[var(--bg-hover)]'
className={`relative px-3 py-1.5 rounded-md font-medium transition-all duration-200 ease-out ${selectedHelper === 'paru'
? 'bg-[var(--text-primary)] text-[var(--bg-primary)] shadow-sm'
: 'text-[var(--text-muted)] hover:text-[var(--text-primary)]'
}`}
style={{
transform: selectedHelper === 'paru' ? 'scale(1)' : 'scale(0.98)',
}}
>
<span className="block text-xs font-bold">paru</span>
<span className="block text-[10px] opacity-70 mt-0.5">Rust-based</span>
{selectedHelper === 'paru' && (
<div className="absolute top-2 right-2 w-1.5 h-1.5 rounded-full bg-[#1793d1]" />
)}
paru <span className="opacity-60 font-normal">(Rust)</span>
</button>
</div>
</div>
{/* Divider */}
<div className="w-px h-5 bg-[var(--border-primary)]/40 hidden sm:block" />
{/* Installation mode */}
<div className="flex items-center gap-3">
<span className="text-[var(--text-secondary)] font-medium">Already installed?</span>
<div className="flex bg-[var(--bg-secondary)] rounded-lg p-1 border border-[var(--border-primary)]/30">
<button
onClick={() => setHasYayInstalled(true)}
className={`relative px-3 py-1.5 rounded-md font-medium transition-all duration-200 ease-out ${hasYayInstalled
? 'bg-[var(--text-primary)] text-[var(--bg-primary)] shadow-sm'
: 'text-[var(--text-muted)] hover:text-[var(--text-primary)]'
}`}
style={{
transform: hasYayInstalled ? 'scale(1)' : 'scale(0.98)',
}}
>
Yes, use it
</button>
<button
onClick={() => setHasYayInstalled(false)}
className={`relative px-3 py-1.5 rounded-md font-medium transition-all duration-200 ease-out ${!hasYayInstalled
? 'bg-[var(--text-primary)] text-[var(--bg-primary)] shadow-sm'
: 'text-[var(--text-muted)] hover:text-[var(--text-primary)]'
}`}
style={{
transform: !hasYayInstalled ? 'scale(1)' : 'scale(0.98)',
}}
>
No, install it
</button>
</div>
</div>
</div>
</div>
);