Retro Bulletin Board Systems on atproto. Web app and TUI. lazy mirror of alyraffauf/atbbs atbbs.xyz
forums python tui atproto bbs
3
fork

Configure Feed

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

web: add id/name to text fields

+13
+3
web/src/components/ComposeForm.tsx
··· 63 63 64 64 {onTitleChange !== undefined && ( 65 65 <Input 66 + name="title" 66 67 value={title ?? ""} 67 68 onChange={(e) => onTitleChange(e.target.value)} 68 69 placeholder={titlePlaceholder} ··· 72 73 )} 73 74 74 75 <Textarea 76 + name="body" 75 77 value={body} 76 78 onChange={(e) => onBodyChange(e.target.value)} 77 79 onKeyDown={(e) => { ··· 89 91 <label className="text-xs text-neutral-500 hover:text-neutral-300 cursor-pointer block"> 90 92 attach files 91 93 <input 94 + name="attachments" 92 95 type="file" 93 96 multiple 94 97 onChange={(e) => onFilesChange(e.target.files)}
+1
web/src/pages/Home.tsx
··· 106 106 className="flex flex-col sm:flex-row gap-2 mb-6" 107 107 > 108 108 <HandleInput 109 + name="handle" 109 110 value={handle} 110 111 onChange={setHandle} 111 112 required
+1
web/src/pages/Login.tsx
··· 31 31 {error && <p className="text-red-400 mb-4">{error}</p>} 32 32 <form onSubmit={onSubmit} className="flex gap-2 max-w-md"> 33 33 <HandleInput 34 + name="handle" 34 35 value={handle} 35 36 onChange={setHandle} 36 37 required
+3
web/src/pages/SysopCreate.tsx
··· 71 71 <div> 72 72 <label className="block text-neutral-400 mb-1">BBS Name</label> 73 73 <Input 74 + name="name" 74 75 required 75 76 value={name} 76 77 onChange={(e) => setName(e.target.value)} ··· 81 82 <div> 82 83 <label className="block text-neutral-400 mb-1">Description</label> 83 84 <Input 85 + name="description" 84 86 value={description} 85 87 onChange={(e) => setDescription(e.target.value)} 86 88 placeholder="A short description of your BBS" ··· 90 92 <div> 91 93 <label className="block text-neutral-400 mb-1">Welcome Message</label> 92 94 <Textarea 95 + name="intro" 93 96 rows={6} 94 97 value={intro} 95 98 onChange={(e) => setIntro(e.target.value)}
+3
web/src/pages/SysopEdit.tsx
··· 72 72 <div> 73 73 <label className="block text-neutral-400 mb-1">BBS Name</label> 74 74 <Input 75 + name="name" 75 76 required 76 77 value={name} 77 78 onChange={(e) => setName(e.target.value)} ··· 81 82 <div> 82 83 <label className="block text-neutral-400 mb-1">Description</label> 83 84 <Input 85 + name="description" 84 86 value={description} 85 87 onChange={(e) => setDescription(e.target.value)} 86 88 maxLength={limits.SITE_DESCRIPTION} ··· 89 91 <div> 90 92 <label className="block text-neutral-400 mb-1">Welcome Message</label> 91 93 <Textarea 94 + name="intro" 92 95 rows={6} 93 96 value={intro} 94 97 onChange={(e) => setIntro(e.target.value)}
+2
web/src/pages/SysopModerate.tsx
··· 109 109 </div> 110 110 <div className="flex gap-2"> 111 111 <HandleInput 112 + name="ban-handle" 112 113 value={identifier} 113 114 onChange={setIdentifier} 114 115 className="flex-1" ··· 152 153 </div> 153 154 <div className="flex gap-2"> 154 155 <input 156 + name="hide-uri" 155 157 type="text" 156 158 value={hideUri} 157 159 onChange={(e) => setHideUri(e.target.value)}