feat(03-02): picker Swipe File nel form Genera Calendario + mark-used

- CalendarRequest in types.ts: aggiunto topic_overrides?: Record<number, string>
- hooks.ts: aggiunto useMarkSwipeUsed hook (POST /swipe/{id}/mark-used)
- GenerateCalendar.tsx: sezione Topic Override con griglia 13 slot
  - Bottone "Da Swipe File" per aprire picker inline per ogni slot
  - Picker mostra lista idee con nicchia badge e badge Usato
  - Selezione assegna topic allo slot e chiama mark-used
  - Bottone X per rimuovere override da uno slot
  - Override inclusi in CalendarRequest.topic_overrides al submit
  - Riepilogo counter override selezionati
This commit is contained in:
Michele
2026-03-09 00:33:00 +01:00
parent 67769dd68d
commit f449d945e9
3 changed files with 234 additions and 6 deletions

View File

@@ -284,3 +284,14 @@ export function useDeleteSwipeItem() {
},
})
}
/** Marca un'idea dello Swipe File come "usata". */
export function useMarkSwipeUsed() {
const queryClient = useQueryClient()
return useMutation<SwipeItem, Error, string>({
mutationFn: (id) => apiPost<SwipeItem>(`/swipe/${id}/mark-used`),
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ['swipe'] })
},
})
}