* feat: Add settings modal with GitHub PAT and filter toggle - Add GeneralSettingsModal with General and GitHub tabs - Create GitHub PAT input field that saves to .env as GITHUB_TOKEN - Add animated toggle component for SAVE_FILTER setting - Create API endpoints for settings management - Add Input and Toggle UI components - Implement smooth animations for toggle interactions - Add proper error handling and user feedback * feat: Add filter persistence with settings integration - Add filter persistence system that saves user filter preferences to .env - Create FILTERS variable in .env to store complete filter state as JSON - Add SAVE_FILTER toggle in settings to enable/disable persistence - Implement auto-save functionality with 500ms debounce - Add loading states and visual feedback for filter restoration - Create API endpoints for managing saved filters - Add filter management UI in settings modal - Support for search query, type filters, sort order, and updatable status - Seamless integration across all script tabs (Available, Downloaded, Installed) - Auto-clear saved filters when persistence is disabled
33 lines
875 B
TypeScript
33 lines
875 B
TypeScript
'use client';
|
|
|
|
import { useState } from 'react';
|
|
import { GeneralSettingsModal } from './GeneralSettingsModal';
|
|
import { Button } from './ui/button';
|
|
import { Settings } from 'lucide-react';
|
|
|
|
export function SettingsButton() {
|
|
const [isOpen, setIsOpen] = useState(false);
|
|
|
|
return (
|
|
<>
|
|
<div className="flex flex-col sm:flex-row sm:items-center gap-3">
|
|
<div className="text-sm text-muted-foreground font-medium">
|
|
Application Settings:
|
|
</div>
|
|
<Button
|
|
onClick={() => setIsOpen(true)}
|
|
variant="outline"
|
|
size="default"
|
|
className="inline-flex items-center"
|
|
title="Open Settings"
|
|
>
|
|
<Settings className="w-5 h-5 mr-2" />
|
|
Settings
|
|
</Button>
|
|
</div>
|
|
|
|
<GeneralSettingsModal isOpen={isOpen} onClose={() => setIsOpen(false)} />
|
|
</>
|
|
);
|
|
}
|