this repo has no description

record menu

+60 -57
+2 -2
src/components/account.tsx
··· 68 return ( 69 <> 70 <Modal open={openManager()} onClose={() => setOpenManager(false)}> 71 - <div class="dark:bg-dark-800/70 dark:shadow-dark-900/80 absolute top-12 left-[50%] w-[22rem] -translate-x-1/2 rounded-lg border-[0.5px] border-neutral-300 bg-neutral-200/70 p-4 text-neutral-900 shadow-md backdrop-blur-xs transition-opacity duration-300 dark:border-neutral-700 dark:text-neutral-200 starting:opacity-0"> 72 <div class="mb-2 flex items-center gap-1 font-semibold"> 73 <span class="iconify lucide--user-round"></span> 74 <span>Manage accounts</span> ··· 113 class="flex items-center rounded-lg p-1 hover:bg-neutral-200 active:bg-neutral-200 dark:hover:bg-neutral-700 dark:active:bg-neutral-700" 114 > 115 {agent() && avatar() ? 116 - <img src={avatar()} class="dark:shadow-dark-900/80 size-5 rounded-full shadow-sm" /> 117 : <span class="iconify lucide--circle-user-round text-xl"></span>} 118 </button> 119 </>
··· 68 return ( 69 <> 70 <Modal open={openManager()} onClose={() => setOpenManager(false)}> 71 + <div class="dark:bg-dark-800/70 dark:shadow-dark-800 absolute top-12 left-[50%] w-[22rem] -translate-x-1/2 rounded-lg border-[0.5px] border-neutral-300 bg-neutral-200/70 p-4 text-neutral-900 shadow-md backdrop-blur-xs transition-opacity duration-300 dark:border-neutral-700 dark:text-neutral-200 starting:opacity-0"> 72 <div class="mb-2 flex items-center gap-1 font-semibold"> 73 <span class="iconify lucide--user-round"></span> 74 <span>Manage accounts</span> ··· 113 class="flex items-center rounded-lg p-1 hover:bg-neutral-200 active:bg-neutral-200 dark:hover:bg-neutral-700 dark:active:bg-neutral-700" 114 > 115 {agent() && avatar() ? 116 + <img src={avatar()} class="dark:shadow-dark-800 size-5 rounded-full shadow-sm" /> 117 : <span class="iconify lucide--circle-user-round text-xl"></span>} 118 </button> 119 </>
+1 -1
src/components/button.tsx
··· 12 type="button" 13 class={ 14 props.class ?? 15 - "dark:hover:bg-dark-100 dark:bg-dark-300 dark:shadow-dark-900/80 dark:active:bg-dark-100 flex items-center gap-1 rounded-lg bg-white px-2 py-1.5 text-xs font-semibold shadow-sm hover:bg-neutral-50 active:bg-neutral-50" 16 } 17 onClick={props.onClick} 18 >
··· 12 type="button" 13 class={ 14 props.class ?? 15 + "dark:hover:bg-dark-100 dark:bg-dark-300 dark:shadow-dark-800 dark:active:bg-dark-100 flex items-center gap-1 rounded-lg bg-white px-2 py-1.5 text-xs font-semibold shadow-sm hover:bg-neutral-50 active:bg-neutral-50" 16 } 17 onClick={props.onClick} 18 >
+3 -3
src/components/create.tsx
··· 164 return ( 165 <> 166 <Modal open={openDialog()} onClose={() => setOpenDialog(false)} closeOnClick={false}> 167 - <div class="dark:bg-dark-800/70 dark:shadow-dark-900/80 absolute top-12 left-[50%] w-[22rem] -translate-x-1/2 rounded-lg border-[0.5px] border-neutral-300 bg-neutral-200/70 p-2 text-neutral-900 shadow-md backdrop-blur-xs transition-opacity duration-300 sm:w-xl sm:p-4 lg:w-[48rem] dark:border-neutral-700 dark:text-neutral-200 starting:opacity-0"> 168 <div class="mb-2 flex w-full justify-between"> 169 <div class="flex items-center gap-1 font-semibold"> 170 <span class="iconify lucide--square-pen"></span> ··· 202 <select 203 name="validate" 204 id="validate" 205 - class="dark:bg-dark-100 focus:outline-1.5 dark:shadow-dark-900/80 rounded-lg bg-white px-1 py-1 shadow-sm focus:outline-neutral-900 dark:focus:outline-neutral-200" 206 > 207 <option value="unset">Unset</option> 208 <option value="true">True</option> ··· 211 </div> 212 <div class="flex items-center gap-2"> 213 <Show when={!uploading()}> 214 - <div class="dark:hover:bg-dark-100 dark:bg-dark-300 dark:shadow-dark-900/80 dark:active:bg-dark-100 flex rounded-lg bg-white text-xs font-semibold shadow-sm hover:bg-neutral-50 active:bg-neutral-50"> 215 <input type="file" id="blob" hidden onChange={() => uploadBlob()} /> 216 <label class="flex items-center gap-1 px-2 py-1.5" for="blob"> 217 <span class="iconify lucide--upload text-sm"></span>
··· 164 return ( 165 <> 166 <Modal open={openDialog()} onClose={() => setOpenDialog(false)} closeOnClick={false}> 167 + <div class="dark:bg-dark-800/70 dark:shadow-dark-800 absolute top-12 left-[50%] w-[22rem] -translate-x-1/2 rounded-lg border-[0.5px] border-neutral-300 bg-neutral-200/70 p-2 text-neutral-900 shadow-md backdrop-blur-xs transition-opacity duration-300 sm:w-xl sm:p-4 lg:w-[48rem] dark:border-neutral-700 dark:text-neutral-200 starting:opacity-0"> 168 <div class="mb-2 flex w-full justify-between"> 169 <div class="flex items-center gap-1 font-semibold"> 170 <span class="iconify lucide--square-pen"></span> ··· 202 <select 203 name="validate" 204 id="validate" 205 + class="dark:bg-dark-100 focus:outline-1.5 dark:shadow-dark-800 rounded-lg bg-white px-1 py-1 shadow-sm focus:outline-neutral-900 dark:focus:outline-neutral-200" 206 > 207 <option value="unset">Unset</option> 208 <option value="true">True</option> ··· 211 </div> 212 <div class="flex items-center gap-2"> 213 <Show when={!uploading()}> 214 + <div class="dark:hover:bg-dark-100 dark:bg-dark-300 dark:shadow-dark-800 dark:active:bg-dark-100 flex rounded-lg bg-white text-xs font-semibold shadow-sm hover:bg-neutral-50 active:bg-neutral-50"> 215 <input type="file" id="blob" hidden onChange={() => uploadBlob()} /> 216 <label class="flex items-center gap-1 px-2 py-1.5" for="blob"> 217 <span class="iconify lucide--upload text-sm"></span>
+12 -8
src/components/dropdown.tsx
··· 24 return <MenuContext.Provider value={value}>{props.children}</MenuContext.Provider>; 25 }; 26 27 - export const CopyMenu = (props: { copyContent: string; label: string }) => { 28 const ctx = useContext(MenuContext); 29 30 return ( ··· 33 addToClipboard(props.copyContent); 34 ctx?.setShowMenu(false); 35 }} 36 - class="flex rounded-lg p-1 whitespace-nowrap hover:bg-neutral-200/50 active:bg-neutral-200/50 dark:hover:bg-neutral-700 dark:active:bg-neutral-700" 37 > 38 - {props.label} 39 </button> 40 ); 41 }; 42 43 - export const NavMenu = (props: { href: string; label: string; icon: string }) => { 44 const ctx = useContext(MenuContext); 45 46 return ( 47 <A 48 href={props.href} 49 onClick={() => ctx?.setShowMenu(false)} 50 - class="flex items-center gap-1 rounded-lg p-1 hover:bg-neutral-200/50 active:bg-neutral-200/50 dark:hover:bg-neutral-700 dark:active:bg-neutral-700" 51 > 52 - <span class={"iconify " + props.icon}></span> 53 - <span>{props.label}</span> 54 </A> 55 ); 56 }; ··· 89 <div 90 ref={setMenu} 91 class={ 92 - "dark:bg-dark-300 absolute right-0 z-20 flex flex-col rounded-lg border-[0.5px] border-neutral-300 bg-neutral-50 shadow-md dark:border-neutral-700 " + 93 props.menuClass 94 } 95 >
··· 24 return <MenuContext.Provider value={value}>{props.children}</MenuContext.Provider>; 25 }; 26 27 + export const CopyMenu = (props: { copyContent: string; label: string; icon?: string }) => { 28 const ctx = useContext(MenuContext); 29 30 return ( ··· 33 addToClipboard(props.copyContent); 34 ctx?.setShowMenu(false); 35 }} 36 + class="flex items-center gap-1.5 rounded-lg p-1 whitespace-nowrap hover:bg-neutral-200/50 active:bg-neutral-200/50 dark:hover:bg-neutral-700 dark:active:bg-neutral-700" 37 > 38 + <Show when={props.icon}> 39 + <span class={"iconify shrink-0 " + props.icon}></span> 40 + </Show> 41 + <span class="whitespace-nowrap">{props.label}</span> 42 </button> 43 ); 44 }; 45 46 + export const NavMenu = (props: { href: string; label: string; icon: string; newTab?: boolean }) => { 47 const ctx = useContext(MenuContext); 48 49 return ( 50 <A 51 href={props.href} 52 onClick={() => ctx?.setShowMenu(false)} 53 + class="flex items-center gap-1.5 rounded-lg p-1 hover:bg-neutral-200/50 active:bg-neutral-200/50 dark:hover:bg-neutral-700 dark:active:bg-neutral-700" 54 + target={props.newTab ? "_blank" : undefined} 55 > 56 + <span class={"iconify shrink-0 " + props.icon}></span> 57 + <span class="whitespace-nowrap">{props.label}</span> 58 </A> 59 ); 60 }; ··· 93 <div 94 ref={setMenu} 95 class={ 96 + "dark:bg-dark-300 dark:shadow-dark-800 absolute right-0 z-20 flex flex-col rounded-lg border-[0.5px] border-neutral-300 bg-neutral-50 shadow-md dark:border-neutral-700 " + 97 props.menuClass 98 } 99 >
+1 -1
src/components/editor.tsx
··· 54 window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change", themeEvent), 55 ); 56 57 - return <div ref={editorDiv} class="dark:shadow-dark-900/80 shadow-sm"></div>; 58 }; 59 60 export { Editor };
··· 54 window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change", themeEvent), 55 ); 56 57 + return <div ref={editorDiv} class="dark:shadow-dark-800 shadow-sm"></div>; 58 }; 59 60 export { Editor };
+1 -1
src/components/search.tsx
··· 55 PDS URL, AT URI, or handle 56 </label> 57 <div class="flex w-full items-center gap-2"> 58 - <div class="dark:bg-dark-100 dark:shadow-dark-900/80 flex grow items-center gap-2 rounded-lg bg-white px-2 py-1 shadow-sm focus-within:outline-[1.5px] focus-within:outline-neutral-900 dark:focus-within:outline-neutral-200"> 59 <input 60 type="text" 61 spellcheck={false}
··· 55 PDS URL, AT URI, or handle 56 </label> 57 <div class="flex w-full items-center gap-2"> 58 + <div class="dark:bg-dark-100 dark:shadow-dark-800 flex grow items-center gap-2 rounded-lg bg-white px-2 py-1 shadow-sm focus-within:outline-[1.5px] focus-within:outline-neutral-900 dark:focus-within:outline-neutral-200"> 59 <input 60 type="text" 61 spellcheck={false}
+1 -1
src/components/text-input.tsx
··· 25 disabled={props.disabled} 26 required={props.required} 27 class={ 28 - "dark:bg-dark-100 dark:shadow-dark-900/80 rounded-lg bg-white px-2 py-1 shadow-sm placeholder:text-sm focus:outline-[1.5px] focus:outline-neutral-900 dark:focus:outline-neutral-200 " + 29 props.class 30 } 31 onInput={props.onInput}
··· 25 disabled={props.disabled} 26 required={props.required} 27 class={ 28 + "dark:bg-dark-100 dark:shadow-dark-800 rounded-lg bg-white px-2 py-1 shadow-sm placeholder:text-sm focus:outline-[1.5px] focus:outline-neutral-900 dark:focus:outline-neutral-200 " + 29 props.class 30 } 31 onInput={props.onInput}
+1 -1
src/components/tooltip.tsx
··· 8 <Show when={!isTouchDevice}> 9 <span 10 style={`transform: translate(-50%, 28px)`} 11 - class={`dark:shadow-dark-900/80 pointer-events-none absolute left-[50%] z-10 hidden min-w-fit rounded border-[0.5px] border-neutral-300 bg-white p-1 text-center font-sans text-xs whitespace-nowrap text-neutral-900 shadow-md select-none group-hover/tooltip:inline first-letter:capitalize dark:border-neutral-600 dark:bg-neutral-800 dark:text-neutral-200`} 12 > 13 {props.text} 14 </span>
··· 8 <Show when={!isTouchDevice}> 9 <span 10 style={`transform: translate(-50%, 28px)`} 11 + class={`dark:shadow-dark-800 pointer-events-none absolute left-[50%] z-10 hidden min-w-fit rounded border-[0.5px] border-neutral-300 bg-white p-1 text-center font-sans text-xs whitespace-nowrap text-neutral-900 shadow-md select-none group-hover/tooltip:inline first-letter:capitalize dark:border-neutral-600 dark:bg-neutral-800 dark:text-neutral-200`} 12 > 13 {props.text} 14 </span>
+1 -1
src/layout.tsx
··· 98 </div> 99 <Show when={notif().show}> 100 <button 101 - class="dark:shadow-dark-900/80 dark:bg-dark-100/70 fixed bottom-10 z-50 flex items-center rounded-lg border-[0.5px] border-neutral-300 bg-white/70 p-2 shadow-md backdrop-blur-xs dark:border-neutral-700" 102 onClick={() => setNotif({ show: false })} 103 > 104 <span class={`iconify ${notif().icon} mr-1`}></span>
··· 98 </div> 99 <Show when={notif().show}> 100 <button 101 + class="dark:shadow-dark-800 dark:bg-dark-100/70 fixed bottom-10 z-50 flex items-center rounded-lg border-[0.5px] border-neutral-300 bg-white/70 p-2 shadow-md backdrop-blur-xs dark:border-neutral-700" 102 onClick={() => setNotif({ show: false })} 103 > 104 <span class={`iconify ${notif().icon} mr-1`}></span>
+1 -1
src/views/collection.tsx
··· 52 <Show when={hover()}> 53 <span 54 ref={previewRef} 55 - class={`dark:bg-dark-500/70 dark:shadow-dark-900/80 pointer-events-none absolute left-[50%] z-25 block max-h-[20rem] w-max max-w-sm -translate-x-1/2 overflow-hidden rounded-lg border-[0.5px] border-neutral-300 bg-neutral-100/70 p-2 text-xs whitespace-pre-wrap shadow-md backdrop-blur-xs sm:max-h-[28rem] lg:max-w-lg dark:border-neutral-700 ${isOverflowing(previewHeight()) ? "bottom-7" : "top-7"}`} 56 > 57 <JSONValue 58 data={props.record.record.value as JSONType}
··· 52 <Show when={hover()}> 53 <span 54 ref={previewRef} 55 + class={`dark:bg-dark-500/70 dark:shadow-dark-800 pointer-events-none absolute left-[50%] z-25 block max-h-[20rem] w-max max-w-sm -translate-x-1/2 overflow-hidden rounded-lg border-[0.5px] border-neutral-300 bg-neutral-100/70 p-2 text-xs whitespace-pre-wrap shadow-md backdrop-blur-xs sm:max-h-[28rem] lg:max-w-lg dark:border-neutral-700 ${isOverflowing(previewHeight()) ? "bottom-7" : "top-7"}`} 56 > 57 <JSONValue 58 data={props.record.record.value as JSONType}
+1 -1
src/views/labels.tsx
··· 73 spellcheck={false} 74 rows={3} 75 value={searchParams.uriPatterns ?? "*"} 76 - class="dark:bg-dark-100 focus:outline-1.5 dark:shadow-dark-900/80 mb-1 grow rounded-lg bg-white px-2 py-1 shadow-sm focus:outline-neutral-900 dark:focus:outline-neutral-200" 77 /> 78 <div class="flex justify-center"> 79 <Show when={!response.loading}>
··· 73 spellcheck={false} 74 rows={3} 75 value={searchParams.uriPatterns ?? "*"} 76 + class="dark:bg-dark-100 focus:outline-1.5 dark:shadow-dark-800 mb-1 grow rounded-lg bg-white px-2 py-1 shadow-sm focus:outline-neutral-900 dark:focus:outline-neutral-200" 77 /> 78 <div class="flex justify-center"> 79 <Show when={!response.loading}>
+32 -33
src/views/record.tsx
··· 6 import { Backlinks } from "../components/backlinks.jsx"; 7 import { Button } from "../components/button.jsx"; 8 import { RecordEditor } from "../components/create.jsx"; 9 import { JSONValue } from "../components/json.jsx"; 10 import { agent } from "../components/login.jsx"; 11 import { Modal } from "../components/modal.jsx"; ··· 13 import Tooltip from "../components/tooltip.jsx"; 14 import { setNotif } from "../layout.jsx"; 15 import { didDocCache, resolvePDS } from "../utils/api.js"; 16 - import { addToClipboard } from "../utils/copy.js"; 17 import { AtUri, uriTemplates } from "../utils/templates.js"; 18 import { lexicons } from "../utils/types/lexicons.js"; 19 import { verifyRecord } from "../utils/verify.js"; ··· 113 return ( 114 <Show when={record()} keyed> 115 <div class="flex w-full flex-col items-center"> 116 - <div class="dark:shadow-dark-900/80 dark:bg-dark-300 my-3 flex w-[22rem] justify-between rounded-lg bg-neutral-50 px-2 py-1.5 shadow-sm sm:w-[24rem]"> 117 <div class="flex gap-3 text-sm"> 118 <A 119 classList={{ ··· 150 </button> 151 </Tooltip> 152 <Modal open={openDelete()} onClose={() => setOpenDelete(false)}> 153 - <div class="dark:bg-dark-800/70 dark:shadow-dark-900/80 absolute top-70 left-[50%] -translate-x-1/2 rounded-lg border-[0.5px] border-neutral-300 bg-neutral-200/70 p-4 text-neutral-900 shadow-md backdrop-blur-xs transition-opacity duration-300 dark:border-neutral-700 dark:text-neutral-200 starting:opacity-0"> 154 <h2 class="mb-2 font-semibold">Delete this record?</h2> 155 <div class="flex justify-end gap-2"> 156 <Button onClick={() => setOpenDelete(false)}>Cancel</Button> 157 <Button 158 onClick={deleteRecord} 159 - class="dark:shadow-dark-900/80 rounded-lg bg-red-500 px-2 py-1.5 text-xs font-semibold text-neutral-200 shadow-sm hover:bg-red-400 active:bg-red-400" 160 > 161 Delete 162 </Button> ··· 164 </div> 165 </Modal> 166 </Show> 167 - <Tooltip text="Copy record"> 168 - <button 169 - class="flex items-center rounded-sm p-1 hover:bg-neutral-200 active:bg-neutral-200 dark:hover:bg-neutral-700 dark:active:bg-neutral-700" 170 - onclick={() => addToClipboard(JSON.stringify(record()?.value, null, 2))} 171 > 172 - <span class="iconify lucide--copy"></span> 173 - </button> 174 - </Tooltip> 175 - <Show when={externalLink()}> 176 - {(externalLink) => ( 177 - <Tooltip text={`Open on ${externalLink().label}`}> 178 - <a 179 - class="flex items-center rounded-sm p-1 hover:bg-neutral-200 active:bg-neutral-200 dark:hover:bg-neutral-700 dark:active:bg-neutral-700" 180 - target="_blank" 181 - href={externalLink()?.link} 182 - > 183 - <span class={`iconify ${externalLink().icon ?? "lucide--app-window"}`}></span> 184 - </a> 185 - </Tooltip> 186 - )} 187 - </Show> 188 - <Tooltip text="Record on PDS"> 189 - <a 190 - class="flex items-center rounded-sm p-1 hover:bg-neutral-200 active:bg-neutral-200 dark:hover:bg-neutral-700 dark:active:bg-neutral-700" 191 - href={`https://${pds()}/xrpc/com.atproto.repo.getRecord?repo=${params.repo}&collection=${params.collection}&rkey=${params.rkey}`} 192 - target="_blank" 193 - > 194 - <span class="iconify lucide--external-link"></span> 195 - </a> 196 - </Tooltip> 197 </div> 198 </div> 199 <Show when={!location.hash || location.hash === "#record"}>
··· 6 import { Backlinks } from "../components/backlinks.jsx"; 7 import { Button } from "../components/button.jsx"; 8 import { RecordEditor } from "../components/create.jsx"; 9 + import { CopyMenu, DropdownMenu, MenuProvider, NavMenu } from "../components/dropdown.jsx"; 10 import { JSONValue } from "../components/json.jsx"; 11 import { agent } from "../components/login.jsx"; 12 import { Modal } from "../components/modal.jsx"; ··· 14 import Tooltip from "../components/tooltip.jsx"; 15 import { setNotif } from "../layout.jsx"; 16 import { didDocCache, resolvePDS } from "../utils/api.js"; 17 import { AtUri, uriTemplates } from "../utils/templates.js"; 18 import { lexicons } from "../utils/types/lexicons.js"; 19 import { verifyRecord } from "../utils/verify.js"; ··· 113 return ( 114 <Show when={record()} keyed> 115 <div class="flex w-full flex-col items-center"> 116 + <div class="dark:shadow-dark-800 dark:bg-dark-300 my-3 flex w-[22rem] justify-between rounded-lg bg-neutral-50 px-2 py-1.5 shadow-sm sm:w-[24rem]"> 117 <div class="flex gap-3 text-sm"> 118 <A 119 classList={{ ··· 150 </button> 151 </Tooltip> 152 <Modal open={openDelete()} onClose={() => setOpenDelete(false)}> 153 + <div class="dark:bg-dark-800/70 dark:shadow-dark-800 absolute top-70 left-[50%] -translate-x-1/2 rounded-lg border-[0.5px] border-neutral-300 bg-neutral-200/70 p-4 text-neutral-900 shadow-md backdrop-blur-xs transition-opacity duration-300 dark:border-neutral-700 dark:text-neutral-200 starting:opacity-0"> 154 <h2 class="mb-2 font-semibold">Delete this record?</h2> 155 <div class="flex justify-end gap-2"> 156 <Button onClick={() => setOpenDelete(false)}>Cancel</Button> 157 <Button 158 onClick={deleteRecord} 159 + class="dark:shadow-dark-800 rounded-lg bg-red-500 px-2 py-1.5 text-xs font-semibold text-neutral-200 shadow-sm hover:bg-red-400 active:bg-red-400" 160 > 161 Delete 162 </Button> ··· 164 </div> 165 </Modal> 166 </Show> 167 + <MenuProvider> 168 + <DropdownMenu 169 + icon="lucide--ellipsis-vertical " 170 + buttonClass="rounded-sm p-1" 171 + menuClass="top-8 p-2 text-sm" 172 > 173 + <CopyMenu 174 + copyContent={JSON.stringify(record()?.value, null, 2)} 175 + label="Copy record" 176 + icon="lucide--copy" 177 + /> 178 + <Show when={externalLink()}> 179 + {(externalLink) => ( 180 + <NavMenu 181 + href={externalLink()?.link} 182 + icon={`${externalLink().icon ?? "lucide--app-window"}`} 183 + label={`Open on ${externalLink().label}`} 184 + newTab 185 + /> 186 + )} 187 + </Show> 188 + <NavMenu 189 + href={`https://${pds()}/xrpc/com.atproto.repo.getRecord?repo=${params.repo}&collection=${params.collection}&rkey=${params.rkey}`} 190 + icon="lucide--external-link" 191 + label="Record on PDS" 192 + newTab 193 + /> 194 + </DropdownMenu> 195 + </MenuProvider> 196 </div> 197 </div> 198 <Show when={!location.hash || location.hash === "#record"}>
+1 -1
src/views/repo.tsx
··· 109 <div class="flex items-center justify-between"> 110 <div class="flex items-center gap-1"> 111 <div class="iconify lucide--filter" /> 112 - <div class="dark:shadow-dark-900/80 dark:bg-dark-300 flex w-fit items-center rounded-full bg-white shadow-sm"> 113 <FilterButton icon="iconify lucide--at-sign" event="handle" /> 114 <FilterButton icon="iconify lucide--key-round" event="rotation_key" /> 115 <FilterButton icon="iconify lucide--hard-drive" event="service" />
··· 109 <div class="flex items-center justify-between"> 110 <div class="flex items-center gap-1"> 111 <div class="iconify lucide--filter" /> 112 + <div class="dark:shadow-dark-800 dark:bg-dark-300 flex w-fit items-center rounded-full bg-white shadow-sm"> 113 <FilterButton icon="iconify lucide--at-sign" event="handle" /> 114 <FilterButton icon="iconify lucide--key-round" event="rotation_key" /> 115 <FilterButton icon="iconify lucide--hard-drive" event="service" />
+2 -2
src/views/stream.tsx
··· 194 spellcheck={false} 195 placeholder="Comma-separated list of collections" 196 value={searchParams.collections ?? ""} 197 - class="dark:bg-dark-100 focus:outline-1.5 dark:shadow-dark-900/80 w-[16rem] rounded-lg bg-white px-2 py-1 shadow-sm focus:outline-neutral-900 dark:focus:outline-neutral-200" 198 /> 199 </label> 200 </Show> ··· 206 spellcheck={false} 207 placeholder="Comma-separated list of DIDs" 208 value={searchParams.dids ?? ""} 209 - class="dark:bg-dark-100 focus:outline-1.5 dark:shadow-dark-900/80 w-[16rem] rounded-lg bg-white px-2 py-1 shadow-sm focus:outline-neutral-900 dark:focus:outline-neutral-200" 210 /> 211 </label> 212 </Show>
··· 194 spellcheck={false} 195 placeholder="Comma-separated list of collections" 196 value={searchParams.collections ?? ""} 197 + class="dark:bg-dark-100 focus:outline-1.5 dark:shadow-dark-800 w-[16rem] rounded-lg bg-white px-2 py-1 shadow-sm focus:outline-neutral-900 dark:focus:outline-neutral-200" 198 /> 199 </label> 200 </Show> ··· 206 spellcheck={false} 207 placeholder="Comma-separated list of DIDs" 208 value={searchParams.dids ?? ""} 209 + class="dark:bg-dark-100 focus:outline-1.5 dark:shadow-dark-800 w-[16rem] rounded-lg bg-white px-2 py-1 shadow-sm focus:outline-neutral-900 dark:focus:outline-neutral-200" 210 /> 211 </label> 212 </Show>