MCPcopy Create free account
hub / github.com/OpenAnonymity/oa-chat / renderThanksStep

Method renderThanksStep

chat/components/ThanksPanel.js:271–434  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

269 }
270
271 renderThanksStep() {
272 const hasError = !!this.redeemError;
273 const hasInfo = !!this.redeemInfo;
274 const inputKind = this.getInputKind(this.accessInput);
275 const submitButton = this.getSubmitButtonConfig(inputKind);
276 const hintText = this.isRedeeming && this.redeemProgress?.message
277 ? this.redeemProgress.message
278 : this.getInputHint(inputKind);
279 const submitToneClass = inputKind === 'inviteCode'
280 ? 'invite-submit-redeem'
281 : 'invite-submit-email';
282 const isSubmitDisabled = this.isRedeeming || !this.accessInput.trim();
283 const feedbackText = hasError ? this.redeemError : this.redeemInfo;
284 const feedbackClass = hasError ? 'text-red-500' : 'text-emerald-600 dark:text-emerald-400';
285 const modalClass = this.animateOnNextRender
286 ? `${MODAL_CLASSES} welcome-modal-enter`
287 : MODAL_CLASSES;
288
289 return `
290 <div id="welcome-theme-toggle" class="theme-toggle-container" role="radiogroup" aria-label="Theme selection" data-theme="${themeManager.getPreference()}" style="position:fixed;top:12px;right:12px;z-index:9999">
291 <div class="theme-toggle-indicator"></div>
292 <button type="button" class="theme-toggle-btn" data-theme-option="light" aria-checked="${themeManager.getPreference() === 'light'}" title="Light">
293 <svg class="w-[18px] h-[18px]" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="1.5">
294 <path stroke-linecap="round" stroke-linejoin="round" d="M12 3v1.5m0 15V21m9-9h-1.5M4.5 12H3m15.364-6.364-1.06 1.06M6.697 17.303l-1.06 1.06m0-12.728 1.06 1.06m9.607 9.607 1.06 1.06M12 8.25a3.75 3.75 0 1 1 0 7.5 3.75 3.75 0 0 1 0-7.5z"></path>
295 </svg>
296 </button>
297 <button type="button" class="theme-toggle-btn" data-theme-option="dark" aria-checked="${themeManager.getPreference() === 'dark'}" title="Dark">
298 <svg class="w-[18px] h-[18px]" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="1.5">
299 <path stroke-linecap="round" stroke-linejoin="round" d="M21 12.79A9 9 0 0 1 11.21 3 7.5 7.5 0 1 0 21 12.79z"></path>
300 </svg>
301 </button>
302 <button type="button" class="theme-toggle-btn" data-theme-option="system" aria-checked="${themeManager.getPreference() === 'system'}" title="System">
303 <svg class="w-[18px] h-[18px]" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="1.5">
304 <path stroke-linecap="round" stroke-linejoin="round" d="M9 17v2h6v-2m2 0h.75A2.25 2.25 0 0 0 20 14.75V7.25A2.25 2.25 0 0 0 17.75 5H6.25A2.25 2.25 0 0 0 4 7.25v7.5A2.25 2.25 0 0 0 6.25 17H7.5"></path>
305 </svg>
306 </button>
307 </div>
308
309 <div role="dialog" aria-modal="true" class="${modalClass}" style="padding:28px 28px 20px">
310 <style>
311 @keyframes welcomeModalIn {
312 from { opacity: 0; transform: scale(0.97) translateY(6px); }
313 to { opacity: 1; transform: scale(1) translateY(0); }
314 }
315 .welcome-modal-enter {
316 animation: welcomeModalIn 0.2s ease-out;
317 }
318 .welcome-modal-glass {
319 background: hsl(var(--color-background) / 0.72);
320 backdrop-filter: blur(20px) saturate(1.2);
321 -webkit-backdrop-filter: blur(20px) saturate(1.2);
322 }
323 #welcome-panel {
324 background: rgba(0,0,0,0.35) !important;
325 backdrop-filter: blur(4px) !important;
326 -webkit-backdrop-filter: blur(4px) !important;
327 }
328 .invite-input-wrapper {

Callers 1

renderMethod · 0.95

Calls 5

getInputKindMethod · 0.95
getSubmitButtonConfigMethod · 0.95
getInputHintMethod · 0.95
escapeHtmlMethod · 0.95
getPreferenceMethod · 0.45

Tested by

no test coverage detected