Logos resolve domain, then tenant, then server-wide, then the built-in, with subdomains finding their domain. GET /logo serves a data-URL image, redirects to a URL logo without fetching it, sandboxes SVG, and answers 404 when no custom logo applies. Emails embed the first PNG, JPEG or GIF logo. Logo and template writes are checked; stored templates are read at send time, always escaped, and fall back to the built-in with a build warning when they don't parse. The RSVP page is served byte for byte with a CSP and no-referrer. The sign-in and RSVP pages load the logo through an image element. MT-22's session logo follows the chain to the server-wide logo. Acceptance tests 1 to 17; test 18 written as the ignored branding_compat.
1143 lines
80 KiB
HTML
1143 lines
80 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
<meta name="referrer" content="no-referrer">
|
|
<meta name="color-scheme" content="light dark">
|
|
<title>Respond to invitation · INBUXA</title>
|
|
<link rel="icon" type="image/png" href="data:image/png;base64,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">
|
|
<style>
|
|
*,
|
|
*::before,
|
|
*::after {
|
|
box-sizing: border-box;
|
|
margin: 0;
|
|
padding: 0
|
|
}
|
|
|
|
:root {
|
|
color-scheme: light dark;
|
|
--bg: #f6f8fa;
|
|
--card: #ffffff;
|
|
--border: #e3e7ec;
|
|
--line: #eef1f4;
|
|
--text: #111827;
|
|
--muted: #5b6472;
|
|
--subtle: #f6f8fa;
|
|
--accent: #0f766e;
|
|
--accent-fg: #ffffff;
|
|
--info: #0e7490;
|
|
--success: #15803d;
|
|
--warning: #b45309;
|
|
--danger: #dc2626;
|
|
--brand: #0f766e;
|
|
--radius: 10px;
|
|
--input-bg: #ffffff;
|
|
--brand-ink: #1C4053;
|
|
}
|
|
|
|
@media(prefers-color-scheme:dark) {
|
|
:root {
|
|
--bg: #0b1220;
|
|
--card: #111a2b;
|
|
--border: #1f2a3d;
|
|
--line: #1f2a3d;
|
|
--text: #e5e9f0;
|
|
--muted: #9aa5b8;
|
|
--subtle: #0d1524;
|
|
--accent: #2dd4bf;
|
|
--accent-fg: #052e2b;
|
|
--info: #67e8f9;
|
|
--success: #4ade80;
|
|
--warning: #fbbf24;
|
|
--danger: #f87171;
|
|
--input-bg: #0d1524;
|
|
--brand-ink: #e5e9f0;
|
|
}
|
|
}
|
|
|
|
body {
|
|
font-family: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif;
|
|
background: var(--bg);
|
|
color: var(--text);
|
|
min-height: 100vh;
|
|
display: flex;
|
|
align-items: safe center;
|
|
justify-content: center;
|
|
padding: 1.5rem 1rem;
|
|
-webkit-font-smoothing: antialiased;
|
|
}
|
|
|
|
.card {
|
|
background: var(--card);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius);
|
|
padding: 0.5rem 1.5rem 1.75rem;
|
|
width: 100%;
|
|
max-width: 34rem;
|
|
}
|
|
|
|
@media (min-width: 40em) {
|
|
.card {
|
|
padding: 0.75rem 2.5rem 2rem;
|
|
max-width: 40rem;
|
|
}
|
|
}
|
|
|
|
@media (min-width: 64em) {
|
|
.card {
|
|
padding: 1rem 3rem 2.25rem;
|
|
max-width: 46rem;
|
|
}
|
|
}
|
|
|
|
.logo-wrap {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 100%;
|
|
min-height: 72px;
|
|
margin: 0.25rem auto 0.75rem;
|
|
}
|
|
|
|
.logo-wrap svg.default-logo {
|
|
display: block;
|
|
width: calc(100% + 1rem);
|
|
height: auto;
|
|
margin: -0.25rem auto 0.1rem;
|
|
max-width: 300px;
|
|
}
|
|
|
|
.logo-wrap[data-loading] .default-logo {
|
|
visibility: hidden;
|
|
}
|
|
|
|
.logo-wrap img.custom-logo {
|
|
display: block;
|
|
max-width: 200px;
|
|
max-height: 88px;
|
|
width: auto;
|
|
height: auto;
|
|
object-fit: contain;
|
|
}
|
|
|
|
.default-logo .wordmark {
|
|
fill: var(--brand-ink)
|
|
}
|
|
|
|
.eyebrow {
|
|
font-size: .6875rem;
|
|
font-weight: 600;
|
|
letter-spacing: .08em;
|
|
text-transform: uppercase;
|
|
color: var(--muted);
|
|
margin-bottom: .375rem;
|
|
}
|
|
|
|
.eyebrow.cancelled {
|
|
color: var(--danger)
|
|
}
|
|
|
|
h1 {
|
|
font-size: 1.3125rem;
|
|
font-weight: 600;
|
|
letter-spacing: -.02em;
|
|
line-height: 1.25;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
|
|
.byline {
|
|
font-size: .8125rem;
|
|
color: var(--muted);
|
|
margin-top: .375rem;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
|
|
.meta {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: .625rem;
|
|
background: var(--subtle);
|
|
border: 1px solid var(--line);
|
|
border-radius: 9px;
|
|
padding: .875rem;
|
|
margin-top: 1.25rem;
|
|
}
|
|
|
|
.meta-row {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
gap: .625rem;
|
|
font-size: .875rem;
|
|
line-height: 1.4;
|
|
min-width: 0;
|
|
}
|
|
|
|
.meta-row>div {
|
|
min-width: 0;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
|
|
.meta-row svg {
|
|
flex-shrink: 0;
|
|
margin-top: 1px;
|
|
color: var(--muted);
|
|
}
|
|
|
|
.meta-row .tz {
|
|
color: var(--muted)
|
|
}
|
|
|
|
.meta-row a {
|
|
color: var(--info);
|
|
overflow-wrap: anywhere;
|
|
}
|
|
|
|
@media (min-width: 40em) {
|
|
.meta {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: .75rem 1.25rem;
|
|
padding: 1rem 1.125rem;
|
|
}
|
|
}
|
|
|
|
.section {
|
|
margin-top: 1.375rem
|
|
}
|
|
|
|
.section-title {
|
|
font-size: .6875rem;
|
|
font-weight: 600;
|
|
letter-spacing: .07em;
|
|
text-transform: uppercase;
|
|
color: var(--muted);
|
|
margin-bottom: .5rem;
|
|
}
|
|
|
|
.desc {
|
|
font-size: .875rem;
|
|
line-height: 1.55;
|
|
color: var(--text);
|
|
white-space: pre-wrap;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
|
|
.desc.clamped {
|
|
display: -webkit-box;
|
|
-webkit-line-clamp: 4;
|
|
-webkit-box-orient: vertical;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.linkish {
|
|
display: inline-block;
|
|
margin-top: .375rem;
|
|
font-size: .8125rem;
|
|
font-weight: 500;
|
|
color: var(--info);
|
|
background: none;
|
|
border: none;
|
|
padding: 0;
|
|
font-family: inherit;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.linkish:hover {
|
|
text-decoration: underline
|
|
}
|
|
|
|
.people {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: .4375rem
|
|
}
|
|
|
|
.person {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: .5rem;
|
|
font-size: .8125rem;
|
|
line-height: 1.3;
|
|
}
|
|
|
|
.dot {
|
|
width: 7px;
|
|
height: 7px;
|
|
border-radius: 50%;
|
|
flex-shrink: 0;
|
|
background: var(--muted);
|
|
opacity: .45;
|
|
}
|
|
|
|
.dot.accepted {
|
|
background: var(--success);
|
|
opacity: 1
|
|
}
|
|
|
|
.dot.declined {
|
|
background: var(--danger);
|
|
opacity: 1
|
|
}
|
|
|
|
.dot.tentative {
|
|
background: var(--warning);
|
|
opacity: 1
|
|
}
|
|
|
|
.person .who {
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.person .tag {
|
|
font-size: .6875rem;
|
|
color: var(--muted);
|
|
border: 1px solid var(--border);
|
|
border-radius: 999px;
|
|
padding: .0625rem .375rem;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
hr {
|
|
border: none;
|
|
border-top: 1px solid var(--line);
|
|
margin: 1.5rem 0 1.25rem;
|
|
}
|
|
|
|
.reply-as {
|
|
font-size: .8125rem;
|
|
color: var(--muted);
|
|
margin-bottom: .625rem;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
|
|
.reply-as strong {
|
|
color: var(--text);
|
|
font-weight: 600
|
|
}
|
|
|
|
.choices {
|
|
display: grid;
|
|
grid-template-columns: repeat(3, 1fr);
|
|
gap: .5rem;
|
|
}
|
|
|
|
.choice {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: .3125rem;
|
|
padding: .75rem .25rem;
|
|
font-family: inherit;
|
|
font-size: .8125rem;
|
|
font-weight: 500;
|
|
color: var(--text);
|
|
background: var(--input-bg);
|
|
border: 1px solid var(--border);
|
|
border-radius: 9px;
|
|
cursor: pointer;
|
|
transition: border-color .15s, background .15s, color .15s;
|
|
}
|
|
|
|
.choice svg {
|
|
color: var(--muted);
|
|
transition: color .15s
|
|
}
|
|
|
|
.choice:hover {
|
|
border-color: color-mix(in srgb, var(--text) 25%, transparent)
|
|
}
|
|
|
|
.choice[aria-checked=true] {
|
|
background: color-mix(in srgb, var(--info) 9%, transparent);
|
|
border-color: color-mix(in srgb, var(--info) 55%, transparent);
|
|
color: var(--info);
|
|
}
|
|
|
|
.choice[aria-checked=true] svg {
|
|
color: var(--info)
|
|
}
|
|
|
|
.choice[data-value=accepted][aria-checked=true] {
|
|
background: color-mix(in srgb, var(--success) 9%, transparent);
|
|
border-color: color-mix(in srgb, var(--success) 55%, transparent);
|
|
color: var(--success);
|
|
}
|
|
|
|
.choice[data-value=accepted][aria-checked=true] svg {
|
|
color: var(--success)
|
|
}
|
|
|
|
.choice[data-value=tentative][aria-checked=true] {
|
|
background: color-mix(in srgb, var(--warning) 10%, transparent);
|
|
border-color: color-mix(in srgb, var(--warning) 55%, transparent);
|
|
color: var(--warning);
|
|
}
|
|
|
|
.choice[data-value=tentative][aria-checked=true] svg {
|
|
color: var(--warning)
|
|
}
|
|
|
|
.choice[data-value=declined][aria-checked=true] {
|
|
background: color-mix(in srgb, var(--danger) 9%, transparent);
|
|
border-color: color-mix(in srgb, var(--danger) 55%, transparent);
|
|
color: var(--danger);
|
|
}
|
|
|
|
.choice[data-value=declined][aria-checked=true] svg {
|
|
color: var(--danger)
|
|
}
|
|
|
|
.note-wrap {
|
|
margin-top: .875rem
|
|
}
|
|
|
|
.note-label {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
font-size: .75rem;
|
|
font-weight: 500;
|
|
color: var(--muted);
|
|
letter-spacing: .03em;
|
|
margin-bottom: .3125rem;
|
|
}
|
|
|
|
textarea {
|
|
width: 100%;
|
|
min-height: 72px;
|
|
resize: vertical;
|
|
padding: .5625rem .75rem;
|
|
font-size: .875rem;
|
|
font-family: inherit;
|
|
line-height: 1.45;
|
|
background: var(--input-bg);
|
|
border: 1px solid var(--border);
|
|
border-radius: 8px;
|
|
color: var(--text);
|
|
outline: none;
|
|
transition: border-color .15s;
|
|
-webkit-appearance: none;
|
|
}
|
|
|
|
textarea:focus {
|
|
border-color: color-mix(in srgb, var(--info) 60%, transparent);
|
|
box-shadow: 0 0 0 3px color-mix(in srgb, var(--info) 12%, transparent);
|
|
}
|
|
|
|
textarea::placeholder {
|
|
color: var(--muted);
|
|
opacity: .7
|
|
}
|
|
|
|
.btn {
|
|
width: 100%;
|
|
margin-top: 1rem;
|
|
padding: .6875rem 0;
|
|
font-size: .9375rem;
|
|
font-weight: 500;
|
|
font-family: inherit;
|
|
background: var(--accent);
|
|
color: var(--accent-fg);
|
|
border: none;
|
|
border-radius: 8px;
|
|
cursor: pointer;
|
|
letter-spacing: -.01em;
|
|
transition: opacity .15s;
|
|
}
|
|
|
|
.btn:hover {
|
|
opacity: .88
|
|
}
|
|
|
|
.btn:active {
|
|
opacity: .75;
|
|
transform: scale(.995)
|
|
}
|
|
|
|
.btn[disabled] {
|
|
opacity: .5;
|
|
cursor: not-allowed;
|
|
transform: none;
|
|
}
|
|
|
|
.alert {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
gap: .625rem;
|
|
padding: .625rem .75rem;
|
|
background: color-mix(in srgb, var(--brand) 10%, transparent);
|
|
border: 1px solid color-mix(in srgb, var(--brand) 30%, transparent);
|
|
border-radius: 8px;
|
|
font-size: .8125rem;
|
|
line-height: 1.4;
|
|
color: var(--danger);
|
|
margin-top: .875rem;
|
|
}
|
|
|
|
.alert svg {
|
|
flex-shrink: 0;
|
|
margin-top: 1px
|
|
}
|
|
|
|
.outcome {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
text-align: center;
|
|
gap: .625rem;
|
|
padding: .25rem 0 0;
|
|
}
|
|
|
|
.badge {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 44px;
|
|
height: 44px;
|
|
border-radius: 50%;
|
|
background: color-mix(in srgb, var(--success) 14%, transparent);
|
|
color: var(--success);
|
|
}
|
|
|
|
.badge.tentative {
|
|
background: color-mix(in srgb, var(--warning) 14%, transparent);
|
|
color: var(--warning)
|
|
}
|
|
|
|
.badge.declined {
|
|
background: color-mix(in srgb, var(--danger) 14%, transparent);
|
|
color: var(--danger)
|
|
}
|
|
|
|
.badge.neutral {
|
|
background: color-mix(in srgb, var(--muted) 18%, transparent);
|
|
color: var(--muted)
|
|
}
|
|
|
|
.outcome h2 {
|
|
font-size: 1rem;
|
|
font-weight: 600;
|
|
letter-spacing: -.01em;
|
|
}
|
|
|
|
.outcome p {
|
|
font-size: .8125rem;
|
|
color: var(--muted);
|
|
line-height: 1.5;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
|
|
.skeleton {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: .75rem;
|
|
padding: .5rem 0 1rem;
|
|
}
|
|
|
|
.sk {
|
|
height: 12px;
|
|
border-radius: 6px;
|
|
background: linear-gradient(90deg, var(--subtle) 25%, var(--line) 37%, var(--subtle) 63%);
|
|
background-size: 400% 100%;
|
|
animation: shimmer 1.4s ease infinite;
|
|
}
|
|
|
|
.sk.title {
|
|
height: 22px;
|
|
width: 70%
|
|
}
|
|
|
|
.sk.short {
|
|
width: 45%
|
|
}
|
|
|
|
.sk.box {
|
|
height: 84px;
|
|
border-radius: 9px
|
|
}
|
|
|
|
@keyframes shimmer {
|
|
0% {
|
|
background-position: 100% 50%
|
|
}
|
|
|
|
100% {
|
|
background-position: 0 50%
|
|
}
|
|
}
|
|
|
|
@media (prefers-reduced-motion: reduce) {
|
|
.sk {
|
|
animation: none
|
|
}
|
|
}
|
|
|
|
[hidden] {
|
|
display: none !important
|
|
}
|
|
|
|
.noscript {
|
|
font-size: .875rem;
|
|
line-height: 1.55;
|
|
color: var(--text);
|
|
text-align: center;
|
|
padding: .5rem 0 1rem;
|
|
}
|
|
|
|
.noscript+#view-loading {
|
|
display: none
|
|
}
|
|
</style>
|
|
</head>
|
|
|
|
<body>
|
|
<main class="card">
|
|
<div class="logo-wrap" id="logo-wrap" data-loading>
|
|
<svg class="default-logo" xmlns="http://www.w3.org/2000/svg" viewBox="165 35 616 130" role="img" aria-label="INBUXA">
|
|
<image class="symbol" x="165.85" y="35.00" width="109.39" height="130.00" href="data:image/png;base64,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"/>
|
|
<g class="wordmark"><path d="M70 0V496H196V0ZM133 554Q99 554 75.5 576.0Q52 598 52 634Q52 670 75.5 692.0Q99 714 133 714Q168 714 191.0 692.0Q214 670 214 634Q214 598 191.0 576.0Q168 554 133 554Z" transform="translate(303.25,151.90) scale(0.150000,-0.150000)"/><path d="M70 0V496H194V431H212Q224 457 257.0 480.5Q290 504 357 504Q415 504 458.5 477.5Q502 451 526.0 404.5Q550 358 550 296V0H424V286Q424 342 396.5 370.0Q369 398 318 398Q260 398 228.0 359.5Q196 321 196 252V0Z" transform="translate(340.15,151.90) scale(0.150000,-0.150000)"/><path d="M368 -14Q301 -14 265.0 9.0Q229 32 212 60H194V0H70V700H196V439H214Q225 457 243.5 473.0Q262 489 292.5 499.5Q323 510 368 510Q428 510 479.0 480.5Q530 451 561.0 394.0Q592 337 592 256V240Q592 159 561.0 102.0Q530 45 479.0 15.5Q428 -14 368 -14ZM330 96Q388 96 427.0 133.5Q466 171 466 243V253Q466 325 427.5 362.5Q389 400 330 400Q272 400 233.0 362.5Q194 325 194 253V243Q194 171 233.0 133.5Q272 96 330 96Z" transform="translate(429.55,151.90) scale(0.150000,-0.150000)"/><path d="M259 -8Q201 -8 157.5 18.5Q114 45 90.0 92.0Q66 139 66 200V496H192V210Q192 154 219.5 126.0Q247 98 298 98Q356 98 388.0 136.5Q420 175 420 244V496H546V0H422V65H404Q392 40 359.0 16.0Q326 -8 259 -8Z" transform="translate(522.25,151.90) scale(0.150000,-0.150000)"/><path d="M26 0 206 250 28 496H174L287 331H305L418 496H564L386 250L566 0H418L305 167H287L174 0Z" transform="translate(611.65,151.90) scale(0.150000,-0.150000)"/><path d="M224 -14Q171 -14 129.0 4.5Q87 23 62.5 58.5Q38 94 38 145Q38 196 62.5 230.5Q87 265 130.5 282.5Q174 300 230 300H366V328Q366 363 344.0 385.5Q322 408 274 408Q227 408 204.0 386.5Q181 365 174 331L58 370Q70 408 96.5 439.5Q123 471 167.5 490.5Q212 510 276 510Q374 510 431.0 461.0Q488 412 488 319V134Q488 104 516 104H556V0H472Q435 0 411.0 18.0Q387 36 387 66V67H368Q364 55 350.0 35.5Q336 16 306.0 1.0Q276 -14 224 -14ZM246 88Q299 88 332.5 117.5Q366 147 366 196V206H239Q204 206 184.0 191.0Q164 176 164 149Q164 122 185.0 105.0Q206 88 246 88Z" transform="translate(697.45,151.90) scale(0.150000,-0.150000)"/></g>
|
|
</svg>
|
|
</div>
|
|
|
|
<noscript>
|
|
<p class="noscript">This page needs JavaScript to load the invitation. Enable it, or respond from your
|
|
calendar application instead.</p>
|
|
</noscript>
|
|
|
|
<div id="view-loading" class="skeleton" aria-live="polite">
|
|
<div class="sk short"></div>
|
|
<div class="sk title"></div>
|
|
<div class="sk box"></div>
|
|
</div>
|
|
|
|
<div id="view-error" class="outcome" hidden aria-live="polite">
|
|
<div class="badge neutral" id="error-badge">
|
|
<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
|
stroke-linecap="round" stroke-linejoin="round">
|
|
<circle cx="12" cy="12" r="10" />
|
|
<line x1="12" y1="8" x2="12" y2="12" />
|
|
<line x1="12" y1="16" x2="12.01" y2="16" />
|
|
</svg>
|
|
</div>
|
|
<h2 id="error-title" tabindex="-1">Something went wrong</h2>
|
|
<p id="error-detail"></p>
|
|
</div>
|
|
|
|
<div id="view-event" hidden>
|
|
<div class="eyebrow" id="kind">Invitation</div>
|
|
<h1 id="summary"></h1>
|
|
<div class="byline" id="byline" hidden></div>
|
|
|
|
<div class="meta" id="meta">
|
|
<div class="meta-row" id="row-when" hidden>
|
|
<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
|
stroke-linecap="round" stroke-linejoin="round">
|
|
<rect x="3" y="4" width="18" height="18" rx="2" />
|
|
<line x1="16" y1="2" x2="16" y2="6" />
|
|
<line x1="8" y1="2" x2="8" y2="6" />
|
|
<line x1="3" y1="10" x2="21" y2="10" />
|
|
</svg>
|
|
<div id="when"></div>
|
|
</div>
|
|
<div class="meta-row" id="row-repeat" hidden>
|
|
<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
|
stroke-linecap="round" stroke-linejoin="round">
|
|
<polyline points="17 1 21 5 17 9" />
|
|
<path d="M3 11V9a4 4 0 0 1 4-4h14" />
|
|
<polyline points="7 23 3 19 7 15" />
|
|
<path d="M21 13v2a4 4 0 0 1-4 4H3" />
|
|
</svg>
|
|
<div id="repeat"></div>
|
|
</div>
|
|
<div class="meta-row" id="row-where" hidden>
|
|
<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
|
stroke-linecap="round" stroke-linejoin="round">
|
|
<path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z" />
|
|
<circle cx="12" cy="10" r="3" />
|
|
</svg>
|
|
<div id="where"></div>
|
|
</div>
|
|
<div class="meta-row" id="row-conference" hidden>
|
|
<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
|
stroke-linecap="round" stroke-linejoin="round">
|
|
<polygon points="23 7 16 12 23 17 23 7" />
|
|
<rect x="1" y="5" width="15" height="14" rx="2" ry="2" />
|
|
</svg>
|
|
<div><a id="conference" href="#" rel="noreferrer noopener" target="_blank"></a></div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="section" id="section-desc" hidden>
|
|
<div class="section-title" id="desc-title">Description</div>
|
|
<div class="desc clamped" id="desc"></div>
|
|
<button type="button" class="linkish" id="desc-toggle" aria-expanded="false"
|
|
aria-controls="desc" hidden>Show more</button>
|
|
</div>
|
|
|
|
<div class="section" id="section-people" hidden>
|
|
<div class="section-title" id="people-title">Attendees</div>
|
|
<div class="people" id="people"></div>
|
|
<button type="button" class="linkish" id="people-toggle" aria-expanded="false"
|
|
aria-controls="people" hidden></button>
|
|
</div>
|
|
|
|
<div id="respond">
|
|
<hr>
|
|
<div class="reply-as" id="reply-as"></div>
|
|
<div class="choices" id="choices" role="radiogroup" aria-labelledby="reply-as">
|
|
<button type="button" class="choice" data-value="accepted" role="radio" aria-checked="false"
|
|
tabindex="0">
|
|
<svg width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
|
stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
<polyline points="20 6 9 17 4 12" />
|
|
</svg>
|
|
<span id="label-accepted">Yes</span>
|
|
</button>
|
|
<button type="button" class="choice" data-value="tentative" role="radio" aria-checked="false"
|
|
tabindex="-1">
|
|
<svg width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
|
stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
<path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3" />
|
|
<line x1="12" y1="17" x2="12.01" y2="17" />
|
|
<circle cx="12" cy="12" r="10" />
|
|
</svg>
|
|
<span id="label-tentative">Maybe</span>
|
|
</button>
|
|
<button type="button" class="choice" data-value="declined" role="radio" aria-checked="false"
|
|
tabindex="-1">
|
|
<svg width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
|
stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
<line x1="18" y1="6" x2="6" y2="18" />
|
|
<line x1="6" y1="6" x2="18" y2="18" />
|
|
</svg>
|
|
<span id="label-declined">No</span>
|
|
</button>
|
|
</div>
|
|
|
|
<div class="note-wrap" id="note-wrap" hidden>
|
|
<div class="note-label">
|
|
<label for="note" id="note-label">Note to the organizer (optional)</label>
|
|
<span id="note-count"></span>
|
|
</div>
|
|
<textarea id="note" maxlength="512" rows="3"
|
|
placeholder="Running ten minutes late, start without me."></textarea>
|
|
</div>
|
|
|
|
<div class="alert" id="alert" hidden aria-live="polite">
|
|
<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
|
stroke-linecap="round" stroke-linejoin="round">
|
|
<circle cx="12" cy="12" r="10" />
|
|
<line x1="12" y1="8" x2="12" y2="12" />
|
|
<line x1="12" y1="16" x2="12.01" y2="16" />
|
|
</svg>
|
|
<span id="alert-msg"></span>
|
|
</div>
|
|
|
|
<button type="button" class="btn" id="send" disabled>Send response</button>
|
|
</div>
|
|
|
|
<div id="recorded" hidden aria-live="polite">
|
|
<hr>
|
|
<div class="outcome">
|
|
<div class="badge" id="recorded-badge">
|
|
<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
|
stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
<polyline points="20 6 9 17 4 12" />
|
|
</svg>
|
|
</div>
|
|
<h2 id="recorded-title" tabindex="-1">Your response has been recorded</h2>
|
|
<p id="recorded-detail"></p>
|
|
<button type="button" class="linkish" id="change">Change my response</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</main>
|
|
|
|
<script>
|
|
(function () {
|
|
'use strict';
|
|
|
|
var $ = function (id) { return document.getElementById(id); };
|
|
function setText(el, text) { if (el) el.textContent = text == null ? '' : String(text); }
|
|
function show(el) { if (el) el.hidden = false; }
|
|
function hide(el) { if (el) el.hidden = true; }
|
|
|
|
var FALLBACK = {
|
|
invitation: 'Invitation',
|
|
updatedInvitation: 'Updated invitation',
|
|
cancelled: 'Cancelled',
|
|
description: 'Description',
|
|
attendees: 'Attendees',
|
|
organizer: 'Organizer',
|
|
location: 'Location',
|
|
conference: 'Conference',
|
|
when: 'When',
|
|
you: 'you',
|
|
yes: 'Yes',
|
|
maybe: 'Maybe',
|
|
no: 'No',
|
|
replyAs: 'Reply as $name',
|
|
note: 'Note to the organizer (optional)',
|
|
noteHint: 'Add a short message for the organizer.',
|
|
send: 'Send response',
|
|
update: 'Update response',
|
|
change: 'Change my response',
|
|
recorded: 'Your RSVP has been recorded',
|
|
notified: 'The organizer has been notified.',
|
|
accepted: 'Accepted',
|
|
tentative: 'Tentative',
|
|
declined: 'Declined',
|
|
showMore: 'Show more',
|
|
showLess: 'Show less',
|
|
failed: 'RSVP failed',
|
|
invalidLink: 'This RSVP link is not valid.',
|
|
error: 'Temporary server failure. If the problem persists, contact your administrator.'
|
|
};
|
|
|
|
var PARTSTATS = ['accepted', 'tentative', 'declined'];
|
|
function isPartStat(value) {
|
|
return PARTSTATS.indexOf(value) !== -1;
|
|
}
|
|
|
|
var labels = FALLBACK;
|
|
function applyDirection(resp) {
|
|
if (!resp || !resp.language) return;
|
|
var root = document.documentElement;
|
|
root.lang = resp.language;
|
|
root.dir = resp.dir === 'rtl' ? 'rtl' : 'ltr';
|
|
}
|
|
|
|
function t(key, name) {
|
|
var value = (labels && labels[key]) || FALLBACK[key] || key;
|
|
if (name != null) value = value.replace('$name', name);
|
|
return value;
|
|
}
|
|
|
|
var url = new URL(window.location.href);
|
|
var token = url.searchParams.get('i') || '';
|
|
var preset = (url.searchParams.get('m') || '').toLowerCase();
|
|
var apiUrl = (function () {
|
|
var path = url.pathname.replace(/\/+$/, '');
|
|
var at = path.lastIndexOf('/calendar/rsvp');
|
|
return (at >= 0 ? path.slice(0, at) : '') + '/api/calendar/rsvp';
|
|
})();
|
|
|
|
function post(body) {
|
|
return fetch(apiUrl, {
|
|
method: 'POST',
|
|
credentials: 'omit',
|
|
cache: 'no-store',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify(body)
|
|
}).then(function (res) {
|
|
return res.json().catch(function () {
|
|
return { type: 'error', reason: 'serverError' };
|
|
});
|
|
});
|
|
}
|
|
|
|
var data = null;
|
|
var selected = '';
|
|
var peopleExpanded = false;
|
|
var inFlight = false;
|
|
|
|
function clearAlert() { hide($('alert')); }
|
|
function showAlert(msg) { setText($('alert-msg'), msg); show($('alert')); }
|
|
|
|
function fail(title, message) {
|
|
hide($('view-loading'));
|
|
hide($('view-event'));
|
|
title = title || t('failed');
|
|
document.title = title;
|
|
setText($('error-title'), title);
|
|
setText($('error-detail'), message || t('error'));
|
|
show($('view-error'));
|
|
$('error-title').focus();
|
|
}
|
|
|
|
function renderPeople() {
|
|
var list = (data.attendees || []);
|
|
var box = $('people');
|
|
while (box.firstChild) box.removeChild(box.firstChild);
|
|
if (!list.length) { hide($('section-people')); return; }
|
|
|
|
var limit = peopleExpanded ? list.length : Math.min(list.length, 5);
|
|
for (var i = 0; i < limit; i++) {
|
|
var person = list[i];
|
|
var row = document.createElement('div');
|
|
row.className = 'person';
|
|
|
|
var dot = document.createElement('span');
|
|
dot.className = 'dot ' + String(person.partstat || '').toLowerCase();
|
|
row.appendChild(dot);
|
|
|
|
var who = document.createElement('span');
|
|
who.className = 'who';
|
|
setText(who, person.name || person.email);
|
|
row.appendChild(who);
|
|
|
|
if (person.isOrganizer) {
|
|
var tagOrg = document.createElement('span');
|
|
tagOrg.className = 'tag';
|
|
setText(tagOrg, t('organizer'));
|
|
row.appendChild(tagOrg);
|
|
}
|
|
if (data.attendee && person.email &&
|
|
person.email.toLowerCase() === String(data.attendee.email || '').toLowerCase()) {
|
|
var tagYou = document.createElement('span');
|
|
tagYou.className = 'tag';
|
|
setText(tagYou, t('you'));
|
|
row.appendChild(tagYou);
|
|
}
|
|
box.appendChild(row);
|
|
}
|
|
|
|
var toggle = $('people-toggle');
|
|
if (list.length > 5) {
|
|
setText(toggle, peopleExpanded ? t('showLess') : t('showMore'));
|
|
show(toggle);
|
|
} else {
|
|
hide(toggle);
|
|
}
|
|
show($('section-people'));
|
|
}
|
|
|
|
function select(value) {
|
|
if (inFlight || !isPartStat(value)) return;
|
|
selected = value;
|
|
var nodes = $('choices').querySelectorAll('.choice');
|
|
for (var i = 0; i < nodes.length; i++) {
|
|
var checked = nodes[i].getAttribute('data-value') === value;
|
|
nodes[i].setAttribute('aria-checked', checked ? 'true' : 'false');
|
|
nodes[i].tabIndex = checked ? 0 : -1;
|
|
}
|
|
show($('note-wrap'));
|
|
$('send').disabled = !value;
|
|
clearAlert();
|
|
}
|
|
|
|
function renderRecorded(partstat) {
|
|
var badge = $('recorded-badge');
|
|
badge.className = 'badge' + (partstat === 'accepted' ? '' : ' ' + partstat);
|
|
setText($('recorded-title'), t('recorded'));
|
|
setText($('recorded-detail'), t(partstat) + '. ' + t('notified'));
|
|
setText($('change'), t('change'));
|
|
hide($('respond'));
|
|
show($('recorded'));
|
|
$('recorded-title').focus();
|
|
}
|
|
|
|
function renderEvent() {
|
|
labels = data.labels || FALLBACK;
|
|
|
|
var kind = data.kind || 'invitation';
|
|
var kindEl = $('kind');
|
|
setText(kindEl, kind === 'update' ? t('updatedInvitation')
|
|
: kind === 'cancel' ? t('cancelled') : t('invitation'));
|
|
if (kind === 'cancel') kindEl.className = 'eyebrow cancelled';
|
|
|
|
setText($('summary'), data.summary || t('invitation'));
|
|
document.title = data.summary || t('invitation');
|
|
|
|
var organizer = findOrganizer(data);
|
|
if (organizer) {
|
|
setText($('byline'), t('organizer') + ': '
|
|
+ (organizer.name || organizer.email));
|
|
show($('byline'));
|
|
}
|
|
|
|
if (data.when) {
|
|
setText($('when'), data.when);
|
|
show($('row-when'));
|
|
}
|
|
if (data.recurrence) { setText($('repeat'), data.recurrence); show($('row-repeat')); }
|
|
if (data.location) { setText($('where'), data.location); show($('row-where')); }
|
|
if (data.conference) {
|
|
var link = $('conference');
|
|
setText(link, data.conference.value);
|
|
if (data.conference.url) {
|
|
link.href = data.conference.url;
|
|
} else {
|
|
link.removeAttribute('href');
|
|
}
|
|
show($('row-conference'));
|
|
}
|
|
if (!data.when && !data.recurrence && !data.location && !data.conference) {
|
|
hide($('meta'));
|
|
}
|
|
|
|
if (data.description) {
|
|
setText($('desc-title'), t('description'));
|
|
setText($('desc'), data.description);
|
|
show($('section-desc'));
|
|
}
|
|
|
|
setText($('people-title'), t('attendees'));
|
|
renderPeople();
|
|
|
|
setText($('label-accepted'), t('yes'));
|
|
setText($('label-tentative'), t('maybe'));
|
|
setText($('label-declined'), t('no'));
|
|
setText($('note-label'), t('note'));
|
|
$('note').placeholder = t('noteHint');
|
|
updateCount();
|
|
|
|
var me = data.attendee || {};
|
|
setText($('reply-as'), t('replyAs', me.name ? me.name + ' (' + me.email + ')' : me.email));
|
|
|
|
var current = String(data.partstat || '').toLowerCase();
|
|
var known = isPartStat(current);
|
|
setText($('send'), known ? t('update') : t('send'));
|
|
|
|
hide($('view-loading'));
|
|
show($('view-event'));
|
|
|
|
if (data.description) {
|
|
var desc = $('desc');
|
|
if (desc.scrollHeight - desc.clientHeight > 4) {
|
|
setText($('desc-toggle'), t('showMore'));
|
|
show($('desc-toggle'));
|
|
}
|
|
}
|
|
|
|
if (kind === 'cancel') {
|
|
hide($('respond'));
|
|
return;
|
|
}
|
|
|
|
if (isPartStat(preset)) {
|
|
select(preset);
|
|
} else if (known) {
|
|
select(current);
|
|
}
|
|
}
|
|
|
|
function updateCount() {
|
|
var used = $('note').value.length;
|
|
setText($('note-count'), used ? used + ' / 512' : '');
|
|
}
|
|
|
|
function send() {
|
|
if (inFlight || !isPartStat(selected)) return;
|
|
var btn = $('send');
|
|
inFlight = true;
|
|
btn.disabled = true;
|
|
clearAlert();
|
|
|
|
post({
|
|
token: token,
|
|
partstat: selected,
|
|
comment: $('note').value.trim()
|
|
}).then(function (resp) {
|
|
if (resp && resp.type === 'recorded') {
|
|
data.partstat = resp.partstat || selected;
|
|
renderRecorded(String(data.partstat).toLowerCase());
|
|
return;
|
|
}
|
|
inFlight = false;
|
|
btn.disabled = false;
|
|
showAlert((resp && resp.message) || t('error'));
|
|
}).catch(function () {
|
|
inFlight = false;
|
|
btn.disabled = false;
|
|
showAlert(t('error'));
|
|
});
|
|
}
|
|
|
|
function loadCustomLogo(domain) {
|
|
var wrap = $('logo-wrap');
|
|
function showDefault() { wrap.removeAttribute('data-loading'); }
|
|
var target = apiUrl.replace(/\/api\/calendar\/rsvp$/, '') + '/logo';
|
|
if (domain) target += '?domain=' + encodeURIComponent(domain);
|
|
// An image element, not fetch: it can follow /logo's redirect to
|
|
// a URL logo on another origin (branding BT-26)
|
|
var img = new Image();
|
|
img.className = 'custom-logo';
|
|
img.alt = 'Logo';
|
|
img.onload = function () {
|
|
while (wrap.firstChild) wrap.removeChild(wrap.firstChild);
|
|
wrap.appendChild(img);
|
|
wrap.removeAttribute('data-loading');
|
|
};
|
|
img.onerror = showDefault;
|
|
img.src = target;
|
|
}
|
|
|
|
function findOrganizer(resp) {
|
|
var list = (resp && resp.attendees) || [];
|
|
for (var i = 0; i < list.length; i++) {
|
|
if (list[i].isOrganizer) return list[i];
|
|
}
|
|
return null;
|
|
}
|
|
|
|
function organizerDomain(resp) {
|
|
var organizer = findOrganizer(resp);
|
|
var email = organizer && organizer.email;
|
|
var at = email ? String(email).lastIndexOf('@') : -1;
|
|
return at !== -1 ? String(email).slice(at + 1).toLowerCase() : '';
|
|
}
|
|
|
|
$('choices').addEventListener('click', function (ev) {
|
|
var btn = ev.target.closest ? ev.target.closest('.choice') : null;
|
|
if (btn) select(btn.getAttribute('data-value'));
|
|
});
|
|
$('choices').addEventListener('keydown', function (ev) {
|
|
var step = ev.key === 'ArrowRight' || ev.key === 'ArrowDown' ? 1
|
|
: ev.key === 'ArrowLeft' || ev.key === 'ArrowUp' ? -1 : 0;
|
|
if (!step) return;
|
|
ev.preventDefault();
|
|
var at = PARTSTATS.indexOf(selected);
|
|
var next = PARTSTATS[(at + step + PARTSTATS.length) % PARTSTATS.length];
|
|
select(next);
|
|
var node = $('choices').querySelector('.choice[data-value="' + next + '"]');
|
|
if (node) node.focus();
|
|
});
|
|
$('send').addEventListener('click', send);
|
|
$('note').addEventListener('input', updateCount);
|
|
$('desc-toggle').addEventListener('click', function () {
|
|
var clamped = $('desc').classList.toggle('clamped');
|
|
setText($('desc-toggle'), clamped ? t('showMore') : t('showLess'));
|
|
$('desc-toggle').setAttribute('aria-expanded', clamped ? 'false' : 'true');
|
|
});
|
|
$('people-toggle').addEventListener('click', function () {
|
|
peopleExpanded = !peopleExpanded;
|
|
$('people-toggle').setAttribute('aria-expanded', peopleExpanded ? 'true' : 'false');
|
|
renderPeople();
|
|
});
|
|
$('change').addEventListener('click', function () {
|
|
inFlight = false;
|
|
hide($('recorded'));
|
|
show($('respond'));
|
|
$('send').disabled = !selected;
|
|
setText($('send'), t('update'));
|
|
});
|
|
|
|
if (!token) { loadCustomLogo(''); fail(null, FALLBACK.invalidLink); return; }
|
|
|
|
post({ token: token }).then(function (resp) {
|
|
loadCustomLogo(organizerDomain(resp));
|
|
applyDirection(resp);
|
|
if (resp && resp.labels) labels = resp.labels;
|
|
if (!resp || resp.type !== 'invitation') {
|
|
fail(resp && resp.title, resp && resp.message);
|
|
return;
|
|
}
|
|
data = resp;
|
|
renderEvent();
|
|
}).catch(function () {
|
|
loadCustomLogo('');
|
|
fail();
|
|
});
|
|
})();
|
|
</script>
|
|
</body>
|
|
|
|
</html>
|