@@ -46,7 +46,7 @@ const StorylaneDemoModal = ({ onClose }) => {
4646 < div className = "absolute inset-0 backdrop-blur-3xl bg-black/20 rounded-3xl border border-white/10 shadow-inner" />
4747 < div className = "absolute -top-4 -right-4 w-24 h-24 bg-gradient-to-br from-blue-400/20 to-purple-400/20 rounded-full blur-2xl animate-pulse" />
4848 < div className = "absolute -bottom-4 -left-4 w-32 h-32 bg-gradient-to-br from-purple-400/20 to-pink-400/20 rounded-full blur-2xl animate-pulse" />
49-
49+
5050 < div className = "relative flex justify-between items-center pb-6 flex-shrink-0 z-10" >
5151 < div >
5252 < h2 className = "text-3xl font-bold bg-gradient-to-r from-white via-blue-100 to-purple-100 bg-clip-text text-transparent drop-shadow-2xl" >
@@ -58,7 +58,10 @@ const StorylaneDemoModal = ({ onClose }) => {
5858 onClick = { onClose }
5959 className = "relative p-3 rounded-2xl bg-white/10 hover:bg-white/20 backdrop-blur-lg border border-white/20 hover:border-white/30 transition-all duration-300 transform hover:scale-110 shadow-lg group"
6060 >
61- < IconX size = { 20 } className = "text-white/70 group-hover:text-white transition-colors" />
61+ < IconX
62+ size = { 20 }
63+ className = "text-white/70 group-hover:text-white transition-colors"
64+ />
6265 </ button >
6366 </ div >
6467 < div className = "relative flex-1 w-full h-full z-10" >
@@ -73,7 +76,8 @@ const StorylaneDemoModal = ({ onClose }) => {
7376 width : "100%" ,
7477 height : "100%" ,
7578 border : "1px solid rgba(255,255,255,0.2)" ,
76- boxShadow : "0px 0px 30px rgba(59, 130, 246, 0.15)" ,
79+ boxShadow :
80+ "0px 0px 30px rgba(59, 130, 246, 0.15)" ,
7781 borderRadius : "20px" ,
7882 boxSizing : "border-box"
7983 } }
@@ -99,6 +103,11 @@ function TasksPageContent() {
99103 const [ editingTask , setEditingTask ] = useState ( null ) // For editing
100104 const [ isDemoModalOpen , setIsDemoModalOpen ] = useState ( false )
101105
106+ // View control states
107+ const [ activeTab , setActiveTab ] = useState ( "oneTime" )
108+ const [ groupBy , setGroupBy ] = useState ( "status" )
109+ const [ isAddingNewTask , setIsAddingNewTask ] = useState ( false )
110+
102111 // Check for query param to auto-open demo on first visit from onboarding
103112 useEffect ( ( ) => {
104113 const showDemo = searchParams . get ( "show_demo" )
@@ -161,6 +170,23 @@ function TasksPageContent() {
161170 // eslint-disable-next-line react-hooks/exhaustive-deps
162171 } , [ ] )
163172
173+ const handleAddTask = useCallback ( ( ) => {
174+ if ( groupBy !== "status" ) {
175+ toast . error ( "Please group by status to add a new task." , {
176+ position : "bottom-center"
177+ } )
178+ return
179+ }
180+ setIsAddingNewTask ( true )
181+ } , [ groupBy ] )
182+
183+ const handleTaskAdded = useCallback ( ( isSuccess ) => {
184+ setIsAddingNewTask ( false )
185+ if ( isSuccess ) {
186+ fetchTasks ( )
187+ }
188+ } , [ fetchTasks ] )
189+
164190 const handleAction = useCallback (
165191 async ( actionFn , successMessage , ...args ) => {
166192 const toastId = toast . loading ( "Processing..." )
@@ -315,7 +341,13 @@ function TasksPageContent() {
315341 />
316342
317343 < main className = "flex-1 flex flex-col overflow-hidden" >
318- < TasksHeader onOpenDemo = { ( ) => setIsDemoModalOpen ( true ) } />
344+ < TasksHeader
345+ onOpenDemo = { ( ) => setIsDemoModalOpen ( true ) }
346+ activeTab = { activeTab }
347+ onTabChange = { setActiveTab }
348+ groupBy = { groupBy }
349+ onGroupChange = { setGroupBy }
350+ />
319351 { isLoading ? (
320352 < div className = "flex justify-center items-center flex-1" >
321353 < IconLoader className = "w-8 h-8 animate-spin text-[var(--color-accent-blue)]" />
@@ -330,7 +362,13 @@ function TasksPageContent() {
330362 onRerunTask = { handleRerunTask }
331363 onMarkComplete = { handleMarkComplete }
332364 onAssigneeChange = { handleAssigneeChange }
333- onTaskAdded = { fetchTasks }
365+ activeTab = { activeTab }
366+ groupBy = { groupBy }
367+ onTabChange = { setActiveTab }
368+ onGroupChange = { setGroupBy }
369+ isAddingNewTask = { isAddingNewTask }
370+ onAddTask = { handleAddTask }
371+ onTaskAdded = { handleTaskAdded }
334372 />
335373 </ div >
336374 ) }
@@ -389,3 +427,4 @@ export default function TasksPage() {
389427 </ Suspense >
390428 )
391429}
430+
0 commit comments