PageSourceSearch

https://techy-seniors.vercel.app/assets/TaskGuideOverlay-C8_GMlWv.js

js techy-seniors.vercel.app collected 2026-10-03 07:51:28 UTC 52,110 bytes, 40 lines download raw bytes

1var Z=Object.defineProperty;var _=(d,t,o)=>t in d?Z(d,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):d[t]=o;var y=(d,t,o)=>_(d,typeof t!="symbol"?t+"":t,o);import{j as e}from"./query-vendor-D0YOc0TT.js";import{r}from"./react-vendor-BrOGL17k.js";import{D as Q}from"./cjs-DQoSjoVL.js";import"./App-BkUTVbBB.js";import"./index-DgvdQfFD.js";const j=[{id:"gmail-send-email",title:"Send an Email on Gmail",category:"email",difficulty:"easy",estimatedMinutes:5,website:"mail.google.com",description:"Compose and send a new email message",icon:"✉️",prerequisites:["Must be logged into Gmail"],steps:[{stepNumber:1,instruction:'Click the "Compose" button to start a new email',expectedElements:['[gh="cm"]','button[aria-label*="Compose"]',".T-I.T-I-KE"],visualCues:['Blue "Compose" button with pencil icon',"Button in top left area"],aiPrompt:'Is there a "Compose" button visible on screen? Has the user clicked it yet? Look for a blue button with text "Compose" usually in the top-left area.',highlightSelector:'[gh="cm"]',helpText:'Look for the colorful "Compose" button in the upper left corner of your screen.'},{stepNumber:2,instruction:`Type the recipient's email address in the "To" field`,expectedElements:['input[name="to"]','textarea[name="to"]','[aria-label*="To"]'],visualCues:["Email compose window is open",'Text field labeled "To"'],aiPrompt:'Is the email compose window open? Is there a "To" field visible where the user can type an email address?',highlightSelector:'input[name="to"]',helpText:'The "To" field is at the top of the new email window. Click it and type the email address.'},{stepNumber:3,instruction:"Click in the Subject line and type your email subject",expectedElements:['input[name="subjectbox"]','[aria-label*="Subject"]'],visualCues:["Subject field below To field","Empty or filled subject line"],aiPrompt:"Is there a Subject field visible? Has the user typed anything in it?",highlightSelector:'input[name="subjectbox"]',helpText:'The Subject line is below the "To" field. Click it and type what your email is about.'},{stepNumber:4,instruction:"Click in the message area and type your email message",expectedElements:['[aria-label*="Message Body"]','div[role="textbox"]'],visualCues:["Large text area for message body","Cursor blinking in message area"],aiPrompt:"Is the message body area visible? Has the user typed any message content?",highlightSelector:'div[role="textbox"]',helpText:"The large white area is where you type your message. Click in it and start typing."},{stepNumber:5,instruction:'Click the "Send" button to send your email',expectedElements:['[aria-label*="Send"]','button[data-tooltip*="Send"]'],visualCues:['Blue "Send" button at bottom left of compose window'],aiPrompt:'Is there a "Send" button visible? Has it been clicked? Look for confirmation that the email was sent.',highlightSelector:'[aria-label*="Send"]',helpText:'The blue "Send" button is at the bottom left of your email. Click it to send!'}]},{id:"gmail-reply-email",title:"Reply to an Email in Gmail",category:"email",difficulty:"easy",estimatedMinutes:3,website:"mail.google.com",description:"Respond to an email you received",icon:"↩️",steps:[{stepNumber:1,instruction:"Open the email you want to reply to by clicking on it",expectedElements:['[role="main"]',".nH .aKz"],visualCues:["Email opened in reading view","Full email content visible"],aiPrompt:"Is an email open and visible in full view? Can you see the email content?",helpText:"Click on any email in your inbox to open it."},{stepNumber:2,instruction:'Click the "Reply" button',expectedElements:['[aria-label*="Reply"]','[data-tooltip*="Reply"]'],visualCues:["Reply button near bottom of email"],aiPrompt:"Is there a Reply button visible? Has the reply compose area appeared?",highlightSelector:'[aria-label*="Reply"]',helpText:'Look for the "Reply" button at the bottom of the email.'},{stepNumber:3,instruction:"Type your reply message",expectedElements:['[aria-label*="Message Body"]','div[role="textbox"]'],visualCues:["Reply compose box is open","Text cursor in message area"],aiPrompt:"Is the reply message box open? Has the user typed a response?",helpText:"Click in the message area and type your reply."},{stepNumber:4,instruction:'Click "Send" to send your reply',expectedElements:['[aria-label*="Send"]'],visualCues:["Send button at bottom of reply"],aiPrompt:"Has the Send button been clicked? Look for c
1onfirmation the reply was sent.",highlightSelector:'[aria-label*="Send"]',helpText:'Click the blue "Send" button to send your reply.'}]},{id:"amazon-search-product",title:"Search for a Product on Amazon",category:"shopping",difficulty:"easy",estimatedMinutes:2,website:"amazon.com",description:"Find a product you want to buy",icon:"🔍",steps:[{stepNumber:1,instruction:"Click in the search bar at the top of the page",expectedElements:["#twotabsearchtextbox",'input[type="text"][name="field-keywords"]'],visualCues:['Search bar with "Search Amazon" placeholder text'],aiPrompt:"Is the search bar visible at the top of the page? Is it focused (cursor blinking)?",highlightSelector:"#twotabsearchtextbox",helpText:"The search bar is at the very top of the Amazon page."},{stepNumber:2,instruction:"Type what you want to search for",expectedElements:["#twotabsearchtextbox"],visualCues:["Text being typed in search bar","Search suggestions appearing"],aiPrompt:"Has the user typed something in the search bar? Are there words visible?",helpText:"Type the name of the product you're looking for."},{stepNumber:3,instruction:"Press Enter or click the search button (magnifying glass)",expectedElements:["#nav-search-submit-button",'input[type="submit"]'],visualCues:["Orange magnifying glass icon next to search bar"],aiPrompt:"Have search results appeared? Can you see a list of products?",highlightSelector:"#nav-search-submit-button",helpText:"Click the orange magnifying glass icon or press Enter on your keyboard."}]},{id:"amazon-add-to-cart",title:"Add Item to Cart on Amazon",category:"shopping",difficulty:"easy",estimatedMinutes:3,website:"amazon.com",description:"Add a product to your shopping cart",icon:"🛒",prerequisites:["Must be on a product page"],steps:[{stepNumber:1,instruction:"Make sure you're on the product page you want",expectedElements:["#productTitle",".product-title"],visualCues:["Product image","Product title","Price information"],aiPrompt:"Is a product page visible with product details, price, and buy options?",helpText:"You should see a large product image and details about the item."},{stepNumber:2,instruction:'Scroll down if needed to find the "Add to Cart" button',expectedElements:["#add-to-cart-button",'input[name="submit.add-to-cart"]'],visualCues:['Yellow "Add to Cart" button',"Buy Now button nearby"],aiPrompt:'Is the "Add to Cart" button visible on screen?',highlightSelector:"#add-to-cart-button",helpText:'Look for the bright yellow "Add to Cart" button on the right side.'},{stepNumber:3,instruction:'Click the "Add to Cart" button',expectedElements:["#add-to-cart-button"],visualCues:["Confirmation message","Cart count increased"],aiPrompt:"Has the item been added? Look for confirmation message or cart update.",highlightSelector:"#add-to-cart-button",helpText:'Click the yellow "Add to Cart" button once.'}]},{id:"facebook-create-post",title:"Create a Post on Facebook",category:"social",difficulty:"easy",estimatedMinutes:3,website:"facebook.com",description:"Share a status update on Facebook",icon:"📝",prerequisites:["Must be logged into Facebook"],steps:[{stepNumber:1,instruction:`Click on "What's on your mind?" box at the top of your feed`,expectedElements:['[aria-label*="Create a post"]',`[placeholder*="What's on your mind"]`],visualCues:["White box with your profile picture",`Text says "What's on your mind?"`],aiPrompt:"Is the status update box visible? Has the create post dialog opened?",highlightSelector:'[aria-label*="Create a post"]',helpText:`Look for the box at the top of your News Feed that says "What's on your mind?"`},{stepNumber:2,instruction:"Type your post message",expectedElements:[`[aria-label*="What's on your mind"]`,'div[role="textbox"]'],visualCues:["Cursor blinking in text area","Keyboard appearing"],aiPrompt:"Is the post composer open? Has the user typed any message?",helpText:"Click in the text area and type what you want to share."},{stepNumber:3,instruction:'Click the "Post" button to share',expectedElements:['[aria-label*="Post"]','button[type="submit"]'],visualCues:['Blue "Post" button at bottom right'],aiPrompt:"Has the post been published? Look for the post appearing in the feed.",highlightSelector:'[aria-label*="Post"]',helpText:'Click the blue "Post" button at the bottom right to share your post.'}]},{id:"facebook-like-post",title:"Like a Post on Facebook",category:"social",difficulty:"easy",estimatedMinutes:1,website:"facebook.com",description:"React to a friend's post",icon:"👍",steps:[{stepNumber:1,instruction:"Find a post you want to like in your News Feed",expectedElements:['[role="article"]','[role="feed"]'],visualCues:["Posts visible in feed","Like button under posts"],aiPrompt:"Can you see posts in the News Feed?",helpText:"Scroll through your News Feed to find a post you like."},{stepNumber:2,instruction:'Click the "Like" button (thumbs up icon) under the post',expectedElements:['[aria-label*="Like"]','div[role="button"][aria-label*="Like"]'],visualCues:["Thumbs up icon",'"Like" text'],aiPrompt:"Has the Like button been clicked? Did it change color to blue?",highlightSelector:'[aria-label*="Like"]',helpText:"The Like button is right under the post - it looks like a thumbs up."}]},{id:"bank-check-balance",title:"Check Account Balance",category:"banking",difficulty:"easy",estimatedMinutes:2,de
1scription:"View your current account balance",icon:"💰",prerequisites:["Must be logged into online banking"],steps:[{stepNumber:1,instruction:'Find and click on "Accounts" or "My Accounts"',expectedElements:['a[href*="accounts"]','button:contains("Accounts")'],visualCues:["Navigation menu",'"Accounts" link or button'],aiPrompt:'Is there an "Accounts" section visible in the navigation?',helpText:'Look in the top menu or sidebar for an "Accounts" option.'},{stepNumber:2,instruction:"Click on the account you want to view",expectedElements:['[class*="account"]',"[data-account]"],visualCues:["List of accounts","Account names and numbers"],aiPrompt:"Can you see a list of accounts? Are balances visible?",helpText:"You should see your checking, savings, or other accounts listed."},{stepNumber:3,instruction:"View your current balance",expectedElements:['[class*="balance"]',".account-balance"],visualCues:["Dollar amount displayed",'Label saying "Balance" or "Current Balance"'],aiPrompt:"Is the account balance clearly visible on screen?",helpText:"Your balance should be displayed prominently, usually in large numbers."}]},{id:"youtube-search-video",title:"Search for a Video on YouTube",category:"general",difficulty:"easy",estimatedMinutes:2,website:"youtube.com",description:"Find and watch a video",icon:"▶️",steps:[{stepNumber:1,instruction:"Click in the search bar at the top",expectedElements:['input[name="search_query"]',"#search"],visualCues:['Search bar with "Search" placeholder'],aiPrompt:"Is the search bar visible and focused?",highlightSelector:'input[name="search_query"]',helpText:"The search bar is at the top center of YouTube."},{stepNumber:2,instruction:"Type what you want to watch",expectedElements:['input[name="search_query"]'],visualCues:["Text in search bar","Search suggestions appearing"],aiPrompt:"Has the user typed search text?",helpText:"Type keywords for the video you want to find."},{stepNumber:3,instruction:"Press Enter or click the search button",expectedElements:["#search-icon-legacy",'button[aria-label*="Search"]'],visualCues:["Magnifying glass icon"],aiPrompt:"Have search results appeared? Can you see video thumbnails?",highlightSelector:"#search-icon-legacy",helpText:"Click the magnifying glass icon or press Enter."},{stepNumber:4,instruction:"Click on a video thumbnail to watch it",expectedElements:["a#video-title","ytd-video-renderer"],visualCues:["Grid of video thumbnails","Video titles"],aiPrompt:"Has a video started playing? Is the video player visible?",helpText:"Click on any video thumbnail that interests you."}]},{id:"google-search",title:"Search on Google",category:"general",difficulty:"easy",estimatedMinutes:1,website:"google.com",description:"Search for information online",icon:"🔍",steps:[{stepNumber:1,instruction:"Click in the Google search bar",expectedElements:['input[name="q"]','textarea[name="q"]'],visualCues:["Large search bar in center","Google logo above"],aiPrompt:"Is the Google search bar visible and focused?",highlightSelector:'input[name="q"]',helpText:"The search bar is in the center of the Google homepage."},{stepNumber:2,instruction:"Type your search query",expectedElements:['input[name="q"]'],visualCues:["Text appearing in search bar","Search suggestions below"],aiPrompt:"Has the user typed something to search for?",helpText:"Type what you want to search for."},{stepNumber:3,instruction:'Press Enter or click "Google Search"',expectedElements:['input[name="btnK"]','button[name="btnK"]'],visualCues:['"Google Search" button below search bar'],aiPrompt:"Have search results appeared?",helpText:'Press Enter or click the "Google Search" button.'}]},{id:"weather-check",title:"Check the Weather",category:"general",difficulty:"easy",estimatedMinutes:2,website:"weather.com",description:"See the weather forecast",icon:"🌤️",steps:[{stepNumber:1,instruction:'Go to weather.com or search "weather" on Google',expectedElements:['input[name="q"]',".search"],visualCues:["Search bar","Weather information"],aiPrompt:"Is a weather website visible?",helpText:'Type "weather.com" in your browser or search "weather" on Google.'},{stepNumber:2,instruction:"Enter your city name or zip code",expectedElements:['input[type="search"]',"#LocationSearch_input"],visualCues:["L
1ocation search field"],aiPrompt:"Has the user entered their location?",helpText:"Type your city name or zip code in the search box."},{stepNumber:3,instruction:"View your local weather forecast",expectedElements:[".forecast",'[class*="CurrentConditions"]'],visualCues:["Temperature displayed","Weather icon","Forecast information"],aiPrompt:"Is the weather forecast visible with temperature and conditions?",helpText:"You should now see the current temperature and forecast."}]},{id:"zoom-join-meeting",title:"Join a Zoom Meeting",category:"general",difficulty:"medium",estimatedMinutes:3,website:"zoom.us",description:"Join a video call on Zoom",icon:"📹",steps:[{stepNumber:1,instruction:'Click "Join a Meeting" button',expectedElements:['a[href*="join"]','button:contains("Join")'],visualCues:['Blue "Join a Meeting" button'],aiPrompt:'Is there a "Join a Meeting" option visible?',highlightSelector:'a[href*="join"]',helpText:'Look for "Join a Meeting" on the Zoom website or in the app.'},{stepNumber:2,instruction:"Enter the Meeting ID you received",expectedElements:['input[name*="meeting"]',"#join-confno"],visualCues:["Text field for Meeting ID","9-11 digit number"],aiPrompt:"Has the user entered a meeting ID?",highlightSelector:'input[name*="meeting"]',helpText:"Type or paste the Meeting ID number (usually 9-11 digits)."},{stepNumber:3,instruction:'Click "Join" to enter the meeting',expectedElements:['button[type="submit"]','button:contains("Join")'],visualCues:["Blue Join button"],aiPrompt:"Has the user clicked Join? Is the meeting loading or waiting room visible?",highlightSelector:'button[type="submit"]',helpText:'Click the "Join" button to enter the meeting.'}]},{id:"gmail-attach-file",title:"Attach a File to Gmail",category:"email",difficulty:"medium",estimatedMinutes:4,website:"mail.google.com",description:"Add an attachment to an email",icon:"📎",prerequisites:["Gmail compose window must be open"],steps:[{stepNumber:1,instruction:"Open the compose window (click Compose)",expectedElements:['[gh="cm"]'],visualCues:["Compose button","Email composition window"],aiPrompt:"Is the Gmail compose window open?",highlightSelector:'[gh="cm"]',helpText:'Click the "Compose" button if not already composing an email.'},{stepNumber:2,instruction:"Click the paperclip (attachment) icon",expectedElements:['[aria-label*="Attach"]','div[data-tooltip*="Attach"]'],visualCues:["Paperclip icon at bottom of compose window"],aiPrompt:"Has the file browser opened for selecting attachments?",highlightSelector:'[aria-label*="Attach"]',helpText:"Look for the paperclip icon at the bottom of the email window."},{stepNumber:3,instruction:"Select the file you want to attach from your computer",expectedElements:['input[type="file"]'],visualCues:["File browser window open","List of files and folders"],aiPrompt:"Is a file selection dialog visible? Has a file been selected?",helpText:'Browse to find your file, click it, then click "Open" or "Choose".'},{stepNumber:4,instruction:"Wait for the file to upload (you'll see a progress bar)",expectedElements:[".dL",'[class*="upload"]'],visualCues:["Upload progress bar","File name appearing in email"],aiPrompt:"Is the file uploaded? Can you see the filename in the email?",helpText:"The file will upload automatically. Wait for it to finish."}]},{id:"gmail-delete-email",title:"Delete an Email in Gmail",category:"email",difficulty:"easy",estimatedMinutes:2,website:"mail.google.com",description:"Move an email to trash",icon:"🗑️",steps:[{stepNumber:1,instruction:"Select the email by clicking the checkbox next to it",expectedElements:['[role="checkbox"]',".oZ-x3"],visualCues:["Checkbox becomes checked","Email row is highlighted"],aiPrompt:"Is an email selected? Is the checkbox marked?",highlightSelector:'[role="checkbox"]',helpText:"Click the small square box to the left of the email."},{stepNumber:2,instruction:"Click the trash can (delete) icon",expectedElements:['[aria-label*="Delete"]','[data-tooltip*="Delete"]'],visualCues:["Trash can icon in toolbar","Delete button"],aiPrompt:"Has the email disappeared from the inbox? Look for c
1onfirmation.",highlightSelector:'[aria-label*="Delete"]',helpText:"Click the trash can icon at the top of your inbox."}]},{id:"amazon-track-order",title:"Track Your Amazon Order",category:"shopping",difficulty:"easy",estimatedMinutes:3,website:"amazon.com",description:"See where your package is",icon:"📦",prerequisites:["Must be logged into Amazon","Must have placed an order"],steps:[{stepNumber:1,instruction:'Click on "Returns & Orders" at the top right',expectedElements:["#nav-orders",'a[href*="your-orders"]'],visualCues:['"Returns & Orders" link in top menu'],aiPrompt:"Is the Orders page visible?",highlightSelector:"#nav-orders",helpText:'Look in the top right corner for "Returns & Orders".'},{stepNumber:2,instruction:"Find the order you want to track",expectedElements:[".order-card",".order-info"],visualCues:["List of recent orders","Order images and details"],aiPrompt:"Can you see your orders listed?",helpText:"Scroll through your recent orders."},{stepNumber:3,instruction:'Click "Track Package" button',expectedElements:['a:contains("Track package")','button:contains("Track")'],visualCues:['"Track package" button next to order'],aiPrompt:"Is the tracking information visible? Can you see where the package is?",helpText:'Click the "Track Package" button for your order.'}]},{id:"amazon-write-review",title:"Write a Product Review on Amazon",category:"shopping",difficulty:"medium",estimatedMinutes:5,website:"amazon.com",description:"Share your experience with a product",icon:"⭐",prerequisites:["Must have purchased the product"],steps:[{stepNumber:1,instruction:"Go to Your Orders and find the product",expectedElements:["#nav-orders"],visualCues:["Returns & Orders page","List of orders"],aiPrompt:"Is the user on the Orders page?",highlightSelector:"#nav-orders",helpText:'Click "Returns & Orders" at the top of Amazon.'},{stepNumber:2,instruction:'Click "Write a product review"',expectedElements:['a[href*="review"]','button:contains("Write")'],visualCues:['"Write a product review" button'],aiPrompt:"Has the review form opened?",helpText:'Find and click "Write a product review" for your item.'},{stepNumber:3,instruction:"Select a star rating (1-5 stars)",expectedElements:['[class*="star"]','input[type="radio"][name*="star"]'],visualCues:["5 stars to choose from","Stars highlight when hovering"],aiPrompt:"Has the user selected a star rating?",helpText:"Click on the stars to rate: 5 stars = excellent, 1 star = poor."},{stepNumber:4,instruction:"Write your review in the text box",expectedElements:["textarea",'[aria-label*="review"]'],visualCues:["Large text area for review"],aiPrompt:"Has the user typed a review?",helpText:"Type what you think about the product in the box."},{stepNumber:5,instruction:'Click "Submit" to post your review',expectedElements:['button[type="submit"]','input[type="submit"]'],visualCues:["Submit button at bottom"],aiPrompt:"Has the review been submitted? Look for confirmation.",helpText:'Click the "Submit" button at the bottom.'}]},{id:"facebook-comment",title:"Comment on a Facebook Post",category:"social",difficulty:"easy",estimatedMinutes:2,website:"facebook.com",description:"Leave a comment on a post",icon:"💬",steps:[{stepNumber:1,instruction:"Find a post you want to comment on",expectedElements:['[role="article"]'],visualCues:["Posts in News Feed"],aiPrompt:"Can you see posts in the feed?",helpText:"Scroll through your News Feed."},{stepNumber:2,instruction:'Click on "Write a comment..." box under the post',expectedElements:['[aria-label*="Write a comment"]','[placeholder*="comment"]'],visualCues:["Comment box below post","Your profile picture"],aiPrompt:"Is the comment box active and ready for typing?",highlightSelector:'[aria-label*="Write a comment"]',helpText:'Click in the "Write a comment..." box under the post.'},{stepNumber:3,instruction:"Type your comment",expectedElements:['[aria-label*="Write a comment"]'],visualCues:["Text appearing in comment box"],aiPrompt:"Has the user typed a comment?",helpText:"Type what you want to say."},{stepNumber:4,instruction:"Press Enter to post your comment",expectedElements:[],visualCues:["Comment appears under the post"],aiPrompt:"Has the comment been posted? Can you see it below the post?",helpText:"Press Enter on your keyboard to post the comment."}]},{id:"facebook-share-photo",title:"Share a Photo on Facebook",category:"social",difficulty:"medium",estimatedMinutes:4,website:"facebook.com",description:"Upload and share a picture",icon:"📸",steps:[{stepNumber:1,instruction:`Click "What's on your mind?" to create a post`,expectedElements:['[aria-label*="Create a post"]'],visualCues:["Post creation box at top of feed"],aiPrompt:"Has the post composer opened?",highlightSelector:'[aria-label*="Create a post"]',helpText:`Click the "What's on your mind?" box.`},{stepNumber:2,instruction:'Click the "Photo/Video" button',expectedElements:['[aria-label*="Photo/video"]'],visualCues:["Green icon with image symbol","Photo/Video button"],aiPrompt:"Has the file selector opened?",highlightSelector:'[aria-label*="Photo/video"]',helpText:'Click the "Photo/Video" button (green icon).'},{stepNumber:3,instruction:"Select a photo from your computer",expectedElements:['input[type="file"]'],visualCues:["File browser window","Your photos visible"],aiPrompt:"Has a photo been selected and is uploading?",helpText:'Choose a photo from your computer and click "Open".'},{stepNumber:4,instruction:"Add a caption if you want (optional)",expectedElements:[`[aria-label*="What's on your mind"]`],visualCues:["Text box with photo preview"],aiPrompt:"Is the photo visible in the post composer?",helpText:"You can type a message about the photo if you like."},{stepNumber:5,instruction:'Click "Post" to share your photo',expectedElements:['[aria-label*="Post"]'],visualCues:["Blue Post button"],aiPrompt:"Has the photo been posted? Look for it in the feed.",highlightSelector:'[aria-label*="Post"]',helpText:'Click the blue "Post" button to share.'}]},{id:"download-file",title:"Download a File from the Internet",category:"general",difficulty:"medium",estimatedMinutes:3,description:"Save a file to your computer",icon:"⬇️",steps:[{stepNumber:1,instruction:"Find the download button or link on the webpage",expectedElements:["a[download]",'button:contains("Download")'],visualCues:["Download button","Download icon","Download link"],aiPrompt:"Is there a download button visible?",helpText:'Look for a button or link that says "Download".'},{stepNumber:2,instruction:"Click the download button",expectedElements:[],visualCues:["Download starting","Progress 
1indicator"],aiPrompt:"Has the download started? Look for download progress or save dialog.",helpText:"Click the download button once."},{stepNumber:3,instruction:"Choose where to save the file if asked",expectedElements:[],visualCues:["Save file dialog","File location picker"],aiPrompt:"Is a file save dialog visible? Has the user chosen a location?",helpText:"Select Downloads folder or choose another location, then click Save."},{stepNumber:4,instruction:"Wait for the download to complete",expectedElements:[],visualCues:["Download progress bar","Completion notification"],aiPrompt:"Has the download finished? Look for completion message.",helpText:"The file will download automatically. Look for a notification when done."}]},{id:"print-webpage",title:"Print a Web Page",category:"general",difficulty:"medium",estimatedMinutes:3,description:"Print what you see on screen",icon:"🖨️",steps:[{stepNumber:1,instruction:"Press Ctrl+P (Windows) or Cmd+P (Mac) on your keyboard",expectedElements:[],visualCues:["Print dialog opening"],aiPrompt:"Has the print dialog opened?",helpText:"Use the keyboard shortcut: Ctrl+P on Windows, Command+P on Mac."},{stepNumber:2,instruction:"Select your printer from the list",expectedElements:['select[name*="printer"]',"#printer-dropdown"],visualCues:["Printer selection dropdown","List of printers"],aiPrompt:"Is a printer selected?",helpText:"Click the dropdown menu and choose your printer."},{stepNumber:3,instruction:"Adjust print settings if needed (pages, color, etc.)",expectedElements:[],visualCues:["Print preview","Settings options"],aiPrompt:"Can you see the print preview and settings?",helpText:"You can change settings like number of copies or color vs. black & white."},{stepNumber:4,instruction:'Click the "Print" button',expectedElements:['button:contains("Print")',"#print-button"],visualCues:["Blue or green Print button"],aiPrompt:"Has printing started? Dialog should close.",helpText:'Click the big "Print" button to start printing.'}]},{id:"take-screenshot",title:"Take a Screenshot",category:"general",difficulty:"medium",estimatedMinutes:2,description:"Capture what's on your screen",icon:"📷",steps:[{stepNumber:1,instruction:"For Windows: Press Windows key + Shift + S. For Mac: Press Cmd + Shift + 4",expectedElements:[],visualCues:["Screen dims","Crosshair cursor appears","Screenshot tool activates"],aiPrompt:"Has the screenshot tool activated? Look for visual changes to screen.",helpText:"Windows: Win+Shift+S. Mac: Cmd+Shift+4."},{stepNumber:2,instruction:"Click and drag to select the area you want to capture",expectedElements:[],visualCues:["Selection rectangle","Highlighted area"],aiPrompt:"Has an area been selected?",helpText:"Click, hold, and drag your mouse to select what you want to capture."},{stepNumber:3,instruction:"Release the mouse button to take the screenshot",expectedElements:[],visualCues:["Notification about screenshot","Screenshot saved"],aiPrompt:"Has the screenshot been taken? Look for confirmation.",helpText:"Let go of the mouse button and the screenshot will be saved."}]},{id:"video-call-test",title:"Test Your Camera and Microphone",category:"general",difficulty:"medium",estimatedMinutes:3,description:"Make sure your video and audio work",icon:"🎥",steps:[{stepNumber:1,instruction:"Open your video calling app (Zoom, Skype, etc.)",expectedElements:[],visualCues:["Video app interface"],aiPrompt:"Is a video calling application visible?",helpText:"Open Zoom, Skype, Google Meet, or your preferred video app."},{stepNumber:2,instruction:"Go to Settings or Preferences",expectedElements:['[aria-label*="Settings"]','button:contains("Settings")'],visualCues:["Gear icon","Settings menu"],aiPrompt:"Is the Settings menu open?",helpText:'Look for a gear icon or "Settings" in the menu.'},{stepNumber:3,instruction:'Click on "Video" or "Audio" settings',expectedElements:[],visualCues:["Video preview","Camera feed","Microphone test"],aiPrompt:"Can you see your camera preview and audio controls?",helpText:"Select Video or Audio from the settings options."},{stepNumber:4,instruction:"Check that you can see yourself and the audio meter moves when you speak",expectedElements:[],visualCues:["Live video preview","Moving audio bars"],aiPrompt:"Is video showing and audio levels responding to sound?",helpText:"You should see your video and see the audio bars move when you talk."}]},{id:"change-password",title:"Change Your Password",category:"general",difficulty:"hard",estimatedMinutes:4,description:"Update your account password",icon:"🔐",steps:[{stepNumber:1,instruction:"Go to Account Settings or Profile Settings",expectedElements:['[aria-label*="Settings"]','a[href*="settings"]'],visualCues:["Settings link","Profile menu"],aiPrompt:"Is the Settings page visible?",helpText:"Look for Settings, usually in a menu at the top right."},{stepNumber:2,instruction:'Find and click "Security" or "Password" section',expectedElements:['a[href*="security"]','button:contains("Password")'],visualCues:["Security settings","Password change option"],aiPrompt:"Is the password change section visible?",helpText:"Look for Security, Password, or Account Security."},{stepNumber:3,instruction:"Enter your current password",expectedElements:['input[type="password"]','input[name*="current"]'],visualCues:["Current password field"],aiPrompt:"Has the user filled 
1in the current password?",helpText:'Type your old password in the "Current Password" field.'},{stepNumber:4,instruction:"Enter your new password twice",expectedElements:['input[name*="new"]','input[name*="confirm"]'],visualCues:["New password fields","Password strength indicator"],aiPrompt:"Has the user entered a new password in both fields?",helpText:"Type your new password, then type it again to confirm."},{stepNumber:5,instruction:'Click "Save" or "Update Password"',expectedElements:['button[type="submit"]'],visualCues:["Save button","Update button"],aiPrompt:"Has the password been updated? Look for confirmation.",helpText:"Click the Save or Update button to change your password."}]},{id:"create-calendar-event",title:"Create a Calendar Event",category:"general",difficulty:"medium",estimatedMinutes:4,description:"Schedule an appointment or reminder",icon:"📅",steps:[{stepNumber:1,instruction:"Open your calendar app (Google Calendar, Apple Calendar, etc.)",expectedElements:[],visualCues:["Calendar grid view","Dates visible"],aiPrompt:"Is a calendar application visible with dates?",helpText:"Look for your calendar app - it usually shows a monthly grid."},{stepNumber:2,instruction:"Click on the date when you want to create an event",expectedElements:[],visualCues:["Date cell clicked","Create event dialog"],aiPrompt:"Has a date been clicked? Is an event creation dialog visible?",helpText:"Click directly on the day when you want your event."},{stepNumber:3,instruction:"Enter the event title or description",expectedElements:['input[type="text"]',"textarea"],visualCues:["Text input field","Event name field"],aiPrompt:"Is there a text field for the event title? Has text been entered?",helpText:'Type what the event is about (e.g., "Doctor Appointment").'},{stepNumber:4,instruction:"Set the time for your event",expectedElements:[],visualCues:["Time picker","Hour and minute fields"],aiPrompt:"Is a time selector visible? Has a time been set?",helpText:"Choose the hour and minute when your event starts."},{stepNumber:5,instruction:'Click "Save" or "Create" to add the event',expectedElements:['button:contains("Save")','button:contains("Create")'],visualCues:["Save button","Event appears on calendar"],aiPrompt:"Has the event been saved? Is it now visible on the calendar?",helpText:"Click the Save or Create button to finish."}]},{id:"update-profile-picture",title:"Change Your Profile Picture",category:"social",difficulty:"medium",estimatedMinutes:5,description:"Update your photo on social media or accounts",icon:"🖼️",steps:[{stepNumber:1,instruction:"Go to your profile or account settings",expectedElements:['a[href*="profile"]','a[href*="settings"]'],visualCues:["Profile icon","Settings menu"],aiPrompt:"Is the user in their profile or settings page?",helpText:'Click on your profile picture or name, then "Settings".'},{stepNumber:2,instruction:"Click on your current profile picture",expectedElements:['img[class*="profile"]','[aria-label*="profile picture"]'],visualCues:["Profile photo","Edit option visible"],aiPrompt:"Is there a profile picture visible with edit options?",helpText:"Click directly on your profile photo to edit it."},{stepNumber:3,instruction:'Select "Upload Photo" or "Change Picture"',expectedElements:['button:contains("Upload")','input[type="file"]'],visualCues:["Upload button","File picker opens"],aiPrompt:"Has the file upload option appeared?",helpText:'Look for an "Upload" or "Change" button and click it.'},{stepNumber:4,instruction:"Choose a photo from your computer",expectedElements:['input[type="file"]'],visualCues:["File browser window","Your photos visible"],aiPrompt:"Is the file selection dialog open? Has a file been chosen?",helpText:'Browse to find a photo you like, click it, then click "Open".'},{stepNumber:5,instruction:"Crop or adjust the photo if needed, then save",expectedElements:['button:contains("Save")','button:contains("Apply")'],visualCues:["Photo preview","Crop tool","Save button"],aiPrompt:"Is the new photo visible? Has it been saved?",helpText:'You can adjust how the photo looks, then click "Save".'}]},{id:"set-reminder",title:"Set a Reminder on Your Phone",category:"general",difficulty:"easy",estimatedMinutes:3,description:"Create a reminder so you don't forget",icon:"⏰",steps:[{stepNumber:1,instruction:"Open the Reminders app (iPhone) or Reminder/Tasks app (Android)",expectedElements:[],visualCues:["Reminders app icon","List of reminders"],aiPrompt:"Is a reminders or tasks application visible?",helpText:"Find the Reminders app on your phone and tap it."},{stepNumber:2,instruction:'Tap the "+" or "New Reminder" button',expectedElements:['button[aria-label*="Add"]','button:contains("+")'],visualCues:["Plus icon","Add button","New reminder field"],aiPrompt:"Is there a new reminder creation field visible?",helpText:'Look for a "+" button, usually at the top or bottom.'},{stepNumber:3,instruction:"Type what you want to be reminded about",expectedElements:["input","textarea"],visualCues:["Text field active","Keyboard appears"],aiPrompt:"Is text being entered for the reminder?",helpText:'Type what you need to remember (e.g., "Take medicine").'},{stepNumber:4,instruction:"Set the date and time for the reminder",expectedElements:[],visualCues:["Date picker","Time picker","Calendar view"],aiPrompt:"Are date/time selectors visible? Has a time been set?",helpText:"Tap the date/time option and choose when you want to be reminded."},{stepNumber:5,instruction:'Tap "Done" or "Save" to create the reminder',expectedElements:['button:contains("Done")','button:contains("Save")'],visualCues:["Done button","Reminder appears in list"],aiPrompt:"Has the reminder been saved? Is it now in the list?",helpText:'Tap "Done" or "Save" at the top right.'}]}];function X(d){return j.filter(t=>t.category===d)}function ee(){return j.filter(d=>
1d.difficulty==="easy"&&d.estimatedMinutes<=5)}class te{constructor(){y(this,"currentTask",null);y(this,"currentStepIndex",0);y(this,"lastDetectionTime",0);y(this,"detectionInterval",3e3);y(this,"stuckCounter",0);y(this,"maxStuckCount",5)}async startTask(t){return this.currentTask=j.find(o=>o.id===t)||null,this.currentStepIndex=0,this.stuckCounter=0,this.lastDetectionTime=0,this.currentTask?(console.log(`✅ Started task: ${this.currentTask.title}`),this.currentTask):(console.error(`Task not found: ${t}`),null)}getCurrentTask(){return this.currentTask}getCurrentStepIndex(){return this.currentStepIndex}getCurrentStep(){return!this.currentTask||this.currentStepIndex>=this.currentTask.steps.length?null:this.currentTask.steps[this.currentStepIndex]}isUserStuck(){return this.stuckCounter>=this.maxStuckCount}resetStuckCounter(){this.stuckCounter=0}moveToNextStep(){return this.currentTask&&this.currentStepIndex<this.currentTask.steps.length-1?(this.currentStepIndex++,this.stuckCounter=0,console.log(`📍 Moved to step ${this.currentStepIndex+1}`),!0):!1}moveToPreviousStep(){return this.currentStepIndex>0?(this.currentStepIndex--,this.stuckCounter=0,console.log(`📍 Moved back to step ${this.currentStepIndex+1}`),!0):!1}endTask(){var t;console.log(`🏁 Ended task: ${((t=this.currentTask)==null?void 0:t.title)||"Unknown"}`),this.currentTask=null,this.currentStepIndex=0,this.stuckCounter=0}isTaskComplete(){return this.currentTask?this.currentStepIndex>=this.currentTask.steps.length-1:!1}async detectCurrentStep(t,o,n){if(!this.currentTask)return{currentStep:0,completed:!1,confidence:0,method:"dom",error:"No active task"};const s=Date.now();if(s-this.lastDetectionTime<this.detectionInterval)return{currentStep:this.currentStepIndex,completed:!1,confidence:0,method:"dom",error:"Rate limited - too soon since last detection"};this.lastDetectionTime=s;const a=this.currentTask.steps[this.currentStepIndex],u=this.currentTask.steps[this.currentStepIndex+1];if(console.log(`🔍 Detecting progress for step ${this.currentStepIndex+1}: "${a.instruction}"`),o&&a.expectedElements&&a.expectedElements.length>0){console.log("🌳 Attempting DOM-based detection...");const i=this.checkDOMMatch(o,a);if(i.confidence>.8)return console.log(`✅ DOM detection successful (confidence: ${i.confidence})`),i.completed?this.moveToNextStep()&&this.resetStuckCounter():this.stuckCounter++,{currentStep:this.currentStepIndex,completed:i.completed,confidence:i.confidence,method:"dom",nextAction:u==null?void 0:u.instruction};console.log(`⚠️ DOM detection inconclusive (confidence: ${i.confidence})`)}console.log("👁️ Using AI vision analysis...");try{const i=await this.analyzeWithAI(t,a,u,n);return i.completed?this.moveToNextStep()&&this.resetStuckCounter():this.stuckCounter++,i}catch(i){return console.error("❌ AI vision analysis failed:",i),this.stuckCounter++,{currentStep:this.currentStepIndex,completed:!1,confidence:0,method:"vision",error:i instanceof Error?i.message:"Unknown error"}}}checkDOMMatch(t,o){if(!o.expectedElements||o.expectedElements.length===0)return{confidence:0,completed:!1,elementsFound:[]};const n=[];let s=0;for(const m of o.expectedElements)this.elementExistsInDOM(t,m)&&(n.push(m),s++);const a=s/o.expectedElements.length,u=a,i=a>=.5;return console.log(`🌳 DOM Match: ${s}/${o.expectedElements.length} elements found`),{confidence:u,completed:i,elementsFound:n}}elementExistsInDOM(t,o){if(!t)return!1;if(typeof t=="string"){const n=o.toLowerCase(),s=t.toLowerCase();if(n.includes("[")&&n.includes("=")){const a=n.match(/\[([\w-]+)[*^$]?=["'](.+?)["']\]/);if(a){const[,u,i]=a;return s.includes(`${u}="${i}"`)||s.includes(`${u}='${i}'`)||s.includes(i.toLowerCase())}}if(n.startsWith("#")){const a=n.substring(1);return s.includes(`id="${a}"`)||s.includes(`id='${a}'`)}if(n.startsWith(".")){const a=n.substring(1);return s.includes(`class="${a}"`)||s.includes(`class='${a}'`)||s.includes(a)}return s.includes(n.replace(/[[\]"']/g,""))}return typeof t=="object"?this.searchDOMObject(t,o):!1}searchDOMObject(t,o){if(!t)return!1;const n=o.toLowerCase();if(t.role&&n.includes(t.role.toLowerCase())||t.title&&n.includes(t.title.toLowerCase())||t.label&&n.includes(t.label.toLowerCase())||t.value&&n.includes(t.value.toLowerCase()))return!0;
1if(t.children&&Array.isArray(t.children)){for(const s of t.children)if(this.searchDOMObject(s,o))return!0}return!1}async analyzeWithAI(t,o,n,s){var u;const a=`You are helping a senior complete this task step. Analyze the screenshot carefully.
2
3**Current Step ${o.stepNumber}:** "${o.instruction}"
4**Visual cues to look for:** ${(u=o.visualCues)==null?void 0:u.join(", ")}
5**Specific AI prompt:** ${o.aiPrompt}
6
7${n?`**Next Step ${n.stepNumber}:** "${n.instruction}"`:"**This is the final step.**"}
8
9${s!=null&&s.url?`Current URL: ${s.url}`:""}
10${s!=null&&s.appName?`Current App: ${s.appName}`:""}
11
12Analyze the screenshot and determine:
131. Has the user completed the current step? (yes/no/unclear)
142. What step number are they currently on? (${o.stepNumber} or ${(n==null?void 0:n.stepNumber)||"complete"})
153. What should they do next? (specific guidance)
164. Confidence level (0-100) - how certain are you?
175. Brief reasoning for your assessment
18
19Respond ONLY with valid JSON in this exact format:
20{
21  "stepCompleted": true or false,
22  "currentStepNumber": ${o.stepNumber},
23  "nextAction": "specific guidance for user",
24  "confidence": 0-100,
25  "reasoning": "brief explanation"
26}`;try{const i=await fetch("/api/analyze-task-progress",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({prompt:a,screenshot:t,model:"gpt-4-vision-preview"})});if(!i.ok)throw new Error(`API request failed: ${i.status}`);const m=await i.json();let b;if(m.choices&&m.choices[0]&&m.choices[0].message){const S=m.choices[0].message.content.match(/\{[\s\S]*\}/);if(S)b=JSON.parse(S[0]);else throw new Error("No JSON found in AI response")}else throw new Error("Invalid response format from AI");const f=(b.confidence||0)/100;return{currentStep:this.currentStepIndex,completed:b.stepCompleted||!1,confidence:f,method:"vision",nextAction:b.nextAction,reasoning:b.reasoning}}catch(i){throw console.error("AI vision analysis error:",i),i}}forceCompleteStep(){return this.currentTask?(console.log(`⏭️ Force completing step ${this.currentStepIndex+1}`),this.moveToNextStep()):!1}getProgressPercentage(){return!this.currentTask||this.currentTask.steps.length===0?0:Math.round(this.currentStepIndex/this.currentTask.steps.length*100)}getRemainingSteps(){return this.currentTask?Math.max(0,this.currentTask.steps.length-this.currentStepIndex-1):0}getEstimatedTimeRemaining(){if(!this.currentTask)return 0;const t=this.currentTask.steps.length,o=this.getRemainingSteps()+1;return Math.round(this.currentTask.estimatedMinutes*o/t)}}const p=new te,D=navigator.userAgent.toLowerCase().includes("electron"),ce=({onMinimize:d,onClose:t})=>{const[o,n]=r.useState("selector"),[s,a]=r.useState(!1),u=r.useRef(null),[i,m]=r.useState(null),[b,f]=r.useState(0),[P,S]=r.useState(0),[N,w]=r.useState(0),[M,k]=r.useState(0),[E,A]=r.useState(!1),[H,R]=r.useState(0),[oe,O]=r.useState(""),v=r.useRef(null),[C,W]=r.useState(null),F=r.useCallback(async l=>{console.log("🎯 Starting task:",l.title),await p.startTask(l.id)&&(m(l),S(l.steps.length),f(0),k(0),w(0),n("active"),I())},[]),I=r.useCallback(()=>{if(v.current&&clearInterval(v.current),!D){console.warn("⚠️ Task detection requires Electron environment");return}console.log("🔄 Starting detection loop..."),A(!0);const l=async()=>{try{const h=window.electronAPI;if(!h){console.error("❌ Electron API not available");return}const c=await h.invoke("request-screenshot-base64"),x=await h.invoke("get-context-signals"),T=await p.detectCurrentStep(c,(x==null?void 0:x.dom)||x,x);console.log("📊 Detection result:",T),R(T.confidence),O(T.reasoning||""),f(p.getCurrentStepIndex()),k(p.getProgressPercentage()),w(p.isUserStuck()?N+1:0),p.isTaskComplete()&&Y()}catch(h){console.error("❌ Detection error:",h)}};v.current=setInterval(l,3e3),l()},[N]),g=r.useCallback(()=>{v.current&&(clearInterval(v.current),v.current=null),A(!1)},[]),$=r.useCallback(()=>{console.log("⏸️ Pausing task"),g()},[g]),z=r.useCallback(()=>{console.log("▶️ Resuming task"),I()},[I]),G=r.useCallback(()=>{console.log("❌ Cancelling task"),g(),p.endTask(),m(null),n("selector"),f(0),k(0),w(0)},[g]),Y=r.useCallback(()=>{console.log("🎉 Task complete!"),g(),n("complete")},[g]),L=r.useCallback(()=>{p.forceCompleteStep(),f(p.getCurrentStepIndex()),k(p.getProgressPercentage()),w(0)},[]),B=r.useCallback(()=>{p.moveToPreviousStep(),f(p.getCurrentStepIndex()),k(p.getProgressPercentage()),w(0)},[]);r.useEffect(()=>()=>{g()},[g]),r.useEffect(()=>{if(!D)return;const l=window.electronAPI;
26if(!l)return;const h=c=>{W(c)};return l.on("show-highlight",h),()=>{}},[]);const q=()=>i&&i.steps[b]||null,U=()=>{const l=ee(),h=["email","shopping","social","general"];return e.jsxs("div",{className:"glassmorphism-card p-6 max-w-2xl",children:[e.jsxs("div",{className:"mb-6",children:[e.jsx("h2",{className:"text-2xl font-bold text-white mb-2",children:"What would you like to do?"}),e.jsx("p",{className:"text-white/70 text-sm",children:"I'll guide you step-by-step through the task"})]}),e.jsxs("div",{className:"mb-6",children:[e.jsx("h3",{className:"text-lg font-semibold text-white mb-3",children:"⭐ Quick Start (Easy Tasks)"}),e.jsx("div",{className:"space-y-2",children:l.slice(0,5).map(c=>e.jsx("button",{onClick:()=>F(c),className:`w-full text-left p-4 bg-white/10 hover:bg-white/20 
27                         rounded-lg transition-all group`,children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"text-3xl",children:c.icon}),e.jsxs("div",{className:"flex-1",children:[e.jsx("div",{className:"font-semibold text-white group-hover:text-blue-200",children:c.title}),e.jsxs("div",{className:"text-sm text-white/60",children:[c.estimatedMinutes," minutes • ",c.difficulty]})]}),e.jsx("div",{className:"text-white/40 group-hover:text-white/60",children:"→"})]})},c.id))})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold text-white mb-3",children:"Browse All Tasks"}),e.jsx("div",{className:"grid grid-cols-2 gap-3",children:h.map(c=>{const x=X(c),T={email:"✉️",shopping:"🛒",social:"👥",general:"🌐"},K={email:"Email",shopping:"Shopping",social:"Social Media",general:"General"};return e.jsxs("button",{className:`p-4 bg-white/10 hover:bg-white/20 rounded-lg 
28                           transition-all text-left`,onClick:()=>{console.log("Show category:",c)},children:[e.jsx("div",{className:"text-2xl mb-2",children:T[c]}),e.jsx("div",{className:"font-semibold text-white",children:K[c]}),e.jsxs("div",{className:"text-sm text-white/60",children:[x.length," tasks"]})]},c)})})]}),e.jsx("button",{onClick:t,className:`mt-4 w-full p-2 text-white/60 hover:text-white 
29                   transition-colors text-sm`,children:"Close"})]})},J=()=>{const l=q();return!l||!i?null:e.jsxs("div",{className:"glassmorphism-card p-6 max-w-lg",children:[e.jsxs("div",{className:"mb-4 flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-sm text-white/60",children:"Task Guide"}),e.jsx("div",{className:"text-lg font-bold text-white",children:i.title})]}),e.jsx("button",{onClick:()=>a(!s),className:"p-2 hover:bg-white/10 rounded-lg transition-colors",children:e.jsx("span",{className:"text-white text-xl",children:s?"🔼":"🔽"})})]}),!s&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"mb-4",children:[e.jsxs("div",{className:"flex justify-between text-sm text-white/80 mb-2",children:[e.jsxs("span",{children:["Step ",b+1," of ",P]}),e.jsxs("span",{children:[M,"%"]})]}),e.jsx("div",{className:"h-2 bg-white/20 rounded-full overflow-hidden",children:e.jsx("div",{className:`h-full bg-gradient-to-r from-blue-400 to-green-400 
30                           transition-all duration-500`,style:{width:`${M}%`}})})]}),e.jsxs("div",{className:"bg-white/10 rounded-lg p-4 mb-4",children:[e.jsxs("div",{className:"text-xl font-bold text-white mb-2",children:["Step ",l.stepNumber]}),e.jsx("div",{className:"text-lg text-white mb-2",children:l.instruction}),l.visualCues&&l.visualCues.length>0&&e.jsxs("div",{className:"mt-3 text-sm text-white/70",children:[e.jsx("div",{className:"font-semibold mb-1",children:"Look for:"}),e.jsx("ul",{className:"list-disc list-inside space-y-1",children:l.visualCues.map((h,c)=>e.jsx("li",{children:h},c))})]}),E&&e.jsx("div",{className:"mt-3 pt-3 border-t border-white/20",children:e.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[e.jsx("div",{className:"w-2 h-2 bg-green-400 rounded-full animate-pulse"}),e.jsxs("span",{className:"text-white/60",children:["Watching for progress... ",Math.round(H*100),"% confident"]})]})})]}),N>3&&l.helpText&&e.jsxs("div",{className:`bg-yellow-500/20 border border-yellow-500/50 
31                            rounded-lg p-4 mb-4`,children:[e.jsx("div",{className:"text-yellow-200 font-semibold mb-2",children:"💡 Need some help?"}),e.jsx("div",{className:"text-yellow-100 text-sm mb-3",children:l.helpText}),e.jsx("button",{onClick:L,className:`w-full bg-yellow-500/30 hover:bg-yellow-500/40 
32                           text-yellow-100 py-2 px-4 rounded-lg transition-colors`,children:"I've done this step - Continue"})]}),e.jsxs("div",{className:"flex gap-2 mb-2",children:[e.jsx("button",{onClick:B,disabled:b===0,className:`flex-1 bg-white/10 hover:bg-white/20 disabled:opacity-50 
33                         disabled:cursor-not-allowed text-white py-2 px-4 rounded-lg 
34                         transition-colors`,children:"← Previous"}),e.jsx("button",{onClick:L,disabled:b>=P-1,className:`flex-1 bg-blue-500/80 hover:bg-blue-500 
35                         disabled:opacity-50 disabled:cursor-not-allowed 
36                         text-white py-2 px-4 rounded-lg transition-colors`,children:"Next →"})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("button",{onClick:E?$:z,className:`flex-1 bg-white/10 hover:bg-white/20 text-white 
37                         py-2 px-4 rounded-lg transition-colors`,children:E?"⏸️ Pause":"▶️ Resume"}),e.jsx("button",{onClick:G,className:`flex-1 bg-red-500/20 hover:bg-red-500/30 text-red-200 
38                         py-2 px-4 rounded-lg transition-colors`,children:"Cancel"})]})]})]})},V=()=>e.jsxs("div",{className:"glassmorphism-card p-6 max-w-md text-center",children:[e.jsx("div",{className:"text-6xl mb-4",children:"🎉"}),e.jsx("h2",{className:"text-2xl font-bold text-white mb-2",children:"Great job!"}),e.jsxs("p",{className:"text-white/70 mb-6",children:["You completed: ",i==null?void 0:i.title]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("button",{onClick:()=>n("selector"),className:`w-full bg-blue-500 hover:bg-blue-600 text-white 
39                     py-3 px-4 rounded-lg transition-colors`,children:"Choose Another Task"}),e.jsx("button",{onClick:t,className:`w-full bg-white/10 hover:bg-white/20 text-white 
40                     py-3 px-4 rounded-lg transition-colors`,children:"Close"})]})]});return e.jsxs(e.Fragment,{children:[e.jsx(Q,{nodeRef:u,handle:".drag-handle",bounds:"parent",children:e.jsx("div",{ref:u,style:{position:"fixed",top:"max(5rem, calc(env(safe-area-inset-top, 0px) + 3rem))",right:"max(1rem, env(safe-area-inset-right, 0px))",left:"auto",maxWidth:"min(calc(100vw - 2rem), 24rem)",zIndex:9999},children:e.jsxs("div",{className:"drag-handle cursor-move",children:[o==="selector"&&U(),o==="active"&&J(),o==="complete"&&V()]})})}),C&&o==="active"&&e.jsx("div",{style:{position:"fixed",left:C.x,top:C.y,width:C.width,height:C.height,border:"3px solid #3b82f6",borderRadius:"8px",boxShadow:"0 0 0 4px rgba(59, 130, 246, 0.3), 0 0 20px rgba(59, 130, 246, 0.5)",pointerEvents:"none",zIndex:9998,animation:"pulse 2s infinite"},children:e.jsx("div",{style:{position:"absolute",top:-48,left:"50%",transform:"translateX(-50%)",fontSize:"32px",color:"#3b82f6",animation:"bounce 1s infinite"},children:"↓"})})]})};export{ce as TaskGuideOverlay,ce as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.