A website for the ATmosphereConf

Chased down most description <> shortbio - not yet saving the records

Changed files
+15 -17
src
components
lexicon
types
org
atmosphereconf
pages
+6 -6
src/components/ProfileForm.astro
··· 26 > 27 <div class="form-control"> 28 <label class="label"> 29 - <span class="label-text">Display Name</span> 30 <span class="label-text-alt">Max 64 characters</span> 31 </label> 32 <input 33 type="text" 34 name="displayName" 35 - placeholder="Enter your display name" 36 class="input input-bordered w-full" 37 value={displayName} 38 maxlength="64" ··· 42 43 <div class="form-control"> 44 <label class="label"> 45 - <span class="label-text">Avatar</span> 46 - <span class="label-text-alt">PNG or JPEG, max 1MB</span> 47 </label> 48 {avatar && ( 49 <div class="avatar mb-2"> ··· 63 <div class="form-control"> 64 <label class="label"> 65 <span class="label-text">Bio</span> 66 - <span class="label-text-alt">Max 256 characters</span> 67 </label><br /> 68 <textarea 69 - name="about" 70 placeholder="If you are a speaker, this is displayed as your bio. Use About for extended background" 71 class="textarea textarea-bordered h-24 w-full" 72 maxlength="256"
··· 26 > 27 <div class="form-control"> 28 <label class="label"> 29 + <span class="label-text">Attendee Name</span> 30 <span class="label-text-alt">Max 64 characters</span> 31 </label> 32 <input 33 type="text" 34 name="displayName" 35 + placeholder="This is the display name that will be shown as your attendee name." 36 class="input input-bordered w-full" 37 value={displayName} 38 maxlength="64" ··· 42 43 <div class="form-control"> 44 <label class="label"> 45 + <span class="label-text">Attendee Image</span> 46 + <span class="label-text-alt">Your public attendee image. PNG or JPEG, max 1MB</span> 47 </label> 48 {avatar && ( 49 <div class="avatar mb-2"> ··· 63 <div class="form-control"> 64 <label class="label"> 65 <span class="label-text">Bio</span> 66 + <span class="label-text-alt">A short biography, displayed as speaker bios. Max 256 characters</span> 67 </label><br /> 68 <textarea 69 + name="shortbio" 70 placeholder="If you are a speaker, this is displayed as your bio. Use About for extended background" 71 class="textarea textarea-bordered h-24 w-full" 72 maxlength="256"
+4 -6
src/lexicon/types/org/atmosphereconf/profile.ts
··· 14 export interface Main { 15 $type: 'org.atmosphereconf.profile' 16 displayName?: string 17 /** Free-form profile description text. */ 18 - description?: string 19 /** Profile picture for conference attendee */ 20 avatar?: BlobRef 21 /** Larger horizontal image to display behind profile view. */ ··· 35 return validate<Main & V>(v, id, hashMain, true) 36 } 37 38 - export { 39 - type Main as Record, 40 - isMain as isRecord, 41 - validateMain as validateRecord, 42 - }
··· 14 export interface Main { 15 $type: 'org.atmosphereconf.profile' 16 displayName?: string 17 + /** Bio for speakers */ 18 + shortbio?: string 19 /** Free-form profile description text. */ 20 + about?: string 21 /** Profile picture for conference attendee */ 22 avatar?: BlobRef 23 /** Larger horizontal image to display behind profile view. */ ··· 37 return validate<Main & V>(v, id, hashMain, true) 38 } 39 40 + export { type Main as Record, isMain as isRecord, validateMain as validateRecord }
+2 -2
src/pages/index.astro
··· 34 const displayName = profile?.displayName || agent?.assertDid || 'User' 35 const handle = profile?.handle || agent?.assertDid || '' 36 const avatar = profile?.avatar 37 - const description = profile?.description 38 --- 39 40 <html lang="en" data-theme="dracula"> ··· 64 )} 65 <p class="text-lg font-semibold">{displayName}</p> 66 <p class="text-sm opacity-70">{handle}</p> 67 - {description && <p class="text-sm mt-2 opacity-80">{description}</p>} 68 </div> 69 <div class="space-y-2 w-full"> 70 <a href={`/profile/${handle}`} class="btn btn-primary w-full">
··· 34 const displayName = profile?.displayName || agent?.assertDid || 'User' 35 const handle = profile?.handle || agent?.assertDid || '' 36 const avatar = profile?.avatar 37 + const shortbio = profile?.shortbio 38 --- 39 40 <html lang="en" data-theme="dracula"> ··· 64 )} 65 <p class="text-lg font-semibold">{displayName}</p> 66 <p class="text-sm opacity-70">{handle}</p> 67 + {shortbio && <p class="text-sm mt-2 opacity-80">{shortbio}</p>} 68 </div> 69 <div class="space-y-2 w-full"> 70 <a href={`/profile/${handle}`} class="btn btn-primary w-full">
+3 -3
src/pages/profile/[handle].astro
··· 80 } 81 82 const displayName = conferenceProfile?.displayName || profile?.displayName || handle 83 - const description = conferenceProfile?.description || profile?.description || '' 84 85 // Handle both blob refs and direct URLs 86 let avatar = '' ··· 159 )} 160 </div> 161 162 - {description && ( 163 - <p class="mt-4 text-base whitespace-pre-wrap">{description}</p> 164 )} 165 166 <div class="mt-4">
··· 80 } 81 82 const displayName = conferenceProfile?.displayName || profile?.displayName || handle 83 + const shortbio = conferenceProfile?.shortbio || profile?.description || '' 84 85 // Handle both blob refs and direct URLs 86 let avatar = '' ··· 159 )} 160 </div> 161 162 + {shortbio && ( 163 + <p class="mt-4 text-base whitespace-pre-wrap">{shortbio}</p> 164 )} 165 166 <div class="mt-4">