PageSourceSearch

https://homeplaybook.ai/build/assets/Notifications-DtEgIyhZ.js

js homeplaybook.ai collected 2026-10-05 14:36:53 UTC 25,505 bytes, 1 lines download raw bytes

1import{d as A,P as ne,o as n,f as x,w as l,x as D,u as e,j as P,E as N,v as re,m as R,a as o,y as ke,i as M,c as g,b as d,e as S,t as C,F,p as te,r as B,g as O,n as J,I as we,k as Z,h as $e,l as ae}from"./app-CpvnjTSl.js";import{ad as qe,aa as Ce,ac as Re,_ as Se,L as Ve}from"./AuthenticatedLayout.vue_vue_type_script_setup_true_lang-CQef0z67.js";import{_ as Fe}from"./PageHeader.vue_vue_type_script_setup_true_lang-Q2en81fP.js";import{_ as Q,a as X}from"./CardContent.vue_vue_type_script_setup_true_lang-MLUdSz8s.js";import{_ as se,a as le}from"./CardTitle.vue_vue_type_script_setup_true_lang-CdwRdDf8.js";import{c as Be,P as ee,b as ie,_ as Pe}from"./index-ZIc6Pr4a.js";import{_ as G}from"./Label.vue_vue_type_script_setup_true_lang-COeDVupy.js";import{a as U,b as z,c as H,d as I,_ as W,t as Ae}from"./index-Bb8QUjfc.js";import{_ as L}from"./index-BabL4s1G.js";import{_ as ue}from"./Separator.vue_vue_type_script_setup_true_lang-VOflS3_a.js";import{_ as de,a as ce,b as fe,c as me}from"./TooltipTrigger.vue_vue_type_script_setup_true_lang-CULMSyMb.js";import{_ as Te}from"./Switch.vue_vue_type_script_setup_true_lang-IdBGCSl2.js";import{M as Ee}from"./message-square-DBiwlan-.js";import{M as Ie}from"./mail-CDc1TKrp.js";import{_ as Me}from"./SheetHeader.vue_vue_type_script_setup_true_lang-B1d_njQj.js";import{_ as Oe}from"./SheetTitle.vue_vue_type_script_setup_true_lang-Bl8XnF7T.js";import{c as pe,P as Ge,a as je,b as De}from"./Presence-DyFOmw4X.js";import{c as ve,a as Ne,i as Le}from"./VisuallyHidden-Dz1jYyq-.js";import{u as ge,a as K,b as oe,e as ye}from"./useForwardExpose-B9BWL2mI.js";import{V as he,R as Ue}from"./RovingFocusGroup-C_R7AGia.js";import{R as ze}from"./RovingFocusItem-CkaNX28T.js";import{h as He}from"./Teleport-C3hboIEb.js";import{C as We}from"./circle-BHgW_oRz.js";import{A as Ke}from"./arrow-left-CbREvq04.js";import{C as Ye}from"./check-C6sTUdT4.js";import"./UserAvatar.vue_vue_type_script_setup_true_lang-qzmuJof7.js";import"./BrandLogo.vue_vue_type_script_setup_true_lang-CoK07LOt.js";import"./heart-3sDgnIBR.js";import"./users-TOzDinLu.js";import"./shield-C1VM6E0t.js";import"./plus-kYzx96r7.js";import"./map-pin-1V9bThSF.js";import"./DialogTitle.vue_vue_type_script_setup_true_lang-BedPMonK.js";import"./arrow-right-X-zE05Z0.js";const be=Be("smartphone",[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]]),Je="radio.select";function Qe(s,c,t){He(Je,t,{originalEvent:s,value:c})}var Xe=A({__name:"Radio",props:{id:{type:String,required:!1},value:{type:null,required:!1},disabled:{type:Boolean,required:!1,default:!1},checked:{type:Boolean,required:!1,default:void 0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["update:checked","select"],setup(s,{emit:c}){const t=s,r=c,p=ge(t,"checked",r,{passive:t.checked===void 0}),{value:k}=ne(t),{forwardRef:h,currentElement:w}=K(),$=ve(w),q=R(()=>t.id&&w.value?document.querySelector(`[for="${t.id}"]`)?.innerText??t.value:void 0);function v(i){t.disabled||Qe(i,t.value,f=>{r("select",f),!f?.defaultPrevented&&(p.value=!0,$.value&&f.stopPropagation())})}return(i,f)=>(n(),x(e(ee),N(i.$attrs,{id:i.id,ref:e(h),role:"radio",type:i.as==="button"?"button":void 0,as:i.as,"aria-checked":e(p),"aria-label":q.value,"as-child":i.asChild,disabled:i.disabled?"":void 0,"data-state":e(p)?"checked":"unchecked","data-disabled":i.disabled?"":void 0,value:e(k),required:i.required,name:i.name,onClick:re(v,["stop"])}),{default:l(()=>[D(i.$slots,"default",{checked:e(p)}),e($)&&i.name?(n(),x(e(he),{key:0,type:"radio",tabindex:"-1",value:e(k),checked:!!e(p),name:i.name,disabled:i.disabled,required:i.required},null,8,["value","checked","name","disabled","required"])):P("v-if",!0)]),_:3},16,["id","type","as","aria-checked","aria-label","as-child","disabled","data-state","data-disabled","value","required","name"]))}}),Ze=Xe;const[et,tt]=pe("RadioGroupRoot");var at=A({__name:"RadioGroupRoot",props:{modelValue:{type:null,required:!1},defaultValue:{type:null,required:!1},disabled:{type:Boolean,required:!1,default:!1},orientation:{type:String,required:!1,default:void 0},dir:{type:String,required:!1},loop:{type:Boolean,required:!1,default:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1,default:!1}},emits:["update:modelValue"],setup(s,{emit:c}){const t=s,r=c,{forwardRef:p,currentElement:k}=K(),h=ge(t,"modelValue",r,{defaultValue:t.defaultValue,passive:t.modelValue===void 0}),{disabled:w,loop:$,orientation:q,name:v,required:i,dir:f}=ne(t),u=Ne(f),V=ve(k);return tt({modelValue:h,changeModelValue:_=>{h.value=_},disabled:w,loop:$,orientation:q,name:v?.value,required:i}),(_,b)=>(n(),x(e(Ue),{"as-child":"",orientation:e(q),dir:e(u),loop:e($)},{default:l(()=>[o(e(ee),{ref:e(p),role:"radiogroup","data-disabled":e(w)?"":void 0,"as-child":_.asChild,as:_.as,"aria-orientation":e(q),"aria-required":e(i),dir:e(u)},{default:l(()=>[D(_.$slots,"default",{modelValue:e(h)}),e(V)&&e(v)?(n(),x(e(he),{key:0,required:e(i),disabled:e(w),value:e(h),name:e(v)},null,8,["required","disabled","value","name"])):P("v-if",!0)]),_:3},8,["data-disabled","as-child","as","aria-orientation","aria-required","dir"])]),_:3},8,["orientation","dir","loop"]))}}),st=at;const[lt,ot]=pe("RadioGroupItem");var nt=A({inheritAttrs:!1,__name:"RadioGroupItem",props:{id:{type:String,required:!1},value:{type:null,required:!1},disabled:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["select"],setup(s,{emit:c}){const t=s,r=c,{forwardRef:p,currentElement:k}=K(),h=et(),w=R(()=>h.disabled.value||t.disabled),$=R(()=>h.required.value||t.required),q=R(()=>Le(h.modelValue?.value,t.value));ot({disabled:w,checked:q});const v=M(!1),i=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"];oe("keydown",u=>
1{i.includes(u.key)&&(v.value=!0)}),oe("keyup",()=>{v.value=!1});function f(){setTimeout(()=>{v.value&&k.value?.click()},0)}return(u,V)=>(n(),x(e(ze),{checked:q.value,disabled:w.value,"as-child":"",focusable:!w.value,active:q.value},{default:l(()=>[o(Ze,N({...u.$attrs,...t},{ref:e(p),checked:q.value,required:$.value,disabled:w.value,"onUpdate:checked":V[0]||(V[0]=_=>e(h).changeModelValue(u.value)),onSelect:V[1]||(V[1]=_=>r("select",_)),onKeydown:V[2]||(V[2]=ke(re(()=>{},["prevent"]),["enter"])),onFocus:f}),{default:l(()=>[D(u.$slots,"default",{checked:q.value,required:$.value,disabled:w.value})]),_:3},16,["checked","required","disabled"])]),_:3},8,["checked","disabled","focusable","active"]))}}),rt=nt,it=A({__name:"RadioGroupIndicator",props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(s){const{forwardRef:c}=K(),t=lt();return(r,p)=>(n(),x(e(Ge),{present:r.forceMount||e(t).checked.value},{default:l(()=>[o(e(ee),N({ref:e(c),"data-state":e(t).checked.value?"checked":"unchecked","data-disabled":e(t).disabled.value?"":void 0,"as-child":r.asChild,as:r.as},r.$attrs),{default:l(()=>[D(r.$slots,"default")]),_:3},16,["data-state","data-disabled","as-child","as"])]),_:3},8,["present"]))}}),ut=it;const dt={key:0,class:"text-muted-foreground/40","aria-hidden":"true"},ct={class:"inline-flex"},_e=A({__name:"ChannelToggle",props:{row:{},channel:{},capability:{},cadence:{}},emits:["toggle"],setup(s,{emit:c}){const t=s,r=c,p=R(()=>t.row.available_channels.includes(t.channel)),k=R(()=>!t.capability.enabled),h=R(()=>{switch(t.capability.reason){case"no_phone":return"Add a mobile number to your profile to receive texts.";case"no_consent":return"Confirm your number to receive texts.";case"no_email":return"Add an email address to your profile.";case"no_device":return"Install the Home Playbook app and allow notifications to start receiving these.";default:return null}});return(w,$)=>p.value?(n(),x(e(de),{key:1,"delay-duration":200},{default:l(()=>[o(e(ce),null,{default:l(()=>[o(e(fe),{"as-child":""},{default:l(()=>[d("span",ct,[o(e(Te),{"model-value":s.cadence!=="off",disabled:k.value,"aria-label":`${s.row.label} via ${s.channel}`,"onUpdate:modelValue":$[0]||($[0]=q=>r("toggle",q))},null,8,["model-value","disabled","aria-label"])])]),_:1}),h.value?(n(),x(e(me),{key:0,class:"max-w-[220px] text-xs"},{default:l(()=>[S(C(h.value),1)]),_:1})):P("",!0)]),_:1})]),_:1})):(n(),g("span",dt,"—"))}}),j={bell:qe,mail:Ie,smartphone:be,"message-square":Ee};function xe(s,c,t){return s.supports_digest?c.filter(r=>r.supports_digest&&s.available_channels.includes(r.value)&&t(s.value,r.value)).map(r=>r.value):[]}const ft={class:"hidden md:block"},mt={class:"flex justify-center"},pt={class:"sr-only"},vt={class:"font-medium"},gt={class:"text-muted-foreground"},yt={class:"min-w-0 space-y-0.5 pr-4"},ht={class:"flex items-center gap-2"},bt={class:"truncate text-sm font-medium text-foreground"},_t={class:"truncate text-xs text-muted-foreground"},xt={key:0,class:"text-xs text-amber-600 dark:text-amber-500"},kt={class:"flex justify-end"},wt={key:0,class:"flex flex-col items-end gap-1"},$t={key:1,class:"text-xs text-muted-foreground/60"},qt={class:"md:hidden"},Ct=["onClick"],Rt={class:"min-w-0 space-y-1"},St={class:"flex items-center gap-2"},Vt={class:"truncate text-sm font-medium text-foreground"},Ft={class:"flex items-center gap-2"},Bt=A({__name:"PreferenceMatrix",props:{group:{},channels:{},cadences:{},capabilities:{},scoped:{type:Boolean},cadenceFor:{type:Function},isOn:{type:Function}},emits:["toggle","cadence","open"],setup(s,{emit:c}){const t=s,r=c,p=i=>xe(i,t.channels,t.isOn),k=i=>t.channels.find(f=>f.value===i),h=R(()=>t.channels.filter(i=>t.capabilities[i.value]?.offered!==!1)),w=R(()=>({gridTemplateColumns:`minmax(0,1fr) repeat(${h.value.length}, 3rem) 9rem`})),$=i=>{const f=p(i);if(f.length===0)return i.schedule_note??"As it happens";const u=[...new Set(f.map(V=>q(V,i)))];return u.length===1?u[0]:"Mixed"},q=(i,f)=>t.cadences.find(u=>u.value===t.cadenceFor(f.value,i))?.label??"",v=i=>h.value.filter(f=>i.available_channels.includes(f.value));return(i,f)=>(n(),g(F,null,[d("div",ft,[d("div",{class:"grid items-center gap-2 pb-2 text-xs text-muted-foreground",style:te(w.value)},[f[0]||(f[0]=d("span",{"aria-hidden":"true"},[d("span",{class:"sr-only"},"Notification")],-1)),(n(!0),g(F,null,B(h.value,u=>(n(),x(e(de),{key:u.value,"delay-duration":200},{default:l(()=>[o(e(ce),null,{default:l(()=>[o(e(fe),{"as-child":""},{default:l(()=>[d("span",mt,[(n(),x(O(e(j)[u.icon]),{class:"h-4 w-4"})),d("span",pt,C(u.label),1)])]),_:2},1024),o(e(me),{class:"text-xs"},{default:l(()=>[d("p",vt,C(u.label),1),d("p",gt,C(u.description),1)]),_:2},1024)]),_:2},1024)]),_:2},1024))),128)),f[1]||(f[1]=d("span",{class:"text-right"},"Frequency",-1))],4),o(e(ue)),(n(!0),g(F,null,B(s.group.types,(u,V)=>(n(),g("div",{key:u.value,class:J(["grid items-center gap-2 py-3",V<s.group.types.length-1?"border-b border-border/50":""]),style:te(w.value)},[d("div",yt,[d("div",ht,[d("p",bt,C(u.label),1),s.scoped&&u.inherited?(n(),x(e(L),{key:0,variant:"outline",class:"shrink-0 text-[10px]"},{default:l(()=>[...f[2]||(f[2]=[S(" Default ",-1)])]),_:1})):P("",!0)]),d("p",_t,C(u.description),1),u.undeliverable?(n(),g("p",xt," You won't receive this anywhere. ")):P("",!0)]),(n(!0),g(F,null,B(h.value,_=>(n(),g("div",{key:_.value,class:"flex justify-center"},[o(_e,{row:u,channel:_.value,capability:s.capabilities[_.value],ca
1dence:s.cadenceFor(u.value,_.value),onToggle:b=>r("toggle",u,_.value,b)},null,8,["row","channel","capability","cadence","onToggle"])]))),128)),d("div",kt,[p(u).length?(n(),g("div",wt,[(n(!0),g(F,null,B(p(u),_=>(n(),g("div",{key:_,class:"flex items-center gap-1.5"},[p(u).length>1?(n(),x(O(e(j)[k(_).icon]),{key:0,class:"h-3 w-3 shrink-0 text-muted-foreground"})):P("",!0),o(e(W),{"model-value":s.cadenceFor(u.value,_),"onUpdate:modelValue":b=>r("cadence",u,_,b)},{default:l(()=>[o(e(U),{class:"h-8 w-[8.5rem] text-xs"},{default:l(()=>[o(e(z))]),_:1}),o(e(H),null,{default:l(()=>[(n(!0),g(F,null,B(s.cadences.filter(b=>b.value!=="off"),b=>(n(),x(e(I),{key:b.value,value:b.value},{default:l(()=>[S(C(b.label),1)]),_:2},1032,["value"]))),128))]),_:1})]),_:1},8,["model-value","onUpdate:modelValue"])]))),128))])):(n(),g("span",$t,C(u.schedule_note??"As it happens"),1))])],6))),128))]),d("div",qt,[(n(!0),g(F,null,B(s.group.types,(u,V)=>(n(),g("button",{key:u.value,type:"button",class:J(["flex w-full items-center justify-between gap-3 py-3 text-left",V<s.group.types.length-1?"border-b border-border/50":""]),onClick:_=>r("open",u)},[d("div",Rt,[d("div",St,[d("span",Vt,C(u.label),1),s.scoped&&u.inherited?(n(),x(e(L),{key:0,variant:"outline",class:"shrink-0 text-[10px]"},{default:l(()=>[...f[3]||(f[3]=[S(" Default ",-1)])]),_:1})):P("",!0),u.undeliverable?(n(),x(e(L),{key:1,variant:"outline",class:"shrink-0 text-[10px] text-amber-600"},{default:l(()=>[...f[4]||(f[4]=[S(" Off everywhere ",-1)])]),_:1})):P("",!0)]),d("div",Ft,[(n(!0),g(F,null,B(v(u),_=>(n(),x(O(e(j)[_.icon]),{key:_.value,class:J(["h-3.5 w-3.5",s.isOn(u.value,_.value)?"text-foreground":"text-muted-foreground/30"])},null,8,["class"]))),128))])]),o(e(L),{variant:"secondary",class:"shrink-0 text-[10px]"},{default:l(()=>[S(C($(u)),1)]),_:2},1024)],10,Ct))),128))])],64))}}),Pt=A({__name:"RadioGroup",props:{modelValue:{},defaultValue:{},disabled:{type:Boolean},orientation:{},dir:{},loop:{type:Boolean},asChild:{type:Boolean},as:{},name:{},required:{type:Boolean},class:{type:[Boolean,null,String,Object,Array]}},emits:["update:modelValue"],setup(s,{emit:c}){const t=s,r=c,p=ye(t,"class"),k=je(p,r);return(h,w)=>(n(),x(e(st),N({class:e(ie)("grid gap-2",t.class)},e(k)),{default:l(()=>[D(h.$slots,"default")]),_:3},16,["class"]))}}),At=A({__name:"RadioGroupItem",props:{id:{},value:{},disabled:{type:Boolean},asChild:{type:Boolean},as:{},name:{},required:{type:Boolean},class:{type:[Boolean,null,String,Object,Array]}},setup(s){const c=s,t=ye(c,"class"),r=De(t);return(p,k)=>(n(),x(e(rt),N(e(r),{class:e(ie)("peer aspect-square h-4 w-4 rounded-full border border-primary text-primary ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",c.class)}),{default:l(()=>[o(e(ut),{class:"flex items-center justify-center"},{default:l(()=>[o(e(We),{class:"h-2.5 w-2.5 fill-current text-current"})]),_:1})]),_:1},16,["class"]))}}),Tt={class:"text-sm text-muted-foreground"},Et={class:"mt-6 space-y-4"},It={class:"flex min-w-0 items-center gap-3"},Mt={class:"min-w-0 space-y-0.5"},Ot={class:"text-xs text-muted-foreground"},Gt={class:"space-y-3"},jt={class:"text-sm"},Dt={class:"block text-xs text-muted-foreground"},Nt=A({__name:"PreferenceRowSheet",props:{row:{},channels:{},cadences:{},capabilities:{},cadenceFor:{type:Function},isOn:{type:Function}},emits:["toggle","cadence","close"],setup(s,{emit:c}){const t=s,r=c,p=R({get:()=>t.row!==null,set:$=>{$||r("close")}}),k=R(()=>t.row?t.channels.filter($=>t.row.available_channels.includes($.value)&&t.capabilities[$.value]?.offered!==!1):[]),h=R(()=>t.row?xe(t.row,k.value,t.isOn):[]),w=$=>t.channels.find(q=>q.value===$);return($,q)=>(n(),x(e(Re),{open:p.value,"onUpdate:open":q[0]||(q[0]=v=>p.value=v)},{default:l(()=>[s.row?(n(),x(e(Ce),{key:0,side:"bottom",class:"max-h-[85vh] overflow-y-auto"},{default:l(()=>[o(e(Me),{class:"text-left"},{default:l(()=>[o(e(Oe),null,{default:l(()=>[S(C(s.row.label),1)]),_:1}),d("p",Tt,C(s.row.description),1)]),_:1}),d("div",Et,[(n(!0),g(F,null,B(k.value,v=>(n(),g("div",{key:v.value,class:"flex items-center justify-between gap-4"},[d("div",It,[(n(),x(O(e(j)[v.icon]),{class:"h-4 w-4 shrink-0 text-muted-foreground"})),d("div",Mt,[o(e(G),{class:"text-sm font-medium"},{default:l(()=>[S(C(v.label),1)]),_:2},1024),d("p",Ot,C(v.description),1)])]),o(_e,{row:s.row,channel:v.value,capability:s.capabilities[v.value],ca
1dence:s.cadenceFor(s.row.value,v.value),onToggle:i=>r("toggle",s.row,v.value,i)},null,8,["row","channel","capability","cadence","onToggle"])]))),128)),(n(!0),g(F,null,B(h.value,v=>(n(),g(F,{key:v},[o(e(ue)),d("div",Gt,[o(e(G),{class:"flex items-center gap-2 text-sm font-medium"},{default:l(()=>[h.value.length>1?(n(),x(O(e(j)[w(v).icon]),{key:0,class:"h-3.5 w-3.5 text-muted-foreground"})):P("",!0),S(" "+C(h.value.length>1?`${w(v).label} — how often`:"How often"),1)]),_:2},1024),o(e(Pt),{"model-value":s.cadenceFor(s.row.value,v),"onUpdate:modelValue":i=>r("cadence",s.row,v,i)},{default:l(()=>[(n(!0),g(F,null,B(s.cadences.filter(i=>i.value!=="off"),i=>(n(),g("div",{key:i.value,class:"flex items-center gap-3"},[o(e(At),{id:`cad-${v}-${i.value}`,value:i.value},null,8,["id","value"]),o(e(G),{for:`cad-${v}-${i.value}`,class:"font-normal"},{default:l(()=>[d("span",jt,C(i.label),1),d("span",Dt,C(i.description),1)]),_:2},1032,["for"])]))),128))]),_:2},1032,["model-value","onUpdate:modelValue"])])],64))),128))])]),_:1})):P("",!0)]),_:1},8,["open"]))}});function Lt(s,c){const t=M({}),r=M(new Set),p=M("idle");let k=null;const h=()=>{const b={};s().forEach(m=>m.types.forEach(a=>{b[a.value]=r.value.has(a.value)?{...t.value[a.value]??a.channels}:{...a.channels}})),t.value=b};h(),r.value=new Set,we(s,h,{deep:!1});const w=(b,m)=>t.value[b]?.[m]??"off",$=(b,m)=>w(b,m)!=="off",q=(b,m,a)=>{t.value[b]={...t.value[b]??{},[m]:a},r.value.add(b),f()},v=(b,m,a)=>{q(b.value,m,a?"immediate":"off")},i=b=>{b.types.forEach(m=>{m.available_channels.forEach(a=>{t.value[m.value]={...t.value[m.value]??{},[a]:"off"}}),r.value.add(m.value)}),f()},f=()=>{k&&clearTimeout(k),k=setTimeout(u,600)},u=()=>{if(k&&(clearTimeout(k),k=null),r.value.size===0)return;const b=[...r.value].map(a=>({type:a,channels:t.value[a]??{}})),m=new Set(r.value);r.value=new Set,p.value="saving",Z.patch(route("profile.notifications.update"),{property_id:c(),preferences:b},{preserveScroll:!0,preserveState:!0,only:["groups","capabilities","flash"],onSuccess:()=>{p.value="saved",setTimeout(()=>p.value="idle",1500),r.value.size>0&&f()},onError:()=>{p.value="idle",Ae.error("Could not save that change."),s().forEach(a=>a.types.forEach(y=>{m.has(y.value)&&(t.value[y.value]={...y.channels})}))}})},V=R(()=>p.value==="saving"),_=R(()=>p.value==="saved");return{cadenceFor:w,isOn:$,set:q,toggle:v,setAllOff:i,flush:u,saving:V,saved:_}}const Ut={class:"flex items-center justify-between gap-4"},zt={class:"flex items-center gap-4"},Ht={class:"flex items-center gap-1.5 text-sm text-muted-foreground","aria-live":"polite"},Wt={key:2},Kt={key:3},Yt={class:"max-w-4xl space-y-6 pb-16"},Jt={key:1,class:"flex items-start gap-3 rounded-lg border border-border bg-muted/40 p-4"},Qt={class:"text-sm text-muted-foreground"},Xt={class:"space-y-0.5"},Zt={class:"text-xs text-muted-foreground"},ea={class:"flex items-center gap-2"},ta={class:"flex items-center gap-2"},aa={class:"flex items-center gap-2 text-sm"},Ma=A({layout:Se,__name:"Notifications",props:{scope:{},properties:{},channels:{},cadences:{},capabilities:{},groups:{},digest:{}},setup(s){const c=s,t=R(()=>c.scope.property_id),r=Lt(()=>c.groups,()=>t.value),p=M(null),k=R({get:()=>t.value??"all",set:m=>{r.flush(),Z.get(route("profile.notifications"),m==="all"?{}:{property:m},{preserveScroll:!0,preserveState:!0,only:["groups","capabilities","scope"]})}}),h=R(()=>c.properties.find(m=>m.id===t.value)?.name??"All properties"),w=m=>{p.value=m},$=()=>{p.value=null,r.flush()},q=Array.from({length:24},(m,a)=>({value:String(a),label:`${a%12===0?12:a%12}:00 ${a<12?"AM":"PM"}`})),v=[{value:"0",label:"Sunday"},{value:"1",label:"Monday"},{value:"2",label:"Tuesday"},{value:"3",label:"Wednesday"},{value:"4",label:"Thursday"},{value:"5",label:"Friday"},{value:"6",label:"Saturday"}],i=R(()=>c.digest.timezone||"UTC"),f=R(()=>c.capabilities.push?.reason==="never_registered"),u=R(()=>c.capabilities.push?.reason==="no_device"),V=m=>{Z.patch(route("profile.notifications.schedule"),{digest_hour:m.hour??c.digest.hour,digest_day_of_week:m.day??c.digest.day_of_week},{preserveScroll:!0,preserveState:!0,only:["digest","flash"]})},_=R({get:()=>String(c.digest.hour),set:m=>V({hour:Number(m)}
1)}),b=R({get:()=>String(c.digest.day_of_week),set:m=>V({day:Number(m)})});return(m,a)=>(n(),g(F,null,[o(e($e),{title:"Notification Preferences"}),o(Fe,{breadcrumbs:[{label:"Profile",href:m.route("profile.edit")},{label:"Notifications"}]},{default:l(()=>[d("div",Ut,[d("div",zt,[o(e(ae),{href:m.route("profile.edit"),class:"text-muted-foreground hover:text-foreground"},{default:l(()=>[o(e(Ke),{class:"h-5 w-5"})]),_:1},8,["href"]),a[7]||(a[7]=d("h1",{class:"text-2xl font-semibold text-foreground"},"Notifications",-1))]),d("p",Ht,[e(r).saving.value?(n(),x(e(Ve),{key:0,class:"h-3.5 w-3.5 animate-spin"})):e(r).saved.value?(n(),x(e(Ye),{key:1,class:"h-3.5 w-3.5 text-green-600"})):P("",!0),e(r).saving.value?(n(),g("span",Wt,"Saving…")):e(r).saved.value?(n(),g("span",Kt,"Saved")):P("",!0)])])]),_:1},8,["breadcrumbs"]),d("div",Yt,[s.properties.length>0?(n(),x(e(X),{key:0},{default:l(()=>[o(e(Q),{class:"flex flex-col gap-3 pt-6 sm:flex-row sm:items-center sm:justify-between"},{default:l(()=>[a[9]||(a[9]=d("div",{class:"space-y-0.5"},[d("p",{class:"text-sm font-medium text-foreground"},"These settings apply to"),d("p",{class:"text-xs text-muted-foreground"}," Start from your defaults, then fine-tune a single home if you want. ")],-1)),o(e(W),{modelValue:k.value,"onUpdate:modelValue":a[0]||(a[0]=y=>k.value=y)},{default:l(()=>[o(e(U),{class:"w-full sm:w-[220px]"},{default:l(()=>[o(e(z),{placeholder:h.value},null,8,["placeholder"])]),_:1}),o(e(H),null,{default:l(()=>[o(e(I),{value:"all"},{default:l(()=>[...a[8]||(a[8]=[S("All properties (default)",-1)])]),_:1}),(n(!0),g(F,null,B(s.properties,y=>(n(),x(e(I),{key:y.id,value:y.id},{default:l(()=>[S(C(y.name),1)]),_:2},1032,["value"]))),128))]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1})):P("",!0),f.value||u.value?(n(),g("div",Jt,[o(e(be),{class:"mt-0.5 h-4 w-4 shrink-0 text-muted-foreground"}),d("p",Qt,[f.value?(n(),g(F,{key:0},[a[10]||(a[10]=d("span",{class:"font-medium text-foreground"},"Want these on your phone?",-1)),a[11]||(a[11]=S(" Install the Home Playbook app and allow notifications — push options will appear here automatically. ",-1))],64)):(n(),g(F,{key:1},[a[12]||(a[12]=d("span",{class:"font-medium text-foreground"},"Push is paused.",-1)),a[13]||(a[13]=S(" We can't reach your device right now. Open the Home Playbook app to resume — your settings below are kept. ",-1))],64))])])):P("",!0),(n(!0),g(F,null,B(s.groups,y=>(n(),x(e(X),{key:y.value},{default:l(()=>[o(e(se),{class:"flex-row items-center justify-between space-y-0"},{default:l(()=>[d("div",Xt,[o(e(le),{class:"text-base"},{default:l(()=>[S(C(y.label),1)]),_:2},1024),d("p",Zt,C(y.description),1)]),o(e(Pe),{variant:"ghost",size:"sm",onClick:T=>e(r).setAllOff(y)},{default:l(()=>[...a[14]||(a[14]=[S(" Turn all off ",-1)])]),_:1},8,["onClick"])]),_:2},1024),o(e(Q),null,{default:l(()=>[o(Bt,{group:y,channels:s.channels,cadences:s.cadences,capabilities:s.capabilities,scoped:!!t.value,"cadence-for":e(r).cadenceFor,"is-on":e(r).isOn,onToggle:a[1]||(a[1]=(T,E,Y)=>e(r).toggle(T,E,Y)),onCadence:a[2]||(a[2]=(T,E,Y)=>e(r).set(T.value,E,Y)),onOpen:w},null,8,["group","channels","cadences","capabilities","scoped","cadence-for","is-on"])]),_:2},1024)]),_:2},1024))),128)),o(e(X),null,{default:l(()=>[o(e(se),null,{default:l(()=>[o(e(le),{class:"text-base"},{default:l(()=>[...a[15]||(a[15]=[S("Digest delivery",-1)])]),_:1}),a[16]||(a[16]=d("p",{class:"text-xs text-muted-foreground"}," When batched notifications arrive. Changing any of these also moves anything already waiting. ",-1))]),_:1}),o(e(Q),{class:"flex flex-col gap-3 sm:flex-row sm:items-center"},{default:l(()=>[d("div",ea,[o(e(G),{for:"digest-hour",class:"text-sm"},{default:l(()=>[...a[17]||(a[17]=[S("Time",-1)])]),_:1}),o(e(W),{modelValue:_.value,"onUpdate:modelValue":a[3]||(a[3]=y=>_.value=y)},{default:l(()=>[o(e(U),{id:"digest-hour",class:"w-[7rem]"},{default:l(()=>[o(e(z))]),_:1}),o(e(H),null,{default:l(()=>[(n(!0),g(F,null,B(e(q),y=>(n(),x(e(I),{key:y.value,value:y.value},{default:l(()=>[S(C(y.label),1)]),_:2},1032,["value"]))),128))]),_:1})]),_:1},8,["modelValue"])]),d("div",ta,[o(e(G),{for:"digest-day",class:"text-sm"},{default:l(()=>[...a[18]||(a[18]=[S("Weekly digests on",-1)])]),_:1}),o(e(W),{modelValue:b.value,"onUpdate:modelValue":a[4]||(a[4]=y=>b.value=y)},{default:l(()=>[o(e(U),{id:"digest-day",class:"w-[9rem]"},{default:l(()=>[o(e(z))]),_:1}),o(e(H),null,{default:l(()=>[(n(),g(F,null,B(v,y=>o(e(I),{key:y.value,value:y.value},{default:l(()=>[S(C(y.label),1)]),_:2},1032,["value"])),64))]),_:1})]),_:1},8,["modelValue"])]),d("div",aa,[a[19]||(a[19]=d("span",{class:"text-muted-foreground"},"Timezone",-1)),o(e(ae),{href:m.route("profile.edit"),class:"font-medium text-foreground underline underline-offset-4 hover:text-primary"},{default:l(()=>[S(C(i.value),1)]),_:1},8,["href"])])]),_:1})]),_:1}),a[20]||(a[20]=d("p",{class:"text-xs text-muted-foreground"},"Changes save automatically.",-1))]),o(Nt,{row:p.value,channels:s.channels,cadences:s.
1cadences,capabilities:s.capabilities,"cadence-for":e(r).cadenceFor,"is-on":e(r).isOn,onToggle:a[5]||(a[5]=(y,T,E)=>e(r).toggle(y,T,E)),onCadence:a[6]||(a[6]=(y,T,E)=>e(r).set(y.value,T,E)),onClose:$},null,8,["row","channels","cadences","capabilities","cadence-for","is-on"])],64))}});export{Ma as default};

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.