@@ -10,13 +10,6 @@ import {
1010 CardTitle ,
1111} from "@/components/ui/card" ;
1212import { Textarea } from "@/components/ui/textarea" ;
13- import {
14- Select ,
15- SelectContent ,
16- SelectItem ,
17- SelectTrigger ,
18- SelectValue ,
19- } from "@/components/ui/select" ;
2013import { Label } from "@/components/ui/label" ;
2114import ProgressChart from "@/components/ProgressChart" ;
2215import { logRelapse } from "../utils/firebase" ;
@@ -27,6 +20,7 @@ import { toast } from "sonner";
2720import { useEffect } from "react" ;
2821import { db } from "../utils/firebase" ;
2922import { collection , doc , getDoc } from "firebase/firestore" ;
23+ import { MultiSelect } from "@/components/ui/multi-select" ;
3024
3125const mockStreakData = [
3226 { date : "Jan 1" , streak : 1 } ,
@@ -65,12 +59,21 @@ const mockMoodData = [
6559const Analytics : React . FC = ( ) => {
6660 const { currentUser, userProfile } = useAuth ( ) ;
6761 const [ notes , setNotes ] = useState ( "" ) ;
68- const [ selectedTrigger , setSelectedTrigger ] = useState ( "" ) ;
62+ const [ selectedTriggers , setSelectedTriggers ] = useState < string [ ] > ( [ ] ) ;
6963 const [ isSubmitting , setIsSubmitting ] = useState ( false ) ;
7064 const [ triggers , setTriggers ] = useState < { name : string ; count : number } [ ] > (
7165 [ ]
7266 ) ;
7367
68+ const triggerOptions = [
69+ { value : "stress" , label : "Stress" } ,
70+ { value : "boredom" , label : "Boredom" } ,
71+ { value : "loneliness" , label : "Loneliness" } ,
72+ { value : "fatigue" , label : "Fatigue" } ,
73+ { value : "social-media" , label : "Social Media" } ,
74+ { value : "other" , label : "Other" }
75+ ] ;
76+
7477 const useTriggers = ( uid : string | undefined ) => {
7578 useEffect ( ( ) => {
7679 if ( ! uid ) return ;
@@ -117,15 +120,15 @@ const Analytics: React.FC = () => {
117120 setIsSubmitting ( true ) ;
118121
119122 try {
120- const result = await logRelapse ( currentUser . uid , selectedTrigger , notes ) ;
123+ const result = await logRelapse ( currentUser . uid , selectedTriggers , notes ) ;
121124 if ( result . success ) {
122125 toast . success ( "Progress reset" , {
123126 description :
124127 "Remember that every moment is a new opportunity to begin again." ,
125128 } ) ;
126129
127130 setNotes ( "" ) ;
128- setSelectedTrigger ( "" ) ;
131+ setSelectedTriggers ( [ ] ) ;
129132 } else {
130133 toast . error ( "Failed to log relapse" , {
131134 description : result . message ,
@@ -389,23 +392,14 @@ const Analytics: React.FC = () => {
389392
390393 < CardContent className = "space-y-4" >
391394 < div className = "space-y-2" >
392- < Label htmlFor = "trigger" > What triggered this relapse?</ Label >
393- < Select
394- value = { selectedTrigger }
395- onValueChange = { setSelectedTrigger }
396- >
397- < SelectTrigger id = "trigger" >
398- < SelectValue placeholder = "Select a trigger" />
399- </ SelectTrigger >
400- < SelectContent >
401- < SelectItem value = "stress" > Stress</ SelectItem >
402- < SelectItem value = "boredom" > Boredom</ SelectItem >
403- < SelectItem value = "loneliness" > Loneliness</ SelectItem >
404- < SelectItem value = "fatigue" > Fatigue</ SelectItem >
405- < SelectItem value = "social-media" > Social Media</ SelectItem >
406- < SelectItem value = "other" > Other</ SelectItem >
407- </ SelectContent >
408- </ Select >
395+ < Label htmlFor = "trigger" > What triggered this relapse? (Select up to 3)</ Label >
396+ < MultiSelect
397+ options = { triggerOptions }
398+ selected = { selectedTriggers }
399+ onChange = { setSelectedTriggers }
400+ placeholder = "Select triggers"
401+ className = "w-full"
402+ />
409403 </ div >
410404
411405 < div className = "space-y-2" >
@@ -424,7 +418,7 @@ const Analytics: React.FC = () => {
424418 variant = "destructive"
425419 className = "w-full"
426420 onClick = { handleRelapseSubmit }
427- disabled = { isSubmitting || ! selectedTrigger }
421+ disabled = { isSubmitting || selectedTriggers . length === 0 }
428422 >
429423 { isSubmitting
430424 ? "Submitting..."
0 commit comments