the universal sandbox runtime for agents and humans. pocketenv.io
sandbox openclaw agent claude-code vercel-sandbox deno-sandbox cloudflare-sandbox atproto sprites daytona
7
fork

Configure Feed

Select the types of activity you want to include in your feed.

Make logo clickable and enable sandbox navigation

+115 -77
+95 -76
apps/web/src/components/navbar/Navbar.tsx
··· 49 49 return ( 50 50 <nav className="navbar bg-base-100 h-[65px]"> 51 51 <div className="flex flex-1 items-center"> 52 - {withLogo && <img src={Logo} className="max-h-[40px] mr-[15px]" />} 52 + {withLogo && ( 53 + <Link to="/"> 54 + <img src={Logo} className="max-h-[40px] mr-[15px]" /> 55 + </Link> 56 + )} 53 57 <div className="text-base-content link-neutral font-semibold no-underline text-[23px]"> 54 58 {title} 55 59 </div> ··· 84 88 Docs 85 89 </a> 86 90 </div> 87 - <div 88 - ref={dropdownRef} 89 - className={`dropdown relative inline-flex [--auto-close:inside] [--offset:8] [--placement:bottom-end] ${ 90 - open ? "open" : "" 91 - }`} 92 - > 93 - <button 94 - id="dropdown-scrollable" 95 - type="button" 96 - className="dropdown-toggle flex items-center" 97 - aria-haspopup="menu" 98 - aria-expanded={open ? "true" : "false"} 99 - aria-label="Dropdown" 100 - onClick={toggleDropdown} 101 - > 102 - <div className="avatar avatar-placeholder"> 103 - <div className="bg-secondary/10 w-10 rounded-full flex items-center justify-center"> 104 - {true && ( 105 - <img 106 - src="https://cdn.bsky.app/img/avatar/plain/did:plc:7vdlgi2bflelz7mmuxoqjfcr/bafkreiebrezrvxt3istx4i4x3wqsfyle4shfetwq6nmlykoputyyqqe5ri@jpeg" 107 - alt="avatar 1" 108 - /> 109 - )} 110 - {false && <span className="icon-[tabler--user] size-5 "></span>} 111 - </div> 112 - </div> 113 - </button> 114 - <ul 115 - className={`dropdown-menu dropdown-open:opacity-100 absolute right-0 top-full mt-2 min-w-60 z-50 ${ 116 - open ? "" : "hidden" 91 + {false && ( 92 + <div 93 + ref={dropdownRef} 94 + className={`dropdown relative inline-flex [--auto-close:inside] [--offset:8] [--placement:bottom-end] ${ 95 + open ? "open" : "" 117 96 }`} 118 - role="menu" 119 - aria-orientation="vertical" 120 - aria-labelledby="dropdown-avatar" 121 97 > 122 - <li className="dropdown-header gap-2"> 123 - <div className="avatar"> 124 - <div className="w-10 rounded-full"> 125 - <img 126 - src="https://cdn.bsky.app/img/avatar/plain/did:plc:7vdlgi2bflelz7mmuxoqjfcr/bafkreiebrezrvxt3istx4i4x3wqsfyle4shfetwq6nmlykoputyyqqe5ri@jpeg" 127 - alt="avatar" 128 - /> 98 + <button 99 + id="dropdown-scrollable" 100 + type="button" 101 + className="dropdown-toggle flex items-center" 102 + aria-haspopup="menu" 103 + aria-expanded={open ? "true" : "false"} 104 + aria-label="Dropdown" 105 + onClick={toggleDropdown} 106 + > 107 + <div className="avatar avatar-placeholder"> 108 + <div className="bg-secondary/10 w-10 rounded-full flex items-center justify-center"> 109 + {true && ( 110 + <img 111 + src="https://cdn.bsky.app/img/avatar/plain/did:plc:7vdlgi2bflelz7mmuxoqjfcr/bafkreiebrezrvxt3istx4i4x3wqsfyle4shfetwq6nmlykoputyyqqe5ri@jpeg" 112 + alt="avatar 1" 113 + /> 114 + )} 115 + {false && ( 116 + <span className="icon-[tabler--user] size-5 "></span> 117 + )} 129 118 </div> 130 119 </div> 131 - <div> 132 - <h6 className="text-base-content text-base font-semibold"> 133 - Tsiry Sandratraina 134 - </h6> 135 - <small className="text-base-content/50"> 136 - @tsiry-sandratraina.com 137 - </small> 138 - </div> 139 - </li> 140 - <li> 141 - <a className="dropdown-item" href="/"> 142 - <span className="icon-[tabler--layout-dashboard]"></span> 143 - Dashboard 144 - </a> 145 - </li> 146 - <li> 147 - <Link className="dropdown-item" to="/settings"> 148 - <span className="icon-[tabler--settings]"></span> 149 - Settings 150 - </Link> 151 - </li> 152 - <li> 153 - <a className="dropdown-item" href="/faqs"> 154 - <span className="icon-[tabler--help-triangle]"></span> 155 - FAQs 156 - </a> 157 - </li> 158 - <li className="dropdown-footer gap-2"> 159 - <button className="btn btn-primary btn-block" onClick={onSignOut}> 160 - <span className="icon-[tabler--logout]"></span> 161 - Sign out 162 - </button> 163 - </li> 164 - </ul> 165 - </div> 120 + </button> 121 + <ul 122 + className={`dropdown-menu dropdown-open:opacity-100 absolute right-0 top-full mt-2 min-w-60 z-50 ${ 123 + open ? "" : "hidden" 124 + }`} 125 + role="menu" 126 + aria-orientation="vertical" 127 + aria-labelledby="dropdown-avatar" 128 + > 129 + <li className="dropdown-header gap-2"> 130 + <div className="avatar"> 131 + <div className="w-10 rounded-full"> 132 + <img 133 + src="https://cdn.bsky.app/img/avatar/plain/did:plc:7vdlgi2bflelz7mmuxoqjfcr/bafkreiebrezrvxt3istx4i4x3wqsfyle4shfetwq6nmlykoputyyqqe5ri@jpeg" 134 + alt="avatar" 135 + /> 136 + </div> 137 + </div> 138 + <div> 139 + <h6 className="text-base-content text-base font-semibold"> 140 + Tsiry Sandratraina 141 + </h6> 142 + <small className="text-base-content/50"> 143 + @tsiry-sandratraina.com 144 + </small> 145 + </div> 146 + </li> 147 + <li> 148 + <a className="dropdown-item" href="/"> 149 + <span className="icon-[tabler--layout-dashboard]"></span> 150 + Dashboard 151 + </a> 152 + </li> 153 + <li> 154 + <Link className="dropdown-item" to="/settings"> 155 + <span className="icon-[tabler--settings]"></span> 156 + Settings 157 + </Link> 158 + </li> 159 + <li> 160 + <a className="dropdown-item" href="/faqs"> 161 + <span className="icon-[tabler--help-triangle]"></span> 162 + FAQs 163 + </a> 164 + </li> 165 + <li className="dropdown-footer gap-2"> 166 + <button 167 + className="btn btn-primary btn-block" 168 + onClick={onSignOut} 169 + > 170 + <span className="icon-[tabler--logout]"></span> 171 + Sign out 172 + </button> 173 + </li> 174 + </ul> 175 + </div> 176 + )} 177 + {true && ( 178 + <Link 179 + to="/signin" 180 + className="btn btn-block bg-blue-600/20 border-none text-blue-500 font-extrabold w-[100px]" 181 + > 182 + Sign in 183 + </Link> 184 + )} 166 185 </div> 167 186 <NewProject 168 187 isOpen={modalOpen}
+15
apps/web/src/components/newproject/NewProject.tsx
··· 1 1 import { useEffect, useRef, useState } from "react"; 2 2 import { useSandboxesQuery } from "../../hooks/useSandbox"; 3 + import { useNavigate } from "@tanstack/react-router"; 3 4 4 5 export type NewProjectProps = { 5 6 isOpen: boolean; ··· 10 11 const inputRef = useRef<HTMLInputElement>(null); 11 12 const [filter, setFilter] = useState(""); 12 13 const { data, isLoading } = useSandboxesQuery(); 14 + const navigate = useNavigate(); 13 15 14 16 const sandboxes = data?.sandboxes.filter((sandbox) => 15 17 filter ··· 46 48 47 49 const onFilter = (value: string) => { 48 50 setFilter(value); 51 + }; 52 + 53 + const onSelect = async (id: string) => { 54 + await navigate({ to: `/sandbox/${id}` }); 55 + onClose(); 56 + setFilter(""); 49 57 }; 50 58 51 59 return ( ··· 62 70 <div className="form-control w-full"> 63 71 <div className="input input-bordered w-full input-lg text-[15px] font-semibold bg-transparent focus-within:border-pink-500!"> 64 72 <input 73 + type="text" 65 74 ref={inputRef} 66 75 placeholder="What would you like to try?" 67 76 className="grow" 68 77 value={filter} 69 78 onChange={(e) => onFilter(e.target.value)} 79 + autoComplete="off" 80 + name="search-filter" 81 + data-1p-ignore 82 + data-lpignore="true" 83 + data-form-type="other" 70 84 /> 71 85 </div> 72 86 </div> ··· 77 91 <div 78 92 key={item.id} 79 93 className="p-3 hover:bg-white/7 cursor-pointer rounded-md" 94 + onClick={() => onSelect(item.id)} 80 95 > 81 96 <div className="font-semibold">{item.displayName}</div> 82 97 </div>
+5 -1
apps/web/src/pages/signin/SignIn.tsx
··· 19 19 <span className="label-text my-auto text-[16px] opacity-50 mr-[10px]"> 20 20 @ 21 21 </span> 22 - <input placeholder="alice.bsky.social" className="grow " /> 22 + <input 23 + placeholder="alice.bsky.social" 24 + className="grow " 25 + autoFocus 26 + /> 23 27 </div> 24 28 </div> 25 29