mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-10-28 20:21:50 +01:00
Automatically import skills from new GitHub project repositories and update enabled sources in the background. Preserve project-derived access, saved selections, immutable execution versions and explicit pins; add legacy adoption, refresh and connection repair in Sources. Include durable scheduling and bounded work credits, production Storybook journeys, real GitHub-to-routine acceptance receipts and final-head CI/security/Greptile qualification. Co-Authored-By: Paperclip <noreply@paperclip.ing>
24 lines
1.1 KiB
TypeScript
24 lines
1.1 KiB
TypeScript
import { RefreshCw } from 'lucide-react';
|
|
import { Button } from '@/components/ui/button';
|
|
import { ToggleSwitch } from '@/components/ui/toggle-switch';
|
|
|
|
export function SkillSourceSyncControls({ automaticUpdates, refreshing, disabled, onRefresh, onAutomaticUpdates, showPreference = true }: {
|
|
automaticUpdates: boolean;
|
|
showPreference?: boolean;
|
|
refreshing?: boolean;
|
|
disabled?: boolean;
|
|
onRefresh: () => void;
|
|
onAutomaticUpdates: (enabled: boolean) => void;
|
|
}) {
|
|
return <div className="flex flex-wrap items-center gap-3">
|
|
{showPreference && <label className="flex items-center gap-2 text-xs text-muted-foreground">
|
|
<ToggleSwitch checked={automaticUpdates} disabled={disabled} onCheckedChange={onAutomaticUpdates} aria-label="Automatic updates" />
|
|
Automatic updates
|
|
</label>}
|
|
<Button size="sm" variant="outline" disabled={disabled || refreshing} onClick={onRefresh}>
|
|
<RefreshCw className={refreshing ? 'size-3.5 animate-spin motion-reduce:animate-none' : 'size-3.5'} />
|
|
{refreshing ? 'Refreshing…' : 'Refresh'}
|
|
</Button>
|
|
</div>;
|
|
}
|