PageSourceSearch

https://app.backstagebaton.com/app/assets/PrintAudienceGuidePage-27udVi3F.js

js backstagebaton.com collected 2026-10-07 08:52:11 UTC 8,733 bytes, 85 lines download raw bytes

1import{m as k,h as w,r,o as T,P as N,j as e,d as z,F as B,an as p,B as S,ad as C}from"./index-_aijvlUq.js";import{p as I}from"./performances-duTJPchz.js";function E(){const{perfId:i}=k(),u=w(n=>n.currentOrg),[t,x]=r.useState(null),[g,m]=r.useState(null),[o,f]=r.useState(null),[a,j]=r.useState(null);r.useEffect(()=>{if(!i)return;let n=!1;return Promise.all([I.getById(i),T.generateToken({eventId:i,eventType:"performance",purpose:"audience"})]).then(async([s,y])=>{if(!n&&(x(s),f(`${window.location.origin}/app/audience/${y.token}`),s?.orgId))try{const v=await N.getById(s.orgId);n||m(v)}catch{}}).catch(s=>{n||j(s?.message||"Could not load")}),()=>{n=!0}},[i]),r.useEffect(()=>{if(!t||!o)return;const n=setTimeout(()=>{try{window.print()}catch{}},600);return()=>clearTimeout(n)},[t,o]);const l=r.useMemo(()=>t?[t.venueName,t.venueAddress,t.venueCity,t.venueState].filter(Boolean).join(", "):"",[t]);if(a)return e.jsxs(h,{children:["Couldn't generate the guide: ",a]});if(!t||!o)return e.jsx(h,{children:"Generating door-team guide…"});const b=t.performanceDate?z(t.performanceDate):"TBD",c=t.performanceTime?B(t.performanceTime):null,d=g?.name||u?.name||t.orgName||"Your Band";return e.jsxs(e.Fragment,{children:[e.jsx("style",{children:P}),e.jsx(p,{children:e.jsx(S,{type:"button",variant:"primary",size:"md",onClick:()=>window.print(),children:"Print"})}),e.jsxs("main",{className:"audience-print",children:[e.jsxs("h1",{children:["Audience Counter — ",t.title]}),e.jsxs("p",{className:"subtitle",children:[d," · ",b,c?` at ${c}`:"",l?e.jsxs(e.Fragment,{children:[" · ",l]}):null]}),e.jsxs("div",{className:"top",children:[e.jsxs("div",{className:"qr-block",children:[e.jsx(C,{value:o,size:200,level:"M",includeMargin:!1}),e.jsx("div",{className:"caption",children:"Scan with your phone's camera"})]}),e.jsxs("div",{className:"intro",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"What this is:"})," a simple counting tool for tracking who walks in. Every tap adds one person to the running total. Counts go straight into our records for grant reports."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Who's using it:"})," the team manning the front door. Multiple volunteers can count at the same time on different phones — everyone's taps add to the same total live."]}),e.jsx("p",{className:"highlight",children:"If you can't scan: open your phone's browser and type the address at the bottom of this page."})]})]}),e.jsx("h2",{children:"How to start"}),e.jsxs("ol",{children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Scan the QR code above"})," with your phone's camera. Tap the link that pops up."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Tap the screen once"})," when the page opens. This wakes up the counter and keeps your screen on automatically."]}),e.jsx("li",{children:"You're ready. The big number at the top is the running total."})]}),e.jsxs("div",{className:"two-col",children:[e.jsxs("div",{children:[e.jsx("h2",{children:"Counting people"}),e.jsxs("ol",{children:[e.jsxs("li",{children:[e.jsx("strong",{children:"For each person walking in,"})," find their county, then tap ",e.jsx("strong",{children:"Adult"})," or ",e.jsx("strong",{children:"Child"}),"."]}),e.jsx("li",{children:"The number on that button jumps by one. The total at the top updates too."}),e.jsxs("li",{children:["Don't recognize their county? Tap the ",e.jsx("em",{children:"Other"})," tile."]})]}),e.jsxs("div",{className:"tip",children:[e.jsx("strong",{children:"Tip:"})," children = anyone who looks under 18. Don't worry about being precise — close is good enough."]})]}),e.jsxs("div",{children:[e.jsx("h2",{children:"Made a mistake?"}),e.jsxs("ol",{children:[e.jsxs("li",{children:["Tap the big gray ",e.jsx("strong",{children:"↩ Undo last tap"})," button at the bottom of the screen."]}),e.jsx("li",{children:"Each tap of Undo removes the most recent count."}),e.jsx("li",{children:"Tap it multiple times to walk back several mistakes in a row."})]}),e.jsxs("div",{className:"tip",children:[e.jsx("strong",{children:"If your screen turns off:"})," just tap it to wake it up. Your counts are saved."]})]})]}),e.jsx("h2",{children:"Sharing with another volunteer"}),e.jsxs("ul",{children:[e.jsxs("li",{children:["Tap the ",e.jsx("strong",{children:"share icon"})," in the top-right corner of the counter."]}),e.jsx("li",{children:"Send the link by text, AirDrop, or however your phones talk to each other."}),e.jsx("li",{children:"The other volunteer opens the link — their counts merge into the same total."}),e.jsx("li",{children:"Or have them scan the same QR code on this sheet."})]}),e.jsx("h2",{children:"If something goes wrong"}),e.jsxs("ul",{children:[e.jsxs("li",{children:[e.jsx("strong",{children:`Counter won't open / says "Link expired":`})," find a board member — they can generate a fresh link in under a minute."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Tapped the wrong county and didn't notice r
1ight away:"})," no problem, leave it — we'd rather have an off-by-one than risk losing the running total."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Phone battery dying:"})," hand the link off to another volunteer using the share button."]})]}),e.jsxs("p",{className:"url-fallback",children:["Direct link (if the QR doesn't work):",e.jsx("br",{}),o]}),e.jsxs("div",{className:"footer",children:[e.jsxs("div",{className:"footer-brand",children:[e.jsx("img",{className:"footer-logo",src:"/brand/logo-icon.png",alt:"Backstage Baton"}),e.jsxs("div",{className:"footer-text",children:["Powered by ",e.jsx("strong",{children:"Backstage Baton"}),e.jsx("br",{}),e.jsx("span",{className:"tagline",children:"Membership hub for community bands · backstagebaton.com"})]})]}),e.jsxs("div",{className:"footer-meta",children:[d,e.jsx("br",{}),t.title]})]})]})]})}function h({children:i}){return e.jsxs(e.Fragment,{children:[e.jsx(p,{}),e.jsx("div",{className:"min-h-[80vh] flex items-center justify-center text-gray-500 text-sm px-6 text-center",children:i})]})}const P=`
2@page { size: letter; margin: 0.45in; }
3html, body { height: 100%; margin: 0; padding: 0; }
4.audience-print {
5  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
6  color: #111827;
7  line-height: 1.35;
8  padding: 0;
9  max-width: 7.5in;
10  margin: 0 auto;
11  min-height: 100vh;
12  display: flex;
13  flex-direction: column;
14}
15.audience-print h1 { font-size: 19px; margin: 0 0 2px; color: #2e6b8a; }
16.audience-print .subtitle { font-size: 12px; color: #6b7280; margin: 0 0 10px; }
17.audience-print .top { display: flex; gap: 18px; align-items: flex-start; margin-bottom: 10px; }
18.audience-print .qr-block { flex: 0 0 200px; text-align: center; }
19.audience-print .qr-block svg { width: 200px; height: 200px; border: 1px solid #e5e7eb; }
20.audience-print .qr-block .caption { font-size: 10px; color: #6b7280; margin-top: 4px; }
21.audience-print .intro { flex: 1; font-size: 12px; }
22.audience-print .intro p { margin: 0 0 6px; }
23.audience-print .intro .highlight {
24  background: #fef3c7;
25  padding: 6px 8px;
26  border-radius: 6px;
27  font-weight: 500;
28  margin-top: 4px;
29}
30.audience-print h2 {
31  font-size: 13px;
32  color: #2e6b8a;
33  text-transform: uppercase;
34  letter-spacing: 0.06em;
35  margin: 8px 0 4px;
36  border-bottom: 1px solid #e5e7eb;
37  padding-bottom: 2px;
38}
39.audience-print ol, .audience-print ul { margin: 0 0 6px 0; padding-left: 20px; font-size: 11.5px; }
40.audience-print li { margin-bottom: 2px; }
41.audience-print .two-col { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
42.audience-print .tip {
43  background: #f0f6fa;
44  border-left: 3px solid #2e6b8a;
45  padding: 5px 8px;
46  font-size: 11px;
47  margin: 5px 0 0;
48}
49.audience-print .url-fallback {
50  font-family: Consolas, monospace;
51  font-size: 8.5px;
52  word-break: break-all;
53  background: #f3f4f6;
54  padding: 3px 5px;
55  border-radius: 4px;
56  color: #374151;
57  margin: 6px 0 0;
58}
59.audience-print .footer {
60  margin-top: auto;
61  padding-top: 8px;
62  border-top: 2px solid #2e6b8a;
63  display: flex;
64  align-items: center;
65  justify-content: space-between;
66  gap: 12px;
67}
68.audience-print .footer-brand { display: flex; align-items: center; gap: 8px; }
69.audience-print .footer-logo {
70  width: 28px; height: 28px;
71  flex-shrink: 0;
72  object-fit: contain;
73}
74.audience-print .footer-text { font-size: 10.5px; color: #374151; line-height: 1.3; }
75.audience-print .footer-text strong { color: #2e6b8a; font-weight: 700; }
76.audience-print .footer-text .tagline { color: #9ca3af; font-size: 9.5px; }
77.audience-print .footer-meta {
78  font-size: 10px; color: #4b5563;
79  text-align: right; line-height: 1.3;
80  font-weight: 500;
81}
82@media print {
83  body { padding: 0; }
84}
85`;export{E as PrintAudienceGuidePage};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.