1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-C9ebdKB5.js","assets/index-B3l7RpuC.css","assets/TabWoche-_4nC0f5l.js","assets/card-DR5LKJwI.js","assets/FokusLogo-6nlbNsOi.js","assets/index-DfOTqTrH.js","assets/alert-dialog-DC8lUvR1.js","assets/accordion-DEExls7I.js","assets/users-MNfdipfr.js","assets/label-mUns6IyZ.js","assets/download-D4Jj7-3E.js","assets/Footer-sQ8iIHWy.js","assets/arrow-left-D7dovSXJ.js","assets/focus-reschedule-nmBTkqgv.js","assets/confetti-bEOLSAJf.js","assets/TabKalender-DTKWtFAk.js","assets/TabProjekte-F3LwQgvn.js","assets/TabDone-BnzJzH5R.js","assets/TabErfolge-DzhxhtdG.js","assets/TabRewards-CSiNdTTH.js","assets/tabs-CntS2C33.js","assets/ResetButtons-DPcsf0jx.js","assets/archive-_7GY6ByE.js","assets/lock-CInwS2dp.js","assets/TabStats-C-fx6D-t.js","assets/TabRanking-CXtUmLTs.js","assets/focus-beta-W-gEukDk.js","assets/TabProfile-Bj7LKHRw.js","assets/mail-XHl2MEWS.js","assets/eye-off-COus09Go.js","assets/eye-BbN4TZWF.js","assets/TabHelp-TeqWDuH7.js","assets/handbook-CEL4D7GN.js","assets/AppResetButton-CuxnvRZo.js","assets/TabAdmin-DECXZs_K.js","assets/TabHebel-CH1ZjIvn.js"])))=>i.map(i=>d[i]); 2import{c as X,a as Oi,b as Yn,d as xn,r as c,j as t,A as Lr,P as bn,u as Ie,h as Ks,e as ae,f as $s,F as Vs,D as Us,C as qs,g as je,i as Gs,k as Zs,l as Fi,R as Ys,m as Lc,n as Js,o as Qs,p as Xs,q as jr,s as ln,t as Q,v as Ne,w as De,x as Ce,y as Ae,H as Oa,z as st,B as S,E as de,T as xe,G as be,I as ve,J as Bi,K as Fa,L as ge,M as mt,N as Nr,O as Mt,Q as H,S as Hc,U as Ba,V as zt,W as Wi,X as Kc,Y as $c,Z as Me,_ as Bn,$ as Ss,a0 as Ds,a1 as U,a2 as Vc,a3 as Wn,a4 as Pe,a5 as vn,a6 as Jn,a7 as rn,a8 as Uc,a9 as qc,aa as Zt,ab as Ue,ac as Wa,ad as Gc,ae as Zc,af as Yc,ag as Pt,ah as Et,ai as La,aj as Jc,ak as Ha,al as Hr,am as Qc,an as Xc,ao as ed,ap as td,aq as nd,ar as rd,as as sd,at as ad}from"./index-C9ebdKB5.js";import{F as Li}from"./FokusLogo-6nlbNsOi.js";import{u as Hi}from"./index-DfOTqTrH.js";import{c as Ki,R as id,I as od,C as tt,a as cn,A as ld,b as cd,d as dd,e as ud,f as hd,g as md,h as fd,i as gd}from"./alert-dialog-DC8lUvR1.js";import{S as Qn,A as pd,a as xd,b as bd,c as vd,C as Kr,L as Ka,d as nn,e as yd,R as kd,f as wd,g as jd}from"./accordion-DEExls7I.js";import{U as $a}from"./users-MNfdipfr.js";import{I as oe,L as dn}from"./label-mUns6IyZ.js";import{C as qe}from"./card-DR5LKJwI.js";import{D as Nd,B as Sd}from"./download-D4Jj7-3E.js";import{F as Dd}from"./Footer-sQ8iIHWy.js";import{A as _d}from"./arrow-left-D7dovSXJ.js";import{resetReschedule as dr}from"./focus-reschedule-nmBTkqgv.js";import{celebrate as Md}from"./confetti-bEOLSAJf.js";/** 3 * @license lucide-react v0.462.0 - ISC 4 * 5 * This source code is licensed under the ISC license. 6 * See the LICENSE file in the root directory of this source tree. 7 */const Cd=X("AlarmClock",[["circle",{cx:"12",cy:"13",r:"8",key:"3y4lt7"}],["path",{d:"M12 9v4l2 2",key:"1c63tq"}],["path",{d:"M5 3 2 6",key:"18tl5t"}],["path",{d:"m22 6-3-3",key:"1opdir"}],["path",{d:"M6.38 18.7 4 21",key:"17xu3x"}],["path",{d:"M17.64 18.67 20 21",key:"kv2oe2"}]]);/** 8 * @license lucide-react v0.462.0 - ISC 9 * 10 * This source code is licensed under the ISC license. 11 * See the LICENSE file in the root directory of this source tree. 12 */const Ad=X("Banknote",[["rect",{width:"20",height:"12",x:"2",y:"6",rx:"2",key:"9lu3g6"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}],["path",{d:"M6 12h.01M18 12h.01",key:"113zkx"}]]);/** 13 * @license lucide-react v0.462.0 - ISC 14 * 15 * This source code is licensed under the ISC license. 16 * See the LICENSE file in the root directory of this source tree. 17 */const bt=X("Bell",[["path",{d:"M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9",key:"1qo2s2"}],["path",{d:"M10.3 21a1.94 1.94 0 0 0 3.4 0",key:"qgo35s"}]]);/** 18 * @license lucide-react v0.462.0 - ISC 19 * 20 * This source code is licensed under the ISC license. 21 * See the LICENSE file in the root directory of this source tree. 22 */const zd=X("BookDashed",[["path",{d:"M12 17h2",key:"13u4lk"}],["path",{d:"M12 22h2",key:"kn7ki6"}],["path",{d:"M12 2h2",key:"cvn524"}],["path",{d:"M18 22h1a1 1 0 0 0 1-1",key:"w6gbqz"}],["path",{d:"M18 2h1a1 1 0 0 1 1 1v1",key:"1vpra5"}],["path",{d:"M20 15v2h-2",key:"fph276"}],["path",{d:"M20 8v3",key:"deu0bs"}],["path",{d:"M4 11V9",key:"v3xsx8"}],["path",{d:"M4 19.5V15",key:"6gr39e"}],["path",{d:"M4 5v-.5A2.5 2.5 0 0 1 6.5 2H8",key:"wywhs9"}],["path",{d:"M8 22H6.5a1 1 0 0 1 0-5H8",key:"1cu73q"}]]);/** 23 * @license lucide-react v0.462.0 - ISC 24 * 25 * This source code is licensed under the ISC license. 26 * See the LICENSE file in the root directory of this source tree. 27 */const Va=X("Bug",[["path",{d:"m8 2 1.88 1.88",key:"fmnt4t"}],["path",{d:"M14.12 3.88 16 2",key:"qol33r"}],["path",{d:"M9 7.13v-1a3.003 3.003 0 1 1 6 0v1",key:"d7y7pr"}],["path",{d:"M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6",key:"xs1cw7"}],["path",{d:"M12 20v-9",key:"1qisl0"}],["path",{d:"M6.53 9C4.6 8.8 3 7.1 3 5",key:"32zzws"}],["path",{d:"M6 13H2",key:"82j7cp"}],["path",{d:"M3 21c0-2.1 1.7-3.9 3.8-4",key:"4p0ekp"}],["path",{d:"M20.97 5c0 2.1-1.6 3.8-3.5 4",key:"18gb23"}
27],["path",{d:"M22 13h-4",key:"1jl80f"}],["path",{d:"M17.2 17c2.1.1 3.8 1.9 3.8 4",key:"k3fwyw"}]]);/** 28 * @license lucide-react v0.462.0 - ISC 29 * 30 * This source code is licensed under the ISC license. 31 * See the LICENSE file in the root directory of this source tree. 32 */const Td=X("CalendarClock",[["path",{d:"M21 7.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h3.5",key:"1osxxc"}],["path",{d:"M16 2v4",key:"4m81vk"}],["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M3 10h5",key:"r794hk"}],["path",{d:"M17.5 17.5 16 16.3V14",key:"akvzfd"}],["circle",{cx:"16",cy:"16",r:"6",key:"qoo3c4"}]]);/** 33 * @license lucide-react v0.462.0 - ISC 34 * 35 * This source code is licensed under the ISC license. 36 * See the LICENSE file in the root directory of this source tree. 37 */const $i=X("CalendarDays",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}],["path",{d:"M8 14h.01",key:"6423bh"}],["path",{d:"M12 14h.01",key:"1etili"}],["path",{d:"M16 14h.01",key:"1gbofw"}],["path",{d:"M8 18h.01",key:"lrp35t"}],["path",{d:"M12 18h.01",key:"mhygvu"}],["path",{d:"M16 18h.01",key:"kzsmim"}]]);/** 38 * @license lucide-react v0.462.0 - ISC 39 * 40 * This source code is licensed under the ISC license. 41 * See the LICENSE file in the root directory of this source tree. 42 */const Pd=X("CalendarRange",[["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M16 2v4",key:"4m81vk"}],["path",{d:"M3 10h18",key:"8toen8"}],["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M17 14h-6",key:"bkmgh3"}],["path",{d:"M13 18H7",key:"bb0bb7"}],["path",{d:"M7 14h.01",key:"1qa3f1"}],["path",{d:"M17 18h.01",key:"1bdyru"}]]);/** 43 * @license lucide-react v0.462.0 - ISC 44 * 45 * This source code is licensed under the ISC license. 46 * See the LICENSE file in the root directory of this source tree. 47 */const Sr=X("Calendar",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]]);/** 48 * @license lucide-react v0.462.0 - ISC 49 * 50 * This source code is licensed under the ISC license. 51 * See the LICENSE file in the root directory of this source tree. 52 */const Ed=X("ChartColumn",[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]]);/** 53 * @license lucide-react v0.462.0 - ISC 54 * 55 * This source code is licensed under the ISC license. 56 * See the LICENSE file in the root directory of this source tree. 57 */const Vi=X("ChevronLeft",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);/** 58 * @license lucide-react v0.462.0 - ISC 59 * 60 * This source code is licensed under the ISC license. 61 * See the LICENSE file in the root directory of this source tree. 62 */const $r=X("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);/** 63 * @license lucide-react v0.462.0 - ISC 64 * 65 * This source code is licensed under the ISC license. 66 * See the LICENSE file in the root directory of this source tree. 67 */const Rd=X("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);/** 68 * @license lucide-react v0.462.0 - ISC 69 * 70 * This source code is licensed under the ISC license. 71 * See the LICENSE file in the root directory of this source tree. 72 */const Id=X("ChevronsUpDown",[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]]);/** 73 * @license lucide-react v0.462.0 - ISC 74 * 75 * This source code is licensed under the ISC license. 76 * See the LICENSE file in the root directory of this source tree. 77 */const Od=X("CircleCheckBig",[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]]);/** 78 * @license lucide-react v0.462.0 - ISC 79 * 80 * This source code is licensed under the ISC license. 81 * See the LICENSE file in the root directory of this source tree. 82 */const ea=X("CircleCheck",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/** 83 * @license lucide-react v0.462.0 - ISC 84 * 85 * This source code is licensed under the ISC license. 86 * See the LICENSE file in the root directory of this source tree. 87 */const Fd=X("CircleHelp",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);/** 88 * @license lucide-react v0.462.0 - ISC 89 * 90 * This source code is licensed under the ISC license. 91 * See the LICENSE file in the root directory of this source tree. 92 */const Ui=X("Circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);/** 93 * @license lucide-react v0.462.0 - ISC 94 * 95 * This source code is licensed under the ISC license. 96 * See the LICENSE file in the root directory of this source tree. 97 */const Ln=X("Clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]);/** 98 * @license lucide-react v0.462.0 - ISC 99 * 100 * This source code is licensed under the ISC license. 101 * See the LICENSE file in the root directory of this source tree. 102 */const Bd=X("Compass",[["path",{d:"m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z",ke
102y:"9ktpf1"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);/** 103 * @license lucide-react v0.462.0 - ISC 104 * 105 * This source code is licensed under the ISC license. 106 * See the LICENSE file in the root directory of this source tree. 107 */const Wd=X("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);/** 108 * @license lucide-react v0.462.0 - ISC 109 * 110 * This source code is licensed under the ISC license. 111 * See the LICENSE file in the root directory of this source tree. 112 */const qi=X("EllipsisVertical",[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"12",cy:"5",r:"1",key:"gxeob9"}],["circle",{cx:"12",cy:"19",r:"1",key:"lyex9k"}]]);/** 113 * @license lucide-react v0.462.0 - ISC 114 * 115 * This source code is licensed under the ISC license. 116 * See the LICENSE file in the root directory of this source tree. 117 */const Ua=X("ExternalLink",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);/** 118 * @license lucide-react v0.462.0 - ISC 119 * 120 * This source code is licensed under the ISC license. 121 * See the LICENSE file in the root directory of this source tree. 122 */const ta=X("Flame",[["path",{d:"M8.5 14.5A2.5 2.5 0 0 0 11 12c0-1.38-.5-2-1-3-1.072-2.143-.224-4.054 2-6 .5 2.5 2 4.9 4 6.5 2 1.6 3 3.5 3 5.5a7 7 0 1 1-14 0c0-1.153.433-2.294 1-3a2.5 2.5 0 0 0 2.5 2.5z",key:"96xj49"}]]);/** 123 * @license lucide-react v0.462.0 - ISC 124 * 125 * This source code is licensed under the ISC license. 126 * See the LICENSE file in the root directory of this source tree. 127 */const Ld=X("FolderKanban",[["path",{d:"M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2Z",key:"1fr9dc"}],["path",{d:"M8 10v4",key:"tgpxqk"}],["path",{d:"M12 10v2",key:"hh53o1"}],["path",{d:"M16 10v6",key:"1d6xys"}]]);/** 128 * @license lucide-react v0.462.0 - ISC 129 * 130 * This source code is licensed under the ISC license. 131 * See the LICENSE file in the root directory of this source tree. 132 */const na=X("Gift",[["rect",{x:"3",y:"8",width:"18",height:"4",rx:"1",key:"bkv52"}],["path",{d:"M12 8v13",key:"1c76mn"}],["path",{d:"M19 12v7a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2v-7",key:"6wjy6b"}],["path",{d:"M7.5 8a2.5 2.5 0 0 1 0-5A4.8 8 0 0 1 12 8a4.8 8 0 0 1 4.5-5 2.5 2.5 0 0 1 0 5",key:"1ihvrl"}]]);/** 133 * @license lucide-react v0.462.0 - ISC 134 * 135 * This source code is licensed under the ISC license. 136 * See the LICENSE file in the root directory of this source tree. 137 */const ra=X("History",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M12 7v5l4 2",key:"1fdv2h"}]]);/** 138 * @license lucide-react v0.462.0 - ISC 139 * 140 * This source code is licensed under the ISC license. 141 * See the LICENSE file in the root directory of this source tree. 142 */const Hd=X("Info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]);/** 143 * @license lucide-react v0.462.0 - ISC 144 * 145 * This source code is licensed under the ISC license. 146 * See the LICENSE file in the root directory of this source tree. 147 */const Kd=X("LifeBuoy",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m4.93 4.93 4.24 4.24",key:"1ymg45"}],["path",{d:"m14.83 9.17 4.24-4.24",key:"1cb5xl"}],["path",{d:"m14.83 14.83 4.24 4.24",key:"q42g0n"}],["path",{d:"m9.17 14.83-4.24 4.24",key:"bqpfvv"}],["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}]]);/** 148 * @license lucide-react v0.462.0 - ISC 149 * 150 * This source code is licensed under the ISC license. 151 * See the LICENSE file in the root directory of this source tree. 152 */const Kt=X("ListChecks",[["path",{d:"m3 17 2 2 4-4",key:"1jhpwq"}],["path",{d:"m3 7 2 2 4-4",key:"1obspn"}],["path",{d:"M13 6h8",key:"15sg57"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 18h8",key:"oe0vm4"}]]);/** 153 * @license lucide-react v0.462.0 - ISC 154 * 155 * This source code is licensed under the ISC license. 156 * See the LICENSE file in the root directory of this source tree.
157 */const $d=X("LoaderCircle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);/** 158 * @license lucide-react v0.462.0 - ISC 159 * 160 * This source code is licensed under the ISC license. 161 * See the LICENSE file in the root directory of this source tree. 162 */const Vd=X("Megaphone",[["path",{d:"m3 11 18-5v12L3 14v-3z",key:"n962bs"}],["path",{d:"M11.6 16.8a3 3 0 1 1-5.8-1.6",key:"1yl0tm"}]]);/** 163 * @license lucide-react v0.462.0 - ISC 164 * 165 * This source code is licensed under the ISC license. 166 * See the LICENSE file in the root directory of this source tree. 167 */const Ud=X("MessageCirclePlus",[["path",{d:"M7.9 20A9 9 0 1 0 4 16.1L2 22Z",key:"vv11sd"}],["path",{d:"M8 12h8",key:"1wcyev"}],["path",{d:"M12 8v8",key:"napkw2"}]]);/** 168 * @license lucide-react v0.462.0 - ISC 169 * 170 * This source code is licensed under the ISC license. 171 * See the LICENSE file in the root directory of this source tree. 172 */const qd=X("MessageCircle",[["path",{d:"M7.9 20A9 9 0 1 0 4 16.1L2 22Z",key:"vv11sd"}]]);/** 173 * @license lucide-react v0.462.0 - ISC 174 * 175 * This source code is licensed under the ISC license. 176 * See the LICENSE file in the root directory of this source tree. 177 */const En=X("MessageSquare",[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}]]);/** 178 * @license lucide-react v0.462.0 - ISC 179 * 180 * This source code is licensed under the ISC license. 181 * See the LICENSE file in the root directory of this source tree. 182 */const Gd=X("MicOff",[["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}],["path",{d:"M18.89 13.23A7.12 7.12 0 0 0 19 12v-2",key:"80xlxr"}],["path",{d:"M5 10v2a7 7 0 0 0 12 5",key:"p2k8kg"}],["path",{d:"M15 9.34V5a3 3 0 0 0-5.68-1.33",key:"1gzdoj"}],["path",{d:"M9 9v3a3 3 0 0 0 5.12 2.12",key:"r2i35w"}],["line",{x1:"12",x2:"12",y1:"19",y2:"22",key:"x3vr5v"}]]);/** 183 * @license lucide-react v0.462.0 - ISC 184 * 185 * This source code is licensed under the ISC license. 186 * See the LICENSE file in the root directory of this source tree. 187 */const Zd=X("Mic",[["path",{d:"M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z",key:"131961"}],["path",{d:"M19 10v2a7 7 0 0 1-14 0v-2",key:"1vc78b"}],["line",{x1:"12",x2:"12",y1:"19",y2:"22",key:"x3vr5v"}]]);/** 188 * @license lucide-react v0.462.0 - ISC 189 * 190 * This source code is licensed under the ISC license. 191 * See the LICENSE file in the root directory of this source tree. 192 */const Yd=X("Palette",[["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["path",{d:"M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.926 0 1.648-.746 1.648-1.688 0-.437-.18-.835-.437-1.125-.29-.289-.438-.652-.438-1.125a1.64 1.64 0 0 1 1.668-1.668h1.996c3.051 0 5.555-2.503 5.555-5.554C21.965 6.012 17.461 2 12 2z",key:"12rzf8"}]]);/** 193 * @license lucide-react v0.462.0 - ISC 194 * 195 * This source code is licensed under the ISC license. 196 * See the LICENSE file in the root directory of this source tree. 197 */const _s=X("Paperclip",[["path",{d:"m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l8.57-8.57A4 4 0 1 1 18 8.84l-8.59 8.57a2 2 0 0 1-2.83-2.83l8.49-8.48",key:"1u3ebp"}]]);/** 198 * @license lucide-react v0.462.0 - ISC 199 * 200 * This source code is licensed under the ISC license. 201 * See the LICENSE file in the root directory of this source tree. 202 */const Jd=X("PartyPopper",[["path",{d:"M5.8 11.3 2 22l10.7-3.79",key:"gwxi1d"}],["path",{d:"M4 3h.01",key:"1vcuye"}],["path",{d:"M22 8h.01",key:"1mrtc2"}],["path",{d:"M15 2h.01",key:"1cjtqr"}],["path",{d:"M22 20h.01",key:"1mrys2"}],["path",{d:"m22 2-2.24.75a2.9 2.9 0 0 0-1.96 3.12c.1.86-.57 1.63-1.45 1.63h-.38c-.86 0-1.6.6-1.76 1.44L14 10",key:"hbicv8"}],["path",{d:"m22 13-.82-.33c-.86-.34-1.82.2-1.98 1.11c-.11.7-.72 1.22-1.43 1.22H17",key:"1i94pl"}],["path",{d:"m11 2 .33.82c.34.86-.2 1.82-1.11 1.98C9.52 4.9 9 5.52 9 6.23V7",key:"1cofks"}],["path",{d:"M11 13c1.93 1.93 2.83 4.17 2 5-.83.83-3.07-.07-5-2-1.93-1.93-2.83-4.17-2-5 .83-.83 3.07.07 5 2Z",key:"4kbmks"}]]);/** 203 * @license lucide-react v0.462.0 - ISC 204 * 205 * This source code is licensed under the ISC license. 206 * See the LICENSE file in the root directory of this source tree. 207 */const sa=X("Pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);/** 208 * @license lucide-react v0.462.0 - ISC 209 * 210 * This source code is licensed under the ISC license. 211 * See the LICENSE file in the root directory of this source tree. 212 */const Gi=X("Phone",[["path",{d:"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z",key:"foiqr5"}]]);/** 213 * @license lucide-react v0.462.0 - ISC 214 * 215 * This source code is licensed under the ISC license. 216 * See the LICENSE file in the root directory of this source tree. 217 */const Tt=X("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);/** 218 * @license lucide-react v0.462.0 - ISC 219 * 220 * This source code is licensed under the ISC license. 221 * See the LICENSE file in the root directory of this source tree. 222 */const Qd=X("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);/** 223 * @license lucide-react v0.462.0 - ISC 224 * 225 * This source code is licensed under the ISC license. 226 * See the LICENSE file in the root directory of this source tree. 227 */const Xd=X("Repeat",[["path",{d:"m17 2 4 4-4 4",key:"nntrym"}],["path",{d:"M3 11v-1a4 4 0 0 1 4-4h14",key:"84bu3i"}],["path",{d:"m7 22-4-4 4-4",key:"1wqhfi"}],["path",{d:"M21 13v1a4 4 0 0 1-4 4H3",key:"1rx37r"}]]);/** 228 * @license lucide-react v0.462.0 - ISC 229 * 230 * This source code is licensed under the ISC license. 231 * See the LICENSE file in the root directory of this source tree. 232 */const eu=X("Rocket",[["path",{d:"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z",key:"m3
232kijz"}],["path",{d:"m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z",key:"1fmvmk"}],["path",{d:"M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0",key:"1f8sc4"}],["path",{d:"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5",key:"qeys4"}]]);/** 233 * @license lucide-react v0.462.0 - ISC 234 * 235 * This source code is licensed under the ISC license. 236 * See the LICENSE file in the root directory of this source tree. 237 */const tu=X("RotateCcw",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]]);/** 238 * @license lucide-react v0.462.0 - ISC 239 * 240 * This source code is licensed under the ISC license. 241 * See the LICENSE file in the root directory of this source tree. 242 */const Hn=X("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);/** 243 * @license lucide-react v0.462.0 - ISC 244 * 245 * This source code is licensed under the ISC license. 246 * See the LICENSE file in the root directory of this source tree. 247 */const nu=X("Send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]]);/** 248 * @license lucide-react v0.462.0 - ISC 249 * 250 * This source code is licensed under the ISC license. 251 * See the LICENSE file in the root directory of this source tree. 252 */const Zi=X("Share2",[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]]);/** 253 * @license lucide-react v0.462.0 - ISC 254 * 255 * This source code is licensed under the ISC license. 256 * See the LICENSE file in the root directory of this source tree. 257 */const ru=X("Share",[["path",{d:"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8",key:"1b2hhj"}],["polyline",{points:"16 6 12 2 8 6",key:"m901s6"}],["line",{x1:"12",x2:"12",y1:"2",y2:"15",key:"1p0rca"}]]);/** 258 * @license lucide-react v0.462.0 - ISC 259 * 260 * This source code is licensed under the ISC license. 261 * See the LICENSE file in the root directory of this source tree. 262 */const su=X("Shield",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]]);/** 263 * @license lucide-react v0.462.0 - ISC 264 * 265 * This source code is licensed under the ISC license. 266 * See the LICENSE file in the root directory of this source tree. 267 */const au=X("Siren",[["path",{d:"M7 18v-6a5 5 0 1 1 10 0v6",key:"pcx96s"}],["path",{d:"M5 21a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-1a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2z",key:"1b4s83"}],["path",{d:"M21 12h1",key:"jtio3y"}],["path",{d:"M18.5 4.5 18 5",key:"g5sp9y"}],["path",{d:"M2 12h1",key:"1uaihz"}],["path",{d:"M12 2v1",key:"11qlp1"}],["path",{d:"m4.929 4.929.707.707",key:"1i51kw"}],["path",{d:"M12 12v6",key:"3ahymv"}]]);/** 268 * @license lucide-react v0.462.0 - ISC 269 * 270 * This source code is licensed under the ISC license. 271 * See the LICENSE file in the root directory of this source tree. 272 */const Ms=X("Smartphone",[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]]);/** 273 * @license lucide-react v0.462.0 - ISC 274 * 275 * This source code is licensed under the ISC license. 276 * See the LICENSE file in the root directory of this source tree. 277 */const ft=X("Star",[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]);/** 278 * @license lucide-react v0.462.0 - ISC 279 * 280 * This source code is licensed under the ISC license. 281 * See the LICENSE file in the root directory of this source tree. 282 */const Cs=X("StickyNote",[["path",{d:"M16 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V8Z",key:"qazsjp"}],["path",{d:"M15 3v4a2 2 0 0 0 2 2h4",key:"40519r"}]]);/** 283 * @license lucide-react v0.462.0 - ISC 284 * 285 * This source code is licensed under the ISC license. 286 * See the LICENSE file in the root directory of this source tree.
vendor: 19,931 bytes, lines 287-327
287 */const Yi=X("Tag",[["path",{d:"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",key:"vktsd0"}],["circle",{cx:"7.5",cy:"7.5",r:".5",fill:"currentColor",key:"kqv944"}]]);/** 288 * @license lucide-react v0.462.0 - ISC 289 * 290 * This source code is licensed under the ISC license. 291 * See the LICENSE file in the root directory of this source tree. 292 */const Xn=X("Target",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]);/** 293 * @license lucide-react v0.462.0 - ISC 294 * 295 * This source code is licensed under the ISC license. 296 * See the LICENSE file in the root directory of this source tree. 297 */const at=X("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]);/** 298 * @license lucide-react v0.462.0 - ISC 299 * 300 * This source code is licensed under the ISC license. 301 * See the LICENSE file in the root directory of this source tree. 302 */const qa=X("TriangleAlert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);/** 303 * @license lucide-react v0.462.0 - ISC 304 * 305 * This source code is licensed under the ISC license. 306 * See the LICENSE file in the root directory of this source tree. 307 */const er=X("Trophy",[["path",{d:"M6 9H4.5a2.5 2.5 0 0 1 0-5H6",key:"17hqa7"}],["path",{d:"M18 9h1.5a2.5 2.5 0 0 0 0-5H18",key:"lmptdp"}],["path",{d:"M4 22h16",key:"57wxv0"}],["path",{d:"M10 14.66V17c0 .55-.47.98-.97 1.21C7.85 18.75 7 20.24 7 22",key:"1nw9bq"}],["path",{d:"M14 14.66V17c0 .55.47.98.97 1.21C16.15 18.75 17 20.24 17 22",key:"1np0yb"}],["path",{d:"M18 2H6v7a6 6 0 0 0 12 0V2Z",key:"u46fv3"}]]);/** 308 * @license lucide-react v0.462.0 - ISC 309 * 310 * This source code is licensed under the ISC license. 311 * See the LICENSE file in the root directory of this source tree. 312 */const iu=X("Undo2",[["path",{d:"M9 14 4 9l5-5",key:"102s5s"}],["path",{d:"M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11",key:"f3b9sd"}]]);/** 313 * @license lucide-react v0.462.0 - ISC 314 * 315 * This source code is licensed under the ISC license. 316 * See the LICENSE file in the root directory of this source tree. 317 */const ou=X("Upload",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"17 8 12 3 7 8",key:"t8dd8p"}],["line",{x1:"12",x2:"12",y1:"3",y2:"15",key:"widbto"}]]);/** 318 * @license lucide-react v0.462.0 - ISC 319 * 320 * This source code is licensed under the ISC license. 321 * See the LICENSE file in the root directory of this source tree. 322 */const Ga=X("UserPlus",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["line",{x1:"19",x2:"19",y1:"8",y2:"14",key:"1bvyxn"}],["line",{x1:"22",x2:"16",y1:"11",y2:"11",key:"1shjgl"}]]);/** 323 * @license lucide-react v0.462.0 - ISC 324 * 325 * This source code is licensed under the ISC license. 326 * See the LICENSE file in the root directory of this source tree. 327 */const As=X("User",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);var zs=["Enter"," "],lu=["ArrowDown","PageUp","Home"],Ji=["ArrowUp","PageDown","End"],cu=[...lu,...Ji],du={ltr:[...zs,"ArrowRight"],rtl:[...zs,"ArrowLeft"]},uu={ltr:["ArrowLeft"],rtl:["ArrowRight"]},tr="Menu",[Kn,hu,mu]=Oi(tr),[Yt,Qi]=Yn(tr,[mu,xn,Ki]),Vr=xn(),Xi=Ki(),[fu,Jt]=Yt(tr),[gu,nr]=Yt(tr),eo=e=>{const{__scopeMenu:n,open:r=!1,children:s,dir:a,onOpenChange:i,modal:l=!0}=e,o=Vr(n),[d,u]=c.useState(null),h=c.useRef(!1),g=Gs(i),p=Hi(a);return c.useEffect(()=>{const v=()=>{h.current=!0,document.addEventListener("pointerdown",f,{capture:!0,once:!0}),document.addEventListener("pointermove",f,{capture:!0,once:!0})},f=()=>h.current=!1;return document.addEventListener("keydown",v,{capture:!0}),()=>{document.removeEventListener("keydown",v,{capture:!0}),document.removeEventListener("pointerdown",f,{capture:!0}),document.removeEventListener("pointermove",f,{capture:!0})}},[]),t.jsx(Js,{...o,children:t.jsx(fu,{scope:n,open:r,onOpenChange:g,content:d,onContentChange:u,children:t.jsx(gu,{scope:n,onClose:c.useCallback(()=>g(!1),[g]),isUsingKeyboardRef:h,dir:p,modal:l,children:s})})})};eo.displayName=tr;var pu="MenuAnchor",aa=c.forwardRef((e,n)=>{const{__scopeMenu:r,...s}=e,a=Vr(r);return t.jsx(Lr,{...a,...s,ref:n})});aa.displayName=pu;var ia="MenuPortal",[xu,to]=Yt(ia,{forceMount:void 0}),no=e=>{const{__scopeMenu:n,forceMount:r,children:s,container:a}=e,i=Jt(ia,n);return t.jsx(xu,{scope:n,forceMount:r,children:t.jsx(bn,{present:r||i.open,children:t.jsx(Qs,{asChild:!0,container:a,children:s})})})};no.displayName=ia;var Ye="MenuContent",[bu,oa]=Yt(Ye),ro=c.forwardRef((e,n)=>{const r=to(Ye,e.__scopeMenu),{forceMount:s=r.forceMount,...a}=e,i=Jt(Ye,e.__scopeMenu),l=nr(Ye,e.__scopeMenu);return t.jsx(Kn.Provider,{scope:e.__scopeMenu,children:t.jsx(bn,{present:s||i.open,children:t.jsx(Kn.Slot,{scope:e.__scopeMenu,children:l.modal?t.jsx(vu,{...a,ref:n}):t.jsx(yu,{...a,ref:n})})})})}),vu=c.forwardRef((e,n)=>{const r=Jt(Ye,e.__scopeMenu),s=c.useRef(null),a=Ie(n,s);return c.useEffect(()=>{const i=s.current;if(i)return Ks(i)},[]),t.jsx(la,{...e,ref:a,trapFocus:r.open,disableOutsidePointerEvents:r.open,disableOutsideScroll:!0,onFocusOutside:ae(e.onFocusOutside,i=>i.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>r.onOpenChange(!1)})}),yu=c.forwardRef((e,n)=>{const r=Jt(Ye,e.__scopeMenu);return t.jsx(la,{...e,ref:n,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>r.onOpenChange(!1)})}),ku=Xs("MenuContent.ScrollLock"),la=c.forwardRef((e,n)=>{const{__scopeMenu:r,loop:s=!1,trapFocus:a,onOpenAutoFocus:i,onCloseAutoFocus:l,disableOutsidePointerEvents:o,onEntryFocus:d,onEscapeKeyDown:u,onPointerDownOutside:h,onFocusOutside:g,onInteractOutside:p,onDismiss:v,disableOutsideScroll:f,...m}=e,w=Jt(Ye,r),x=nr(Ye,r),b=Vr(r),y=Xi(r),P=hu(r),[V,$]=c.useState(null),W=c.useRef(null),G=Ie(n,W,w.onContentChange),C=c.useRef(0),A=c.useRef(""),j=c.useRef(0),R=c.useRef(null),z=c.useRef("right"),_=c.useRef(0),K=f?Ys:c.Fragment,ne=f?{as:ku,allowPinchZoom:!0}:void 0,F=D=>{var L,ee;const N=A.current+D,T=P().filter(ie=>!ie.disabled),I=document.activeElement,M=(L=T.find(ie=>ie.ref.current===I))==null?void 0:L.textValue,E=T.map(ie=>ie.textValue),Z=Pu(E,N,M),Y=(ee=T.find(ie=>ie.textValue===Z))==null?void 0:ee.ref.current;(function ie(J){A.current=J,window.clearTimeout(C.current),J!==""&&(C.current=window.setTimeout(()=>ie(""),1e3))})(N),Y&&setTimeout(()=>Y.focus())};c.useEffect(()=>()=>window.clearTimeout(C.current),[]),$s();const B=c.useCallback(D=>{var T,I;return z.current===((T=R.current)==null?void 0:T.side)&&Ru(D,(I=R.current)==null?void 0:I.area)},[]);return t.jsx(bu,{scope:r,searchRef:A,onItemEnter:c.useCallback(D=>{B(D)&&D.preventDefault()},[B]),onItemLeave:c.useCallback(D=>{var N;B(D)||((N=W.current)==null||N.focus(),$(null))},[B]),onTriggerLeave:c.useCallback(D=>{B(D)&&D.preventDefault()},[B]),pointerGraceTimerRef:j,onPointerGraceIntentChange:c.useCallback(D=>{R.current=D},[]),children:t.jsx(K,{...ne,children:t.jsx(Vs,{asChild:!0,trapped:a,onMountAutoFocus:ae(i,D=>{var N;D.preventDefault(),(N=W.current)==null||N.focus({preventScroll:!0})}),onUnmountAutoFocus:l,children:t.jsx(Us,{asChild:!0,disableOutsidePointerEvents:o,onEscapeKeyDown:u,onPointerDownOutside:h,onFocusOutside:g,onInteractOutside:p,onDismiss:v,children:t.jsx(id,{asChild:!0,...y,dir:x.dir,orientation:"vertical",loop:s,currentTabStopId:V,onCurrentTabStopIdChange:$,onEntryFocus:ae(d,D=>{x.isUsingKeyboardRef.current||D.preventDefault()}),preventScrollOnEntryFocus:!0,children:t.jsx(qs,{role:"menu","aria-orientation":"vertical","data-state":yo(w.open),"data-radix-menu-content":"",dir:x.dir,...b,...m,ref:G,style:{outline:"none",...m.style},onKeyDown:ae(m.onKeyDown,D=>{const T=D.target.closest("[data-radix-menu-content]")===D.currentTarget,I=D.ctrlKey||D.altKey||D.metaKey,M=D.key.length===1;T&&(D.key==="Tab"&&D.preventDefault(),!I&&M&&F(D.key));const E=W.current;if(D.target!==E||!cu.includes(D.key))return;D.preventDefault();const Y=P().filter(L=>!L.disabled).map(L=>L.ref.current);Ji.includes(D.key)&&Y.reverse(),zu(Y)}),onBlur:ae(e.onBlur,D=>{D.currentTarget.contains(D.target)||(window.clearTimeout(C.current),A.current="")}),onPointerMove:ae(e.onPointerMove,$n(D=>{const N=D.target,T=_.current!==D.clientX;if(D.currentTarget.contains(N)&&T){const I=D.clientX>_.current?"right":"left";z.current=I,_.current=D.clientX}}))})})})})})})});ro.displayName=Ye;var wu="MenuGroup",ca=c.forwardRef((e,n)=>{const{__scopeMenu:r,...s}=e;return t.jsx(je.div,{role:"group",...s,ref:n})});ca.displayName=wu;var ju="MenuLabel",so=c.forwardRef((e,n)=>{const{__scopeMenu:r,...s}=e;return t.jsx(je.div,{...s,ref:n})});so.displayName=ju;var Dr="MenuItem",Za="menu.itemSelect",Ur=c.forwardRef((e,n)=>{const{disabled:r=!1,onSelect:s,...a}=e,i=c.useRef(null),l=nr(Dr,e.__scopeMenu),o=oa(Dr,e.__scopeMenu),d=Ie(n,i),u=c.useRef(!1),h=()=>{const g=i.current;if(!r&&g){const p=new CustomEvent(Za,{bubbles:!0,cancelable:!0});g.addEventListener(Za,v=>s==null?void 0:s(v),{once:!0}),Lc(g,p),p.defaultPrevented?u.current=!1:l.onClose()}};return t.jsx(ao,{...a,ref:d,disabled:r,onClick:ae(e.onClick,h),onPointerDown:g=>{var p;(p=e.onPointerDown)==null||p.call(e,g),u.current=!0},onPointerUp:ae(e.onPointerUp,g=>{var p;u.current||(p=g.currentTarget)==null||p.click()}),onKeyDown:ae(e.onKeyDown,g=>{const p=o.searchRef.current!=="";r||p&&g.key===" "||zs.includes(g.key)&&(g.currentTarget.click(),g.preventDefault())})})});Ur.displayName=Dr;var ao=c.forwardRef((e,n)=>{const{__scopeMenu:r,disabled:s=!1,textValue:a,...i}=e,l=oa(Dr,r),o=Xi(r),d=c.useRef(null),u=Ie(n,d),[h,g]=c.useState(!1),[p,v]=c.useState("");return c.useEffect(()=>{const f=d.current;f&&v((f.textContent??"").trim())},[i.children]),t.jsx(Kn.ItemSlot,{scope:r,disabled:s,textValue:a??p,children:t.jsx(od,{asChild:!0,...o,focusable:!s,children:t.jsx(je.div,{role:"menuitem","data-highlighted":h?"":void 0,"aria-disabled":s||void 0,"data-disabled":s?"":void 0,...i,ref:u,onPointerMove:ae(e.onPointerMove,$n(f=>{s?l.onItemLeave(f):(l.onItemEnter(f),f.defaultPrevented||f.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:ae(e.onPointerLeave,$n(f=>l.onItemLeave(f))),onFocus:ae(e.onFocus,()=>g(!0)),onBlur:ae(e.onBlur,()=>g(!1))})})})}),Nu="MenuCheckboxItem",io=c.forwardRef((e,n)=>{const{checked:r=!1,onCheckedChange:s,...a}=e;return t.jsx(ho,{scope:e.__scopeMenu,checked:r,children:t.jsx(Ur,{role:"menuitemcheckbox","aria-checked":_r(r)?"mixed":r,...a,ref:n,"data-state":ua(r),onSelect:ae(a.onSelect,()=>s==null?void 0:s(_r(r)?!0:!r),{checkForDefaultPrevented:!1})})})});io.displayName=Nu;var oo="MenuRadioGroup",[Su,Du]=Yt(oo,{value:void 0,onValueChange:()=>{}}),lo=c.forwardRef((e,n)=>{const{value:r,onValueChange:s,...a}=e,i=Gs(s);return t.jsx(Su,{scope:e.__scopeMenu,value:r,onValueChange:i,children:t.jsx(ca,{...a,ref:n})})});lo.displayName=oo;var co="MenuRadioItem",uo=c.forwardRef((e,n)=>{const{value:r,...s}=e,a=Du(co,e.__scopeMenu),i=r===a.value;return t.jsx(ho,{scope:e.__scopeMenu,checked:i,children:t.jsx(Ur,{role:"menuitemradio","aria-checked":i,...s,ref:n,"data-state":ua(i),onSelect:ae(s.onSelect,()=>{var l;return(l=a.onValueChange)==null?void 0:l.call(a,r)},{checkForDefaultPrevented:!1})})})});uo.displayName=co;var da="MenuItemIndicator",[ho,_u]=Yt(da,{checked:!1}),mo=c.forwardRef((e,n)=>{const{__scopeMenu:r,forceMount:s,...a}=e,i=_u(da,r);return t.jsx(bn,{present:s||_r(i.checked)||i.checked===!0,children:t.jsx(je.span,{...a,ref:n,"data-state":ua(i.checked)})})});mo.displayName=da;var Mu="MenuSeparator",fo=c.forwardRef((e,n)=>{const{__scopeMenu:r,...s}=e;return t.jsx(je.div,{role:"separator","aria-orientation":"horizontal",...s,ref:n})});fo.displayName=Mu;var Cu="MenuArrow",go=c.forwardRef((e,n)=>{const{__scopeMenu:r,...s}=e,a=Vr(r);return t.jsx(Zs,{...a,...s,ref:n})});go.displayName=Cu;var Au="MenuSub",[my,po]=Yt(Au),zn="MenuSubTrigger",xo=c.forwardRef((e,n)=>{const r=Jt(zn,e.__scopeMenu),s=nr(zn,e.__scopeMenu),a=po(zn,e.__scopeMenu),i=oa(zn,e.__scopeMenu),l=c.useRef(null),{pointerGraceTimerRef:o,onPointerGraceIntentChange:d}=i,u={__scopeMenu:e.__scopeMenu},h=c.useCallback(()=>{l.current&&window.clearTimeout(l.current),l.current=null},[]);return c.useEffect(()=>h,[h]),c.useEffect(()=>{const g=o.current;return()=>{window.clearTimeout(g),d(null)}},[o,d]),t.jsx(aa,{asChild:!0,...u,children:t.jsx(ao,{id:a.triggerId,"aria-haspopup":"menu","aria-expanded":r.open,"aria-controls":a.contentId,"data-state":yo(r.open),...e,ref:Fi(n,a.onTriggerChange),onClick:g=>{var p;(p=e.onClick)==null||p.call(e,g),!(e.disabled||g.defaultPrevented)&&(g.currentTarget.focus(),r.open||r.onOpenChange(!0))},onPointerMove:ae(e.onPointerMove,$n(g=>{i.onItemEnter(g),!g.defaultPrevented&&!e.disabled&&!r.open&&!l.current&&(i.onPointerGraceIntentChange(null),l.current=window.setTimeout(()=>{r.onOpenChange(!0),h()},100))})),onPointerLeave:ae(e.onPointerLeave,$n(g=>{var v,f;h();const p=(v=r.content)==null?void 0:v.getBoundingClientRect();if(p){const m=(f=r.content)==null?void 0:f.dataset.side,w=m==="right",x=w?-5:5,b=p[w?"left":"right"],y=p[w?"right":"left"];i.onPointerGraceIntentChange({area:[{x:g.clientX+x,y:g.clientY},{x:b,y:p.top},{x:y,y:p.top},{x:y,y:p.bottom},{x:b,y:p.bottom}],side:m}),window.clearTimeout(o.current),o.current=window.setTimeout(()=>i.onPointerGraceIntentChange(null),300)}else{if(i.onTriggerLeave(g),g.defaultPrevented)return;i.onPointerGraceIntentChange(null)}})),onKeyDown:ae(e.onKeyDown,g=>{var v;const p=i.searchRef.current!=="";e.disabled||p&&g.key===" "||du[s.dir].includes(g.key)&&(r.onOpenChange(!0),(v=r.content)==null||v.focus(),g.preventDefault())})})})});xo.displayName=zn;var bo="MenuSubContent",vo=c.forwardRef((e,n)=>{const r=to(Ye,e.__scopeMenu),{forceMount:s=r.forceMount,...a}=e,i=Jt(Ye,e.__scopeMenu),l=nr(Ye,e.__scopeMenu),o=po(bo,e.__scopeMenu),d=c.useRef(null),u=Ie(n,d);return t.jsx(Kn.Provider,{scope:e.__scopeMenu,children:t.jsx(bn,{present:s||i.open,children:t.jsx(Kn.Slot,{scope:e.__scopeMenu,children:t.jsx(la,{id:o.contentId,"aria-labelledby":o.triggerId,...a,ref:u,align:"start",side:l.dir==="rtl"?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:h=>{var g;l.isUsingKeyboardRef.current&&((g=d.current)==null||g.focus()),h.preventDefault()},onCloseAutoFocus:h=>h.preventDefault(),onFocusOutside:ae(e.onFocusOutside,h=>{h.target!==o.trigger&&i.onOpenChange(!1)}),onEscapeKeyDown:ae(e.onEscapeKeyDown,h=>{l.onClose(),h.preventDefault()}),onKeyDown:ae(e.onKeyDown,h=>{var v;const g=h.currentTarget.contains(h.target),p=uu[l.dir].includes(h.key);g&&p&&(i.onOpenChange(!1),(v=o.trigger)==null||v.focus(),h.preventDefault())})})})})})});vo.displayName=bo;function yo(e){return e?"open":"closed"}function _r(e){return e==="indeterminate"}function ua(e){return _r(e)?"indeterminate":e?"checked":"unchecked"}function zu(e){const n=document.activeElement;for(const r of e)if(r===n||(r.focus(),document.activeElement!==n))return}function Tu(e,n){return e.map((r,s)=>e[(n+s)%e.length])}function Pu(e,n,r){const a=n.length>1&&Array.from(n).every(u=>u===n[0])?n[0]:n,i=r?e.indexOf(r):-1;let l=Tu(e,Math.max(i,0));a.length===1&&(l=l.filter(u=>u!==r));const d=l.find(u=>u.toLowerCase().startsWith(a.toLowerCase()));return d!==r?d:void 0}function Eu(e,n){const{x:r,y:s}=e;let a=!1;for(let i=0,l=n.length-1;i<n.length;l=i++){const o=n[i],d=n[l],u=o.x,h=o.y,g=d.x,p=d.y;h>s!=p>s&&r<(g-u)*(s-h)/(p-h)+u&&(a=!a)}return a}function Ru(e,n){if(!n)return!1;const r={x:e.clientX,y:e.clientY};return Eu(r,n)}function $n(e){return n=>n.pointerType==="mouse"?e(n):void 0}var Iu=eo,Ou=aa,Fu=no,Bu=ro,Wu=ca,Lu=so,Hu=Ur,Ku=io,$u=lo,Vu=uo,Uu=mo,qu=fo,Gu=go,Zu=xo,Yu=vo,qr="DropdownMenu",[Ju,fy]=Yn(qr,[Qi]),Le=Qi(),[Qu,ko]=Ju(qr),wo=e=>{const{__scopeDropdownMenu:n,children:r,dir:s,open:a,defaultOpen:i,onOpenChange:l,modal:o=!0}=e,d=Le(n),u=c.useRef(null),[h,g]=jr({prop:a,defaultProp:i??!1,onChange:l,caller:qr});return t.jsx(Qu,{scope:n,triggerId:ln(),triggerRef:u,contentId:ln(),open:h,onOpenChange:g,onOpenToggle:c.useCallback(()=>g(p=>!p),[g]),modal:o,children:t.jsx(Iu,{...d,open:h,onOpenChange:g,dir:s,modal:o,children:r})})};wo.displayName=qr;var jo="DropdownMenuTrigger",No=c.forwardRef((e,n)=>{const{__scopeDropdownMenu:r,disabled:s=!1,...a}=e,i=ko(jo,r),l=Le(r);return t.jsx(Ou,{asChild:!0,...l,children:t.jsx(je.button,{type:"button",id:i.triggerId,"aria-haspopup":"menu","aria-expanded":i.open,"aria-controls":i.open?i.contentId:void 0,"data-state":i.open?"open":"closed","data-disabled":s?"":void 0,disabled:s,...a,ref:Fi(n,i.triggerRef),onPointerDown:ae(e.onPointerDown,o=>{!s&&o.button===0&&o.ctrlKey===!1&&(i.onOpenToggle(),i.open||o.preventDefault())}),onKeyDown:ae(e.onKeyDown,o=>{s||(["Enter"," "].includes(o.key)&&i.onOpenToggle(),o.key==="ArrowDown"&&i.onOpenChange(!0),["Enter"," ","ArrowDown"].includes(o.key)&&o.preventDefault())})})})});No.displayName=jo;var Xu="DropdownMenuPortal",So=e=>{const{__scopeDropdownMenu:n,...r}=e,s=Le(n);return t.jsx(Fu,{...s,...r})};So.displayName=Xu;var Do="DropdownMenuContent",_o=c.forwardRef((e,n)=>{const{__scopeDropdownMenu:r,...s}=e,a=ko(Do,r),i=Le(r),l=c.useRef(!1);return t.jsx(Bu,{id:a.contentId,"aria-labelledby":a.triggerId,...i,...s,ref:n,onCloseAutoFocus:ae(e.onCloseAutoFocus,o=>{var d;l.current||(d=a.triggerRef.current)==null||d.focus(),l.current=!1,o.preventDefault()}),onInteractOutside:ae(e.onInteractOutside,o=>{const d=o.detail.originalEvent,u=d.button===0&&d.ctrlKey===!0,h=d.button===2||u;(!a.modal||h)&&(l.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});_o.displayName=Do;var eh="DropdownMenuGroup",th=c.forwardRef((e,n)=>{const{__scopeDropdownMenu:r,...s}=e,a=Le(r);return t.jsx(Wu,{...a,...s,ref:n})});th.displayName=eh;var nh="DropdownMenuLabel",Mo=c.forwardRef((e,n)=>{const{__scopeDropdownMenu:r,...s}=e,a=Le(r);return t.jsx(Lu,{...a,...s,ref:n})});Mo.displayName=nh;var rh="DropdownMenuItem",Co=c.forwardRef((e,n)=>{const{__scopeDropdownMenu:r,...s}=e,a=Le(r);return t.jsx(Hu,{...a,...s,ref:n})});Co.displayName=rh;var sh="DropdownMenuCheckboxItem",Ao=c.forwardRef((e,n)=>{const{__scopeDropdownMenu:r,...s}=e,a=Le(r);return t.jsx(Ku,{...a,...s,ref:n})});Ao.displayName=sh;var ah="DropdownMenuRadioGroup",ih=c.forwardRef((e,n)=>{const{__scopeDropdownMenu:r,...s}=e,a=Le(r);return t.jsx($u,{...a,...s,ref:n})});ih.displayName=ah;var oh="DropdownMenuRadioItem",zo=c.forwardRef((e,n)=>{const{__scopeDropdownMenu:r,...s}=e,a=Le(r);return t.jsx(Vu,{...a,...s,ref:n})});zo.displayName=oh;var lh="DropdownMenuItemIndicator",To=c.forwardRef((e,n)=>{const{__scopeDropdownMenu:r,...s}=e,a=Le(r);return t.jsx(Uu,{...a,...s,ref:n})});To.displayName=lh;var ch="DropdownMenuSeparator",Po=c.forwardRef((e,n)=>{const{__scopeDropdownMenu:r,...s}=e,a=Le(r);return t.jsx(qu,{...a,...s,ref:n})});Po.displayName=ch;var dh="DropdownMenuArrow",uh=c.forwardRef((e,n)=>{const{__scopeDropdownMenu:r,...s}=e,a=Le(r);return t.jsx(Gu,{...a,...s,ref:n})});uh.displayName=dh;var hh="DropdownMenuSubTrigger",Eo=c.forwardRef((e,n)=>{const{__scopeDropdownMenu:r,...s}=e,a=Le(r);return t.jsx(Zu,{...a,...s,ref:n})});Eo.displayName=hh;
327var mh="DropdownMenuSubContent",Ro=c.forwardRef((e,n)=>{const{__scopeDropdownMenu:r,...s}=e,a=Le(r);return t.jsx(Yu,{...a,...s,ref:n,style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});Ro.displayName=mh;var fh=wo,gh=No,ph=So,Io=_o,Oo=Mo,Fo=Co,Bo=Ao,Wo=zo,Lo=To,Ho=Po,Ko=Eo,$o=Ro;const ha=fh,ma=gh,xh=c.forwardRef(({className:e,inset:n,children:r,...s},a)=>t.jsxs(Ko,{ref:a,className:Q("flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[state=open]:bg-accent focus:bg-accent",n&&"pl-8",e),...s,children:[r,t.jsx($r,{className:"ml-auto h-4 w-4"})]}));xh.displayName=Ko.displayName;const bh=c.forwardRef(({className:e,...n},r)=>t.jsx($o,{ref:r,className:Q("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...n}));bh.displayName=$o.displayName;const Gr=c.forwardRef(({className:e,sideOffset:n=4,...r},s)=>t.jsx(ph,{children:t.jsx(Io,{ref:s,sideOffset:n,className:Q("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...r})}));Gr.displayName=Io.displayName;const Ve=c.forwardRef(({className:e,inset:n,...r},s)=>t.jsx(Fo,{ref:s,className:Q("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground",n&&"pl-8",e),...r}));Ve.displayName=Fo.displayName;const vh=c.forwardRef(({className:e,children:n,checked:r,...s},a)=>t.jsxs(Bo,{ref:a,className:Q("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground",e),checked:r,...s,children:[t.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:t.jsx(Lo,{children:t.jsx(tt,{className:"h-4 w-4"})})}),n]}));vh.displayName=Bo.displayName;const yh=c.forwardRef(({className:e,children:n,...r},s)=>t.jsxs(Wo,{ref:s,className:Q("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground",e),...r,children:[t.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:t.jsx(Lo,{children:t.jsx(Ui,{className:"h-2 w-2 fill-current"})})}),n]}));yh.displayName=Wo.displayName;const Mr=c.forwardRef(({className:e,inset:n,...r},s)=>t.jsx(Oo,{ref:s,className:Q("px-2 py-1.5 text-sm font-semibold",n&&"pl-8",e),...r}));Mr.displayName=Oo.displayName;const Vn=c.forwardRef(({className:e,...n},r)=>t.jsx(Ho,{ref:r,className:Q("-mx-1 my-1 h-px bg-muted",e),...n}));Vn.displayName=Ho.displayName;function kh({open:e,onOpenChange:n,totalPoints:r}){return t.jsx(Ne,{open:e,onOpenChange:n,children:t.jsxs(De,{className:"max-w-md max-h-[85vh] overflow-y-auto",children:[t.jsx(Ce,{children:t.jsx(Ae,{className:"font-display",children:"30 Hero-Stufen"})}),t.jsx("div",{className:"space-y-1.5",children:Oa.map((s,a)=>{const i=Oa[a+1],l=r>=s.min,o=l&&(!i||r<i.min);return t.jsxs("div",{className:Q("flex items-center gap-3 p-2.5 rounded-lg border",o?"border-gold bg-gold/10":l?"border-success/30 bg-success/5":"border-border bg-card"),children:[t.jsx("div",{className:"text-2xl w-10 text-center",children:s.icon}),t.jsxs("div",{className:"flex-1",children:[t.jsxs("div",{className:"font-semibold text-sm",children:["Stufe ",s.level," â ",s.name]}),t.jsxs("div",{className:"text-xs text-muted-foreground",children:["ab ",s.min," Pkt"]})]}),l&&t.jsx(tt,{className:"h-4 w-4 text-success"}),!l&&t.jsxs("div",{className:"text-xs text-muted-foreground",children:["noch ",s.min-r]})]},s.level)})})]})})}const Cr=[{version:"9.5.0",date:"2026-09-04",title:"Aufgaben mit einem Klick an Deine KI",changes:[{type:"neu",text:"An jeder Aufgabe gibt es jetzt âFür KI kopierenâ: ein Klick, und Titel, Notiz, Rubrik, Prio, Fälligkeit, Fokus-Ziel und Unteraufgaben liegen sauber formatiert in Deiner Zwischenablage â direkt bei Claude, ChatGPT & Co. einfügen. Im Profil kannst Du einen festen Vorspann hinterlegen, der jeder Kopie vorangestellt wird."}]},{version:"9.4.2",date:"2026-09-04",title:"Einstellungen gelten auf allen Geräten",changes:[{type:"behoben",text:"Deine Einstellungen zu Hinweisen und Pop-ups gelten jetzt auf allen Deinen Geräten, nicht nur in dem Browser, in dem Du sie gesetzt hast."}]},{version:"9.4.1",date:"2026-09-04",title:"Korrekte Angaben zum Anbieter",changes:[{type:"behoben",text:"Die Angaben zum Anbieter sind jetzt überall korrekt â Liebe Zeitarbeit ist ein Einzelunternehmen von Daniel Müller (keine GmbH)."},{type:"verbessert",text:"Alle Links und Hinweise zeigen jetzt einheitlich auf fokus.liebezeitarbeit.com."}]},{version:"9.4.0",date:"2026-09-04",title:"Weniger Pop-ups, klarere Zuordnung",changes:[{type:"verbessert",text:"Schluss mit der Pop-up-Flut: Beim Ãffnen der App erscheint jetzt höchstens EIN automatisches Fenster. Alles andere wartet auf einen späteren Moment oder erscheint als dezenter Hinweis, den Du wegwischen kannst."},{type:"neu",text:"Neu im Profil: âHinweise & Pop-upsâ. Dort stellst Du für jeden Typ ein, wie oft er kommen darf â Tages-Start jeden Tag, nur werktags, einmal pro Woche oder aus; Wochen-Check und Freitags-Realitätscheck an/aus; Monats-Check an/aus; Backup-Erinnerung monatlich, vierteljährlich oder aus; Hinweise zu Handy, Bestenliste und Einladen an/aus."},{type:"neu",text:"Neuer Schalter âRuhemodusâ: Damit ist komplett Ruhe â bis auf rechtlich oder technisch Notwendiges wie den Cookie-Hinweis oder eine neue Version."},{type:"verbessert",text:"Jedes automatische Fenster hat jetzt âSpäterâ und âNicht mehr zeigenâ â Du entscheidest, was Dich noch erreicht. Deine Erfolgs- und Feier-Meldungen beim Abhaken bleiben unangetastet."},{type:"verbessert",text:"Der Zuordnungs-Schritt bei den Fokus-Zielen ist endlich verständlich: Oben steht in klaren Worten, was passiert. Pro Ziel siehst Du die Treffer mit Begründung â z. B. âpasst wegen Rubrik VERTRIEBâ â und kannst mit einem Klick âAlle auswählenâ."},{type:"verbessert",text:"Statt eines unübersichtlichen Dropdowns gibt es jetzt den einklappbaren Bereich âOhne Vorschlag (N Aufgaben)â mit Suchfeld â und der Button âZuordnen (N)â zählt live mit, wie viel Du gerade zuordnest."},{type:"behoben",text:"Die Backup-Erinnerung lässt sich jetzt dauerhaft abschalten, statt immer wiederzukommen."},{type:"behoben",text:"Login-, Passwort- und Einladungs-Seiten landen nicht mehr in Suchmaschinen;
327 Vorschaubild und Adresse beim Teilen zeigen einheitlich auf fokus.liebezeitarbeit.com."},{type:"behoben",text:"Einzahl/Mehrzahl saà an mehreren Stellen falsch â z. B. â1 Tag Streak.â statt â1 Tage Streak.â und â1 Aufgabe verknüpftâ statt â1 Aufgaben verknüpftâ."},{type:"behoben",text:"Lange Aufgabentexte im Zuordnungs-Fenster brechen jetzt sauber um statt aus der Karte zu laufen."},{type:"behoben",text:"Die beiden Häkchen auf der Anmeldeseite (âEingeloggt bleibenâ, Newsletter) hatten für Screenreader keinen Namen â jetzt sind sie korrekt beschriftet."},{type:"verbessert",text:"Jede öffentliche Seite hat jetzt ihren eigenen Seitentitel im Browser-Tab (Handbuch, Ãber die App, Impressum, Datenschutz, Disclaimer, API) statt überall den gleichen."},{type:"verbessert",text:"Ãffentliche Seiten auf 375 px und im Dunkelmodus durchgeprüft: kein horizontales Verrutschen mehr, Tippflächen bleiben mindestens 44 px hoch."},{type:"verbessert",text:"Die Suchmaschinen-Angaben sind vereinheitlicht: Vorschaubild, Adresse und die Angaben zur App (Name, Kategorie, kostenlos, Anbieter) zeigen alle auf fokus.liebezeitarbeit.com."}]},{version:"9.3.0",date:"2026-08-04",title:"Aufgeräumter Hilfe-Bereich",changes:[{type:"verbessert",text:"Der Hilfe-Bereich ist jetzt übersichtlich statt endlos: Ganz oben siehst Du alle Themen als Kacheln und klappst nur auf, was Du gerade brauchst."},{type:"neu",text:"Neues Suchfeld im Hilfe-Bereich: âWonach suchst Du?â â tippe ein Stichwort und Du landest direkt beim passenden Thema."},{type:"verbessert",text:"Die Neuerungen stehen nicht mehr alle untereinander. Du siehst die aktuelle Version, und die komplette Historie öffnest Du bei Bedarf â nach Monaten sortiert und einklappbar."},{type:"verbessert",text:"Alle bisherigen Inhalte sind weiterhin da â nur besser sortiert, mit ruhigeren Abständen und auf dem Handy gut tippbar."}]},{version:"9.2.0",date:"2026-08-03",title:"Wiedervorlage, Routinen & Nachfassen",changes:[{type:"neu",text:"Aufgaben, die Du auf ein späteres Datum legst, verschwinden jetzt aus Deiner Liste und tauchen genau an dem Tag von selbst wieder auf. Nichts geht verloren â alles Zurückgestellte findest Du im neuen Bereich âWiedervorlageâ."},{type:"neu",text:"Das Wecker-Symbol ist jetzt eine echte Wiedervorlage: Morgen, in 3 Tagen, nächste Woche, in 2 Wochen oder eigenes Datum."},{type:"verbessert",text:"Wiederkehrende Aufgaben sind endlich als Routine erkennbar (Rhythmus-Badge) und stapeln sich nicht mehr: Es gibt immer nur eine offene Runde. Du kannst eine Runde überspringen, die Serie pausieren oder beenden."},{type:"neu",text:"Beim Abhaken kannst Du direkt ein Nachfassen anlegen â z. B. in 2 Wochen, mit eigener Notiz. Die Aufgabe kommt dann von allein zurück."},{type:"neu",text:"Neu im Profil: âDoppelte Aufgaben zusammenfassenâ räumt aufgestaute Mehrfach-Einträge auf â nur nach Deiner Bestätigung, nichts wird gelöscht."},{type:"behoben",text:"Kleinere Korrekturen an der Darstellung der Aufgaben-Karten."}]},{version:"9.1.2",date:"2026-07-08",title:"Klick-Fix am Listenende",changes:[{type:"behoben",text:"Die unterste Aufgabe in der Liste war teilweise nicht anklickbar, weil eine unsichtbare Leiste darüber lag."}]},{version:"9.1.1",date:"2026-07-03",title:"Schrift-Fix zum Redesign",changes:[{type:"behoben",text:"Die neue Schrift aus dem Redesign greift jetzt überall zuverlässig."}]},{version:"9.1.0",date:"2026-07-03",title:"Das groÃe Redesign",changes:[{type:"neu",text:"Neue markante Display-Schrift (Space Grotesk) für Ãberschriften, Level-Namen und alle Punktzahlen â modern, aufgeräumt, klar lesbar. Die Schrift wird DSGVO-konform selbst gehostet (kein Google-Fonts-Request)."},{type:"verbessert",text:"Der Cockpit-Header ist jetzt eine schwebende, abgesetzte Karte mit feiner Gradient-Umrandung â Level, Streak und Punkte wirken dadurch prominenter."},{type:"neu",text:"Neuer ruhiger App-Hintergrund mit sehr dezenten Brand-Farbverläufen â funktioniert im Hell- und Dunkelmodus."},{type:"verbessert",text:"Am Desktop schwebt die Navigation jetzt als abgerundete Glass-Pill-Leiste; der aktive Tab ist als gefüllte Gradient-Pill klar erkennbar."},{type:"verbessert",text:"Jede Aufgabe bekommt links eine farbige Prioritäts-Leiste (A rot / B orange / C blau), die Prio-Chips sind kräftiger und die Checkboxen bekommen im aktiven Zustand eine Gradient-Füllung."},{type:"verbessert",text:"Level-Fortschrittsbalken jetzt dicker mit sanftem Gold-Glow; Zahlen tabellarisch ausgerichtet für ruhigere Optik."},{type:"verbessert",text:"Sektionstitel bekommen einen kleinen Gradient-Akzentbalken â mehr visuelle Ordnung."},{type:"verbessert",text:"Bedienung bleibt exakt gleich: alle Tabs, Menüs und Funktionen sind da, wo Du sie kennst."}]},{version:"9.0.0",date:"2026-07-03",title:"Frischer Look & Dark Mode",changes:[{type:"neu",text:"Dunkelmodus: Wähle im Profil unter âDarstellungâ zwischen Hell, Dunkel oder System â die App merkt sich Deine Wahl."}
327,{type:"verbessert",text:"Moderneres Design: weichere Karten mit gröÃerem Radius, feinere Schatten, dezente Brand-Gradient-Akzente."},{type:"verbessert",text:"Flüssigere Mikro-Animationen beim Abhaken und Navigieren, mit Tap-Feedback am Handy und sanftem Hover-Lift am Desktop."},{type:"verbessert",text:"Bessere Lesbarkeit, klarere Hierarchie und gröÃere Tippflächen am Handy (mind. 44 px)."},{type:"verbessert",text:"Navigation mit dezentem Glass-Effekt und Fortschrittsbalken mit Gradient."},{type:"verbessert",text:"Respektiert die System-Einstellung âBewegung reduzierenâ â Animationen werden dann automatisch abgeschaltet."}]},{version:"8.7.0",date:"2026-07-01",title:"Fokus-Ziele bleiben über den Quartalswechsel sichtbar & DSGVO-Tracking",changes:[{type:"behoben",text:"Wichtiger Fix: Deine Fokus-Ziele bleiben jetzt auch über den Quartalswechsel hinweg sichtbar. Zuvor konnten aktive Ziele zum Quartalsanfang scheinbar verschwinden â die Daten waren immer sicher, jetzt werden sie durchgehend korrekt angezeigt."},{type:"neu",text:"Cookie-Banner mit Kategorien: Notwendig (immer an), Analyse, Marketing."},{type:"neu",text:"Google Analytics 4, Google Ads und Meta-Pixel werden nur nach Deiner Einwilligung geladen."},{type:"neu",text:"âCookie-Einstellungenâ im Footer â Auswahl jederzeit anpassen oder widerrufen."},{type:"verbessert",text:"Datenschutzerklärung um Abschnitte zu GA4, Google Ads und Meta-Pixel ergänzt."}]},{version:"8.6.0",date:"2026-07-01",title:"Aufräum- & Performance-Runde",changes:[{type:"verbessert",text:"Schneller & schlanker: interne Aufräumrunde und Performance-Optimierungen (weniger Ballast, schnellere Ladezeiten). Keine sichtbaren Ãnderungen an Funktionen â alles bleibt, wie Du es kennst."}]},{version:"8.5.0",date:"2026-07-01",title:"Einrichtungs-Assistent für neue Nutzer",changes:[{type:"neu",text:"Einrichtungs-Assistent beim ersten Login â führt Dich durch alle wichtigen Grundeinstellungen: Name, Web-Push (kostenlos), E-Mail-Morgenerinnerung, Telegram verbinden (kostenlos), Handynummer, Rubriken & Rollen, Streak-Modus, erste Aufgabe und Belohnungen."},{type:"neu",text:"Jeder Schritt ist überspringbar; âAlles überspringenâ oder âSpäterâ ist jederzeit möglich."},{type:"neu",text:"Neuer Button im Profil: âEinrichtung erneut startenâ â Du kannst übersprungene Schritte jederzeit nachholen."},{type:"verbessert",text:"Bestehende Nutzer werden nicht gestört â der Assistent öffnet sich nur bei wirklich neuen Konten."}]},{version:"8.4.0",date:"2026-07-01",title:"SEO/KI-Sichtbarkeit & Ladezeiten",changes:[{type:"verbessert",text:"Bessere Auffindbarkeit für Suchmaschinen und KI: Der Startinhalt (Kurzbeschreibung, Kernfunktionen, FAQ) ist jetzt auch ohne JavaScript lesbar â Crawler und KI-Systeme sehen zitierbaren Text."},{type:"verbessert",text:"FAQPage-Strukturdaten (JSON-LD) und eine llms.txt für KI-Systeme ergänzt; sitemap.xml um âlastmodâ und Handbuch-Seite erweitert."},{type:"verbessert",text:"Schnellerer erster Aufruf (besonders auf dem Handy): Unterseiten wie Cockpit, Auth und Handbuch werden erst bei Bedarf geladen â das initiale JavaScript-Bundle ist deutlich kleiner."},{type:"verbessert",text:"Beim Routenwechsel gibt es jetzt einen dezenten Lade-Platzhalter statt einer leeren Fläche."}]},{version:"8.3.0",date:"2026-07-01",title:"Aufgabentext editierbar · Wiederholungen klarer",changes:[{type:"behoben",text:"Aufgaben-Titel im Detail-Dialog editierbar â Klick auf den Titel (oder Stift-Symbol), Enter zum Speichern. Funktioniert auch aus der Suche heraus."},{type:"neu",text:"Wiederkehrende Aufgaben sind in allen Listen und in der Suche jetzt deutlich mit ð und kurzem Intervall (âtäglichâ, âwöchentlichââ¦) gekennzeichnet."},{type:"neu",text:"Neuer Abschnitt âð Wiederholungâ im Aufgaben-Detail: Intervall bearbeiten, in einmalige Aufgabe umwandeln oder Aufgabe löschen â direkt an einem Ort."},{type:"verbessert",text:"Aus einer Routine erzeugte Einzel-Aufgaben werden ebenfalls als âaus Wiederholungâ gekennzeichnet und lassen sich einzeln bearbeiten/löschen."}]},{version:"8.2.0",date:"2026-06-22",title:"Telegram kostenlos · SMS ehrlich gekennzeichnet",changes:[{type:"neu",text:"Kostenlose Telegram-Ben
327achrichtigungen â verbinde Dein Telegram über Profil â Benachrichtigungen und bekomme Erinnerungen gratis aufs Handy (auch ohne Push-Setup)."},{type:"verbessert",text:"Web-Push und E-Mail-Erinnerung sind jetzt sichtbar als âkostenlosâ gekennzeichnet."},{type:"verbessert",text:"SMS ist ehrlich als âkostenpflichtige Selbsteinrichtungâ ausgewiesen â kein bezahlter Service von Liebe Zeitarbeit, sondern Hinweis auf eigene Anbindung an EU-Anbieter (z. B. seven.io, sipgate)."}]},{version:"8.1.0",date:"2026-06-22",title:"Morgen-E-Mail, Snooze & Rubrik-Fix",changes:[{type:"neu",text:"Tägliche Morgen-Erinnerung per E-Mail mit Deinen Top-3-Aufgaben â in den Benachrichtigungs-Einstellungen aktivierbar (Opt-in)."},{type:"neu",text:"Benachrichtigungen pausieren: 1, 2 oder 3 Monate komplett still â statt ganz abschalten. Pause jederzeit aufhebbar."},{type:"behoben",text:"Eigene Kategorie/Rubrik anlegen: Der Anlege-Dialog öffnet sich jetzt zuverlässig direkt neben der Kategorie-Auswahl."}]},{version:"8.0.0",date:"2026-06-22",title:"
327ð Launch â raus aus der Beta",changes:[{type:"neu",text:"Das Fokus Cockpit ist offiziell aus der Beta-Phase. Danke an alle, die in der Beta dabei waren!"},{type:"neu",text:"Freunde einladen: Im Profil kannst Du das Cockpit mit einem Klick teilen (per Teilen-Menü oder kopiertem Link)."},{type:"verbessert",text:"âBetaâ-Kennzeichnungen entfernt â das Cockpit ist jetzt ein fertiges Produkt."}]},{version:"7.12.0",date:"2026-06-17",title:"EU/DSGVO-Hinweis bei KI",changes:[{type:"verbessert",text:"Die KI-Funktion (z. B. âMit KI in Schritte aufteilenâ) ist jetzt sichtbar als EU/DSGVO-konform gekennzeichnet â sie läuft über Mistral AI mit EU-Hosting."},{type:"verbessert",text:"Im Profil â Datenschutz & Daten klargestellt: Keine Daten an US-Anbieter; Mistral AI mit EU-Hosting."}]},{version:"7.11.0",date:"2026-06-17",title:"Suche: Mehrfach-Abhaken & Gruppierung",changes:[{type:"neu",text:"In der Suche kannst Du Aufgaben jetzt direkt abhaken â auch mehrere nacheinander, ohne die Suche zu verlassen."},{type:"verbessert",text:"Gleichlautende, wiederkehrende Aufgaben werden in den Suchergebnissen gruppiert: wichtigste/dringendste zuerst, Wiederholungen eingerückt darunter."},{type:"behoben",text:"Meldungen (Erfolg, Aufgabe erledigt) überlagern nicht mehr die untere Menüleiste und lassen sich direkt wegklicken (Tap oder SchlieÃen-Button)."}]},{version:"7.10.0",date:"2026-06-17",title:"Sicherheit & Backup-Erinnerung",changes:[{type:"verbessert",text:"Tiefgreifende Aktionen (Backup einspielen, App-Reset, Grundkonfiguration neu starten) sind jetzt mit einer zusätzlichen Sicherheitsabfrage und einem Backup-Tipp geschützt."},{type:"neu",text:"Freundliche monatliche Erinnerung im Cockpit, ein Backup Deines Fortschritts zu machen â schlieÃbar und meldet sich frühestens in ~30 Tagen wieder."}]},{version:"7.9.0",date:"2026-06-17",title:"Belohnungen-Bereich überarbeitet",changes:[{type:"verbessert",text:"Belohnungen sehen jetzt klar nach freigeschaltet oder gesperrt aus (mit Fortschrittsbalken), und groÃe Punktzahlen passen sauber ins Feld."},{type:"neu",text:"Beim Zurücksetzen der Belohnungen startest Du wieder bei 0 verfügbaren Belohnungs-Punkten â Deine Gesamtpunkte und Dein Level bleiben unberührt."},{type:"neu",text:"Früher freigeschaltete, noch nicht eingelöste Belohnungen findest Du jetzt im Reiter âFrüher freigeschaltetâ und kannst sie weiterhin einlösen."},{type:"verbessert",text:"Zurücksetzen (Erfolge & Belohnungen) ist zusätzlich mit einer doppelten Sicherheitsabfrage und einem Backup-Tipp geschützt."}]},{version:"7.8.0",date:"2026-06-17",title:"Feinschliff Benachrichtigungen",changes:[{type:"verbessert",text:"Erfolgs-Meldungen erscheinen jetzt nacheinander und gut lesbar (statt alle auf einmal)."},{type:"verbessert",text:"In der Glocke kannst Du jetzt nach Rubriken filtern (Erfolge, Bug-Reports & Feedback, Anmeldungen, System)."},{type:"verbessert",text:"Noch nicht verfügbare Optionen (SMS, Morgen-E-Mail) sind eindeutig als âIn Vorbereitungâ gekennzeichnet."},{type:"verbessert",text:"Beim Einschalten von Push siehst Du jetzt einen Ladezustand am Schalter."}]},{version:"7.7.0",date:"2026-06-17",title:"Push einmal neu aktivieren",changes:[{type:"behoben",text:"Push-Benachrichtigungen einmalig zurückgesetzt. Bitte unter Profil â Benachrichtigungen neu einschalten und im Browser âErlaubenâ â danach kommen Erinnerungen zuverlässig an."}]},{version:"7.6.0",date:"2026-06-17",title:"Belohnungen zurücksetzen & neue Staffelung",changes:[{type:"neu",text:"Du kannst Deine Belohnungen jetzt zurücksetzen und bekommst eine fairere, gestaffelte Standard-Auswahl (ein paar schnell, einige als langfristiges Ziel) â durchgehend geschlechtsneutral."},{type:"neu",text:"Erfolge und Belohnungen lassen sich getrennt zurücksetzen â jeweils direkt im Bereich und gesammelt im Profil. Punkte bleiben dabei immer erhalten."}]},{version:"7.5.0",date:"2026-06-17",title:"Erfolge & Belohnungen überarbeitet",changes:[{type:"neu",text:"Beim Freischalten eines Erfolgs gibt's jetzt Feedback (Hinweis + kleine Feier) und einen Eintrag im Benachrichtigungscenter."},{type:"verbessert",text:"Fairere, anspruchsvollere Staffelung der Erfolge und durchgängig geschlechtsneutrale Namen & Belohnungen."},{type:"neu",text:"Du kannst Deinen Erfolgs-Fortschritt im Profil optional zurücksetzen â Punkte und eigene Belohnungen bleiben erhalten."}]}
327,{version:"7.4.0",date:"2026-06-17",title:"Mobile-Bugfix-Runde (iPhone)",changes:[{type:"behoben",text:"Auf dem iPhone wird der Inhalt nicht mehr von der Kamera-Insel/Statusleiste überlagert (Safe-Area)."},{type:"behoben",text:"Die Unteraufgaben-/KI-Aufteilen-Ansicht lässt sich jetzt sauber schlieÃen (groÃes â oben, âFertigâ unten) und hängt sich nicht mehr auf."},{type:"neu",text:"Im Bug-Report kannst Du mehrere Bilder gleichzeitig anhängen."}]},{version:"7.3.0",date:"2026-06-16",title:"Kalender-Abo",changes:[{type:"neu",text:"Kalender-Abo. Verbinde Deine fälligen Aufgaben mit Apple Kalender, Google Kalender oder Outlook â über einen privaten Abo-Link im Profil. Read-only, aktualisiert sich automatisch."}]},{version:"7.2.0",date:"2026-06-16",title:"Ziel teilen & Ranking-Saison",changes:[{type:"neu",text:"Du kannst Deine Fokus-Ziele jetzt teilen â ein Tipp auf das Teilen-Symbol kopiert Ziel und Fortschritt (oder öffnet das Teilen-Menü), ideal um Dich in der Community zu committen."},{type:"neu",text:"Ranking-Saison: Der Admin kann das Ranking auf Knopfdruck neu starten (Punkte bleiben erhalten, gezählt wird ab dem Reset) â so haben alle wieder eine faire Ausgangslage."}]},{version:"7.1.0",date:"2026-06-16",title:"Hebel-Rechner",changes:[{type:"neu",text:"Neu im Fokus-Ziele-Bereich: der Hebel-Rechner. Trage Deine Prozesse ein (Zeit, Häufigkeit, Fehleranfälligkeit) und sieh sofort, welcher Hebel am meisten bringt (Automatisierungspriorität). Der integrierte ROI-Rechner zeigt Dir, wie viel Zeit und Geld eine Automatisierung pro Monat spart â und Du machst aus Deinem Top-Hebel mit einem Klick ein Fokus-Ziel."}]},{version:"7.0.0",date:"2026-06-16",title:"Fokus-Ziele: Relaunch für alle",changes:[{type:"neu",text:"ð Die Fokus-Ziele sind jetzt für alle da! Das bisherige Beta-Modul â Dein 90-Tage-Fokus-System nach dem bewährten OKR-Prinzip (ein klares Ziel plus messbare Schlüsselergebnisse) â ist ab sofort für jeden freigeschaltet. Kein Warten auf einen Beta-Platz mehr. Beim ersten Start führt Dich eine kurze Grundkonfiguration in 5 Minuten hinein. Riesen-Dank an unsere Beta-Tester Marcel, Markus und Stefanie und an Alexander Sadek für den OKR-Impuls!"}]},{version:"6.22.2",date:"2026-06-15",title:"Aufgeräumtere Aufgaben-Karten",changes:[{type:"verbessert",text:"Aufgaben-Karten sind aufgeräumter: Der Titel nutzt die volle Breite und wird auf zwei Zeilen gekürzt (per âMehr anzeigenâ ausklappbar). Die Aktions-Symbole sitzen jetzt in einer eigenen, abgesetzten Zeile darunter mit gröÃeren Tippflächen â kein versehentliches Antippen mehr beim Scrollen."}]},{version:"6.22.1",date:"2026-06-15",title:"Mobile: Aufgaben-Titel nutzt volle Breite",changes:[{type:"behoben",text:"Mobile Darstellung: Lange Aufgaben-Titel werden nicht mehr Wort für Wort umbrochen â der Text nutzt jetzt die volle Breite, die Aktions-Symbole rutschen auf dem Handy in eine eigene Zeile darunter."}]},{version:"6.22.0",date:"2026-06-15",title:"Performance: schneller abhaken, weniger Refetches",changes:[{type:"verbessert",text:"Schneller & flüssiger: Aufgaben abhaken reagiert jetzt sofort (Punkte/Streak werden im Hintergrund verbucht), und die App lädt beim Zurückkommen nicht mehr unnötig alles neu. AuÃerdem im Hintergrund: schlankere Berechnungen und zusätzliche Datenbank-Indizes."}]},{version:"6.21.0",date:"2026-06-15",title:"Bugfixes: Freitags-Realitätscheck & Start-Tab",changes:[{type:"behoben",text:"Freitags-Realitätscheck: Der âAbschlieÃenâ-Button reagiert jetzt sofort und lässt sich nur einmal auslösen â keine mehrfachen, überlagernden Meldungen mehr. Die +10 Punkte werden jetzt wirklich gutgeschrieben und oben sofort mitgezählt."},{type:"behoben",text:"Nach dem Anmelden startest Du jetzt immer auf âHeuteâ (nicht mehr in den erledigten Aufgaben)."}]},{version:"6.20.0",date:"2026-06-15",title:"Mehr Ãberblick: Schnellfilter, Demnächst-Liste & einklappbare Rubriken",changes:[{type:"neu",text:"Mehr Ãberblick bei vielen Aufgaben: In âHeuteâ filterst Du jetzt mit einem Tipp nach Ãberfällig, Heute, Diese Woche, A-Prio oder Wichtig (kombinierbar)."},{type:"neu",text:"Die âWocheâ-Ansicht zeigt jetzt eine echte Demnächst-Liste nach Tagen (umschaltbar 7 oder 14 Tage), mit Ãberfällig oben und einem Bereich für Aufgaben ohne Datum."},{type:"verbessert",text:"In âProjekteâ kannst Du Rubriken jetzt ein- und ausklappen â so behältst Du auch bei vielen Aufgaben den Ãberblick."}]},{version:"6.19.0",date:"2026-06-15",title:"Unteraufgaben mit Uhrzeit",changes:[{type:"verbessert",text:"Danke an Steffi! Unteraufgaben haben jetzt auch eine Uhrzeit â Du kannst pro Schritt nicht nur ein Datum, sondern auch eine konkrete Zeit (z. B. 14:30) festlegen."}]},{version:"6.18.0",date:"2026-06-15",title:"Aufgaben frei sortieren per Drag-and-drop",changes:[{type:"neu",text:"Aufgaben frei sortieren per Drag-and-drop: In âProjekteâ (Liste und Board) kannst Du Aufgaben jetzt selbst in Deine Wunschreihenfolge ziehen. (Die âHeuteâ-Ansicht behält ihre smarte Fokus-Sortierung.)"}]},{version:"6.17.0",date:"2026-06-15",title:"Unteraufgaben sichtbar â KI-Aufteilen mit einem Klick",changes:[{type:"verbessert",text:"Unteraufgaben sind jetzt viel leichter zu finden: eigenes Checklisten-Symbol an jeder Aufgabe, ein â+ Sc
327hritteâ-Hinweis und die Checkliste steht im Aufgaben-Detail jetzt ganz oben."},{type:"neu",text:"Aufgabe mit einem Klick in Schritte aufteilen â auch per KI: â⨠Mit KI in Schritte aufteilenâ ist jetzt direkt sichtbar (standardmäÃig aktiv, im Profil abschaltbar)."}]},{version:"6.16.0",date:"2026-06-15",title:"Unteraufgaben mit Datum, Rubrik & Prio â Fälligkeit direkt an der Aufgabe",changes:[{type:"neu",text:"Danke an Stefanie für die Idee! Unteraufgaben können jetzt richtig viel: Jede Unteraufgabe bekommt auf Wunsch ein eigenes Fälligkeitsdatum, eine eigene Rubrik und eine Priorität â Du musst Teilschritte (z. B. âRückmeldung bis 26.â, âam 29. anrufenâ) nicht mehr als separate Aufgaben anlegen, sondern hängst sie direkt unter die Hauptaufgabe."},{type:"verbessert",text:"Das Fälligkeitsdatum steht jetzt direkt an der Aufgabe (mit Wochentag, z. B. âMo, 7. Juliâ) â kein Ãffnen des Kalenders mehr nötig, um zu sehen, wann etwas dran ist."}]},{version:"6.15.0",date:"2026-06-15",title:"5 neue Erfolge zum Ausprobieren",changes:[{type:"neu",text:"5 neue Erfolge, die Dich belohnen, wenn Du Funktionen ausprobierst: Spracheingabe nutzen, eigene Rubrik anlegen, Aufgabe aufschieben, Messpunkt aktualisieren und alle Bereiche entdecken."}]},{version:"6.14.1",date:"2026-06-15",title:"Admin: Reaktivierungs-Mail mit Vorlage & vollständiger Signatur",changes:[{type:"verbessert",text:"Admin: Die Reaktivierungs-Mail an einzelne Nutzer ist jetzt mit Vorlage, Link und vollständiger Signatur vorausgefüllt â Senden-Button direkt aktiv."}]},{version:"6.14.0",date:"2026-06-15",title:"Aufgeräumtes Menü: eigener Bereich âErfolgeâ, Ranking in Stats",changes:[{type:"verbessert",text:"Aufgeräumtes Menü: Deine Erfolge haben jetzt einen eigenen Bereich âErfolgeâ (mit Belohnungen als Reiter), getrennt von den erledigten Aufgaben. Ranking ist in âStatsâ integriert â insgesamt übersichtlicher."},{type:"verbessert",text:"âDoneâ heiÃt jetzt âErledigtâ und zeigt nur noch Deine abgeschlossenen Aufgaben."}]},{version:"6.13.0",date:"2026-06-15",title:"Eigene Rubriken, flüssige Messpunkte, bessere Spracheingabe & Soll-Linie",changes:[{type:"behoben",text:"Eigene Rubrik anlegen: Das Eingabefeld öffnet jetzt zuverlässig â Namen tippen, Enter, fertig (Emoji wird automatisch vorgeschlagen)."},{type:"behoben",text:"Messpunkte im Montags-Check reagieren jetzt flüssig: Du kannst den Wert sauber löschen und neu eintippen; gespeichert wird beim Verlassen des Feldes oder mit Enter (kein Springen mehr)."},{type:"verbessert",text:"Spracheingabe erkennt wichtige Begriffe wie BAFA, Liebe Zeitarbeit oder VIP Club jetzt korrekt."},{type:"neu",text:"Jeder Messpunkt zeigt jetzt ein âSoll bis jetztâ (anteilig aus Ziel und Zeitraum), damit Du sofort siehst, ob Du über oder unter Plan liegst."}]},{version:"6.12.2",date:"2026-06-12",title:"Tagesstart geräteübergreifend & klareres Aufschieben",changes:[{type:"behoben",text:"Danke an unseren Tester fürs Melden! Der Tagesstart wird jetzt geräteübergreifend gemerkt: Hast Du ihn morgens am Handy erledigt, fragt das iPad oder der Mac am selben Tag nicht mehr nach."},{type:"verbessert",text:"Das Aufschieben einer Aufgabe (auf morgen oder nächste Woche) ist über das Wecker-Symbol an jeder Aufgabe jetzt klarer beschriftet."}]},{version:"6.12.1",date:"2026-06-11",title:"Checklisten-Schritte & Meilensteine nachträglich bearbeiten",changes:[{type:"behoben",text:"Danke an Markus fürs Melden! Checklisten-Schritte einer Aufgabe lassen sich jetzt nachträglich im Text bearbeiten â Stift-Icon oder Doppelklick auf den Text öffnet das Eingabefeld, Enter speichert, Escape bricht ab."},{type:"verbessert",text:"Auch Meilensteine an Messpunkten Deiner Fokus-Ziele lassen sich nachträglich bearbeiten (Stift-Icon / Doppelklick). Zusätzlich kannst Du Meilensteine jederzeit per â+ Meilensteinâ ergänzen oder einzeln löschen â ohne die Grundkonfiguration neu starten zu müssen."}]},{version:"6.12.0",date:"2026-06-09",title:"Aufgeräumter Kopfbereich, klarere Tabs, dezente Community-Hinweise",changes:[{type:"verbessert",text:"Kopfbereich kompakter: Statistik-Karten (Heute/Woche/Gesamt/Streak), Stufen-Leiste und Zitat-Feld sind schlanker â mehr Aufgaben und Menü sofort sichtbar."},{type:"verbessert",text:"Menü-Tabs (Heute/Woche/Kalender â¦) sind klarer hervorgehoben: der aktive Tab leuchtet in Brand-Orange als Akzent, inaktive Tabs sind besser lesbar."},{type:"verbessert",text:"Liebe-Zeitarbeit-Club & VIP-Club: aus den groÃen Blöcken oben wurde eine dezente, schmale Zeile innerhalb der Heute-Liste â sichtbar beim Scrollen, aber nicht mehr platzraubend."},{type:"verbessert",text:"Wiederholungs-Dialog: Die Schnell-Chips (2/3/4/6/12 Wochen oder Monate) bleiben nach dem Tippen markiert. Neuer âÃbernehmenâ-Button bestätigt die Routine und schlieÃt den Dialog."},{type:"verbessert",text:"Wording in der Wiederholung: Bei Intervall = 1 steht jetzt âTäglich/Wöchentlich/Monatlich/Jährlichâ statt âAlle 1 Tag(e)â. âAlle N â¦â erscheint nur ab N ⥠2."},{type:"behoben",text:"Browser-Titel zeigt den App-Namen nicht mehr doppelt â manifest und apple-Title vereinheitlicht."}]},{version:"6.11.0",date:"2026-06-09",title:"Tages-Start, Tagesfoku
327s & Rückblick klarer",changes:[{type:"neu",text:"Tagesfokus-Dialog: Eingabefeld oben â â+ Neue Aufgabe für heuteâ legt die Aufgabe sofort an und wählt sie als eines Deiner 3 Tagesziele aus."},{type:"verbessert",text:"Im Tagesfokus siehst Du jetzt ALLE offenen Aufgaben, mit Suchfeld zum schnellen Finden. Sortierung nach Wichtigkeit: Prio A, Fokus-Ziel (ð¯), heute fällig/überfällig, Geld/Vertrieb, lange offen â mit kleinen Labels (âüberfälligâ, âFokusâ, âlange offenâ)."},{type:"verbessert",text:"Tages-Bilanz zeigt jetzt Deinen GESTRIGEN Tag: erledigte Aufgaben, gesammelte Punkte und Fokus-Quote von gestern â kein âheute 0â mehr am Morgen."},{type:"verbessert",text:"Offene Aufgaben von gestern bekommen klare Ãberschrift und Erklärtexte an den 3 Buttons: âAuf heute holenâ (â), âNeu terminierenâ (Kalender), âLöschenâ (Mülleimer)."},{type:"verbessert",text:"Button heiÃt jetzt âRückblick schlieÃenâ statt âTag abschlieÃenâ â passt zum morgendlichen Rückblick."},{type:"verbessert",text:"Tages-Start: Reflexion steht jetzt oben (Tagesziele + gestriger Rückblick), die Arbeits-Auswahl (Aufgaben / Fokus-Ziele) darunter. Sind beide Reflexions-Schritte erledigt, heiÃt der Button âLos gehtâsâ / âFertigâ statt âÃberspringenâ."}]},{version:"6.10.0",date:"2026-06-09",title:"App aufs Handy laden & schnellere Ladezeiten",changes:[{type:"neu",text:"Anleitung âApp aufs Handy ladenâ: freundlicher Hinweis auf der Heute-Seite (nur, wenn Du die App noch nicht installiert hast und am Handy bist) â wegwischbar, kommt frühestens nach 7 Tagen wieder."},{type:"neu",text:"Dauerhaft im Hilfe-Tab unter âApp aufs Handy ladenâ â mit Schritt-für-Schritt-Anleitung für Android (Chrome) und iPhone (Safari)."},{type:"neu",text:"Auf Android-Chrome kannst Du direkt mit einem Tipp installieren (âInstallierenâ-Button); auf dem iPhone führt Dich die Anleitung sicher über Teilen-Symbol â âZum Home-Bildschirmâ â âHinzufügenâ."},{type:"neu",text:"Schnellere Ladezeit: Die Startseite (Heute) öffnet jetzt sofort. Schwere Bereiche wie Stats, Ranking, Fokus-Ziele, Kalender und Projekte werden erst beim Aufrufen geladen."}]},{version:"6.9.0",date:"2026-06-09",title:"Uhrzeit, Erinnerungen & Termine einfach eintippen",changes:[{type:"neu",text:"Aufgaben können jetzt eine Uhrzeit haben â z. B. â08.06. · 15:00â für Vorstellungsgespräch oder Abgabefrist. Ohne Uhrzeit bleibt alles wie bisher (ganztägig)."},{type:"neu",text:"Erinnerungen mit Benachrichtigung: Aus / Zur Fälligkeit / 10 Min vorher / 1 Std vorher / 1 Tag vorher / Eigene Zeit. Kommt pünktlich als App-Glocke und (falls aktiviert) als Browser-Push."},{type:"neu",text:"Natürliche Datums-Eingabe: Tippe einfach âVorstellungsgespräch morgen 15 Uhrâ oder âAngebot Freitag 9:00â â die Fälligkeit wird vorgeschlagen, mit einem Klick übernommen und sauber aus dem Titel entfernt. Erkennt âheuteâ, âmorgenâ, âübermorgenâ, Wochentage und ânächste Wocheâ."}]},{version:"6.8.0",date:"2026-06-08",title:"Fokus-Ranking & Macher-Ranking â miss Dich mit anderen",changes:[{type:"neu",text:"Zwei Bestenlisten im Ranking-Tab: âFokus-Rankingâ zeigt, wer am meisten auf seine Fokus-Ziele einzahlt (Punkte mit Ã2-Verdopplung). âMacher-Rankingâ zeigt, wer insgesamt am fleiÃigsten ist."},{type:"neu",text:"Freundliche Erinnerung auf der Heute-Seite, falls Du noch nicht im Ranking bist â wegwischbar, kommt frühestens nach 3 Tagen wieder."},{type:"neu",text:"Beta-Einladungs-Popup hat jetzt einen âSpäter erinnernâ-Button. Meldet sich in 2 Tagen wieder, ohne dass Du Dich heute festlegen musst."}]},{version:"6.7.0",date:"2026-06-08",title:"Rubriken selbst gestalten â Danke, Stefanie!",changes:[{type:"neu",text:"Du kannst Deine Rubriken jetzt selbst anlegen, ändern und löschen â sie erscheinen sofort in der Auswahl beim Anlegen einer Aufgabe."},{type:"neu",text:"Standard-Rubriken kannst Du umbenennen oder ausblenden, was Du nicht brauchst. Voll individuell."},{type:"neu",text:"Eigene Rubrik direkt aus dem Aufgaben-Dropdown anlegen (â+ Eigene Rubrik anlegenâ¦â) â Emoji wird automatisch passend zum Namen vorgeschlagen."},{type:"verbessert",text:"Rollen und Rubriken stehen jetzt direkt beieinander im Profil â eine gemeinsame Sektion âRollen & Rubrikenâ."},{type:"behoben",text:"Eigene Rubriken waren in der Dropdown-Auswahl der Aufgaben-Eingabe nicht sichtbar (nur die globalen Defaults). Das war die Ursache des Bugs â jetzt behoben."},{type:"verbessert",text:"âTicket behobenâ-Benachrichtigung läuft jetzt zuverlässig per DB-Trigger: Sobald ein Bug-Report auf âBehobenâ wechselt â egal über welchen Weg â wird der Melder genau einmal informiert (In-App + E-Mail + Push)."}]},{version:"6.6.1",date:"2026-06-08",title:"Kategorie-Name wieder sichtbar",changes:[{type:"behoben",text:"In der Kategorie-Auswahl bei der Aufgaben-Eingabe wurde nur noch das Emoji angezeigt â jetzt sieht man wieder Emoji UND Kategorie-Name (z. B. âð¯ VERTRIEBâ)."},{type:"behoben",text:"Auch an den Kategorie-Labels in den Aufgaben-Listen erscheint wieder Emoji + Kurzname statt nur dem Symbol. Be
327i wenig Platz wird der Text mit ⦠gekürzt."}]},{version:"6.6.0",date:"2026-06-08",title:"Mehrere Fokus-Ziele & Werktag-Streak",changes:[{type:"neu",text:"Eine Aufgabe kann jetzt auf mehrere Fokus-Ziele gleichzeitig einzahlen â einfach mehrere Ziel-Chips antippen."},{type:"neu",text:"Streak-Modus im Profil: âNur Werktage (MoâFr)â ist neuer Standard â Dein Streak reiÃt am Wochenende nicht mehr ab. Aktivität am Wochenende schadet nie."},{type:"verbessert",text:"Punkte bleiben fair: Eine Aufgabe gibt Ã2 weiterhin nur EINMAL â auch wenn sie auf 2 oder 3 Ziele einzahlt. Tages-Cap (max. 5 Ã2/Tag) bleibt."},{type:"verbessert",text:"Im Fokus-Ziel-Tab erscheint eine mehrfach verknüpfte Aufgabe in allen passenden Ziel-Listen â Abhaken erledigt sie überall."}]},{version:"6.5.1",date:"2026-06-08",title:"Keine doppelten Mails",changes:[{type:"behoben",text:"Owner-Benachrichtigung bei neuem Bug-Report geht nur noch an eine Adresse â nicht mehr doppelt."},{type:"behoben",text:"Wenn Du Dein eigenes Ticket meldest, bekommst Du keine zusätzliche Bestätigungs- oder âBehobenâ-Mail mehr (Du siehst es ja schon)."},{type:"verbessert",text:"Empfänger werden vor jedem Versand dedupliziert â dieselbe Adresse bekommt nie zweimal dieselbe Mail."}]},{version:"6.5.0",date:"2026-06-08",title:"Stabile Dialoge & schlauere Kategorien",changes:[{type:"behoben",text:"Dialoge (Freitags-Realitätscheck, Montags-Check, Tages-Start, Tagesfokus, Beta-Einladung, Bug-Report, Aufgaben-Detail u. a.) schlieÃen nicht mehr von selbst, während Du etwas eintippst â Hintergrund-Updates pausieren so lange der Dialog offen ist."},{type:"behoben",text:"Eingaben im Freitags-Realitätscheck (Felder 1â3) bleiben erhalten, auch wenn die App im Hintergrund Daten nachlädt."},{type:"verbessert",text:"Kategorie-Auswahl bei der Aufgaben-Eingabe ist jetzt kompakter und übersichtlicher."},{type:"verbessert",text:"Kategorien sortieren sich automatisch nach Deiner Nutzung â Deine häufigsten erscheinen oben."},{type:"neu",text:"Wenn Du eine Aufgabe mit einem Fokus-Ziel verknüpfst, wird die passende Kategorie automatisch vorgeschlagen (kannst Du jederzeit ändern)."},{type:"neu",text:"Neue Kategorien: Finanzen, Homepage, Social Media, Mail/Kontakt. KI-Kompetenztage und KI-Stammtisch wandern ans Ende der Liste."}]},{version:"6.4.1",date:"2026-06-07",title:"Konsistenz-Fix: Heldenstufen & Achievements zeigen die echten Zahlen",changes:[{type:"behoben",text:"Marketing-Seite, Handbuch und Tooltips zeigten teils noch alte Zahlen (â50 Achievementsâ). Jetzt werden die Zahlen direkt aus dem Code abgeleitet â aktuell 30 Heldenstufen und 56 Achievements."},{type:"verbessert",text:"Wenn künftig neue Achievements oder Stufen dazukommen, aktualisieren sich die Texte automatisch."}]},{version:"6.4.0",date:"2026-06-07",title:"Push-Benachrichtigungen: sofort wissen, wenn Dein Ticket behoben ist",changes:[{type:"neu",text:"Push-Benachrichtigungen aktivierbar im Profil â Benachrichtigungen. Sobald Daniel Dein Ticket auf âBehobenâ setzt, bekommst Du eine Push-Meldung â auch bei geschlossener App."},{type:"neu",text:"iOS-Hinweis: Push funktioniert auf dem iPhone nur, wenn Du die App vorher zum Home-Bildschirm hinzugefügt hast."},{type:"verbessert",text:"In-App-Glocke und E-Mail bleiben unverändert â Push kommt zusätzlich oben drauf, ohne Doppel-Sends."}]},{version:"6.3.0",date:"2026-06-07",title:"Du wirst informiert, wenn Dein gemeldeter Bug behoben ist",changes:[{type:"neu",text:"Jeder Bug-Report bekommt jetzt eine Ticket-Nummer (z. B. âFC-42â) â beim Absenden siehst Du sie sofort."},{type:"neu",text:"Bestätigungs-E-Mail an Dich als Melder â âDein Feedback ist angekommenâ."},{type:"neu",text:"Neue Karte âMeine Meldungenâ im Hilfe-Tab: alle Deine Tickets mit Status Offen / In Bearbeitung / Behoben."},{type:"neu",text:"Wenn Daniel ein Ticket auf âBehobenâ setzt, bekommst Du automatisch eine Benachrichtigung (Glocke + E-Mail) mit der Bitte, nochmal zu testen."},{type:"verbessert",text:"Die Glocke oben rechts ist jetzt für alle sichtbar und zeigt persönliche Benachrichtigungen â nicht mehr nur für Owner."},{type:"verbessert",text:"Owner-Archiv mit klarem Status-Workflow: Offen â In Bearbeitung â Behoben. Doppel-Benachrichtigungen werden verhindert."}]}
327,{version:"6.2.1",date:"2026-06-07",title:"Bug-Reports kommen jetzt automatisch per E-Mail an",changes:[{type:"neu",text:"Sobald jemand einen Bug-Report oder Feedback abschickt, geht automatisch eine E-Mail an Daniel â inklusive Melder, Datum, Version, Browser, Text und Screenshot-Link."},{type:"neu",text:"Im Bug-Archiv: neuer Button âPer E-Mail an mich sendenâ pro Eintrag â auch ältere Reports jederzeit per Mail nachfordern."},{type:"verbessert",text:"Der Bug-Report wird immer gespeichert â auch wenn der Mail-Versand mal scheitert."}]},{version:"6.2.0",date:"2026-06-07",title:"Benachrichtigungs-Center & Bug-Report-Archiv",changes:[{type:"neu",text:"Glocke oben rechts öffnet eine echte Liste: neueste Bug-Reports und Anmeldungen mit Wer, Was und Wann â neueste oben, ungelesene farbig markiert."},{type:"neu",text:"Klick auf eine Benachrichtigung markiert sie als gelesen und springt direkt zum passenden Ort (Bug-Archiv oder Beta-Tester-Liste)."},{type:"neu",text:"âAlle als gelesen markierenâ mit einem Klick."},{type:"verbessert",text:"Bug-Report-Archiv (nur Owner) zeigt jetzt Name/E-Mail des Melders, Datum, Version, Status â Status per Klick änderbar, nach Status filterbar."},{type:"neu",text:"Im Profil â Benachrichtigungen: einzelne Schalter für Bug-Reports und neue Anmeldungen."}]},{version:"6.1.0",date:"2026-06-07",title:"Aus âHebelâ werden Fokus-Ziele â und Du wählst die Phasen-Länge selbst",changes:[{type:"neu",text:"Neuer Name: aus âHebelâ werden überall âFokus-Zieleâ â gleiches System, klarere Sprache."},{type:"neu",text:"Fokus-Phase frei wählbar: 90 / 60 / 30 Tage, âbis Quartalsendeâ oder eigenes Datum. Wählst Du beim Anlegen, kannst Du jederzeit oben im Fokus-Ziele-Tab ändern."},{type:"neu",text:"Tab-Kopf zeigt âTag X von N â noch M Tageâ statt einer festen Quartals-Angabe. Bestehende Tester behalten ihre 90 Tage ab Erstanlage (kein Datenverlust)."},{type:"neu",text:"Heute-Tab zeigt jetzt ALLE offenen Aufgaben â Fokus-Ziel-Aufgaben rutschen automatisch nach oben. Nichts wird mehr versteckt."},{type:"neu",text:"Neue Weiche âWoran willst Du heute arbeiten?â â im Tages-Start und ganz oben im Heute-Tab: ein Tap zu âMeine Aufgabenâ oder âMeine Fokus-Zieleâ."},{type:"verbessert",text:"Soll/Ist-Diagramm in Stats nutzt jetzt Deine echte Phasen-Länge (nicht mehr fest 90 Tage)."},{type:"verbessert",text:"Phasenwechsel wird ausgelöst, sobald Dein gewähltes Enddatum überschritten ist â nicht mehr erst zum Quartalsende."}]},{version:"6.0.1",date:"2026-06-06",title:"Wiederkehrende Aufgaben â jetzt richtig flexibel",changes:[{type:"neu",text:"Intervall âalle Nâ: z. B. alle 2 Wochen, alle 3 Monate â beliebig kombinierbar."},{type:"neu",text:"Wochentage frei wählen: âjede Woche Mo + Di + Miâ erzeugt an genau diesen Tagen je eine Aufgabe."},{type:"neu",text:"Monatlich am festen Tag (z. B. USt-Voranmeldung am 10.). Hat ein Monat den Tag nicht (31. im Februar), fällt sie automatisch auf den letzten Tag."},{type:"neu",text:"Jährlich für Geburtstage & Jahrestermine: âjedes Jahr am 24. Juliâ â tauchen automatisch im Kalender auf."},{type:"neu",text:"Ende festlegen: nie / nach N Vorkommen / bis Datum â plus Schnell-Chips âfür die nächsten 3 Wochenâ bzw. âfür die nächsten 6 Monateâ."},{type:"verbessert",text:"Laienverständliche Zusammenfassung an jeder Routine: âJede Woche Mo, Di, Mi â für 3 Wochenâ."},{type:"behoben",text:"Monats-Tag-Auswahl wird im Wiederholungs-Dialog jetzt sofort sichtbar gerendert (Mobile + Desktop)."},{type:"behoben",text:"Cron erzeugt die erste Instanz korrekt â die Wiederholungs-Vorlage wird in der Duplikatsprüfung nicht mehr fälschlich getroffen."}]},{version:"6.0.0",date:"2026-06-06",title:"Fokus & Hebel â das neue 90-Tage-System",changes:[{type:"neu",text:"Hebel-System: Bis zu 3 Hebel für die nächsten 90 Tage. Wenige groÃe Themen statt viele kleine Baustellen â alles andere bleibt Aufgabe."},{type:"neu",text:"Messpunkte in drei Mess-Arten: ð Stand (heute vs. in 90 Tagen, z. B. Kontostand), ð¢ Zähler (ab jetzt zählen, z. B. 30 Erstgespräche), ð
Pro Woche (Routine halten, z. B. 3Ã Sport)."},{type:"neu",text:"Doppelte Fokus-Punkte: Aufgaben, die auf einen Hebel einzahlen, geben beim Abhaken Ã2 Punkte (max. 5/Tag) â Du siehst Deine Fokus-Quote oben im Header."}
327,{type:"neu",text:"Tagesfokus: Wähle morgens 3 Aufgaben, die heute wirklich zählen. Alle drei geschafft = +10 Bonus."},{type:"neu",text:"ð Feuerwehr-Modus: Markiere ungeplante Aufgaben mit einem Tap. Am Freitag siehst Du, wie viel Deiner Woche ânur lautâ war."},{type:"neu",text:"Montags-Check (3 Min) & Freitags-Realitätscheck (2 Min) mit Wochenbericht â Fokus-Quote, Cashflow-Fokus und Empfehlung für die kommende Woche."},{type:"neu",text:"JSON-Datensicherung: Du kannst Deine Hebel-Daten jederzeit als Backup herunterladen."},{type:"verbessert",text:"Sichtbare Aufgaben-Zuordnung: Im Hebel-Tab siehst Du jetzt unter jedem Hebel die zugeordneten offenen Aufgaben â direkt dort abhakbar."},{type:"verbessert",text:"Hebel-Label an Aufgaben ist deutlich sichtbarer (Hebel-Farbe + Name) â Du erkennst sofort, worauf eine Aufgabe einzahlt."},{type:"behoben",text:"âAnlegenâ-Button funktioniert jetzt zuverlässig, auch wenn der Fokus auf einem Hebel-Chip oder Dropdown liegt (kein Zurück-ins-Textfeld mehr nötig)."},{type:"verbessert",text:"Mobil-Layout: Dialoge respektieren iPhone-Safe-Areas, Eingabefelder springen über die Bildschirm-Tastatur."},{type:"verbessert",text:"Hebel-Tab-Kopf zeigt deutlich âNoch X Tage in Deinem 90-Tage-Fokusâ â leerer Fortschrittsbalken bekommt einen freundlichen Hinweis."}]},{version:"5.3.37",date:"2026-06-04",title:"Suche: Aufgaben bearbeiten statt versehentlich abhaken",changes:[{type:"behoben",text:"Klick auf eine Aufgabe in den Suchergebnissen markiert sie nicht mehr als erledigt und lässt sie nicht mehr aus der Liste verschwinden."},{type:"verbessert",text:"Klick auf die Aufgabe (Text/Karte) öffnet jetzt den Bearbeiten-Dialog â Notizen, Subtasks usw. lassen sich direkt aus der Suche ändern."},{type:"verbessert",text:"Abhaken passiert weiterhin nur über die Checkbox vorne (mit Punkten und Konfetti, wie überall sonst). Stern bleibt unverändert."},{type:"verbessert",text:"Nach dem SchlieÃen des Bearbeiten-Dialogs bleibt die Suche mit Suchbegriff und aktualisierten Ergebnissen offen."}]},{version:"5.3.36",date:"2026-06-04",title:"UI-Politur: ABC-Priorität klarer erklärt",changes:[{type:"verbessert",text:"Prio-Dropdown bei der Aufgaben-Eingabe ist breiter und zeigt jetzt klar âPrio: A/B/Câ statt abgeschnitten."},{type:"neu",text:"Tooltip an Prio-Dropdown und Stats-Tab erklärt die ABC-Analyse: A = wichtig, B = mittel, C = weniger wichtig."},{type:"verbessert",text:"Versionsnummer im Header hat jetzt einen schlichten Unterstrich (statt gepunktet) â klarer als Link erkennbar."},{type:"behoben",text:"Strich vor dem Autor-Namen im Tagesspruch entfernt."}]},{version:"5.3.35",date:"2026-06-02",title:"Mobile: Lange Aufgaben sauber gekürzt mit âMehr anzeigenâ",changes:[{type:"verbessert",text:"Lange Aufgaben-Texte werden auf dem Handy jetzt sauber auf 3 Zeilen gekürzt â die Karten bleiben einheitlich groà und Du kannst wieder normal scrollen. Mit âMehr anzeigenâ klappst Du den ganzen Text auf, ohne in den Bearbeiten-Modus zu müssen."}]},{version:"5.3.34",date:"2026-06-02",title:"Mobile: Aufgaben-Text komplett lesbar + Google-Login-Fix",changes:[{type:"verbessert",text:"Auf dem Handy siehst Du jetzt den kompletten Aufgaben-Text â mehrzeilig umgebrochen statt abgeschnitten. Du musst nicht mehr auf Bearbeiten tippen, um den ganzen Text zu lesen. Schrift ist auf Mobile auch einen Tick gröÃer."},{type:"behoben",text:"Google-Login auf dem iPhone funktioniert wieder zuverlässig (Login-Anbieter war serverseitig nicht aktiv â jetzt sauber konfiguriert)."}]},{version:"5.3.33",date:"2026-06-02",title:"Tages-Bilanz aufgeräumt + Auto-Update + Notfall-Reset",changes:[{type:"verbessert",text:"Die Tages-Bilanz am Tagesende sieht jetzt deutlich aufgeräumter aus â mehr Platz, klarerer Hintergrund, scrollt sauber wenn Du viele Aufgaben hast."},{type:"neu",text:"Die App erkennt jetzt automatisch, wenn eine neue Version live ist, und bietet Dir den Aktualisieren-Button direkt an."},{type:"neu",text:"Neuer Notfall-Button im Hilfe-Bereich und auf der Login-Seite âApp zurücksetzenâ â hilft, wenn die App hängt oder Du Dich nicht ausloggen kannst."}]},{version:"5.3.32",date:"2026-06-02",title:"Hotfix: Google-Login funktioniert wieder überall",changes:[{type:"behoben",text:"Google-Login funktioniert jetzt zuverlässig auch in der Desktop-App und in PWAs (vorher öffnete sich auf manchen Geräten kein Anmeldefenster)."},{type:"verbessert",text:"Der Google-Login zeigt jetzt immer den Account-Picker, damit Du bei mehreren Google-Konten gezielt wählen kannst."}]},{version:"5.3.31",date:"2026-06-02",title:"AVV-Status aktualisiert + zwei kleine Bugfixes",changes:[{type:"neu",text:"Auf der Datenschutz-Seite siehst Du jetzt: Lovable und Resend haben uns ihre AVVs bestätigt. Bei Supabase signiere ich die nächsten Tage selbst. Mistral antwortet hoffentlich diese Woche."},{type:"behoben",text:"Vom Handbuch kommst Du jetzt sauber zurück ins Cockpit â neuer groÃer Button am Ende der Seite."},{type:"behoben",text:"Neue Aufgaben im Kalender erscheinen jetzt sofort, nicht erst nach Reload."}]},{version:"5.3.30",date:"2026-06-01",title:"Bug-Fix: Farb-Picker geht nicht mehr versehentlich auf",changes:[{type:"behoben",text:"Beim Tippen auf den Kommentar-Hinweis ging unter iOS manchmal versehentlich auch der Farb-Picker auf. Behoben. Danke Marcus für das Melden des Bugs."}]},{version:"5.3.29",date:"2026-06-01",title:"Kommentar-Counter aktualisiert sich sofort",changes:[{type:"behoben",text:"Wenn Du einen Kommentar hinzufügst, springt die Anzahl auf der Aufgaben-Karte jetzt sofort weiter â kein Hard-Reload mehr nötig. Gleiches gilt für Teilschritte und Anhänge."}]},{version:"5.3.28",date:"2026-06-01",title:"Restliche Umlaute auf der About-Se
327ite repariert",changes:[{type:"behoben",text:"Auf der Ãber-Seite waren noch einige Wörter mit âae/oe/ueâ geschrieben â jetzt überall korrekt mit echten Umlauten."}]},{version:"5.3.27",date:"2026-06-01",title:"Auto-Update + Kommentar-Hinweis auch in der Suche",changes:[{type:"verbessert",text:"Updates werden ab jetzt automatisch nachgeladen â Du musst nicht mehr per Tastaturkürzel auffrischen, das passiert von alleine."},{type:"neu",text:"Kommentar-Hinweis erscheint jetzt auch in den Such-Ergebnissen â Du erkennst sofort, wo eine Diskussion läuft."}]},{version:"5.3.26",date:"2026-06-01",title:"Polituren: Kommentare prominent und Umlaute korrekt",changes:[{type:"verbessert",text:"Kommentar-Hinweis sitzt jetzt als auffälliger Badge oben rechts auf jeder Aufgabe â Du siehst auf einen Blick, wo eine Diskussion läuft."},{type:"behoben",text:"In den Release-Notes und Hinweistexten waren Umlaute falsch geschrieben (z. B. âgroesserâ statt âgröÃerâ). Jetzt überall korrekt."}]},{version:"5.3.25",date:"2026-06-01",title:"Kommentare fallen besser ins Auge",changes:[{type:"verbessert",text:"Kommentar-Hinweis auf Aufgaben-Karten in Brand-Orange und etwas gröÃer â Du siehst auf einen Blick, wo ein Kommentar dranhängt. Danke für das Feedback."}]},{version:"5.3.24",date:"2026-06-01",title:"Polituren â Mockups, Stufen, Video-Vorschau",changes:[{type:"verbessert",text:"About-Seiten-Mockups in den Brand-Farben aufgefrischt, Bildinhalte jetzt vollständig sichtbar."},{type:"behoben",text:"Anzahl der Heldenstufen ist konsistent als 30 ausgewiesen (statt teils 20)."},{type:"neu",text:"Platzhalter für den Video-Walkthrough auf der About-Seite â das Video folgt in den kommenden Tagen."}]},{version:"5.3.23",date:"2026-06-01",title:"Frische About-Seite + sichtbare Updates",changes:[{type:"neu",text:"About-Seite komplett neu: echte Mobile-Screenshots zeigen, was das Cockpit kann. Plus klare Vorteile, FAQ und Doppel-CTA."},{type:"verbessert",text:"Versions-Check läuft jetzt jede Minute statt alle 5 Min â neue Updates werden schneller sichtbar."}]},{version:"5.3.22",date:"2026-06-01",title:"Mehr Kontext auf einen Blick",changes:[{type:"neu",text:"Aufgaben-Karten zeigen jetzt auf einen Blick, ob Kommentare, Teilschritte oder Anhänge dranhängen â kleines Icon plus Anzahl. Danke Marcus für den Hinweis."},{type:"verbessert",text:"Tages-Bilanz-Modal: Hintergrund deckt jetzt sauber alles ab, kein Durchschimmern mehr."}]},{version:"5.3.21",date:"2026-06-01",title:"Deine Lieblings-Tags zuerst",changes:[{type:"neu",text:"Tag-Auswahl ordnet jetzt automatisch nach Deiner Nutzung â die Tags, die Du am häufigsten verwendest, erscheinen ganz vorne. Schneller anlegen, weniger scrollen."}]},{version:"5.3.20",date:"2026-06-01",title:"Willkommens-Mails kommen jetzt zuverlässig an",changes:[{type:"verbessert",text:"Willkommens-Mail-Versand stabilisiert. Alle bestehenden Nutzer bekommen einmalig ihre Willkommens-Mail nachgeholt."}]},{version:"5.3.19",date:"2026-05-31",title:"AVV-Status transparent in der Datenschutz-Seite",changes:[{type:"neu",text:"Datenschutz-Seite zeigt jetzt pro Subunternehmer den aktuellen Status der Auftragsverarbeitungsverträge (AVV) â angefragt, in Verhandlung, unterzeichnet."}]},{version:"5.3.18",date:"2026-05-31",title:"Wording-Politur bei den KI-Hinweisen",changes:[{type:"verbessert",text:"Hinweistexte zu KI-Features präziser formuliert: Mistral (EU) ist Standard, Google Gemini ist nur noch technischer Notfall-Failover."}]},{version:"5.3.17",date:"2026-05-31",title:"Belohnungen mit Augenmaà erinnern",changes:[{type:"verbessert",text:"Wenn Du eine Belohnung freischaltest, kommt der Hinweis jetzt erst nach 90 Sekunden â damit Du Deine To-Dos zuerst siehst."},{type:"verbessert",text:"Wegklicken heiÃt snoozen: Du wirst erst bei Deiner nächsten Anmeldung wieder erinnert, nicht jede Stunde."},{type:"neu",text:"Im Belohnungs-Tab neuer Hinweis, warum Selbstbelohnung wirklich wichtig ist â kurz erklärt, ohne erhobenen Zeigefinger."}]},{version:"5.3.16",date:"2026-05-31",title:"Polituren und Anzeige-Verbesserungen",changes:[{type:"verbessert",text:"Erstkontakt aufgeräumt: beim ersten Login siehst Du genau einen Dialog nach dem anderen, nichts überlagert sich mehr."},{type:"verbessert",text:"Desktop-Header rechts entzerrt: Abmelden-Button und Logo-Badge haben jetzt klar Platz."},{type:"verbessert",text:"Admin-Anzeige präziser: Status zeigt jetzt sinnvolle Werte (letzter Login, Mail-Bestätigung, DSGVO-Consent) statt einer pauschalen Anzeige."}]},{version:"5.3.15",date:"2026-05-31",title:"Datenschutz, klar und kontrolliert (Danke, Thorsten)",changes:[{type:"neu",text:"Beim ersten Login bestätigst Du aktiv unsere Datenschutz-Regeln â mit klarer Ãbersicht, wo Deine Daten verarbeitet werden."},{type:"neu",text:"KI-Subtask-Vorschläge sind opt-in (Default AUS) und laufen jetzt standardmäÃig über Mistral (Frankreich, EU) statt über einen US-Anbieter."},{type:"neu",text:"Datenpaket herunterladen (Art. 15) und Account-Löschung (Art. 17) direkt im Profil-Tab."},{type:"verbessert",text:"Datenschutzerklärung und Disclaimer komplett überarbeitet: Subunternehmer namentlich mit Region und Zweck, klarer Hinweis auf Deine Eigenverantwortung beim Formulieren von Aufgabentexten."},{type:"verbessert",text:"Danke an Thorsten R. für die kritischen DSGVO-Fragen, die zu diesem Update geführt haben."}]},{version:"5.3.14",date:"2026-05-31",title:"Feinschliff",changes:[{type:"verbessert",text:"Kleinere interne Anpassungen."}]},{version:"5.3.13",date:"2026-05-31",title:"Belohnungen, die wirklich Freude machen",changes:[{type:"neu",text:"15 Default-Belohnungen statt 10 â mit YouTube-Video, Podcast-Folge, alten Freund anrufen, Familie, Kinder, Sport und einem Wochenendtrip am Ende."},{type:"neu",text:"Sobald Du genug Punkte für eine Belohnung hast, kommt ein Hinweis-Pop-up â mit Einlösen-Button direkt drin."},{type:"neu",text:"Im Header oben siehst Du immer Deine nächste Belohnung und wie viele Punkte Dir noch fehlen â analog zur nächsten Heldenstufe."}]},{version:"5.3.12",date:"2026-05-31",title:"Belohnungen aufgeräumt + neue Inspiration",changes:[{type:"behoben",text:"Reihenfolge der Belohnungen war durcheinander â jetzt immer auf
327steigend nach Punkten sortiert. Danke, Oli, fürs Melden des Bugs!"},{type:"neu",text:"10 neue Default-Belohnungen von 25 bis 1.000 Punkten als Inspiration für neue Cockpit-Nutzer â geschlechtsneutral, Mix aus Selfcare, Erlebnis, Genuss und Investition."},{type:"neu",text:"Neue Cockpit-Konten starten mit 5 Demo-Aufgaben, damit sich die App von Anfang an lebendig anfühlt."},{type:"verbessert",text:"Hinweis im Belohnungs-Tab: Du kannst alle Belohnungen umbenennen, neue Punkte vergeben oder eigene anlegen."}]},{version:"5.3.11",date:"2026-05-31",title:"Weitere Bugs behoben",changes:[{type:"behoben",text:"Beim Abhaken einer Aufgabe aus der Suche bekommst Du jetzt auch Konfetti, Sound, Punkte-Animation und den Rückgängig-Toast â genau wie in der normalen Liste."}]},{version:"5.3.10",date:"2026-05-31",title:"Weitere Bugs behoben",changes:[{type:"behoben",text:"Die Statistik zählt jetzt korrekt nach Deiner lokalen Zeit â auch Aufgaben, die nach Mitternacht angelegt oder erledigt werden, landen am richtigen Tag."}]},{version:"5.3.9",date:"2026-05-31",title:"Aufgaben-Herkunft sichtbar",changes:[{type:"neu",text:"Im Detail-Dialog einer Aufgabe siehst Du jetzt, wann sie angelegt wurde und woher sie kommt: per Hand im Cockpit, per Sprache, aus einer Vorlage, automatisch (wiederkehrend, Butler-Regel) oder via API."}]},{version:"5.3.8",date:"2026-05-31",title:"Weitere Bugs behoben",changes:[{type:"behoben",text:"Aufgabe abhaken aus der globalen Suche funktioniert wieder â Konfetti, Punkte und Done-Tab werden korrekt aktualisiert."}]},{version:"5.3.7",date:"2026-05-31",title:"Feinschliff",changes:[{type:"verbessert",text:"Kleinere Anpassungen."}]},{version:"5.3.6",date:"2026-05-31",title:"Weitere Bugs behoben",changes:[{type:"verbessert",text:"Kleinere Stabilitäts-Verbesserungen im Hintergrund."}]},{version:"5.3.5",date:"2026-05-31",title:"Kleinere Verbesserungen im Hintergrund",changes:[{type:"verbessert",text:"Stabilitäts-Update für reibungsloseren Betrieb."}]},{version:"5.3.4",date:"2026-05-31",title:"Bessere Unterstützung für Dich",changes:[{type:"verbessert",text:"Hinter den Kulissen haben wir die Support-Werkzeuge erweitert, damit wir Dir bei Fragen, Bug-Meldungen und Wünschen noch schneller weiterhelfen können."},{type:"verbessert",text:"Direkte Antwort auf Dein Feedback ist jetzt möglich â Du hörst von uns, sobald Dein Hinweis bearbeitet ist."}]},{version:"5.3.3",date:"2026-05-31",title:"Handbuch komplett â auch die Basics sind drin",changes:[{type:"verbessert",text:"9 Basis-Funktionen im Handbuch ergänzt: Aufgabe abhaken, löschen, Priorität A/B/C, Wichtig-Stern, Tab-Ãbersicht, Detail-Dialog, Anmelden, Backup-Export, Backup-Import."}]},{version:"5.3.2",date:"2026-05-31",title:"Tagespunkte-Bug behoben, Admin-Tab freigeschaltet",changes:[{type:"behoben",text:"Tagespunkte werden nach Mitternacht jetzt korrekt hochgezählt. Vorher griff eine falsche Zeitzonen-Logik â Punkte fielen zwischen lokal 00:00 und 02:00 weg."},{type:"neu",text:"Eigener Admin-Tab mit allen Verwaltungs-Werkzeugen: User-Zahlen, neue Anmeldungen, Feedback. Sichtbar nur für Daniel â Desktop und Mobile."},{type:"verbessert",text:"Admin-Login funktioniert jetzt mit beiden Daniel-Mail-Adressen ([email protected] und [email protected])."},{type:"verbessert",text:"Handbuch: Achievements-Zahl korrigiert auf 50 (war an einer Stelle noch 41)."}]},{version:"5.3.1",date:"2026-05-30",title:"Mails kommen jetzt von liebezeitarbeit.com",changes:[{type:"verbessert",text:"Welcome-Mails, Signup-Benachrichtigungen und Workspace-Einladungen kommen ab sofort vom verifizierten Absender [email protected]. Antworten landen direkt bei Daniel."},{type:"behoben",text:"Resend-Domain liebezeitarbeit.com ist verifiziert â User-Mails an Fremd-Adressen werden nicht mehr von Resend blockiert."}]},{version:"5.3.0",date:"2026-05-30",title:"Drei smarte Automatisierungen: Butler, Snooze, AI-Subtasks",changes:[{type:"neu",text:"Butler-Regeln: Definiere im Profil Deine eigenen Wenn-Dann-Regeln. Beispiel: âWenn Tag = VERTRIEB, setze Prio A automatisch'. Vier Beispiel-Templates zum 1-Klick-Anlegen."},{type:"neu",text:"Snooze-Button: Verschiebe Aufgaben in 1 Klick auf später (+1 Stunde, auf morgen, nächste Woche). Mit Undo-Toast."},{type:"neu",text:"AI-Subtask-Generator: Im Detail-Dialog ein Klick auf â⨠Subtasks vorschlagen' â das System zerlegt Deine Aufgabe automatisch in 3 bis 7 Teilschritte. Du hakst ab, was passt, und übernimmst."}]},{version:"5.2.1",date:"2026-05-30",title:"Handbuch komplett auf Stand",changes:[{type:"verbessert",text:"Handbuch nachgezogen: Achievements-Anzahl auf 50, Onboarding-Tour auf 8 Schritte, Anmelde-Benachrichtigung ehrlicher beschrieben."},{type:"neu",text:"Vier neue Handbuch-Einträge: Drei-Punkte-Menü Mobile, Scroll-Hinweis in der unteren Navigation, Drag-and-Drop für Top-3, iPhone-Notch-Optimierung."}]},{version:"5.2.0",date:"2026-05-29",title:"Card-Cover, Bestenliste & ehrlichere Anmeldungen",changes:[{type:"neu",text:"Card-Cover: Jede Aufgabe bekommt einen farbigen Streifen und ein Emoji aus dem Tag â Du erkennst auf einen Blick, was wozu gehört. Im Detail-Dialog kannst Du beides individuell überschreiben."},{type:"neu",text:"Bestenliste-Erinnerung: Wenn Du noch nicht im Ranking bist, fragt Dich das Cockpit dezent im Hauptscreen, ob Du anschalten willst â mit klaren Gründen, jederzeit ausblendbar."},{type:"neu",text:"Im Ranking-Tab: rotierende Gründe, warum die Bestenliste Sinn macht â wechseln bei jedem Besuch."},{type:"verbessert",text:"Anmelde-Benachrichtigung: Daniel sieht neue Anmeldungen als ð im Header und als Hinweis im Admin-Panel. (Hinweis: E-Mail-Versand braucht noch den RESEND_API_KEY in den Lovable-Secrets â kommt, sobald hinterlegt.)"}]},{version:"5.1.3",date:"2026-05-29",title:"Handbuch auf dem iPhone wieder bedienbar",changes:[{type:"behoben",text:'âZur Ap
327p"-Button im Handbuch wurde auf dem iPhone von der Statusleiste verdeckt â jetzt rutscht der Handbuch-Header sauber unter die Notch'},{type:"verbessert",text:"Der Zurück-Link führt jetzt direkt zur App-Ansicht, nicht zur Startseite"}]},{version:"5.1.2",date:"2026-05-29",title:"Mehr Achievements & ehrliche Benachrichtigungen",changes:[{type:"behoben",text:'Achievements-Anzeige zeigt jetzt die richtige Gesamtzahl (50 statt 20) â kein â22/20" mehr'},{type:"neu",text:'Eigene Sektion âBenachrichtigungen" im Profil mit klarer Statusanzeige: Browser-Push und SMS sind noch in Vorbereitung, Deine Wünsche merken wir uns'},{type:"neu",text:"Onboarding-Tour um 3 Schritte erweitert: Tags & Rollen, Templates, Benachrichtigungen â Du lernst das Cockpit komplett in 8 Klicks kennen"},{type:"verbessert",text:"Hinweis im Header transparent umformuliert: Deine Handynummer wird hinterlegt, sobald wir senden können benachrichtigen wir Dich"}]},{version:"5.1.1",date:"2026-05-29",title:"Sauberer Header auf dem iPhone",changes:[{type:"verbessert",text:"Header oben rechts aufgeräumt â Suche, Handbuch und Abmelden findest Du jetzt im Drei-Punkte-Menü"},{type:"verbessert",text:"FOKUS-Cockpit-Titel kompakter, passt jetzt in eine Zeile"},{type:"verbessert",text:"Versionsnummer ist deutlicher klickbar dank dickerer gepunkteter Linie"},{type:"verbessert",text:"Untere Navigation zeigt mit sanftem Fade nach rechts, dass Du weitere Tabs durch Wischen erreichst"}]},{version:"5.1.0",date:"2026-05-29",title:"Dark-Mode und Deine eigene Header-Farbe",changes:[{type:"neu",text:"Hell-/Dunkel-Modus im Profil â Du wählst zwischen System, Hell und Dunkel"},{type:"neu",text:"Header-Hintergrundfarbe ist jetzt Teil Deines Brandings â wähle Deine eigene Farbe im Profil unter Branding"}]},{version:"5.0.1",date:"2026-05-29",title:"Schöner und klarer auf dem iPhone",changes:[{type:"behoben",text:"FOKUS-Cockpit-Titel und Untertitel werden auf dem iPhone nicht mehr abgeschnitten"},{type:"verbessert",text:"Versionsnummer hat jetzt eine gepunktete Unterstreichung, damit Du siehst dass sie klickbar ist"},{type:"verbessert",text:"Tagesspruch ohne zusätzliches Zitat-Symbol â die Anführungszeichen sprechen für sich"},{type:"verbessert",text:"Eingabe-Bereich für neue Aufgaben ist jetzt deutlich abgesetzt â Du siehst sofort, wo Du tippen sollst"}]},{version:"5.0.0",date:"2026-05-29",title:"Mehrfach-Auswahl, Tages-Bilanz und ein freundliches Hallo für neue User",changes:[{type:"neu",text:"Mehrfach-Auswahl: Doppelklick auf das Kästchen aktiviert die Auswahl, dann mehrere Aufgaben gleichzeitig abhaken oder löschen"},{type:"neu",text:"Tages-Bilanz ab 18 Uhr: kurzer Rückblick mit der Frage, was mit den heute übrigen Aufgaben passieren soll â morgen, ohne Datum oder löschen"},{type:"neu",text:"Onboarding-Tour für neue User â 5 Schritte zum Einstieg, beim ersten Login automatisch"}]},{version:"4.9.0",date:"2026-05-29",title:"Handbuch in der App und schneller mit der Tastatur",changes:[{type:"neu",text:"Komplettes Handbuch in der App lesbar â plus PDF zum Download"},{type:"neu",text:"Schnell-Datum: Heute, Morgen, Freitag, Nächste Woche mit einem Klick"},{type:"neu",text:'Tastatur-Shortcuts: â/" für Eingabefeld-Fokus, âN" für neue Aufgabe, âAlt+A/B/C" für Priorität'}
327,{type:"neu",text:'Filter âÃlter als 30 Tage" â mit einem Klick alle Liegen-Bleiber sichtbar'}]},{version:"4.8.0",date:"2026-05-29",title:"Eigene Rubriken und mehr Sicherheit unter der Haube",changes:[{type:"neu",text:"Eigene Rubriken / Tags: Im Profil kannst Du jetzt Deine Aufgaben-Kategorien frei anlegen, umbenennen, einfärben und mit Emoji versehen"},{type:"verbessert",text:"API gehärtet: Lese-/Schreibrechte pro Key, schnellerer Key-Lookup im Hintergrund"}]},{version:"4.7.1",date:"2026-05-29",title:"Mobile fühlt sich auf dem iPhone endlich richtig an",changes:[{type:"behoben",text:"Tagesspruch sitzt jetzt mittig zentriert statt links bündig"},{type:"behoben",text:"Auf dem iPhone wird der Header-Inhalt nicht mehr vom Kamera-Notch verdeckt"},{type:"behoben",text:"Versionsnummer ist jetzt auch auf dem Handy sichtbar â tippen öffnet wie gewohnt die Versionshistorie"},{type:"verbessert",text:"Mobile-Layout: Stats-Kacheln in 2 Reihen, Eingabe-Leiste kompakter, Karten weniger Innenabstand"}]},{version:"4.7.0",date:"2026-05-29",title:"Tagesspruch, Vorlagen und ein Auge auf alte Aufgaben",changes:[{type:"neu",text:"Tagesspruch oben im Header â wechselt jeden Tag, motiviert und erinnert daran, warum Du angefangen hast"},{type:"neu",text:"Aufgaben-Vorlagen: Speichere häufige To-dos einmal und füge sie mit einem Klick ein (Profil â Vorlagen)"},{type:"neu",text:"Alte offene Aufgaben werden dezent markiert â ab 7 Tagen ein leiser Hinweis, ab 30 Tagen eine deutliche Mahnung"}]},{version:"4.6.0",date:"2026-05-28",title:"Suchen statt Scrollen",changes:[{type:"neu",text:"Globale Suche über alle Deine Aufgaben â oben rechts auf die Lupe klicken oder Cmd/Strg+K drücken"},{type:"neu",text:"Suche findet Text, Tags, Rollen und Notizen â Treffer öffnen die Aufgabe direkt"}]},{version:"4.5.0",date:"2026-05-28",title:"Daniel sagt persönlich Hallo",changes:[{type:"neu",text:"Direkt nach Deiner Anmeldung bekommst Du eine persönliche Willkommens-Mail von Daniel â ohne Bot, ohne Vorlage"},{type:"neu",text:"Beim Anmelden kannst Du entscheiden, ob Du gelegentliche Tipps und Updates von Daniel per E-Mail bekommen möchtest â jederzeit widerrufbar"},{type:"verbessert",text:"Datenschutz-Erklärung ergänzt: ehrliche Auflistung, welche Mails Du nach Deiner Anmeldung bekommst"}]},{version:"4.4.0",date:"2026-05-28",title:"Rückgängig, Reopen und sauberer Stern-Klick",changes:[{type:"neu",text:"5-Sekunden-Rückgängig-Button nach jedem Abhaken (Toast unten)"},{type:"neu",text:'âWieder zu To-do"-Button im Done-Tab â zieht die vergebenen Punkte sauber wieder ab'},{type:"behoben",text:"Klick auf den Wichtig-Stern markiert die Aufgabe jetzt nur als wichtig, hakt sie nicht versehentlich mit ab"},{type:"behoben",text:"Done-Tab zeigt zuletzt erledigte Aufgabe zuverlässig ganz oben (done_at wird jetzt sauber gesetzt)"}]},{version:"4.3.0",date:"2026-05-28",title:"Abhaken fühlt sich endlich wie Abhaken an",changes:[{type:"verbessert",text:"Konfetti & Sound feuern jetzt bei JEDER abgehakten Aufgabe â GröÃe gestaffelt nach Wichtigkeit (C dezent, A satt)"},{type:"neu",text:'Punkte-Fly-up-Animation: â+5 Pkt" fliegt sichtbar nach oben, Heute-Punktestand pulsiert kurz'},{type:"verbessert",text:'Done-Tab nach âWichtig erledigt" und âErledigt" getrennt, beides chronologisch (neueste oben) und nach Datum gruppiert (Heute / Gestern / Diese Woche / Letzte Woche / Ãlter)'}]},{version:"4.2.0",date:"2026-05-28",title:"Klare Logo-Trennung: Dein Brand links, Producer-Brand rechts",changes:[{type:"verbessert",text:"Links steht jetzt klar Dein eigenes Logo (White-Label), rechts das feste Liebe-Zeitarbeit-Logo als Producer-Stempel"},{type:"neu",text:"Du kannst das Producer-Logo bei Bedarf für 24 Stunden ausblenden â danach kommt es automatisch zurück"},{type:"neu",text:'Neue Profil-Sektion âPowered-by-Branding" mit Status und Einblende-Button'}]},{version:"4.1.0",date:"2026-05-28",title:"Fokus Cockpit hat jetzt eine API",changes:[{type:"neu",text:"Public REST-API für To-dos, Stats, Achievements, Profil"},{type:"neu",text:"Eigene API-Keys im Profil verwalten (lzfc_â¦)"},{type:"neu",text:"API-Doku-Seite mit curl-Beispielen und Endpoint-Ãbersicht"},{type:"behoben",text:"Logo-Badge rechts zeigt jetzt 1:1 dasselbe Logo wie links (mit Löwe)"}]},{version:"4.0.1",date:"2026-05-28",title:"Logo rechts wie links + Erledigt-Bug behoben",changes:[{type:"behoben",text:"Logo-Badge oben rechts zeigt jetzt dasselbe Brand-Logo wie das linke Header-Logo â endlich mit Löwe + Schriftzug"},{type:"behoben",text:"Top-3-Aufgabe abhaken: Punkte werden jetzt korrekt gezählt, Aufgabe verschwindet wie sie soll"},{type:"behoben",text:"Erledigt-Häkchen sprang nach Konfetti wieder zurück: Datenbank-Verlauf speichert Completed/Reopened jetzt korrekt"}
327,{type:"verbessert",text:"Konfetti verschwindet schneller (1,5 s statt 3 s) und respektiert Reduced-Motion"}]},{version:"4.0.0",date:"2026-05-28",title:"Wiederkehrer sichtbar, Tooltips überall, 15 neue Auszeichnungen + 10 neue Stufen",changes:[{type:"neu",text:"Wiederkehrende Aufgaben werden im Kalender direkt angezeigt â auch zukünftige"},{type:"neu",text:"Bei täglichen Routinen kannst Du das Wochenende ein- oder ausschlieÃen"},{type:"neu",text:"Tooltips auf allen Icons â einmal drüberfahren reicht"},{type:"neu",text:"15 weitere Achievements â jetzt insgesamt 41 zum Freischalten"},{type:"neu",text:"10 neue Heldenstufen â jetzt 30 Stufen bis zur Legende"},{type:"verbessert",text:"Auth-Routing: Eingeloggte landen direkt im Cockpit, Ausgeloggte auf der Ãbersicht"},{type:"behoben",text:"Logo-Badge rechts neben Abmelden zeigte nur den Schriftzug â jetzt komplett mit Löwe"}]},{version:"3.9.1",date:"2026-05-28",title:"Direkt zur Ãber-Seite + kleine Bugfixes",changes:[{type:"verbessert",text:"Aufruf der Domain führt jetzt immer direkt zur Ãber-Seite (/about) â mehr Kontext für neue Besucher"},{type:"neu",text:"Cockpit ist jetzt direkt unter /cockpit erreichbar (Bookmark-fähig)"},{type:"behoben",text:"Logo oben rechts im Cockpit-Header wieder korrekt sichtbar (Z-Mark + Schriftzug statt leerer Box)"},{type:"behoben",text:"Ungewollte Weiterleitung zur Login-Seite bei zweitem Besuch der Domain entfernt"}]},{version:"3.9.0",date:"2026-05-28",title:"15 neue Achievements, Konfetti und ein Handbuch",changes:[{type:"neu",text:"15 neue Achievements â darunter 5 sehr harte Endgame-Auszeichnungen"},{type:"neu",text:"Konfetti beim Abhaken wichtiger Aufgaben (mit Sound-Toggle)"},{type:"neu",text:"Streak-Bonus alle 7 Tage (+50 Punkte), bei 30 (+200), bei 100 (+500)"},{type:"neu",text:"Handbuch / Funktionsübersicht â jede Funktion mit Was, Wie und Idee dahinter"}]},{version:"3.8.0",date:"2026-05-28",title:"Trello-Power: Kanban, Anhänge, Verlauf",changes:[{type:"neu",text:"Kanban-Spaltenansicht in Projekte (Liste / Kanban-Toggle)"},{type:"neu",text:"Dateianhänge an Aufgaben (Bilder, PDFs bis 10 MB)"},{type:"neu",text:"Aktivitätsverlauf pro Aufgabe (wer hat was wann geändert)"}]},{version:"3.7.0",date:"2026-05-28",title:"Team, Kollaboration und Feedback",changes:[{type:"neu",text:"Workspace-Einladungen gehen automatisch per Mail raus (Resend)"},{type:"neu",text:"Checklisten / Schritte pro Aufgabe mit Fortschritts-Badge"},{type:"neu",text:"Kommentare an Aufgaben (Chat-artig pro To-do)"},{type:"neu",text:"Feedback / Bug / Wunsch-Button unten rechts â direkt an Daniel"},{type:"verbessert",text:"Impressum, Datenschutz, Disclaimer mit vollständigen Liebe-Zeitarbeit-Daten"},{type:"verbessert",text:"Footer-Link zu liebezeitarbeit.com"}]},{version:"3.6.1",date:"2026-05-28",title:"About-Seite mit echten Screenshots",changes:[{type:"neu",text:`Echte App-Screenshots unter "So funktioniert's" (Aufgaben eintragen, Punkte sammeln, Belohnungen einlösen)`},{type:"neu",text:'Foto von Daniel Müller in der "Wer steckt dahinter?"-Box'},{type:"verbessert",text:"Bio-Avatar von Initialen auf echtes Profilbild umgestellt"}]},{version:"3.6.0",date:"2026-05-28",title:"Teamfähig, planbar und rechtssicher",changes:[{type:"neu",text:"Kalender-Ansicht (Monat + Woche)"},{type:"neu",text:"Wiederkehrende Aufgaben (täglich/wöchentlich/monatlich)"},{type:"neu",text:"Rollen / Zuständigkeiten (Chef, Assistenz, Marketing, Buchhaltung, eigene)"},{type:"neu",text:"Workspaces für Teams â Mitglieder einladen, Aufgaben zuweisen"},{type:"neu",text:"Ranking mit Top-10 und eigener Position"},{type:"neu",text:"Impressum, Datenschutz, Disclaimer"},{type:"neu",text:"Pagination â 10 Aufgaben pro Seite"},{type:"neu",text:"Zurück-Button in Untermenüs"},{type:"neu",text:"Changelog / Was ist neu (genau diese Ansicht)"},{type:"verbessert",text:"SEO-Optimierung, Open-Graph-Tags, Sitemap"},{type:"behoben",text:"Logo-Badge rechts neben Abmelden wurde abgeschnitten"}]},{version:"3.4.0",date:"2026-05-28",title:"Voice, Datum und bearbeitbare To-dos",changes:[{type:"neu",text:"To-dos sind bearbeitbar (Klick auf Text oder Pencil)"},{type:"neu",text:"Voice-Eingabe per Mikrofon (Web Speech API)"},{type:"neu",text:"Optionales Fälligkeitsdatum pro To-do mit farbiger Markierung"},{type:"neu",text:"Statistik: heute neu angelegte Aufgaben + 7-Tage-Verlauf"},{type:"neu",text:"Handynummer-Pop-up für Push-Benachrichtigungen (DSGVO-konform)"},{type:"behoben",text:"Liebe-Zeitarbeit-Logo wurde im Header abgeschnitten"}]},{version:"3.0.0",date:"2026-05-27",title:"Erste öffentliche Version",changes:[{type:"neu",text:"Gamifiziertes To-do-Tool mit 20 Heldenstufen"},{type:"neu",text:"Punkte, Achievements und Belohnungen"},{type:"neu",text:"Streak-Tracking + Tages-Highlight"}
327,{type:"neu",text:"Mobile-PWA für iPhone und Desktop"},{type:"neu",text:"White-Label-Branding (Farben + Logo)"}]}];Cr[0].version;const wh={neu:"bg-emerald-500/15 text-emerald-700 dark:text-emerald-300 border-emerald-500/30",verbessert:"bg-primary/15 text-primary border-primary/30",behoben:"bg-orange-500/15 text-orange-700 dark:text-orange-300 border-orange-500/30"},Vo={neu:"Neu",verbessert:"Verbessert",behoben:"Behoben"};function jh({type:e}){return t.jsx("span",{className:`shrink-0 inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-semibold uppercase tracking-wide border ${wh[e]}`,children:Vo[e]})}const Ya=["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"];function Nh(e){const[n,r]=e.split("-"),s=Number(r)-1;return!n||Number.isNaN(s)||!Ya[s]?e:`${Ya[s]} ${n}`}function Uo(e){const n=new Date(e);return Number.isNaN(n.getTime())?e:n.toLocaleDateString("de-DE",{day:"numeric",month:"long",year:"numeric"})}function Sh({rel:e}){return t.jsxs("div",{className:"rounded-lg border border-border bg-card p-3",children:[t.jsxs("div",{className:"flex items-baseline flex-wrap gap-x-2 gap-y-1",children:[t.jsxs("span",{className:"font-display text-lg font-bold",children:["v",e.version]}),t.jsx("span",{className:"text-xs text-muted-foreground tabular-nums",children:Uo(e.date)})]}),t.jsx("p",{className:"font-medium mt-0.5 mb-2",children:e.title}),t.jsx(qo,{changes:e.changes})]})}function qo({changes:e}){return t.jsx("ul",{className:"space-y-1.5",children:e.map((n,r)=>t.jsxs("li",{className:"flex items-start gap-2 text-sm",children:[t.jsx(jh,{type:n.type}),t.jsx("span",{className:"leading-snug pt-0.5 [overflow-wrap:anywhere]",children:n.text})]},r))})}function Dh({open:e,onOpenChange:n}){var l;const[r,s]=c.useState("alle"),a=c.useMemo(()=>{const o=[];for(const d of Cr){const u=r==="alle"?d.changes:d.changes.filter(v=>v.type===r);if(u.length===0)continue;const h=Nh(d.date),g=o[o.length-1],p={...d,changes:u};g&&g.label===h?g.releases.push(p):o.push({label:h,releases:[p]})}return o},[r]),i=(l=Cr[0])==null?void 0:l.version;return t.jsx(Ne,{open:e,onOpenChange:n,children:t.jsxs(De,{className:"max-w-lg max-h-[85vh] flex flex-col",children:[t.jsxs(Ce,{children:[t.jsxs(Ae,{className:"flex items-center gap-2 font-display",children:[t.jsx(Qn,{className:"h-5 w-5 text-primary"}),"Alle Neuerungen"]}),t.jsx(st,{children:"Komplette Versionshistorie â nach Monat sortiert, neueste zuerst."})]}),t.jsx("div",{className:"flex flex-wrap gap-1.5",children:["alle","neu","verbessert","behoben"].map(o=>t.jsx(S,{size:"sm",variant:r===o?"default":"outline",className:"h-8 rounded-full px-3 text-xs",onClick:()=>s(o),children:o==="alle"?"Alle":Vo[o]},o))}),t.jsxs("div",{className:"overflow-y-auto -mx-1 px-1 space-y-5 pb-2",children:[a.length===0&&t.jsx("p",{className:"text-sm text-muted-foreground py-6 text-center",children:"Keine Einträge für diesen Filter."}),a.map(o=>t.jsxs("section",{children:[t.jsx("h4",{className:"section-title text-sm uppercase tracking-wide text-muted-foreground mb-2",children:o.label}),t.jsx(pd,{type:"single",collapsible:!0,defaultValue:o.releases.some(d=>d.version===i)?i:void 0,className:"w-full",children:o.releases.map(d=>t.jsxs(xd,{value:d.version,children:[t.jsx(bd,{className:"text-left py-3",children:t.jsxs("span",{className:"flex flex-wrap items-baseline gap-x-2 gap-y-0.5 pr-2",children:[t.jsxs("span",{className:"font-display font-bold",children:["v",d.version]}),t.jsx("span",{className:"text-xs text-muted-foreground tabular-nums",children:Uo(d.date)}),t.jsx("span",{className:"text-sm font-medium",children:d.title})]})}),t.jsx(vd,{children:t.jsx(qo,{changes:d.changes})})]},d.version))})]},o.label))]})]})})}function _h({open:e,onOpenChange:n}){const[r,s]=c.useState(!1),a=Cr[0];return t.jsxs(t.Fragment,{children:[t.jsx(Ne,{open:e,onOpenChange:n,children:t.jsxs(De,{className:"max-w-lg max-h-[85vh] overflow-y-auto",children:[t.jsxs(Ce,{children:[t.jsxs(Ae,{className:"flex items-center gap-2 font-display",children:[t.jsx(Qn,{className:"h-5 w-5 text-primary"}),"Was ist neu?"]}),t.jsx(st,{children:"Die aktuelle Version von Fokus Cockpit â die komplette Historie findest Du darunter."})]}),t.jsxs("div",{className:"space-y-3 mt-1",children:[a&&t.jsx(Sh,{rel:a}),t.jsx(S,{variant:"outline",className:"w-full",onClick:()=>s(!0),children:"Alle Neuerungen ansehen"})]})]})}),t.jsx(Dh,{open:r,onOpenChange:s})]})}const tn={primary:"#414CA8",accent:"#F14B1B",hero:"#1A1A2E",logoUrl:"",appName:"FOKUS Cockpit",subt
327itle:"Fokus . Macht . Cashflow"},Go=c.createContext({...tn,lzHiddenUntil:null,lzHidden:!1});function os(e){const n=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e.trim());if(!n)return null;let r=parseInt(n[1],16)/255,s=parseInt(n[2],16)/255,a=parseInt(n[3],16)/255;const i=Math.max(r,s,a),l=Math.min(r,s,a);let o=0,d=0;const u=(i+l)/2;if(i!==l){const h=i-l;switch(d=u>.5?h/(2-i-l):h/(i+l),i){case r:o=(s-a)/h+(s<a?6:0);break;case s:o=(a-r)/h+2;break;case a:o=(r-s)/h+4;break}o/=6}return`${Math.round(o*360)} ${Math.round(d*100)}% ${Math.round(u*100)}%`}function Mh({children:e}){const{profile:n}=de(),r=n.data,s=c.useMemo(()=>{const a=(r==null?void 0:r.lz_branding_hidden_until)??null,i=a?new Date(a):null,l=!!(i&&i.getTime()>Date.now());return{primary:(r==null?void 0:r.brand_primary)||tn.primary,accent:(r==null?void 0:r.brand_accent)||tn.accent,hero:(r==null?void 0:r.brand_hero)||tn.hero,logoUrl:(r==null?void 0:r.brand_logo_url)||"",appName:(r==null?void 0:r.brand_app_name)||tn.appName,subtitle:(r==null?void 0:r.brand_subtitle)||tn.subtitle,lzHiddenUntil:i,lzHidden:l}},[r]);return c.useEffect(()=>{const a=document.documentElement,i=os(s.primary),l=os(s.accent),o=os(s.hero);return i&&(a.style.setProperty("--primary",i),a.style.setProperty("--ring",i)),l&&a.style.setProperty("--accent",l),o&&a.style.setProperty("--hero",o),a.style.setProperty("--gradient-brand",`linear-gradient(135deg, ${s.primary}, ${s.accent})`),a.style.setProperty("--gradient-hero",`linear-gradient(135deg, ${s.hero}, ${s.primary})`),()=>{a.style.removeProperty("--primary"),a.style.removeProperty("--ring"),a.style.removeProperty("--accent"),a.style.removeProperty("--hero"),a.style.removeProperty("--gradient-brand"),a.style.removeProperty("--gradient-hero")}},[s.primary,s.accent,s.hero]),t.jsx(Go.Provider,{value:s,children:e})}const Ch=()=>c.useContext(Go),Ah="https://xsvtrossxkuwleagtjcs.supabase.co/storage/v1/object/public/user-logos/587d38e4-4031-46ea-a333-d1879bcf4c69/logo-1779908635970.png";function zh({hidden:e=!1,size:n=40}){return e?null:t.jsxs(xe,{children:[t.jsx(be,{asChild:!0,children:t.jsx("a",{href:"https://liebezeitarbeit.com",target:"_blank",rel:"noopener noreferrer","aria-label":"Powered by Daniel Müller â Liebe Zeitarbeit",className:"inline-flex shrink-0 items-center hover:opacity-90 transition",children:t.jsx(Li,{imageUrl:Ah,size:n})})}),t.jsx(ve,{children:"Powered by Daniel Müller â Liebe Zeitarbeit"})]})}function Th(){const{workspaces:e,activeWorkspace:n,setActiveWorkspaceId:r}=Bi();return e.length===0?null:t.jsxs(ha,{children:[t.jsx(ma,{asChild:!0,children:t.jsxs(S,{size:"sm",variant:"ghost",className:"text-hero-foreground hover:bg-white/10 h-8 px-2 gap-1.5",children:[n?t.jsx($a,{className:"h-3.5 w-3.5"}):t.jsx(As,{className:"h-3.5 w-3.5"}),t.jsx("span",{className:"text-[11px] truncate max-w-[100px]",children:(n==null?void 0:n.name)??"Persönlich"}),t.jsx(Id,{className:"h-3 w-3 opacity-60"})]})}),t.jsxs(Gr,{align:"start",className:"w-56",children:[t.jsx(Mr,{children:"Bereich wechseln"}),t.jsxs(Ve,{onClick:()=>r(null),children:[t.jsx(As,{className:"h-4 w-4 mr-2"})," Persönlich"]}),t.jsx(Vn,{}),e.map(s=>t.jsxs(Ve,{onClick:()=>r(s.id),children:[t.jsx($a,{className:"h-4 w-4 mr-2"})," ",s.name]},s.id))]})]})}function Ph(){const e=new Date;return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`}function wt(e){if(!e)return null;const[n,r,s]=e.split("-").map(Number);return!n||!r||!s?null:new Date(n,r-1,s)}function pr(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`}function un(e){const n=new Date(e);return n.setHours(0,0,0,0),n}function At(e){const n=wt(e);return n?un(n).getTime()===un(new Date).getTime():!1}function et(e){const n=wt(e);return n?un(n).getTime()<un(new Date).getTime():!1}function Zo(e){const n=wt(e);if(!n)return!1;const r=un(new Date),s=n.getTime();if(s<=r.getTime())return!1;const a=(r.getDay()+6)%7,i=new Date(r);return i.setDate(r.getDate()+(6-a)),s<=un(i).getTime()}function Eh(e){const n=wt(e);return n?n.toLocaleDateString("de-DE",{day:"2-digit",month:"2-digit",year:"numeric"}):""}function Yo(e){const n=wt(e);return n?n.toLocaleDateString("de-DE",{weekday:"short",day:"numeric",month:"long"}):""}function Un(e){return Math.floor((Date.now()-new Date(e).getTime())/864e5)}function Rn(e){const n=new Date(e);return n.setHours(0,0,0,0),n}function qn(e){if(!e)return null;const[n,r,s]=e.split("-").map(Number);return!n||!r||!s?null:new Date(n,r-1,s)}function Ja(e,n){return new Date(e,n+1,0).getDate()}function Qa(e,n){return Math.round((Rn(n).getTime()-Rn(e).getTime())/864e5)}function Rh(e,n){return(n.getFullYear()-e.getFullYear())*12+(n.getMonth()-e.getMonth())}function Ih(e,n){if(!e)return!1;const r=Rn(n),s=Math.max(1,e.interval??1),a=Rn(qn(e.start_date)??r);if(r.getTime()<a.getTime())return!1;const i=qn(e.end_until);if(e.end_kind==="until"&&i&&r.getTime()>Rn(i).getTime())return!1;const l=r.getDay();if(e.mode==="daily")return e.include_weekend===!1&&(l===0||l===6)?!1:Qa(a,r)%s===0;
327if(e.mode==="weekly"){if(Math.floor(Qa(a,r)/7)%s!==0)return!1;const d=e.weekdays??[];return d.length===0?!1:d.includes(l)}if(e.mode==="monthly"){if(Rh(a,r)%s!==0)return!1;const o=r.getDate(),d=Ja(r.getFullYear(),r.getMonth());if(e.last_day_of_month&&o===d)return!0;const u=e.day_of_month??1,h=Math.min(u,d);return o===h}if(e.mode==="yearly"){const o=r.getFullYear()-a.getFullYear();if(o<0||o%s!==0)return!1;const d=(e.month_of_year??1)-1;if(r.getMonth()!==d)return!1;const u=Ja(r.getFullYear(),d),h=e.day_of_month??1,g=Math.min(h,u);return r.getDate()===g}return!1}const Oh=["So","Mo","Di","Mi","Do","Fr","Sa"],Fh=["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"];function $t(e){if(!e)return"Einmalig";const n=Math.max(1,e.interval??1);let r="";if(e.mode==="daily")r=n===1?e.include_weekend===!1?"Jeden Werktag (MoâFr)":"Täglich":`Alle ${n} Tage${e.include_weekend===!1?" (MoâFr)":""}`;else if(e.mode==="weekly"){const a=(e.weekdays??[]).slice().sort((l,o)=>(l+6)%7-(o+6)%7).map(l=>Oh[l]).join(", "),i=n===1?"Jede Woche":`Alle ${n} Wochen`;r=a?`${i} ${a}`:i}else if(e.mode==="monthly"){const a=[];e.day_of_month&&a.push(`am ${e.day_of_month}.`),e.last_day_of_month&&a.push("am letzten Tag");const i=a.length?a.join(" & "):"am 1.";r=n===1?`Monatlich ${i}`:`Alle ${n} Monate ${i}`}else if(e.mode==="yearly"){const a=e.day_of_month??1,i=Fh[(e.month_of_year??1)-1];r=n===1?`Jährlich am ${a}. ${i}`:`Alle ${n} Jahre am ${a}. ${i}`}let s="";if(e.end_shortcut&&e.end_kind==="until")s=` â für ${e.end_shortcut.n} ${e.end_shortcut.unit==="weeks"?"Wochen":"Monate"}`;else if(e.end_kind==="count"&&e.end_count)s=` â ${e.end_count}à insgesamt`;else if(e.end_kind==="until"&&e.end_until){const a=qn(e.end_until);a&&(s=` â bis ${a.toLocaleDateString("de-DE",{day:"2-digit",month:"2-digit",year:"numeric"})}`)}return r+s}function Ts(e){if(!e)return"";const n=Math.max(1,e.interval??1),s={daily:"täglich",weekly:"wöchentlich",monthly:"monatlich",yearly:"jährlich"}[e.mode]??"wiederkehrend";return n===1?s:`alle ${n} · ${s}`}function Xa(e,n){const r=qn(e)??new Date;return r.setDate(r.getDate()+n),`${r.getFullYear()}-${String(r.getMonth()+1).padStart(2,"0")}-${String(r.getDate()).padStart(2,"0")}`}function Bh(e,n){const r=qn(e)??new Date;return r.setMonth(r.getMonth()+n),`${r.getFullYear()}-${String(r.getMonth()+1).padStart(2,"0")}-${String(r.getDate()).padStart(2,"0")}`}let xr=0;function ei(){xr>0?Fa.setFocused(!1):Fa.setFocused(void 0)}function Jo(e){c.useEffect(()=>{if(e)return xr+=1,ei(),()=>{xr=Math.max(0,xr-1),ei()}},[e])}const Ar=new Map;function Wh(e,n){n==null?Ar.delete(e):Ar.set(e,n)}function Lh(e){return Ar.get(e)??null}function ls(e){Ar.delete(e)}function jt({open:e}){return Jo(e),null}const vt=c.forwardRef(({className:e,...n},r)=>t.jsx("textarea",{className:Q("flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm r
327ing-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",e),ref:r,...n}));vt.displayName="Textarea";const fa=6048e5,Hh=864e5,ur=43200,ti=1440,ni=Symbol.for("constructDateFrom");function Te(e,n){return typeof e=="function"?e(n):e&&typeof e=="object"&&ni in e?e[ni](n):e instanceof Date?new e.constructor(n):new Date(n)}function ce(e,n){return Te(n||e,e)}function We(e,n,r){const s=ce(e,r==null?void 0:r.in);return isNaN(n)?Te((r==null?void 0:r.in)||e,NaN):(n&&s.setDate(s.getDate()+n),s)}function nt(e,n,r){const s=ce(e,r==null?void 0:r.in);if(isNaN(n))return Te((r==null?void 0:r.in)||e,NaN);if(!n)return s;const a=s.getDate(),i=Te((r==null?void 0:r.in)||e,s.getTime());i.setMonth(s.getMonth()+n+1,0);const l=i.getDate();return a>=l?i:(s.setFullYear(i.getFullYear(),i.getMonth(),a),s)}let Kh={};function yn(){return Kh}function dt(e,n){var o,d,u,h;const r=yn(),s=(n==null?void 0:n.weekStartsOn)??((d=(o=n==null?void 0:n.locale)==null?void 0:o.options)==null?void 0:d.weekStartsOn)??r.weekStartsOn??((h=(u=r.locale)==null?void 0:u.options)==null?void 0:h.weekStartsOn)??0,a=ce(e,n==null?void 0:n.in),i=a.getDay(),l=(i<s?7:0)+i-s;return a.setDate(a.getDate()-l),a.setHours(0,0,0,0),a}function Vt(e,n){return dt(e,{...n,weekStartsOn:1})}function Qo(e,n){const r=ce(e,n==null?void 0:n.in),s=r.getFullYear(),a=Te(r,0);a.setFullYear(s+1,0,4),a.setHours(0,0,0,0);const i=Vt(a),l=Te(r,0);l.setFullYear(s,0,4),l.setHours(0,0,0,0);const o=Vt(l);return r.getTime()>=i.getTime()?s+1:r.getTime()>=o.getTime()?s:s-1}function hn(e){const n=ce(e),r=new Date(Date.UTC(n.getFullYear(),n.getMonth(),n.getDate(),n.getHours(),n.getMinutes(),n.getSeconds(),n.getMilliseconds()));return r.setUTCFullYear(n.getFullYear()),+e-+r}function Rt(e,...n){const r=Te.bind(null,e||n.find(s=>typeof s=="object"));return n.map(r)}function mn(e,n){const r=ce(e,n==null?void 0:n.in);return r.setHours(0,0,0,0),r}function lt(e,n,r){const[s,a]=Rt(r==null?void 0:r.in,e,n),i=mn(s),l=mn(a),o=+i-hn(i),d=+l-hn(l);return Math.round((o-d)/Hh)}function $h(e,n){const r=Qo(e,n),s=Te(e,0);return s.setFullYear(r,0,4),s.setHours(0,0,0,0),Vt(s)}function Ps(e,n,r){return We(e,n*7,r)}function Vh(e,n,r){return nt(e,n*12,r)}function Uh(e,n){let r,s=n==null?void 0:n.in;return e.forEach(a=>{!s&&typeof a=="object"&&(s=Te.bind(null,a));const i=ce(a,s);(!r||r<i||isNaN(+i))&&(r=i)}),Te(s,r||NaN)}function qh(e,n){let r,s=n==null?void 0:n.in;return e.forEach(a=>{!s&&typeof a=="object"&&(s=Te.bind(null,a));const i=ce(a,s);(!r||r>i||isNaN(+i))&&(r=i)}),Te(s,r||NaN)}function br(e,n){const r=+ce(e)-+ce(n);return r<0?-1:r>0?1:r}function Gh(e){return Te(e,Date.now())}function Ke(e,n,r){const[s,a]=Rt(r==null?void 0:r.in,e,n);return+mn(s)==+mn(a)}function ga(e){return e instanceof Date||typeof e=="object"&&Object.prototype.toString.call(e)==="[object Date]"}function Zh(e){return!(!ga(e)&&typeof e!="number"||isNaN(+ce(e)))}function fn(e,n,r){const[s,a]=Rt(r==null?void 0:r.in,e,n),i=s.getFullYear()-a.getFullYear(),l=s.getMonth()-a.getMonth();return i*12+l}function Yh(e,n,r){const[s,a]=Rt(r==null?void 0:r.in,e,n),i=dt(s,r),l=dt(a,r),o=+i-hn(i),d=+l-hn(l);return Math.round((o-d)/fa)}function Jh(e){return n=>{const s=(e?Math[e]:Math.trunc)(n);return s===0?0:s}}function Qh(e,n){return+ce(e)-+ce(n)}function Xh(e,n){const r=ce(e,n==null?void 0:n.in);return r.setHours(23,59,59,999),r}function Zr(e,n){const r=ce(e,n==null?void 0:n.in),s=r.getMonth();return r.setFullYear(r.getFullYear(),s+1,0),r.setHours(23,59,59,999),r}function em(e,n){const r=ce(e,n==null?void 0:n.in);return+Xh(r,n)==+Zr(r,n)}function tm(e,n,r){const[s,a,i]=Rt(r==null?void 0:r.in,e,e,n),l=br(a,i),o=Math.abs(fn(a,i));if(o<1)return 0;a.getMonth()===1&&a.getDate()>27&&a.setDate(30),a.setMonth(a.getMonth()-l*o);let d=br(a,i)===-l;em(s)&&o===1&&br(s,i)===1&&(d=!1);const u=l*(o-+d);return u===0?0:u}function nm(e,n,r){const s=Qh(e,n)/1e3;return Jh(r==null?void 0:r.roundingMethod)(s)}function $e(e,n){const r=ce(e,n==null?void 0:n.in);return r.setDate(1),r.setHours(0,0,0,0),r}function Xo(e,n){const r=ce(e,n==null?void 0:n.in);return r.setFullYear(r.getFullYear(),0,1),r.setHours(0,0,0,0),r}function pa(e,n){var o,d,u,h;const r=yn(),s=(n==null?void 0:n.weekStartsOn)??((d=(o=n==null?void 0:n.locale)==null?void 0:o.options)==null?void 0:d.weekStartsOn)??r.weekStartsOn??((h=(u=r.locale)==null?void 0:u.options)==null?void 0:h.weekStartsOn)??0,a=ce(e,n==null?void 0:n.in),i=a.getDay(),l=(i<s?-7:0)+6-(i-s);return a.setDate(a.getDate()+l),a.setHours(23,59,59,999),a}function el(e,n){return pa(e,{...n,weekStartsOn:1}
vendor: 8,120 bytes, line 327
327)}const rm={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},sm=(e,n,r)=>{let s;const a=rm[e];return typeof a=="string"?s=a:n===1?s=a.one:s=a.other.replace("{{count}}",n.toString()),r!=null&&r.addSuffix?r.comparison&&r.comparison>0?"in "+s:s+" ago":s};function sn(e){return(n={})=>{const r=n.width?String(n.width):e.defaultWidth;return e.formats[r]||e.formats[e.defaultWidth]}}const am={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},im={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},om={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},lm={date:sn({formats:am,defaultWidth:"full"}),time:sn({formats:im,defaultWidth:"full"}),dateTime:sn({formats:om,defaultWidth:"full"})},cm={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},dm=(e,n,r,s)=>cm[e];function it(e){return(n,r)=>{const s=r!=null&&r.context?String(r.context):"standalone";let a;if(s==="formatting"&&e.formattingValues){const l=e.defaultFormattingWidth||e.defaultWidth,o=r!=null&&r.width?String(r.width):l;a=e.formattingValues[o]||e.formattingValues[l]}else{const l=e.defaultWidth,o=r!=null&&r.width?String(r.width):e.defaultWidth;a=e.values[o]||e.values[l]}const i=e.argumentCallback?e.argumentCallback(n):n;return a[i]}}const um={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},hm={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},mm={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},fm={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},gm={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},pm={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},xm=(e,n)=>{const r=Number(e),s=r%100;if(s>20||s<10)switch(s%10){case 1:return r+"st";case 2:return r+"nd";case 3:return r+"rd"}return r+"th"},bm={ordinalNumber:xm,era:it({values:um,defaultWidth:"wide"}),quarter:it({values:hm,defaultWidth:"wide",argumentCallback:e=>e-1}),month:it({values:mm,defaultWidth:"wide"}),day:it({values:fm,defaultWidth:"wide"}),dayPeriod:it({values:gm,defaultWidth:"wide",formattingValues:pm,defaultFormattingWidth:"wide"})};function ot(e){return(n,r={})=>{const s=r.width,a=s&&e.matchPatterns[s]||e.matchPatterns[e.defaultMatchWidth],i=n.match(a);if(!i)return null;const l=i[0],o=s&&e.parsePatterns[s]||e.parsePatterns[e.defaultParseWidth],d=Array.isArray(o)?ym(o,g=>g.test(l)):vm(o,g=>g.test(l));let u;u=e.valueCallback?e.valueCallback(d):d,u=r.valueCallback?r.valueCallback(u):u;const h=n.slice(l.length);return{value:u,rest:h}}}function vm(e,n){for(const r in e)if(Object.prototype.hasOwnProperty.call(e,r)&&n(e[r]))return r}function ym(e,n){for(let r=0;r<e.length;r++)if(n(e[r]))return r}function tl(e){return(n,r={})=>{const s=n.match(e.matchPattern);if(!s)return null;const a=s[0],i=n.match(e.parsePattern);if(!i)return null;let l=e.valueCallback?e.valueCallback(i[0]):i[0];l=r.valueCallback?r.valueCallback(l):l;const o=n.slice(a.length);return{value:l,rest:o}}}const km=/^(\d+)(th|st|nd|rd)?/i,wm=/\d+/i,jm={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},Nm={any:[/^b/i,/^(a|c)/i]},Sm={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},Dm={any:[/1/i,/2/i,/3/i,/4/i]},_m={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},Mm={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},Cm={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},Am={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},zm={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},Tm={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},Pm={ordinalNumber:tl({matchPattern:km,parsePattern:wm,valueCallback:e=>parseInt(e,10)}),era:ot({matchPatterns:jm,defaultMatchWidth:"wide",parsePatterns:Nm,defaultParseWidth:"any"}),quarter:ot({matchPatterns:Sm,defaultMatchWidth:"wide",parsePatterns:Dm,defaultParseWidth:"any",valueCallback:e=>e+1}),month:ot({matchPatterns:_m,defaultMatchWidth:"wide",parsePatterns:Mm,defaultParseWidth:"any"}),day:ot({matchPatterns:Cm,defaultMatchWidth:"wide",parsePatterns:Am,defaultParseWidth:"any"}),dayPeriod:ot({matchPatterns:zm,defaultMatchWidth:"any",parsePatterns:Tm,defaultParseWidth:"any"})},xa={code:"en-US",formatDistance:sm,formatLong:lm,formatRelative:dm,localize:bm,match:Pm,options:{weekStartsOn:0,firstWeekContainsDate:1}};function Em(e,n){const r=ce(e,n==null?void 0:n.in);return lt(r,Xo(r))+1}function nl(e,n){const r=ce(e,n==null?void 0:n.in),s=+Vt(r)-+$h(r);return Math.round(s/fa)+1}function rl(e,n){var h,g,p,v;const r=ce(e,n==null?void 0:n.in),s=r.getFullYear(),a=yn(),i=(n==null?void 0:n.firstWeekContainsDate)??((g=(h=n==null?void 0:n.locale)==null?void 0:h.options)==null?void 0:g.firstWeekContainsDate)??a.firstWeekContainsDate??((v=(p=a.locale)==null?void 0:p.options)==null?void 0:v.firstWeekContainsDate)??1,l=Te((n==null?void 0:n.in)||e,0);l.setFullYear(s+1,0,i),l.setHours(0,0,0,0);const o=dt(l,n),d=Te((n==null?void 0:n.in)||e,0);d.setFullYear(s,0,i),d.setHours(0,0,0,0);const u=dt(d,n);return+r>=+o?s+1:+r>=+u?s:s-1}function Rm(e,n){var o,d,u,h;const r=yn(),s=(n==null?void 0:n.firstWeekContainsDate)??((d=(o=n==null?void 0:n.locale)==null?void 0:o.options)==null?void 0:d.firstWeekContainsDate)??r.firstWeekContainsDate??((h=(u=r.locale)==null?void 0:u.options)==null?void 0:h.firstWeekContainsDate)??1,a=rl(e,n),i=Te
vendor: 4,342 bytes, line 327
327((n==null?void 0:n.in)||e,0);return i.setFullYear(a,0,s),i.setHours(0,0,0,0),dt(i,n)}function sl(e,n){const r=ce(e,n==null?void 0:n.in),s=+dt(r,n)-+Rm(r,n);return Math.round(s/fa)+1}function fe(e,n){const r=e<0?"-":"",s=Math.abs(e).toString().padStart(n,"0");return r+s}const _t={y(e,n){const r=e.getFullYear(),s=r>0?r:1-r;return fe(n==="yy"?s%100:s,n.length)},M(e,n){const r=e.getMonth();return n==="M"?String(r+1):fe(r+1,2)},d(e,n){return fe(e.getDate(),n.length)},a(e,n){const r=e.getHours()/12>=1?"pm":"am";switch(n){case"a":case"aa":return r.toUpperCase();case"aaa":return r;case"aaaaa":return r[0];case"aaaa":default:return r==="am"?"a.m.":"p.m."}},h(e,n){return fe(e.getHours()%12||12,n.length)},H(e,n){return fe(e.getHours(),n.length)},m(e,n){return fe(e.getMinutes(),n.length)},s(e,n){return fe(e.getSeconds(),n.length)},S(e,n){const r=n.length,s=e.getMilliseconds(),a=Math.trunc(s*Math.pow(10,r-3));return fe(a,n.length)}},en={am:"am",pm:"pm",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},ri={G:function(e,n,r){const s=e.getFullYear()>0?1:0;switch(n){case"G":case"GG":case"GGG":return r.era(s,{width:"abbreviated"});case"GGGGG":return r.era(s,{width:"narrow"});case"GGGG":default:return r.era(s,{width:"wide"})}},y:function(e,n,r){if(n==="yo"){const s=e.getFullYear(),a=s>0?s:1-s;return r.ordinalNumber(a,{unit:"year"})}return _t.y(e,n)},Y:function(e,n,r,s){const a=rl(e,s),i=a>0?a:1-a;if(n==="YY"){const l=i%100;return fe(l,2)}return n==="Yo"?r.ordinalNumber(i,{unit:"year"}):fe(i,n.length)},R:function(e,n){const r=Qo(e);return fe(r,n.length)},u:function(e,n){const r=e.getFullYear();return fe(r,n.length)},Q:function(e,n,r){const s=Math.ceil((e.getMonth()+1)/3);switch(n){case"Q":return String(s);case"QQ":return fe(s,2);case"Qo":return r.ordinalNumber(s,{unit:"quarter"});case"QQQ":return r.quarter(s,{width:"abbreviated",context:"formatting"});case"QQQQQ":return r.quarter(s,{width:"narrow",context:"formatting"});case"QQQQ":default:return r.quarter(s,{width:"wide",context:"formatting"})}},q:function(e,n,r){const s=Math.ceil((e.getMonth()+1)/3);switch(n){case"q":return String(s);case"qq":return fe(s,2);case"qo":return r.ordinalNumber(s,{unit:"quarter"});case"qqq":return r.quarter(s,{width:"abbreviated",context:"standalone"});case"qqqqq":return r.quarter(s,{width:"narrow",context:"standalone"});case"qqqq":default:return r.quarter(s,{width:"wide",context:"standalone"})}},M:function(e,n,r){const s=e.getMonth();switch(n){case"M":case"MM":return _t.M(e,n);case"Mo":return r.ordinalNumber(s+1,{unit:"month"});case"MMM":return r.month(s,{width:"abbreviated",context:"formatting"});case"MMMMM":return r.month(s,{width:"narrow",context:"formatting"});case"MMMM":default:return r.month(s,{width:"wide",context:"formatting"})}},L:function(e,n,r){const s=e.getMonth();switch(n){case"L":return String(s+1);case"LL":return fe(s+1,2);case"Lo":return r.ordinalNumber(s+1,{unit:"month"});case"LLL":return r.month(s,{width:"abbreviated",context:"standalone"});case"LLLLL":return r.month(s,{width:"narrow",context:"standalone"});case"LLLL":default:return r.month(s,{width:"wide",context:"standalone"})}},w:function(e,n,r,s){const a=sl(e,s);return n==="wo"?r.ordinalNumber(a,{unit:"week"}):fe(a,n.length)},I:function(e,n,r){const s=nl(e);return n==="Io"?r.ordinalNumber(s,{unit:"week"}):fe(s,n.length)},d:function(e,n,r){return n==="do"?r.ordinalNumber(e.getDate(),{unit:"date"}):_t.d(e,n)},D:function(e,n,r){const s=Em(e);return n==="Do"?r.ordinalNumber(s,{unit:"dayOfYear"}):fe(s,n.length)},E:function(e,n,r){const s=e.getDay();switch(n){case"E":case"EE":case"EEE":return r.day(s,{width:"abbreviated",context:"formatting"});case"EEEEE":return r.day(s,{width:"narrow",context:"formatting"});case"EEEEEE":return r.day(s,{width:"short",context:"formatting"});case"EEEE":default:return r.day(s,{width:"wide",context:"formatting"})}},e:function(e,n,r,s){const a=e.getDay(),i=(a-s.weekStartsOn+8)%7||7;switch(n){case"e":return String(i);case"ee":return fe(i,2);case"eo":return r.ordinalNumber(i,{unit:"day"});case"eee":return r.day(a,{width:"abbreviated",context:"formatting"});case"eeeee":return r.day(a,{width:"narrow",context:"formatting"});case"eeeeee":return r.day(a,{width:"short",context:"formatting"});case"eeee":default:return r.day(a,{width:"wide",context:"formatting"})}}
vendor: 5,150 bytes, line 327
327,c:function(e,n,r,s){const a=e.getDay(),i=(a-s.weekStartsOn+8)%7||7;switch(n){case"c":return String(i);case"cc":return fe(i,n.length);case"co":return r.ordinalNumber(i,{unit:"day"});case"ccc":return r.day(a,{width:"abbreviated",context:"standalone"});case"ccccc":return r.day(a,{width:"narrow",context:"standalone"});case"cccccc":return r.day(a,{width:"short",context:"standalone"});case"cccc":default:return r.day(a,{width:"wide",context:"standalone"})}},i:function(e,n,r){const s=e.getDay(),a=s===0?7:s;switch(n){case"i":return String(a);case"ii":return fe(a,n.length);case"io":return r.ordinalNumber(a,{unit:"day"});case"iii":return r.day(s,{width:"abbreviated",context:"formatting"});case"iiiii":return r.day(s,{width:"narrow",context:"formatting"});case"iiiiii":return r.day(s,{width:"short",context:"formatting"});case"iiii":default:return r.day(s,{width:"wide",context:"formatting"})}},a:function(e,n,r){const a=e.getHours()/12>=1?"pm":"am";switch(n){case"a":case"aa":return r.dayPeriod(a,{width:"abbreviated",context:"formatting"});case"aaa":return r.dayPeriod(a,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return r.dayPeriod(a,{width:"narrow",context:"formatting"});case"aaaa":default:return r.dayPeriod(a,{width:"wide",context:"formatting"})}},b:function(e,n,r){const s=e.getHours();let a;switch(s===12?a=en.noon:s===0?a=en.midnight:a=s/12>=1?"pm":"am",n){case"b":case"bb":return r.dayPeriod(a,{width:"abbreviated",context:"formatting"});case"bbb":return r.dayPeriod(a,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return r.dayPeriod(a,{width:"narrow",context:"formatting"});case"bbbb":default:return r.dayPeriod(a,{width:"wide",context:"formatting"})}},B:function(e,n,r){const s=e.getHours();let a;switch(s>=17?a=en.evening:s>=12?a=en.afternoon:s>=4?a=en.morning:a=en.night,n){case"B":case"BB":case"BBB":return r.dayPeriod(a,{width:"abbreviated",context:"formatting"});case"BBBBB":return r.dayPeriod(a,{width:"narrow",context:"formatting"});case"BBBB":default:return r.dayPeriod(a,{width:"wide",context:"formatting"})}},h:function(e,n,r){if(n==="ho"){let s=e.getHours()%12;return s===0&&(s=12),r.ordinalNumber(s,{unit:"hour"})}return _t.h(e,n)},H:function(e,n,r){return n==="Ho"?r.ordinalNumber(e.getHours(),{unit:"hour"}):_t.H(e,n)},K:function(e,n,r){const s=e.getHours()%12;return n==="Ko"?r.ordinalNumber(s,{unit:"hour"}):fe(s,n.length)},k:function(e,n,r){let s=e.getHours();return s===0&&(s=24),n==="ko"?r.ordinalNumber(s,{unit:"hour"}):fe(s,n.length)},m:function(e,n,r){return n==="mo"?r.ordinalNumber(e.getMinutes(),{unit:"minute"}):_t.m(e,n)},s:function(e,n,r){return n==="so"?r.ordinalNumber(e.getSeconds(),{unit:"second"}):_t.s(e,n)},S:function(e,n){return _t.S(e,n)},X:function(e,n,r){const s=e.getTimezoneOffset();if(s===0)return"Z";switch(n){case"X":return ai(s);case"XXXX":case"XX":return Lt(s);case"XXXXX":case"XXX":default:return Lt(s,":")}},x:function(e,n,r){const s=e.getTimezoneOffset();switch(n){case"x":return ai(s);case"xxxx":case"xx":return Lt(s);case"xxxxx":case"xxx":default:return Lt(s,":")}},O:function(e,n,r){const s=e.getTimezoneOffset();switch(n){case"O":case"OO":case"OOO":return"GMT"+si(s,":");case"OOOO":default:return"GMT"+Lt(s,":")}},z:function(e,n,r){const s=e.getTimezoneOffset();switch(n){case"z":case"zz":case"zzz":return"GMT"+si(s,":");case"zzzz":default:return"GMT"+Lt(s,":")}},t:function(e,n,r){const s=Math.trunc(+e/1e3);return fe(s,n.length)},T:function(e,n,r){return fe(+e,n.length)}};function si(e,n=""){const r=e>0?"-":"+",s=Math.abs(e),a=Math.trunc(s/60),i=s%60;return i===0?r+String(a):r+String(a)+n+fe(i,2)}function ai(e,n){return e%60===0?(e>0?"-":"+")+fe(Math.abs(e)/60,2):Lt(e,n)}function Lt(e,n=""){const r=e>0?"-":"+",s=Math.abs(e),a=fe(Math.trunc(s/60),2),i=fe(s%60,2);return r+a+n+i}const ii=(e,n)=>{switch(e){case"P":return n.date({width:"short"});case"PP":return n.date({width:"medium"});case"PPP":return n.date({width:"long"});case"PPPP":default:return n.date({width:"full"})}},al=(e,n)=>{switch(e){case"p":return n.time({width:"short"});case"pp":return n.time({width:"medium"});case"ppp":return n.time({width:"long"});case"pppp":default:return n.time({width:"full"})}},Im=(e,n)=>{const r=e.match(/(P+)(p+)?/)||[],s=r[1],a=r[2];if(!a)return ii(e,n);let i;switch(s){case"P":i=n.dateTime({width:"short"});break;case"PP":i=n.dateTime({width:"medium"});break;case"PPP":i=n.dateTime({width:"long"});break;case"PPPP":default:i=n.dateTime({width:"full"});break}return i.replace("{{date}}",ii(s,n)).replace("{{time}}",al(a,n))},Om={p:al,P:Im},Fm=/^D+$/,Bm=/^Y+$/,Wm=["D","DD","YY","YYYY"];function Lm(e){return Fm.test(e)}function Hm(e){return Bm.test(e)}function Km(e,n,r){const s=$m(e,n,r);if(console.warn(s),Wm.includes(e))throw new RangeError(s)}function $m(e,n,r){const s=e[0]==="Y"?"years":"days of the month";return`Use \`${e.toLowerCase()}\` instead of \`${e}\` (in \`${n}\`) for formatting ${s} to the input \`${r}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}const Vm=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,Um=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,qm=/^'([^]*?)'?$/,Gm=/''/g,Zm=
327/[a-zA-Z]/;function ct(e,n,r){var h,g,p,v,f,m,w,x;const s=yn(),a=(r==null?void 0:r.locale)??s.locale??xa,i=(r==null?void 0:r.firstWeekContainsDate)??((g=(h=r==null?void 0:r.locale)==null?void 0:h.options)==null?void 0:g.firstWeekContainsDate)??s.firstWeekContainsDate??((v=(p=s.locale)==null?void 0:p.options)==null?void 0:v.firstWeekContainsDate)??1,l=(r==null?void 0:r.weekStartsOn)??((m=(f=r==null?void 0:r.locale)==null?void 0:f.options)==null?void 0:m.weekStartsOn)??s.weekStartsOn??((x=(w=s.locale)==null?void 0:w.options)==null?void 0:x.weekStartsOn)??0,o=ce(e,r==null?void 0:r.in);if(!Zh(o))throw new RangeError("Invalid time value");let d=n.match(Um).map(b=>{const y=b[0];if(y==="p"||y==="P"){const P=Om[y];return P(b,a.formatLong)}return b}).join("").match(Vm).map(b=>{if(b==="''")return{isToken:!1,value:"'"};const y=b[0];if(y==="'")return{isToken:!1,value:Ym(b)};if(ri[y])return{isToken:!0,value:b};if(y.match(Zm))throw new RangeError("Format string contains an unescaped latin alphabet character `"+y+"`");return{isToken:!1,value:b}});a.localize.preprocessor&&(d=a.localize.preprocessor(o,d));const u={firstWeekContainsDate:i,weekStartsOn:l,locale:a};return d.map(b=>{if(!b.isToken)return b.value;const y=b.value;(!(r!=null&&r.useAdditionalWeekYearTokens)&&Hm(y)||!(r!=null&&r.useAdditionalDayOfYearTokens)&&Lm(y))&&Km(y,n,String(e));const P=ri[y[0]];return P(o,y,a.localize,u)}).join("")}function Ym(e){const n=e.match(qm);return n?n[1].replace(Gm,"'"):e}function Jm(e,n,r){const s=yn(),a=(r==null?void 0:r.locale)??s.locale??xa,i=2520,l=br(e,n);if(isNaN(l))throw new RangeError("Invalid time value");const o=Object.assign({},r,{addSuffix:r==null?void 0:r.addSuffix,comparison:l}),[d,u]=Rt(r==null?void 0:r.in,...l>0?[n,e]:[e,n]),h=nm(u,d),g=(hn(u)-hn(d))/1e3,p=Math.round((h-g)/60);let v;if(p<2)return r!=null&&r.includeSeconds?h<5?a.formatDistance("lessThanXSeconds",5,o):h<10?a.formatDistance("lessThanXSeconds",10,o):h<20?a.formatDistance("lessThanXSeconds",20,o):h<40?a.formatDistance("halfAMinute",0,o):h<60?a.formatDistance("lessThanXMinutes",1,o):a.formatDistance("xMinutes",1,o):p===0?a.formatDistance("lessThanXMinutes",1,o):a.formatDistance("xMinutes",p,o);if(p<45)return a.formatDistance("xMinutes",p,o);if(p<90)return a.formatDistance("aboutXHours",1,o);if(p<ti){const f=Math.round(p/60);return a.formatDistance("aboutXHours",f,o)}else{if(p<i)return a.formatDistance("xDays",1,o);if(p<ur){const f=Math.round(p/ti);return a.formatDistance("xDays",f,o)}else if(p<ur*2)return v=Math.round(p/ur),a.formatDistance("aboutXMonths",v,o)}if(v=tm(u,d),v<12){const f=Math.round(p/ur);return a.formatDistance("xMonths",f,o)}else{const f=v%12,m=Math.trunc(v/12);return f<3?a.formatDistance("aboutXYears",m,o):f<9?a.formatDistance("overXYears",m,o):a.formatDistance("almostXYears",m+1,o)}}function Qm(e,n){return Jm(e,Gh(e),n)}function Xm(e,n){const r=ce(e,n==null?void 0:n.in),s=r.getFullYear(),a=r.getMonth(),i=Te(r,0);return i.setFullYear(s,a+1,0),i.setHours(0,0,0,0),i.getDate()}function ef(e){return Math.trunc(+ce(e)/1e3)}function tf(e,n){const r=ce(e,n==null?void 0:n.in),s=r.getMonth();return r.setFullYear(r.getFullYear(),s+1,0),r.setHours(0,0,0,0),ce(r,n==null?void 0:n.in)}function nf(e,n){const r=ce(e,n==null?void 0:n.in);return Yh(tf(r,n),$e(r,n),n)+1}function Es(e,n){return+ce(e)>+ce(n)}function il(e,n){return+ce(e)<+ce(n)}function ba(e,n,r){const[s,a]=Rt(r==null?void 0:r.in,e,n);return s.getFullYear()===a.getFullYear()&&s.getMonth()===a.getMonth()}function rf(e,n,r){const[s,a]=Rt(r==null?void 0:r.in,e,n);return s.getFullYear()===a.getFullYear()}function cs(e,n,r){return We(e,-n,r)}function ds(e,n,r){const s=ce(e,r==null?void 0:r.in),a=s.getFullYear(),i=s.getDate(),l=Te(e,0);l.setFullYear(a,n,15),l.setHours(0,0,0,0);const o=Xm(l);return s.setMonth(n,Math.min(i,o)),s}function oi(e,n,r){const s=ce(e,r==null?void 0:r.in);return isNaN(+s)?Te(e,NaN):(s.setFullYear(n),s)}const li={lessThanXSeconds:{standalone:{one:"weniger als 1 Sekunde",other:"weniger als {{count}} Sekunden"},withPreposition:{one:"weniger als 1 Sekunde",other:"weniger als {{count}} Sekunden"}},xSeconds:{standalone:{one:"1 Sekunde",other:"{{count}} Sekunden"},withPreposition:{one:"1 Sekunde",other:"{{count}} Sekunden"}},halfAMinute:{standalone:"eine halbe Minute",withPreposition:"einer halben Minute"},lessThanXMinutes:{standalone:{one:"weniger als 1 Minute",other:"weniger als {{count}} Minuten"},withPreposition:{one:"weniger als 1 Minute",other:"weniger als {{count}} Minuten"}},xMinutes:{standalone:{one:"1 Minute",other:"{{count}} Minuten"},withPreposition:{one:"1 Minute",other:"{{count}} Minuten"}},aboutXHours:{standalone:{one:"etwa 1 Stunde",other:"etwa {{count}} Stunden"},withPreposition:{one:"etwa 1 Stunde",other:"etwa {{count}} Stunden"}},xHours:{standalone:{one:"1 Stunde",other:"{{count}} Stunden"},withPreposition:{one:"1 Stunde",other:"{{count}} Stunden"}},xDays:{standalone:{one:"1 Tag",other:"{{count}} Tage"},withPreposition:{one:"1 Tag",other:"{{count}} Tagen"}},aboutXWeeks:{standalone:{one:"etwa 1 Woche",other:"etwa {{count}} Wochen"},withPreposition:{one:"etwa 1 Woche",other:"etwa {{count}} Wochen"}},xWeeks:{standalone:{one:"1 Woche",other:"{{count}} Wochen"},withPreposition:{one:"1 Woche",other:"{{count}} Wochen"}},aboutXMonths:{standalone:{one:"etwa 1 Monat",other:"etwa {{count}} Monate"},withPreposition:{one:"etwa 1 Monat",other:"etwa {{count}} Monaten"}},xMonths:{standalone:{one:"1 Monat",other:"{{count}} Monate"},withPreposition:{one:"1 Monat",other:"{{count}} Monaten"}},aboutXYears:{standalone:{one:"etwa 1 Jahr",other:"etwa {{count}} Jahre"},withPreposition:{one:"etwa 1 Jahr",other:"etwa {{count}} Jahren"}},xYears:{standalone:{one:"1 Jahr",other:"{{count}} Jahre"},withPreposition:{one:"1 Jahr",other:"{{count}} Jahren"}},overXYears:{standalone:{one:"mehr als 1 Jahr",other:"mehr als {{count}} Jahre"},withPreposition:{one:"mehr als 1 Jahr",other:"mehr als {{count}} Jahren"}},almostXYears:{standalone:{one:"fast 1 Jahr",other:"fast {{count}} Jahre"},withPreposition:{one:"fast 1 Jahr",other:"fast {{count}} Jahren"}}},sf=(e,n,r)=>{let s;const a=r!=null&&r.addSuffix?li[e].withPreposition:li[e].standalone;
327return typeof a=="string"?s=a:n===1?s=a.one:s=a.other.replace("{{count}}",String(n)),r!=null&&r.addSuffix?r.comparison&&r.comparison>0?"in "+s:"vor "+s:s},af={full:"EEEE, do MMMM y",long:"do MMMM y",medium:"do MMM y",short:"dd.MM.y"},of={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},lf={full:"{{date}} 'um' {{time}}",long:"{{date}} 'um' {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},cf={date:sn({formats:af,defaultWidth:"full"}),time:sn({formats:of,defaultWidth:"full"}),dateTime:sn({formats:lf,defaultWidth:"full"})},df={lastWeek:"'letzten' eeee 'um' p",yesterday:"'gestern um' p",today:"'heute um' p",tomorrow:"'morgen um' p",nextWeek:"eeee 'um' p",other:"P"},uf=(e,n,r,s)=>df[e],hf={narrow:["v.Chr.","n.Chr."],abbreviated:["v.Chr.","n.Chr."],wide:["vor Christus","nach Christus"]},mf={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1. Quartal","2. Quartal","3. Quartal","4. Quartal"]},Rs={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],wide:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"]},ff={narrow:Rs.narrow,abbreviated:["Jan.","Feb.","März","Apr.","Mai","Juni","Juli","Aug.","Sep.","Okt.","Nov.","Dez."],wide:Rs.wide},gf={narrow:["S","M","D","M","D","F","S"],short:["So","Mo","Di","Mi","Do","Fr","Sa"],abbreviated:["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],wide:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"]},pf={narrow:{am:"vm.",pm:"nm.",midnight:"Mitternacht",noon:"Mittag",morning:"Morgen",afternoon:"Nachm.",evening:"Abend",night:"Nacht"},abbreviated:{am:"vorm.",pm:"nachm.",midnight:"Mitternacht",noon:"Mittag",morning:"Morgen",afternoon:"Nachmittag",evening:"Abend",night:"Nacht"},wide:{am:"vormittags",pm:"nachmittags",midnight:"Mitternacht",noon:"Mittag",morning:"Morgen",afternoon:"Nachmittag",evening:"Abend",night:"Nacht"}},xf={narrow:{am:"vm.",pm:"nm.",midnight:"Mitternacht",noon:"Mittag",morning:"morgens",afternoon:"nachm.",evening:"abends",night:"nachts"},abbreviated:{am:"vorm.",pm:"nachm.",midnight:"Mitternacht",noon:"Mittag",morning:"morgens",afternoon:"nachmittags",evening:"abends",night:"nachts"},wide:{am:"vormittags",pm:"nachmittags",midnight:"Mitternacht",noon:"Mittag",morning:"morgens",afternoon:"nachmittags",evening:"abends",night:"nachts"}},bf=e=>Number(e)+".",vf={ordinalNumber:bf,era:it({values:hf,defaultWidth:"wide"}),quarter:it({values:mf,defaultWidth:"wide",argumentCallback:e=>e-1}),month:it({values:Rs,formattingValues:ff,defaultWidth:"wide"}),day:it({values:gf,defaultWidth:"wide"}),dayPeriod:it({values:pf,defaultWidth:"wide",formattingValues:xf,defaultFormattingWidth:"wide"})},yf=/^(\d+)(\.)?/i,kf=/\d+/i,wf={narrow:/^(v\.? ?Chr\.?|n\.? ?Chr\.?)/i,abbreviated:/^(v\.? ?Chr\.?|n\.? ?Chr\.?)/i,wide:/^(vor Christus|vor unserer Zeitrechnung|nach Christus|unserer Zeitrechnung)/i},jf={any:[/^v/i,/^n/i]},Nf={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](\.)? Quartal/i},Sf={any:[/1/i,/2/i,/3/i,/4/i]},Df={narrow:/^[jfmasond]/i,abbreviated:/^(j[aä]n|feb|mär[z]?|apr|mai|jun[i]?|jul[i]?|aug|sep|okt|nov|dez)\.?/i,wide:/^(jänner|januar|februar|märz|april|mai|juni|juli|august|september|oktober|november|dezember)/i},_f={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^j[aä]/i,/^f/i,/^mär/i,/^ap/i,/^mai/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},Mf={narrow:/^[smdmf]/i,short:/^(so|mo|di|mi|do|fr|sa)/i,abbreviated:/^(son?|mon?|die?|mit?|don?|fre?|sam?)\.?/i,wide:/^(sonntag|montag|dienstag|mittwoch|donnerstag|freitag|samstag)/i},Cf={any:[/^so/i,/^mo/i,/^di/i,/^mi/i,/^do/i,/^f/i,/^sa/i]},Af={narrow:/^(vm\.?|nm\.?|Mitternacht|Mittag|morgens|nachm\.?|abends|nachts)/i,abbreviated:/^(vorm\.?|nachm\.?|Mitternacht|Mittag|morgens|nachm\.?|abends|nachts)/i,wide:/^(vormittags|nachmittags|Mitternacht|Mittag|morgens|nachmittags|abends|nachts)/i},zf={any:{am:/^v/i,pm:/^n/i,midnight:/^Mitte/i,noon:/^Mitta/i,morning:/morgens/i,afternoon:/nachmittags/i,evening:/abends/i,night:/nachts/i}},Tf={ordinalNumber:tl({matchPattern:yf,parsePattern:kf,valueCallback:e=>parseInt(e)}),era:ot({matchPatterns:wf,defaultMatchWidth:"wide",parsePatterns:jf,defaultParseWidth:"any"}),quarter:ot({matchPatterns:Nf,defaultMatchWidth:"wide",parsePatterns:Sf,defaultParseWidth:"any",valueCallback:e=>e+1}),month:ot({matchPatterns:Df,defaultMatchWidth:"wide",parsePatterns:_f,defaultParseWidth:"any"}),day:ot({matchPatterns:Mf,defaultMatchWidth:"wide",parsePatterns:Cf,defaultParseWidth:"any"}),dayPeriod:ot({matchPatterns:Af,defaultMatchWidth:"wide",parsePatterns:zf,defaultParseWidth:"any"})},ol={code:"de",formatDistance:sf,formatLong:cf,formatRelative:uf,localize:vf,match:Tf,options:{weekStartsOn:1,firstWeekContainsDate:4}},gy="Fokus-Ziel",Gn="Fokus-Ziele",Pf="Fokus-Ziele",py="Messpunkte",Ef="Fokus-Phase",Rf="Montags-Check",If="Freitags-Realitätscheck",hr={umsatz:"Umsatz",kunden:"Kunden",recruiting:"Recruiting",mitarbeiter_fuehrung:"Mitarbeiter & Führung",marge_cashflow:"Marge & Cashflow",prozesse_ki:"Prozesse & KI",sichtbarkeit:"Sichtbarkeit",privat:"Privat"},mr={umsatz:"#F15F22",kunden:"#22C55E",recruiting:"#3D53A4",mitarbeiter_fuehrung:"#8B5CF6",marge_cashflow:"#EAB308",prozesse_ki:"#06B6D4",sichtbarkeit:"#EC4899",privat:"#64748B"};function gn(e=new Date){const n=Math.floor(e.getMonth()/3)+1;return`${e.getFullYear()}-Q${n}`}function vr(e=new Date){const n=Math.floor(e.getMonth()/3);return new Date(e.getFullYear(),n*3+3,0)}function zr(e,n){return Math.max(0,Math.round((n.getTime()-e.getTime())/864e5))}function Ht(e){return`${e.getFullYear()}
327-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`}function xy(e,n=new Date){if(e){const r=new Date(e+"T23:59:59");return zr(n,r)}return zr(n,vr(n))}function Of(e,n){return e&&n?Math.max(1,zr(new Date(e),new Date(n))):90}function Ff(e,n=new Date){if(!e)return 1;const r=new Date(e);return Math.max(1,zr(r,n)+1)}function Ee(){const{user:e}=ge(),n=e==null?void 0:e.id,r=mt(),s=Nr({queryKey:["focus-profile",n],enabled:!!n,queryFn:async()=>{const{data:i,error:l}=await H.from("profiles").select("focus_v2_enabled, focus_onboarding_state, focus_position, beta_decision, beta_opted_in_at, cycle_start_date, cycle_end_date").eq("user_id",n).maybeSingle();if(l)throw l;return{focus_v2_enabled:(i==null?void 0:i.focus_v2_enabled)??!1,focus_onboarding_state:(i==null?void 0:i.focus_onboarding_state)??"not_started",focus_position:(i==null?void 0:i.focus_position)??null,beta_decision:(i==null?void 0:i.beta_decision)??null,beta_opted_in_at:(i==null?void 0:i.beta_opted_in_at)??null,cycle_start_date:(i==null?void 0:i.cycle_start_date)??null,cycle_end_date:(i==null?void 0:i.cycle_end_date)??null}}}),a=Mt({mutationFn:async i=>{const{error:l}=await H.from("profiles").update(i).eq("user_id",n);if(l)throw l},onSuccess:()=>r.invalidateQueries({queryKey:["focus-profile",n]})});return{profile:s,update:a}}function He(){const{user:e}=ge(),n=e==null?void 0:e.id,r=mt(),s=gn(),a=Nr({queryKey:["objectives",n,s],enabled:!!n,queryFn:async()=>{const{data:f,error:m}=await H.from("objectives").select("*").eq("user_id",n).order("sort",{ascending:!0});if(m)throw m;return f??[]}}),i=(a.data??[]).map(f=>f.id),l=Nr({queryKey:["key-results",n,i.join(",")],enabled:!!n&&i.length>0,queryFn:async()=>{const{data:f,error:m}=await H.from("key_results").select("*").in("objective_id",i).order("sort",{ascending:!0});if(m)throw m;return f??[]}}),o=Mt({mutationFn:async f=>{const m=Math.max(0,...(a.data??[]).map(b=>b.sort))+1,{data:w,error:x}=await H.from("objectives").insert({user_id:n,title:f.title,icon:f.icon??"ð¯",color:f.color??"#F15F22",category:f.category,cycle:f.cycle??s,status:"active",confidence:"green",sort:m}).select().single();if(x)throw x;return w},onSuccess:()=>{r.invalidateQueries({queryKey:["objectives",n,s]}),r.invalidateQueries({queryKey:["key-results",n]})}}),d=Mt({mutationFn:async f=>{const{id:m,...w}=f,{error:x}=await H.from("objectives").update(w).eq("id",m);if(x)throw x},onSuccess:()=>r.invalidateQueries({queryKey:["objectives",n,s]})}),u=Mt({mutationFn:async f=>{const{error:m}=await H.from("objectives").update({status:"archived"}).eq("id",f);if(m)throw m},onSuccess:()=>r.invalidateQueries({queryKey:["objectives",n,s]})}),h=Mt({mutationFn:async f=>{const m=f.sort??Math.max(0,...(l.data??[]).filter(x=>x.objective_id===f.objective_id).map(x=>x.sort))+1,{error:w}=await H.from("key_results").insert({measure_kind:"stock",...f,sort:m});if(w)throw w},onSuccess:()=>r.invalidateQueries({queryKey:["key-results",n]})}),g=Mt({mutationFn:async f=>{const{id:m,...w}=f,{error:x}=await H.from("key_results").update(w).eq("id",m);if(x)throw x},onSuccess:()=>r.invalidateQueries({queryKey:["key-results",n]})}),p=Mt({mutationFn:async f=>{const{error:m}=await H.from("key_results").delete().eq("id",f);if(m)throw m},onSuccess:()=>r.invalidateQueries({queryKey:["key-results",n]})}),v=(a.data??[]).filter(f=>f.status==="active");return{objectives:a,keyResults:l,activeObjectives:v,addObjective:o,updateObjective:d,archiveObjective:u,addKeyResult:h,updateKeyResult:g,deleteKeyResult:p,cycle:s}}function Bf(e,n=[]){if(e.type==="auto")return n.length===0?0:n.filter(l=>l.done).length/n.length;if(e.type==="milestone"&&(e.measure_kind??"stock")!=="weekly_rate"){const l=e.milestones??[];return!Array.isArray(l)||l.length===0?0:l.filter(o=>o&&o.done).length/l.length}const r=e.measure_kind??"stock";if(r==="weekly_rate"){const l=Number(e.target_value??0),d=(Array.isArray(e.milestones)?e.milestones:[]).filter(h=>h&&typeof h.week=="string");return d.length===0||l<=0?0:d.filter(h=>Number(h.count??0)>=l).length/d.length}if(r==="counter"){const l=Number(e.target_value??0),o=Number(e.current_value??0);return l<=0?0:Math.max(0,Math.min(1,o/l))}const s=e.start_value??0,a=e.target_value??0,i=e.current_value??s;return a===s?0:Math.max(0,Math.min(1,(i-s)/(a-s)))}function yr(e,n,r={}){const s=n.filter(i=>i.objective_id===e.id);return s.length===0?0:s.reduce((i,l)=>
327i+Bf(l,r[l.id]??[]),0)/s.length}function ll({values:e,onChange:n,suggestText:r,label:s}){var p;const{profile:a}=Ee(),{activeObjectives:i}=He(),l=((p=a.data)==null?void 0:p.focus_v2_enabled)===!0,o=(i??[]).slice(0,3),[d,u]=c.useState(null);if(c.useEffect(()=>{if(!l||!r||e.length>0){u(null);return}u(Hc(r,o))},[r,e.length,l,o.length]),!l||o.length===0)return null;const h=s??`ð¯ ${Gn} (Mehrfachauswahl):`;function g(v){const f=new Set(e);f.has(v)?f.delete(v):f.add(v),n([...f])}return t.jsxs("div",{className:"flex flex-wrap items-center gap-1.5",children:[t.jsx("span",{className:"text-[11px] text-muted-foreground shrink-0",children:h}),o.map(v=>{const f=e.includes(v.id),m=!f&&d===v.id;return t.jsxs("button",{type:"button",onClick:()=>g(v.id),title:v.title,className:Q("inline-flex items-center gap-1 px-2 py-1 rounded-full text-[11px] border transition max-w-[140px]",f?"text-white border-transparent":"bg-card hover:bg-muted text-foreground border-border",m&&"ring-2 ring-offset-1 ring-primary/50"),style:f?{background:v.color??"#F15F22"}:void 0,children:[t.jsx("span",{"aria-hidden":!0,children:v.icon??"ð¯"}),t.jsx("span",{className:"truncate",children:v.title})]},v.id)}),d&&e.length===0&&t.jsx("span",{className:"text-[10px] text-primary/80 italic",children:"Vorschlag"})]})}function Wf({objectiveIds:e}){var i;const{profile:n}=Ee(),{activeObjectives:r}=He();if(!((i=n.data)!=null&&i.focus_v2_enabled)||e.length===0)return null;const s=e.map(l=>(r??[]).find(o=>o.id===l)).filter(Boolean);if(s.length===0)return null;if(s.length===1){const l=s[0],o=l.color??"#F15F22";return t.jsxs("span",{title:`zahlt auf: ${l.title}`,"aria-label":`zahlt auf: ${l.title}`,className:"inline-flex items-center gap-1 text-[11px] font-semibold rounded-full px-1.5 py-0.5 border max-w-[160px]",style:{background:o+"1A",color:o,borderColor:o+"66"},children:[t.jsx("span",{"aria-hidden":!0,children:"ð¯"}),t.jsx("span",{className:"truncate",children:l.title})]})}const a=s.map(l=>l.title).join(" · ");return t.jsxs("span",{title:`zahlt auf: ${a}`,"aria-label":`zahlt auf: ${a}`,className:"inline-flex items-center gap-1 text-[11px] font-semibold rounded-full px-1.5 py-0.5 border bg-card",children:[t.jsx("span",{"aria-hidden":!0,children:"ð¯"}),t.jsx("span",{className:"inline-flex -space-x-1",children:s.map(l=>t.jsx("span",{className:"inline-block h-2.5 w-2.5 rounded-full border border-background",style:{background:l.color??"#F15F22"}},l.id))}),t.jsxs("span",{className:"text-muted-foreground",children:[s.length,"Ã"]})]})}function kn(){const{user:e}=ge(),n=e==null?void 0:e.id,r=mt(),s=Nr({queryKey:["todo-objectives",n],enabled:!!n,queryFn:async()=>{const i=new Map;if(!n)return i;const{data:l,error:o}=await H.from("todo_objectives").select("todo_id, objective_id").eq("user_id",n);if(o)throw o;for(const d of l??[]){const u=i.get(d.todo_id)??[];u.push(d.objective_id),i.set(d.todo_id,u)}return i},staleTime:5e3}),a=Mt({mutationFn:async i=>{if(!n)return;const{error:l}=await H.from("todo_objectives").delete().eq("todo_id",i.todo_id).eq("user_id",n);if(l)throw l;const o=Array.from(new Set(i.objective_ids.filter(Boolean)));if(o.length>0){const d=o.map(h=>({todo_id:i.todo_id,objective_id:h,user_id:n})),{error:u}=await H.from("todo_objectives").insert(d);if(u)throw u}await H.from("todos").update({objective_id:o[0]??null}).eq("id",i.todo_id)},onSuccess:()=>{r.invalidateQueries({queryKey:["todo-objectives",n]}),r.invalidateQueries({queryKey:["todos",n]})}});return{todoObjectives:s,setLinks:a}}function va(e,n,r){const s=new Set,a=n.get(e.id)??[];for(const i of a)s.add(i);if(e.objective_id&&s.add(e.objective_id),s.size===0&&e.tag){const i=r.get(e.tag);i&&s.add(i)}return[...s]}var se=function(){return se=Object.assign||function(n){for(var r,s=1,a=arguments.length;s<a;s++){r=arguments[s];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(n[i]=r[i])}return n},se.apply(this,arguments)};function Lf(e,n){var r={};for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&n.indexOf(s)<0&&(r[s]=e[s]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,s=Object.getOwnPropertySymbols(e);a<s.length;a++)n.indexOf(s[a])<0&&Object.prototype.propertyIsEnumerable.call(e,s[a])&&(r[s[a]]=e[s[a]]);return r}function cl(e,n,r){for(var s=0,a=n.length,i;s<a;s++)(i||!(s in n))&&(i||(i=Array.prototype.slice.call(n,0,s)),i[s]=n[s]);return e.concat(i||Array.prototype.slice.call(n))}function rr(e){return e.mode==="multiple"}function sr(e){return e.mode==="range"}function Yr(e){return e.mode==="single"}var Hf={root:"rdp",multiple_months:"rdp-multiple_months",with_weeknumber:"rdp-with_weeknumber",vhidden:"rdp-vhidden",button_reset:"rdp-button_reset",button:"rdp-button",caption:"rdp-caption",caption_start:"rdp-caption_start",caption_end:"rdp-caption_end",caption_between:"rdp-caption_between",caption_label:"rdp-caption_label",caption_dropdowns:"rd
327p-caption_dropdowns",dropdown:"rdp-dropdown",dropdown_month:"rdp-dropdown_month",dropdown_year:"rdp-dropdown_year",dropdown_icon:"rdp-dropdown_icon",months:"rdp-months",month:"rdp-month",table:"rdp-table",tbody:"rdp-tbody",tfoot:"rdp-tfoot",head:"rdp-head",head_row:"rdp-head_row",head_cell:"rdp-head_cell",nav:"rdp-nav",nav_button:"rdp-nav_button",nav_button_previous:"rdp-nav_button_previous",nav_button_next:"rdp-nav_button_next",nav_icon:"rdp-nav_icon",row:"rdp-row",weeknumber:"rdp-weeknumber",cell:"rdp-cell",day:"rdp-day",day_today:"rdp-day_today",day_outside:"rdp-day_outside",day_selected:"rdp-day_selected",day_disabled:"rdp-day_disabled",day_hidden:"rdp-day_hidden",day_range_start:"rdp-day_range_start",day_range_end:"rdp-day_range_end",day_range_middle:"rdp-day_range_middle"};function Kf(e,n){return ct(e,"LLLL y",n)}function $f(e,n){return ct(e,"d",n)}function Vf(e,n){return ct(e,"LLLL",n)}function Uf(e){return"".concat(e)}function qf(e,n){return ct(e,"cccccc",n)}function Gf(e,n){return ct(e,"yyyy",n)}var Zf=Object.freeze({__proto__:null,formatCaption:Kf,formatDay:$f,formatMonthCaption:Vf,formatWeekNumber:Uf,formatWeekdayName:qf,formatYearCaption:Gf}),Yf=function(e,n,r){return ct(e,"do MMMM (EEEE)",r)},Jf=function(){return"Month: "},Qf=function(){return"Go to next month"},Xf=function(){return"Go to previous month"},eg=function(e,n){return ct(e,"cccc",n)},tg=function(e){return"Week n. ".concat(e)},ng=function(){return"Year: "},rg=Object.freeze({__proto__:null,labelDay:Yf,labelMonthDropdown:Jf,labelNext:Qf,labelPrevious:Xf,labelWeekNumber:tg,labelWeekday:eg,labelYearDropdown:ng});function sg(){var e="buttons",n=Hf,r=xa,s={},a={},i=1,l={},o=new Date;return{captionLayout:e,classNames:n,formatters:Zf,labels:rg,locale:r,modifiersClassNames:s,modifiers:a,numberOfMonths:i,styles:l,today:o,mode:"default"}}function ag(e){var n=e.fromYear,r=e.toYear,s=e.fromMonth,a=e.toMonth,i=e.fromDate,l=e.toDate;return s?i=$e(s):n&&(i=new Date(n,0,1)),a?l=Zr(a):r&&(l=new Date(r,11,31)),{fromDate:i?mn(i):void 0,toDate:l?mn(l):void 0}}var dl=c.createContext(void 0);function ig(e){var n,r=e.initialProps,s=sg(),a=ag(r),i=a.fromDate,l=a.toDate,o=(n=r.captionLayout)!==null&&n!==void 0?n:s.captionLayout;o!=="buttons"&&(!i||!l)&&(o="buttons");var d;(Yr(r)||rr(r)||sr(r))&&(d=r.onSelect);var u=se(se(se({},s),r),{captionLayout:o,classNames:se(se({},s.classNames),r.classNames),components:se({},r.components),formatters:se(se({},s.formatters),r.formatters),fromDate:i,labels:se(se({},s.labels),r.labels),mode:r.mode||s.mode,modifiers:se(se({},s.modifiers),r.modifiers),modifiersClassNames:se(se({},s.modifiersClassNames),r.modifiersClassNames),onSelect:d,styles:se(se({},s.styles),r.styles),toDate:l});return t.jsx(dl.Provider,{value:u,children:e.children})}function ye(){var e=c.useContext(dl);if(!e)throw new Error("useDayPicker must be used within a DayPickerProvider.");return e}function ul(e){var n=ye(),r=n.locale,s=n.classNames,a=n.styles,i=n.formatters.formatCaption;return t.jsx("div",{className:s.caption_label,style:a.caption_label,"aria-live":"polite",role:"presentation",id:e.id,children:i(e.displayMonth,{locale:r})})}function og(e){return t.jsx("svg",se({width:"8px",height:"8px",viewBox:"0 0 120 120","data-testid":"iconDropdown"},e,{children:t.jsx("path",{d:"M4.22182541,48.2218254 C8.44222828,44.0014225 15.2388494,43.9273804 19.5496459,47.9996989 L19.7781746,48.2218254 L60,88.443 L100.221825,48.2218254 C104.442228,44.0014225 111.238849,43.9273804 115.549646,47.9996989 L115.778175,48.2218254 C119.998577,52.4422283 120.07262,59.2388494 116.000301,63.5496459 L115.778175,63.7781746 L67.7781746,111.778175 C63.5577717,115.998577 56.7611506,116.07262 52.4503541,112.000301 L52.2218254,111.778175 L4.22182541,63.7781746 C-0.0739418023,59.4824074 -0.0739418023,52.5175926 4.22182541,48.2218254 Z",fill:"currentColor",fillRule:"nonzero"})}))}function hl(e){var n,r,s=e.onChange,a=e.value,i=e.children,l=e.caption,o=e.className,d=e.style,u=ye(),h=(r=(n=u.components)===null||n===void 0?void 0:n.IconDropdown)!==null&&r!==void 0?r:og;return t.jsxs("div",{className:o,style:d,children:[t.jsx("span",{className:u.classNames.vhidden,children:e["aria-label"]}),t.jsx("select",{name:e.name,"aria-label":e["aria-label"],className:u.classNames.dropdown,style:u.styles.dropdown,value:a,onChange:s,children:i}),t.jsxs("div",{className:u.classNames.caption_label,style:u.styles.caption_label,"aria-hidden":"true",children:[l,t.jsx(h,{className:u.classNames.dropdown_icon,style:u.styles.dropdown_icon})]})]})}function lg(e){var n,r=ye(),s=r.fromDate,a=r.toDate,i=r.styles,l=r.locale,o=r.formatters.formatMonthCaption,d=r.classNames,u=r.components,h=r.labels.labelMonthDropdown;if(!s)return t.jsx(t.Fragment,{});if(!a)return t.jsx(t.Fragment,{});var g=[];if(rf(s,a))for(var p=$e(s),v=s.getMonth();v<=a.getMonth();v++)g.push(ds(p,v));else for(var p=$e(new Date),v=0;v<=11;v++)g.push(ds(p,v));
327var f=function(w){var x=Number(w.target.value),b=ds($e(e.displayMonth),x);e.onChange(b)},m=(n=u==null?void 0:u.Dropdown)!==null&&n!==void 0?n:hl;return t.jsx(m,{name:"months","aria-label":h(),className:d.dropdown_month,style:i.dropdown_month,onChange:f,value:e.displayMonth.getMonth(),caption:o(e.displayMonth,{locale:l}),children:g.map(function(w){return t.jsx("option",{value:w.getMonth(),children:o(w,{locale:l})},w.getMonth())})})}function cg(e){var n,r=e.displayMonth,s=ye(),a=s.fromDate,i=s.toDate,l=s.locale,o=s.styles,d=s.classNames,u=s.components,h=s.formatters.formatYearCaption,g=s.labels.labelYearDropdown,p=[];if(!a)return t.jsx(t.Fragment,{});if(!i)return t.jsx(t.Fragment,{});for(var v=a.getFullYear(),f=i.getFullYear(),m=v;m<=f;m++)p.push(oi(Xo(new Date),m));var w=function(b){var y=oi($e(r),Number(b.target.value));e.onChange(y)},x=(n=u==null?void 0:u.Dropdown)!==null&&n!==void 0?n:hl;return t.jsx(x,{name:"years","aria-label":g(),className:d.dropdown_year,style:o.dropdown_year,onChange:w,value:r.getFullYear(),caption:h(r,{locale:l}),children:p.map(function(b){return t.jsx("option",{value:b.getFullYear(),children:h(b,{locale:l})},b.getFullYear())})})}function dg(e,n){var r=c.useState(e),s=r[0],a=r[1],i=n===void 0?s:n;return[i,a]}function ug(e){var n=e.month,r=e.defaultMonth,s=e.today,a=n||r||s||new Date,i=e.toDate,l=e.fromDate,o=e.numberOfMonths,d=o===void 0?1:o;if(i&&fn(i,a)<0){var u=-1*(d-1);a=nt(i,u)}return l&&fn(a,l)<0&&(a=l),$e(a)}function hg(){var e=ye(),n=ug(e),r=dg(n,e.month),s=r[0],a=r[1],i=function(l){var o;if(!e.disableNavigation){var d=$e(l);a(d),(o=e.onMonthChange)===null||o===void 0||o.call(e,d)}};return[s,i]}function mg(e,n){for(var r=n.reverseMonths,s=n.numberOfMonths,a=$e(e),i=$e(nt(a,s)),l=fn(i,a),o=[],d=0;d<l;d++){var u=nt(a,d);o.push(u)}return r&&(o=o.reverse()),o}function fg(e,n){if(!n.disableNavigation){var r=n.toDate,s=n.pagedNavigation,a=n.numberOfMonths,i=a===void 0?1:a,l=s?i:1,o=$e(e);if(!r)return nt(o,l);var d=fn(r,e);if(!(d<i))return nt(o,l)}}function gg(e,n){if(!n.disableNavigation){var r=n.fromDate,s=n.pagedNavigation,a=n.numberOfMonths,i=a===void 0?1:a,l=s?i:1,o=$e(e);if(!r)return nt(o,-l);var d=fn(o,r);if(!(d<=0))return nt(o,-l)}}var ml=c.createContext(void 0);function pg(e){var n=ye(),r=hg(),s=r[0],a=r[1],i=mg(s,n),l=fg(s,n),o=gg(s,n),d=function(g){return i.some(function(p){return ba(g,p)})},u=function(g,p){d(g)||(p&&il(g,p)?a(nt(g,1+n.numberOfMonths*-1)):a(g))},h={currentMonth:s,displayMonths:i,goToMonth:a,goToDate:u,previousMonth:o,nextMonth:l,isDateDisplayed:d};return t.jsx(ml.Provider,{value:h,children:e.children})}function ar(){var e=c.useContext(ml);if(!e)throw new Error("useNavigation must be used within a NavigationProvider");return e}function ci(e){var n,r=ye(),s=r.classNames,a=r.styles,i=r.components,l=ar().goToMonth,o=function(h){l(nt(h,e.displayIndex?-e.dis
327playIndex:0))},d=(n=i==null?void 0:i.CaptionLabel)!==null&&n!==void 0?n:ul,u=t.jsx(d,{id:e.id,displayMonth:e.displayMonth});return t.jsxs("div",{className:s.caption_dropdowns,style:a.caption_dropdowns,children:[t.jsx("div",{className:s.vhidden,children:u}),t.jsx(lg,{onChange:o,displayMonth:e.displayMonth}),t.jsx(cg,{onChange:o,displayMonth:e.displayMonth})]})}function xg(e){return t.jsx("svg",se({width:"16px",height:"16px",viewBox:"0 0 120 120"},e,{children:t.jsx("path",{d:"M69.490332,3.34314575 C72.6145263,0.218951416 77.6798462,0.218951416 80.8040405,3.34314575 C83.8617626,6.40086786 83.9268205,11.3179931 80.9992143,14.4548388 L80.8040405,14.6568542 L35.461,60 L80.8040405,105.343146 C83.8617626,108.400868 83.9268205,113.317993 80.9992143,116.454839 L80.8040405,116.656854 C77.7463184,119.714576 72.8291931,119.779634 69.6923475,116.852028 L69.490332,116.656854 L18.490332,65.6568542 C15.4326099,62.5991321 15.367552,57.6820069 18.2951583,54.5451612 L18.490332,54.3431458 L69.490332,3.34314575 Z",fill:"currentColor",fillRule:"nonzero"})}))}function bg(e){return t.jsx("svg",se({width:"16px",height:"16px",viewBox:"0 0 120 120"},e,{children:t.jsx("path",{d:"M49.8040405,3.34314575 C46.6798462,0.218951416 41.6145263,0.218951416 38.490332,3.34314575 C35.4326099,6.40086786 35.367552,11.3179931 38.2951583,14.4548388 L38.490332,14.6568542 L83.8333725,60 L38.490332,105.343146 C35.4326099,108.400868 35.367552,113.317993 38.2951583,116.454839 L38.490332,116.656854 C41.5480541,119.714576 46.4651794,119.779634 49.602025,116.852028 L49.8040405,116.656854 L100.804041,65.6568542 C103.861763,62.5991321 103.926821,57.6820069 100.999214,54.5451612 L100.804041,54.3431458 L49.8040405,3.34314575 Z",fill:"currentColor"})}))}var Tr=c.forwardRef(function(e,n){var r=ye(),s=r.classNames,a=r.styles,i=[s.button_reset,s.button];e.className&&i.push(e.className);var l=i.join(" "),o=se(se({},a.button_reset),a.button);return e.style&&Object.assign(o,e.style),t.jsx("button",se({},e,{ref:n,type:"button",className:l,style:o}))});function vg(e){var n,r,s=ye(),a=s.dir,i=s.locale,l=s.classNames,o=s.styles,d=s.labels,u=d.labelPrevious,h=d.labelNext,g=s.components;if(!e.nextMonth&&!e.previousMonth)return t.jsx(t.Fragment,{});var p=u(e.previousMonth,{locale:i}),v=[l.nav_button,l.nav_button_previous].join(" "),f=h(e.nextMonth,{locale:i}),m=[l.nav_button,l.nav_button_next].join(" "),w=(n=g==null?void 0:g.IconRight)!==null&&n!==void 0?n:bg,x=(r=g==null?void 0:g.IconLeft)!==null&&r!==void 0?r:xg;return t.jsxs("div",{className:l.nav,style:o.nav,children:[!e.hidePrevious&&t.jsx(Tr,{name:"previous-month","aria-label":p,className:v,style:o.nav_button_previous,disabled:!e.previousMonth,onClick:e.onPreviousClick,children:a==="rtl"?t.jsx(w,{className:l.nav_icon,style:o.nav_icon}):t.jsx(x,{className:l.nav_icon,style:o.nav_icon})}),!e.hideNext&&t.jsx(Tr,{name:"next-month","aria-label":f,className:m,style:o.nav_button_next,disabled:!e.nextMonth,onClick:e.onNextClick,children:a==="rtl"?t.jsx(x,{className:l.nav_icon,style:o.nav_icon}):t.jsx(w,{className:l.nav_icon,style:o.nav_icon})})]})}function di(e){var n=ye().numberOfMonths,r=ar(),s=r.previousMonth,a=r.nextMonth,i=r.goToMonth,l=r.displayMonths,o=l.findIndex(function(f){return ba(e.displayMonth,f)}),d=o===0,u=o===l.length-1,h=n>1&&(d||!u),g=n>1&&(u||!d),p=function(){s&&i(s)},v=function(){a&&i(a)};return t.jsx(vg,{displayMonth:e.displayMonth,hideNext:h,hidePrevious:g,nextMonth:a,previousMonth:s,onPreviousClick:p,onNextClick:v})}function yg(e){var n,r=ye(),s=r.classNames,a=r.disableNavigation,i=r.styles,l=r.captionLayout,o=r.components,d=(n=o==null?void 0:o.CaptionLabel)!==null&&n!==void 0?n:ul,u;return a?u=t.jsx(d,{id:e.id,displayMonth:e.displayMonth}):l==="dropdown"?u=t.jsx(ci,{displayMonth:e.displayMonth,id:e.id}):l==="dropdown-buttons"?u=t.jsxs(t.Fragment,{children:[t.jsx(ci,{displayMonth:e.displayMonth,displayIndex:e.displayIndex,id:e.id}),t.jsx(di,{displayMonth:e.displayMonth,displayIndex:e.displayIndex,id:e.id})]}):u=t.jsxs(t.Fragment,{children:[t.jsx(d,{id:e.id,displayMonth:e.displayMonth,displayIndex:e.displayIndex}),t.jsx(di,{displayMonth:e.displayMonth,id:e.id})]}),t.jsx("div",{className:s.caption,style:i.caption,children:u})}function kg(e){var n=ye(),r=n.footer,s=n.styles,a=n.classNames.tfoot;return r?t.jsx("tfoot",{className:a,style:s.tfoot,children:t.jsx("tr",{children:t.jsx("td",{colSpan:8,children:r})})}):t.jsx(t.Fragment,{})}function wg(e,n,r){for(var s=r?Vt(new Date):dt(new Date,{locale:e,weekStartsOn:n}),a=[],i=0;i<7;i++){var l=We(s,i);a.push(l)}return a}function jg(){var e=ye(),n=e.classNames,r=e.styles,s=e.showWeekNumber,a=e.locale,i=e.weekStartsOn,l=e.ISOWeek,o=e.formatters.formatWeekdayName,d=e.labels.labelWeekday,u=wg(
327a,i,l);return t.jsxs("tr",{style:r.head_row,className:n.head_row,children:[s&&t.jsx("td",{style:r.head_cell,className:n.head_cell}),u.map(function(h,g){return t.jsx("th",{scope:"col",className:n.head_cell,style:r.head_cell,"aria-label":d(h,{locale:a}),children:o(h,{locale:a})},g)})]})}function Ng(){var e,n=ye(),r=n.classNames,s=n.styles,a=n.components,i=(e=a==null?void 0:a.HeadRow)!==null&&e!==void 0?e:jg;return t.jsx("thead",{style:s.head,className:r.head,children:t.jsx(i,{})})}function Sg(e){var n=ye(),r=n.locale,s=n.formatters.formatDay;return t.jsx(t.Fragment,{children:s(e.date,{locale:r})})}var ya=c.createContext(void 0);function Dg(e){if(!rr(e.initialProps)){var n={selected:void 0,modifiers:{disabled:[]}};return t.jsx(ya.Provider,{value:n,children:e.children})}return t.jsx(_g,{initialProps:e.initialProps,children:e.children})}function _g(e){var n=e.initialProps,r=e.children,s=n.selected,a=n.min,i=n.max,l=function(u,h,g){var p,v;(p=n.onDayClick)===null||p===void 0||p.call(n,u,h,g);var f=!!(h.selected&&a&&(s==null?void 0:s.length)===a);if(!f){var m=!!(!h.selected&&i&&(s==null?void 0:s.length)===i);if(!m){var w=s?cl([],s):[];if(h.selected){var x=w.findIndex(function(b){return Ke(u,b)});w.splice(x,1)}else w.push(u);(v=n.onSelect)===null||v===void 0||v.call(n,w,u,h,g)}}},o={disabled:[]};s&&o.disabled.push(function(u){var h=i&&s.length>i-1,g=s.some(function(p){return Ke(p,u)});return!!(h&&!g)});var d={selected:s,onDayClick:l,modifiers:o};return t.jsx(ya.Provider,{value:d,children:r})}function ka(){var e=c.useContext(ya);if(!e)throw new Error("useSelectMultiple must be used within a SelectMultipleProvider");return e}function Mg(e,n){var r=n||{},s=r.from,a=r.to;return s&&a?Ke(a,e)&&Ke(s,e)?void 0:Ke(a,e)?{from:a,to:void 0}:Ke(s,e)?void 0:Es(s,e)?{from:e,to:a}:{from:s,to:e}:a?Es(e,a)?{from:a,to:e}:{from:e,to:a}:s?il(e,s)?{from:e,to:s}:{from:s,to:e}:{from:e,to:void 0}}var wa=c.createContext(void 0);function Cg(e){if(!sr(e.initialProps)){var n={selected:void 0,modifiers:{range_start:[],range_end:[],range_middle:[],disabled:[]}};return t.jsx(wa.Provider,{value:n,children:e.children})}return t.jsx(Ag,{initialProps:e.initialProps,children:e.children})}function Ag(e){var n=e.initialProps,r=e.children,s=n.selected,a=s||{},i=a.from,l=a.to,o=n.min,d=n.max,u=function(v,f,m){var w,x;(w=n.onDayClick)===null||w===void 0||w.call(n,v,f,m);var b=Mg(v,s);(x=n.onSelect)===null||x===void 0||x.call(n,b,v,f,m)},h={range_start:[],range_end:[],range_middle:[],disabled:[]};if(i?(h.range_start=[i],l?(h.range_end=[l],Ke(i,l)||(h.range_middle=[{after:i,before:l}])):h.range_end=[i]):l&&(h.range_start=[l],h.range_end=[l]),o&&(i&&!l&&h.disabled.push({after:cs(i,o-1),before:We(i,o-1)}),i&&l&&h.disabled.push({after:i,before:We(i,o-1)}),!i&&l&&h.disabled.push({after:cs(l,o-1),before:We(l,o-1)})),d){if(i&&!l&&(h.disabled.push({before:We(i,-d+1)}),h.disabled.push({after:We(i,d-1)})),i&&l){var g=lt(l,i)+1,p=d-g;h.disabled.push({before:cs(i,p)}),h.disabled.push({after:We(l,p)})}!i&&l&&(h.disabled.push({before:We(l,-d+1)}),h.disabled.push({after:We(l,d-1)}))}return t.jsx(wa.Provider,{value:{selected:s,onDayClick:u,modifiers:h},children:r})}function ja(){var e=c.useContext(wa);if(!e)throw new Error("useSelectRange must be used within a SelectRangeProvider");return e}function kr(e){return Array.isArray(e)?cl([],e):e!==void 0?[e]:[]}function zg(e){var n={};return Object.entries(e).forEach(function(r){var s=r[0],a=r[1];n[s]=kr(a)}),n}var rt;(function(e){e.Outside="outside",e.Disabled="disabled",e.Selected="selected",e.Hidden="hidden",e.Today="today",e.RangeStart="range_start",e.RangeEnd="range_end",e.RangeMiddle="range_middle"})(rt||(rt={}));var Tg=rt.Selected,xt=rt.Disabled,Pg=rt.Hidden,Eg=rt.Today,us=rt.RangeEnd,hs=rt.RangeMiddle,ms=rt.RangeStart,Rg=rt.Outside;function Ig(e,n,r){var s,a=(s={},s[Tg]=kr(e.selected),s[xt]=kr(e.disabled),s[Pg]=kr(e.hidden),s[Eg]=[e.today],s[us]=[],s[hs]=[],s[ms]=[],s[Rg]=[],s);return e.fromDate&&a[xt].push({before:e.fromDate}),e.toDate&&a[xt].push({after:e.toDate}),rr(e)?a[xt]=a[xt].concat(n.modifiers[xt]):sr(e)&&(a[xt]=a[xt].concat(r.modifiers[xt]),a[ms]=r.modifiers[ms],a[hs]=r.modifiers[hs],a[us]=r.modifiers[us]),a}var fl=c.createContext(void 0);function Og(e){var n=ye(),r=ka(),s=ja(),a=Ig(n,r,s),i=zg(n.modifiers),l=se(se({},a),i);return t.jsx(fl.Provider,{value:l,children:e.children})}function gl(){var e=c.useContext(fl);if(!e)throw new Error("useModifiers must be used within a ModifiersProvider");return e}function Fg(e){return!!(e&&typeof e=="object"&&"before"in e&&"after"in e)}function Bg(e){return!!(e&&typeof e=="object"&&"from"in e)}function Wg(e){return!!(e&&typeof e=="object"&&"after"in e)}function Lg(e){return!!(e&&typeof e=="object"&&"before"in e)}function Hg(e){return!!(e&&typeof e=="object"&&"dayOfWeek"in e)}function Kg(e,n){var r,s=n.from,a=n.to;if(s&&a){var i=lt(a,s)<0;
327i&&(r=[a,s],s=r[0],a=r[1]);var l=lt(e,s)>=0&<(a,e)>=0;return l}return a?Ke(a,e):s?Ke(s,e):!1}function $g(e){return ga(e)}function Vg(e){return Array.isArray(e)&&e.every(ga)}function Ug(e,n){return n.some(function(r){if(typeof r=="boolean")return r;if($g(r))return Ke(e,r);if(Vg(r))return r.includes(e);if(Bg(r))return Kg(e,r);if(Hg(r))return r.dayOfWeek.includes(e.getDay());if(Fg(r)){var s=lt(r.before,e),a=lt(r.after,e),i=s>0,l=a<0,o=Es(r.before,r.after);return o?l&&i:i||l}return Wg(r)?lt(e,r.after)>0:Lg(r)?lt(r.before,e)>0:typeof r=="function"?r(e):!1})}function Na(e,n,r){var s=Object.keys(n).reduce(function(i,l){var o=n[l];return Ug(e,o)&&i.push(l),i},[]),a={};return s.forEach(function(i){return a[i]=!0}),r&&!ba(e,r)&&(a.outside=!0),a}function qg(e,n){for(var r=$e(e[0]),s=Zr(e[e.length-1]),a,i,l=r;l<=s;){var o=Na(l,n),d=!o.disabled&&!o.hidden;if(!d){l=We(l,1);continue}if(o.selected)return l;o.today&&!i&&(i=l),a||(a=l),l=We(l,1)}return i||a}var Gg=365;function pl(e,n){var r=n.moveBy,s=n.direction,a=n.context,i=n.modifiers,l=n.retry,o=l===void 0?{count:0,lastFocused:e}:l,d=a.weekStartsOn,u=a.fromDate,h=a.toDate,g=a.locale,p={day:We,week:Ps,month:nt,year:Vh,startOfWeek:function(w){return a.ISOWeek?Vt(w):dt(w,{locale:g,weekStartsOn:d})},endOfWeek:function(w){return a.ISOWeek?el(w):pa(w,{locale:g,weekStartsOn:d})}},v=p[r](e,s==="after"?1:-1);s==="before"&&u?v=Uh([u,v]):s==="after"&&h&&(v=qh([h,v]));var f=!0;if(i){var m=Na(v,i);f=!m.disabled&&!m.hidden}return f?v:o.count>Gg?o.lastFocused:pl(v,{moveBy:r,direction:s,context:a,modifiers:i,retry:se(se({},o),{count:o.count+1})})}var xl=c.createContext(void 0);function Zg(e){var n=ar(),r=gl(),s=c.useState(),a=s[0],i=s[1],l=c.useState(),o=l[0],d=l[1],u=qg(n.displayMonths,r),h=a??(o&&n.isDateDisplayed(o))?o:u,g=function(){d(a),i(void 0)},p=function(w){i(w)},v=ye(),f=function(w,x){if(a){var b=pl(a,{moveBy:w,direction:x,context:v,modifiers:r});Ke(a,b)||(n.goToDate(b,a),p(b))}},m={focusedDay:a,focusTarget:h,blur:g,focus:p,focusDayAfter:function(){return f("day","after")},focusDayBefore:function(){return f("day","before")},focusWeekAfter:function(){return f("week","after")},focusWeekBefore:function(){return f("week","before")},focusMonthBefore:function(){return f("month","before")},focusMonthAfter:function(){return f("month","after")},focusYearBefore:function(){return f("year","before")},focusYearAfter:function(){return f("year","after")},focusStartOfWeek:function(){return f("startOfWeek","before")},focusEndOfWeek:function(){return f("endOfWeek","after")}};return t.jsx(xl.Provider,{value:m,children:e.children})}function Sa(){var e=c.useContext(xl);if(!e)throw new Error("useFocusContext must be used within a FocusProvider");return e}function Yg(e,n){var r=gl(),s=Na(e,r,n);return s}var Da=c.createContext(void 0);function Jg(e){if(!Yr(e.initialProps)){var n={selected:void 0};return t.jsx(Da.Provider,{value:n,children:e.children})}return t.jsx(Qg,{initialProps:e.initialProps,children:e.children})}function Qg(e){var n=e.initialProps,r=e.children,s=function(i,l,o){var d,u,h;if((d=n.onDayClick)===null||d===void 0||d.call(n,i,l,o),l.selected&&!n.required){(u=n.onSelect)===null||u===void 0||u.call(n,void 0,i,l,o);return}(h=n.onSelect)===null||h===void 0||h.call(n,i,i,l,o)},a={selected:n.selected,onDayClick:s};return t.jsx(Da.Provider,{value:a,children:r})}function bl(){var e=c.useContext(Da);if(!e)throw new Error("useSelectSingle must be used within a SelectSingleProvider");return e}function Xg(e,n){var r=ye(),s=bl(),a=ka(),i=ja(),l=Sa(),o=l.focusDayAfter,d=l.focusDayBefore,u=l.focusWeekAfter,h=l.focusWeekBefore,g=l.blur,p=l.focus,v=l.focusMonthBefore,f=l.focusMonthAfter,m=l.focusYearBefore,w=l.focusYearAfter,x=l.focusStartOfWeek,b=l.focusEndOfWeek,y=function(F){var B,D,N,T;Yr(r)?(B=s.onDayClick)===null||B===void 0||B.call(s,e,n,F):rr(r)?(D=a.onDayCl
327ick)===null||D===void 0||D.call(a,e,n,F):sr(r)?(N=i.onDayClick)===null||N===void 0||N.call(i,e,n,F):(T=r.onDayClick)===null||T===void 0||T.call(r,e,n,F)},P=function(F){var B;p(e),(B=r.onDayFocus)===null||B===void 0||B.call(r,e,n,F)},V=function(F){var B;g(),(B=r.onDayBlur)===null||B===void 0||B.call(r,e,n,F)},$=function(F){var B;(B=r.onDayMouseEnter)===null||B===void 0||B.call(r,e,n,F)},W=function(F){var B;(B=r.onDayMouseLeave)===null||B===void 0||B.call(r,e,n,F)},G=function(F){var B;(B=r.onDayPointerEnter)===null||B===void 0||B.call(r,e,n,F)},C=function(F){var B;(B=r.onDayPointerLeave)===null||B===void 0||B.call(r,e,n,F)},A=function(F){var B;(B=r.onDayTouchCancel)===null||B===void 0||B.call(r,e,n,F)},j=function(F){var B;(B=r.onDayTouchEnd)===null||B===void 0||B.call(r,e,n,F)},R=function(F){var B;(B=r.onDayTouchMove)===null||B===void 0||B.call(r,e,n,F)},z=function(F){var B;(B=r.onDayTouchStart)===null||B===void 0||B.call(r,e,n,F)},_=function(F){var B;(B=r.onDayKeyUp)===null||B===void 0||B.call(r,e,n,F)},K=function(F){var B;switch(F.key){case"ArrowLeft":F.preventDefault(),F.stopPropagation(),r.dir==="rtl"?o():d();break;case"ArrowRight":F.preventDefault(),F.stopPropagation(),r.dir==="rtl"?d():o();break;case"ArrowDown":F.preventDefault(),F.stopPropagation(),u();break;case"ArrowUp":F.preventDefault(),F.stopPropagation(),h();break;case"PageUp":F.preventDefault(),F.stopPropagation(),F.shiftKey?m():v();break;case"PageDown":F.preventDefault(),F.stopPropagation(),F.shiftKey?w():f();break;case"Home":F.preventDefault(),F.stopPropagation(),x();break;case"End":F.preventDefault(),F.stopPropagation(),b();break}(B=r.onDayKeyDown)===null||B===void 0||B.call(r,e,n,F)},ne={onClick:y,onFocus:P,onBlur:V,onKeyDown:K,onKeyUp:_,onMouseEnter:$,onMouseLeave:W,onPointerEnter:G,onPointerLeave:C,onTouchCancel:A,onTouchEnd:j,onTouchMove:R,onTouchStart:z};return ne}function ep(){var e=ye(),n=bl(),r=ka(),s=ja(),a=Yr(e)?n.selected:rr(e)?r.selected:sr(e)?s.selected:void 0;return a}function tp(e){return Object.values(rt).includes(e)}function np(e,n){var r=[e.classNames.day];return Object.keys(n).forEach(function(s){var a=e.modifiersClassNames[s];if(a)r.push(a);else if(tp(s)){var i=e.classNames["day_".concat(s)];i&&r.push(i)}}),r}function rp(e,n){var r=se({},e.styles.day);return Object.keys(n).forEach(function(s){var a;r=se(se({},r),(a=e.modifiersStyles)===null||a===void 0?void 0:a[s])}),r}function sp(e,n,r){var s,a,i,l=ye(),o=Sa(),d=Yg(e,n),u=Xg(e,d),h=ep(),g=!!(l.onDayClick||l.mode!=="default");c.useEffect(function(){var $;d.outside||o.focusedDay&&g&&Ke(o.focusedDay,e)&&(($=r.current)===null||$===void 0||$.focus())},[o.focusedDay,e,r,g,d.outside]);var p=np(l,d).join(" "),v=rp(l,d),f=!!(d.outside&&!l.showOutsideDays||d.hidden),m=(i=(a=l.components)===null||a===void 0?void 0:a.DayContent)!==null&&i!==void 0?i:Sg,w=t.jsx(m,{date:e,displayMonth:n,activeModifiers:d}),x={style:v,className:p,children:w,role:"gridcell"},b=o.focusTarget&&Ke(o.focusTarget,e)&&!d.outside,y=o.focusedDay&&Ke(o.focusedDay,e),P=se(se(se({},x),(s={disabled:d.disabled,role:"gridcell"},s["aria-selected"]=d.selected,s.tabIndex=y||b?0:-1,s)),u),V={isButton:g,isHidden:f,activeModifiers:d,selectedDays:h,buttonProps:P,divProps:x};return V}function ap(e){var n=c.useRef(null),r=sp(e.date,e.displayMonth,n);return r.isHidden?t.jsx("div",{role:"gridcell"}):r.isButton?t.jsx(Tr,se({name:"day",ref:n},r.buttonProps)):t.jsx("div",se({},r.divProps))}function ip(e){var n=e.number,r=e.dates,s=ye(),a=s.onWeekNumberClick,i=s.styles,l=s.classNames,o=s.locale,d=s.labels.labelWeekNumber,u=s.formatters.formatWeekNumber,h=u(Number(n),{locale:o});if(!a)return t.jsx("span",{className:l.weeknumber,style:i.weeknumber,children:h});var g=d(Number(n),{locale:o}),p=function(v){a(n,r,v)};return t.jsx(Tr,{name:"week-number","aria-label":g,className:l.weeknumber,style:i.weeknumber,onClick:p,children:h})}function op(e){var n,r,s=ye(),a=s.styles,i=s.classNames,l=s.showWeekNumber,o=s.components,d=(n=o==null?void 0:o.Day)!==null&&n!==void 0?n:ap,u=(r=o==null?void 0:o.WeekNumber)!==null&&r!==void 0?r:ip,h;return l&&(h=t.jsx("td",{className:i.cell,style:a.cell,children:t.jsx(u,{number:e.weekNumber,dates:e.dates})})),t.jsxs("tr",{className:i.row,style:a.row,children:[h,e.dates.map(function(g){return t.jsx("td",{className:i.cell,style:a.cell,role:"presentation",children:t.jsx(d,{displayMonth:e.displayMonth,date:g})},ef(g))})]})}function ui(e,n,r){for(var s=r!=null&&r.ISOWeek?el(n):pa(n,r),a=r!=null&&r.ISOWeek?Vt(e):dt(e,r),i=lt(s,a),l=[],o=0;o<=i;o++)l.push(We(a,o));var d=l.reduce(function(u,h){var g=r!=null&&r.ISOWeek?nl(h):sl(h,r),p=u.find(function(v){return v.weekNumber===g});return p?(p.dates.push(h),u):(u.push({weekNumber:g,dates:[h]}),u)},[]);return d}function lp(e,n){var r=ui($e(e),Zr(e),n);if(n!=null&&n.useFixedWeeks){var s=nf(e,n);if(s<6){var a=r[r.length-1],i=a.dates[a.dates.length-1],l=Ps(i,6-s),o=ui(Ps(i,1),l,n);r.push.apply(r,o)}}return r}function cp(e){var n,r,s,a=ye(),i=a.locale,l=a.classNames,o=a.styles,d=a.hideHead,u=a.fixedWeeks,h=a.components,g=a.weekStartsOn,p=a.firstWeekContainsDate,v=a.ISOWeek,f=lp(e.displayMonth,{useFixedWeeks:!!u,ISOWeek:v,locale:i,weekStartsOn:g,firstWeekContainsDate:p}),m=(n=h==null?void 0:h.Head)!==null&&n!==void 0?n:Ng,w=(r=h==null?void 0:h.Row)!==null&&r!==void 0?r:op,x=(s=h==null?void 0:h.Footer)!==null&&s!==void 0?s:kg;return t.jsxs("table",{id:e.id,className:l.table,style:o.table,role:"grid","aria-labelledby":e["aria-labelledby"],children:[!d&&t.jsx(m,{}),t.jsx("tbody",{className:l.tbody,style:o.tbody,children:f.map(function(b){return t.jsx(w,{displayMonth:e.displayMonth,dates:b.dates,weekNumber:b.weekNumber},b.weekNumber)})}),t.jsx(x,{displayMonth:e.displayMonth})]})}function dp(){return!!(typeof window<"u"&&window.document&&window.document.createElement)}var up=dp()?c.useLayoutEffect:c.useEffect,fs=!1,hp=0;function hi(){return"react-day-picker-".concat(++hp)}function mp(e){var n,r=e??(fs?hi():null),s=c.useState(r),a=s[0],i=s[1];return up(function(){a===null&&i(hi())},[]),c.useEffect(function(){fs===!1&&(fs=!0)},[]),(n=e??a)!==null&&n!==void 0?n:void 0}
vendor: 4,434 bytes, line 327
327function fp(e){var n,r,s=ye(),a=s.dir,i=s.classNames,l=s.styles,o=s.components,d=ar().displayMonths,u=mp(s.id?"".concat(s.id,"-").concat(e.displayIndex):void 0),h=s.id?"".concat(s.id,"-grid-").concat(e.displayIndex):void 0,g=[i.month],p=l.month,v=e.displayIndex===0,f=e.displayIndex===d.length-1,m=!v&&!f;a==="rtl"&&(n=[v,f],f=n[0],v=n[1]),v&&(g.push(i.caption_start),p=se(se({},p),l.caption_start)),f&&(g.push(i.caption_end),p=se(se({},p),l.caption_end)),m&&(g.push(i.caption_between),p=se(se({},p),l.caption_between));var w=(r=o==null?void 0:o.Caption)!==null&&r!==void 0?r:yg;return t.jsxs("div",{className:g.join(" "),style:p,children:[t.jsx(w,{id:u,displayMonth:e.displayMonth,displayIndex:e.displayIndex}),t.jsx(cp,{id:h,"aria-labelledby":u,displayMonth:e.displayMonth})]},e.displayIndex)}function gp(e){var n=ye(),r=n.classNames,s=n.styles;return t.jsx("div",{className:r.months,style:s.months,children:e.children})}function pp(e){var n,r,s=e.initialProps,a=ye(),i=Sa(),l=ar(),o=c.useState(!1),d=o[0],u=o[1];c.useEffect(function(){a.initialFocus&&i.focusTarget&&(d||(i.focus(i.focusTarget),u(!0)))},[a.initialFocus,d,i.focus,i.focusTarget,i]);var h=[a.classNames.root,a.className];a.numberOfMonths>1&&h.push(a.classNames.multiple_months),a.showWeekNumber&&h.push(a.classNames.with_weeknumber);var g=se(se({},a.styles.root),a.style),p=Object.keys(s).filter(function(f){return f.startsWith("data-")}).reduce(function(f,m){var w;return se(se({},f),(w={},w[m]=s[m],w))},{}),v=(r=(n=s.components)===null||n===void 0?void 0:n.Months)!==null&&r!==void 0?r:gp;return t.jsx("div",se({className:h.join(" "),style:g,dir:a.dir,id:a.id,nonce:s.nonce,title:s.title,lang:s.lang},p,{children:t.jsx(v,{children:l.displayMonths.map(function(f,m){return t.jsx(fp,{displayIndex:m,displayMonth:f},m)})})}))}function xp(e){var n=e.children,r=Lf(e,["children"]);return t.jsx(ig,{initialProps:r,children:t.jsx(pg,{children:t.jsx(Jg,{initialProps:r,children:t.jsx(Dg,{initialProps:r,children:t.jsx(Cg,{initialProps:r,children:t.jsx(Og,{children:t.jsx(Zg,{children:n})})})})})})})}function bp(e){return t.jsx(xp,se({},e,{children:t.jsx(pp,{initialProps:e})}))}function _a({className:e,classNames:n,showOutsideDays:r=!0,...s}){return t.jsx(bp,{showOutsideDays:r,className:Q("p-3",e),classNames:{months:"flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0",month:"space-y-4",caption:"flex justify-center pt-1 relative items-center",caption_label:"text-sm font-medium",nav:"space-x-1 flex items-center",nav_button:Q(Ba({variant:"outline"}),"h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100"),nav_button_previous:"absolute left-1",nav_button_next:"absolute right-1",table:"w-full border-collapse space-y-1",head_row:"flex",head_cell:"text-muted-foreground rounded-md w-9 font-normal text-[0.8rem]",row:"flex w-full mt-2",cell:"h-9 w-9 text-center text-sm p-0 relative [&:has([aria-selected].day-range-end)]:rounded-r-md [&:has([aria-selected].day-outside)]:bg-accent/50 [&:has([aria-selected])]:bg-accent first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md focus-within:relative focus-within:z-20",day:Q(Ba({variant:"ghost"}),"h-9 w-9 p-0 font-normal aria-selected:opacity-100"),day_range_end:"day-range-end",day_selected:"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground",day_today:"bg-accent text-accent-foreground",day_outside:"day-outside text-muted-foreground opacity-50 aria-selected:bg-accent/50 aria-selected:text-muted-foreground aria-selected:opacity-30",day_disabled:"text-muted-foreground opacity-50",day_range_middle:"aria-selected:bg-accent aria-selected:text-accent-foreground",day_hidden:"invisible",...n},components:{IconLeft:({...a})=>t.jsx(Vi,{className:"h-4 w-4"}),IconRight:({...a})=>t.jsx($r,{className:"h-4 w-4"})},...s})}_a.displayName="Calendar";var Jr="Popover",[vl,by]=Yn(Jr,[xn]),ir=xn(),[vp,It]=vl(Jr),yl=e=>{const{__scopePopover:n,children:r,open:s,defaultOpen:a,onOpenChange:i,modal:l=!1}=e,o=ir(n),d=c.useRef(null),[u,h]=c.useState(!1),[g,p]=jr({prop:s,defaultProp:a??!1,onChange:i,caller:Jr});return t.jsx(Js,{...o,children:t.jsx(vp,{scope:n,contentId:ln(),triggerRef:d,open:g,onOpenChange:p,onOpenToggle:c.useCallback(()=>p(v=>!v),[p]),hasCustomAnchor:u,onCustomAnchorAdd:c.useCallback(()=>h(!0),[]),onCustomAnchorRemove:c.useCallback(()=>h(!1),[]),modal:l,children:r})})};yl.displayName=Jr;
vendor: 4,494 bytes, line 327
327var kl="PopoverAnchor",yp=c.forwardRef((e,n)=>{const{__scopePopover:r,...s}=e,a=It(kl,r),i=ir(r),{onCustomAnchorAdd:l,onCustomAnchorRemove:o}=a;return c.useEffect(()=>(l(),()=>o()),[l,o]),t.jsx(Lr,{...i,...s,ref:n})});yp.displayName=kl;var wl="PopoverTrigger",jl=c.forwardRef((e,n)=>{const{__scopePopover:r,...s}=e,a=It(wl,r),i=ir(r),l=Ie(n,a.triggerRef),o=t.jsx(je.button,{type:"button","aria-haspopup":"dialog","aria-expanded":a.open,"aria-controls":a.contentId,"data-state":Ml(a.open),...s,ref:l,onClick:ae(e.onClick,a.onOpenToggle)});return a.hasCustomAnchor?o:t.jsx(Lr,{asChild:!0,...i,children:o})});jl.displayName=wl;var Ma="PopoverPortal",[kp,wp]=vl(Ma,{forceMount:void 0}),Nl=e=>{const{__scopePopover:n,forceMount:r,children:s,container:a}=e,i=It(Ma,n);return t.jsx(kp,{scope:n,forceMount:r,children:t.jsx(bn,{present:r||i.open,children:t.jsx(Qs,{asChild:!0,container:a,children:s})})})};Nl.displayName=Ma;var pn="PopoverContent",Sl=c.forwardRef((e,n)=>{const r=wp(pn,e.__scopePopover),{forceMount:s=r.forceMount,...a}=e,i=It(pn,e.__scopePopover);return t.jsx(bn,{present:s||i.open,children:i.modal?t.jsx(Np,{...a,ref:n}):t.jsx(Sp,{...a,ref:n})})});Sl.displayName=pn;var jp=Xs("PopoverContent.RemoveScroll"),Np=c.forwardRef((e,n)=>{const r=It(pn,e.__scopePopover),s=c.useRef(null),a=Ie(n,s),i=c.useRef(!1);return c.useEffect(()=>{const l=s.current;if(l)return Ks(l)},[]),t.jsx(Ys,{as:jp,allowPinchZoom:!0,children:t.jsx(Dl,{...e,ref:a,trapFocus:r.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:ae(e.onCloseAutoFocus,l=>{var o;l.preventDefault(),i.current||(o=r.triggerRef.current)==null||o.focus()}),onPointerDownOutside:ae(e.onPointerDownOutside,l=>{const o=l.detail.originalEvent,d=o.button===0&&o.ctrlKey===!0,u=o.button===2||d;i.current=u},{checkForDefaultPrevented:!1}),onFocusOutside:ae(e.onFocusOutside,l=>l.preventDefault(),{checkForDefaultPrevented:!1})})})}),Sp=c.forwardRef((e,n)=>{const r=It(pn,e.__scopePopover),s=c.useRef(!1),a=c.useRef(!1);return t.jsx(Dl,{...e,ref:n,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:i=>{var l,o;(l=e.onCloseAutoFocus)==null||l.call(e,i),i.defaultPrevented||(s.current||(o=r.triggerRef.current)==null||o.focus(),i.preventDefault()),s.current=!1,a.current=!1},onInteractOutside:i=>{var d,u;(d=e.onInteractOutside)==null||d.call(e,i),i.defaultPrevented||(s.current=!0,i.detail.originalEvent.type==="pointerdown"&&(a.current=!0));const l=i.target;((u=r.triggerRef.current)==null?void 0:u.contains(l))&&i.preventDefault(),i.detail.originalEvent.type==="focusin"&&a.current&&i.preventDefault()}})}),Dl=c.forwardRef((e,n)=>{const{__scopePopover:r,trapFocus:s,onOpenAutoFocus:a,onCloseAutoFocus:i,disableOutsidePointerEvents:l,onEscapeKeyDown:o,onPointerDownOutside:d,onFocusOutside:u,onInteractOutside:h,...g}=e,p=It(pn,r),v=ir(r);return $s(),t.jsx(Vs,{asChild:!0,loop:!0,trapped:s,onMountAutoFocus:a,onUnmountAutoFocus:i,children:t.jsx(Us,{asChild:!0,disableOutsidePointerEvents:l,onInteractOutside:h,onEscapeKeyDown:o,onPointerDownOutside:d,onFocusOutside:u,onDismiss:()=>p.onOpenChange(!1),children:t.jsx(qs,{"data-state":Ml(p.open),role:"dialog",id:p.contentId,...v,...g,ref:n,style:{...g.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),_l="PopoverClose",Dp=c.forwardRef((e,n)=>{const{__scopePopover:r,...s}=e,a=It(_l,r);return t.jsx(je.button,{type:"button",...s,ref:n,onClick:ae(e.onClick,()=>a.onOpenChange(!1))})});Dp.displayName=_l;var _p="PopoverArrow",Mp=c.forwardRef((e,n)=>{const{__scopePopover:r,...s}=e,a=ir(r);return t.jsx(Zs,{...a,...s,ref:n})});Mp.displayName=_p;function Ml(e){return e?"open":"closed"}var Cp=yl,Ap=jl,zp=Nl,Cl=Sl;const wn=Cp,jn=Ap,Qt=c.forwardRef(({className:e,align:n="center",sideOffset:r=4,...s},a)=>t.jsx(zp,{children:t.jsx(Cl,{ref:a,align:n,sideOffset:r,className:Q("z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:sli
327de-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...s})}));Qt.displayName=Cl.displayName;function mi(e,[n,r]){return Math.min(r,Math.max(n,e))}var Tp=[" ","Enter","ArrowUp","ArrowDown"],Pp=[" ","Enter"],Ut="Select",[Qr,Xr,Ep]=Oi(Ut),[Nn,vy]=Yn(Ut,[Ep,xn]),es=xn(),[Rp,Ot]=Nn(Ut),[Ip,Op]=Nn(Ut),Al=e=>{const{__scopeSelect:n,children:r,open:s,defaultOpen:a,onOpenChange:i,value:l,defaultValue:o,onValueChange:d,dir:u,name:h,autoComplete:g,disabled:p,required:v,form:f}=e,m=es(n),[w,x]=c.useState(null),[b,y]=c.useState(null),[P,V]=c.useState(!1),$=Hi(u),[W,G]=jr({prop:s,defaultProp:a??!1,onChange:i,caller:Ut}),[C,A]=jr({prop:l,defaultProp:o,onChange:d,caller:Ut}),j=c.useRef(null),R=w?f||!!w.closest("form"):!0,[z,_]=c.useState(new Set),K=Array.from(z).map(ne=>ne.props.value).join(";");return t.jsx(Js,{...m,children:t.jsxs(Rp,{required:v,scope:n,trigger:w,onTriggerChange:x,valueNode:b,onValueNodeChange:y,valueNodeHasChildren:P,onValueNodeHasChildrenChange:V,contentId:ln(),value:C,onValueChange:A,open:W,onOpenChange:G,dir:$,triggerPointerDownPosRef:j,disabled:p,children:[t.jsx(Qr.Provider,{scope:n,children:t.jsx(Ip,{scope:e.__scopeSelect,onNativeOptionAdd:c.useCallback(ne=>{_(F=>new Set(F).add(ne))},[]),onNativeOptionRemove:c.useCallback(ne=>{_(F=>{const B=new Set(F);return B.delete(ne),B})},[]),children:r})}),R?t.jsxs(ec,{"aria-hidden":!0,required:v,tabIndex:-1,name:h,autoComplete:g,value:C,onChange:ne=>A(ne.target.value),disabled:p,form:f,children:[C===void 0?t.jsx("option",{value:""}):null,Array.from(z)]},K):null]})})};Al.displayName=Ut;var zl="SelectTrigger",Tl=c.forwardRef((e,n)=>{const{__scopeSelect:r,disabled:s=!1,...a}=e,i=es(r),l=Ot(zl,r),o=l.disabled||s,d=Ie(n,l.onTriggerChange),u=Xr(r),h=c.useRef("touch"),[g,p,v]=nc(m=>{const w=u().filter(y=>!y.disabled),x=w.find(y=>y.value===l.value),b=rc(w,m,x);b!==void 0&&l.onValueChange(b.value)}),f=m=>{o||(l.onOpenChange(!0),v()),m&&(l.triggerPointerDownPosRef.current={x:Math.round(m.pageX),y:Math.round(m.pageY)})};return t.jsx(Lr,{asChild:!0,...i,children:t.jsx(je.button,{type:"button",role:"combobox","aria-controls":l.contentId,"aria-expanded":l.open,"aria-required":l.required,"aria-autocomplete":"none",dir:l.dir,"data-state":l.open?"open":"closed",disabled:o,"data-disabled":o?"":void 0,"data-placeholder":tc(l.value)?"":void 0,...a,ref:d,onClick:ae(a.onClick,m=>{m.currentTarget.focus(),h.current!=="mouse"&&f(m)}),onPointerDown:ae(a.onPointerDown,m=>{h.current=m.pointerType;const w=m.target;w.hasPointerCapture(m.pointerId)&&w.releasePointerCapture(m.pointerId),m.button===0&&m.ctrlKey===!1&&m.pointerType==="mouse"&&(f(m),m.preventDefault())}),onKeyDown:ae(a.onKeyDown,m=>{const w=g.current!=="";!(m.ctrlKey||m.altKey||m.metaKey)&&m.key.length===1&&p(m.key),!(w&&m.key===" ")&&Tp.includes(m.key)&&(f(),m.preventDefault())})})})});Tl.displayName=zl;var Pl="SelectValue",El=c.forwardRef((e,n)=>{const{__scopeSelect:r,className:s,style:a,children:i,placeholder:l="",...o}=e,d=Ot(Pl,r),{onValueNodeHasChildrenChange:u}=d,h=i!==void 0,g=Ie(n,d.onValueNodeChange);return zt(()=>{u(h)},[u,h]),t.jsx(je.span,{...o,ref:g,style:{pointerEvents:"none"},children:tc(d.value)?t.jsx(t.Fragment,{children:l}):i})});El.displayName=Pl;var Fp="SelectIcon",Rl=c.forwardRef((e,n)=>{const{__scopeSelect:r,children:s,...a}=e;return t.jsx(je.span,{"aria-hidden":!0,...a,ref:n,children:s||"â¼"})});Rl.displayName=Fp;var Bp="SelectPortal",Il=e=>t.jsx(Qs,{asChild:!0,...e});Il.displayName=Bp;var qt="SelectContent",Ol=c.forwardRef((e,n)=>{const r=Ot(qt,e.__scopeSelect),[s,a]=c.useState();if(zt(()=>{a(new DocumentFragment)},[]),!r.open){const i=s;return i?Wi.createPortal(t.jsx(Fl,{scope:e.__scopeSelect,children:t.jsx(Qr.Slot,{scope:e.__scopeSelect,children:t.jsx("div",{children:e.children})})}),i):null}return t.jsx(Bl,{...e,ref:n})});Ol.displayName=qt;var Xe=10,[Fl,Ft]=Nn(qt),Wp="SelectContentImpl",Lp=Xs("SelectContent.RemoveScroll"),Bl=c.forwardRef((e,n)=>{const{__scopeSelect:r,position:s="item-aligned",onCloseAutoFocus:a,onEscapeKeyDown:i,onPointerDownOutside:l,side:o,sideOffset:d,align:u,alignOffset:h,arrowPadding:g,collisionBoundary:p,collisionPadding:v,sticky:f,hideWhenDetached:m,avoidCollisions:w,...x}
vendor: 14,207 bytes, line 327
327=e,b=Ot(qt,r),[y,P]=c.useState(null),[V,$]=c.useState(null),W=Ie(n,L=>P(L)),[G,C]=c.useState(null),[A,j]=c.useState(null),R=Xr(r),[z,_]=c.useState(!1),K=c.useRef(!1);c.useEffect(()=>{if(y)return Ks(y)},[y]),$s();const ne=c.useCallback(L=>{const[ee,...ie]=R().map(le=>le.ref.current),[J]=ie.slice(-1),re=document.activeElement;for(const le of L)if(le===re||(le==null||le.scrollIntoView({block:"nearest"}),le===ee&&V&&(V.scrollTop=0),le===J&&V&&(V.scrollTop=V.scrollHeight),le==null||le.focus(),document.activeElement!==re))return},[R,V]),F=c.useCallback(()=>ne([G,y]),[ne,G,y]);c.useEffect(()=>{z&&F()},[z,F]);const{onOpenChange:B,triggerPointerDownPosRef:D}=b;c.useEffect(()=>{if(y){let L={x:0,y:0};const ee=J=>{var re,le;L={x:Math.abs(Math.round(J.pageX)-(((re=D.current)==null?void 0:re.x)??0)),y:Math.abs(Math.round(J.pageY)-(((le=D.current)==null?void 0:le.y)??0))}},ie=J=>{L.x<=10&&L.y<=10?J.preventDefault():y.contains(J.target)||B(!1),document.removeEventListener("pointermove",ee),D.current=null};return D.current!==null&&(document.addEventListener("pointermove",ee),document.addEventListener("pointerup",ie,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",ee),document.removeEventListener("pointerup",ie,{capture:!0})}}},[y,B,D]),c.useEffect(()=>{const L=()=>B(!1);return window.addEventListener("blur",L),window.addEventListener("resize",L),()=>{window.removeEventListener("blur",L),window.removeEventListener("resize",L)}},[B]);const[N,T]=nc(L=>{const ee=R().filter(re=>!re.disabled),ie=ee.find(re=>re.ref.current===document.activeElement),J=rc(ee,L,ie);J&&setTimeout(()=>J.ref.current.focus())}),I=c.useCallback((L,ee,ie)=>{const J=!K.current&&!ie;(b.value!==void 0&&b.value===ee||J)&&(C(L),J&&(K.current=!0))},[b.value]),M=c.useCallback(()=>y==null?void 0:y.focus(),[y]),E=c.useCallback((L,ee,ie)=>{const J=!K.current&&!ie;(b.value!==void 0&&b.value===ee||J)&&j(L)},[b.value]),Z=s==="popper"?Is:Wl,Y=Z===Is?{side:o,sideOffset:d,align:u,alignOffset:h,arrowPadding:g,collisionBoundary:p,collisionPadding:v,sticky:f,hideWhenDetached:m,avoidCollisions:w}:{};return t.jsx(Fl,{scope:r,content:y,viewport:V,onViewportChange:$,itemRefCallback:I,selectedItem:G,onItemLeave:M,itemTextRefCallback:E,focusSelectedItem:F,selectedItemText:A,position:s,isPositioned:z,searchRef:N,children:t.jsx(Ys,{as:Lp,allowPinchZoom:!0,children:t.jsx(Vs,{asChild:!0,trapped:b.open,onMountAutoFocus:L=>{L.preventDefault()},onUnmountAutoFocus:ae(a,L=>{var ee;(ee=b.trigger)==null||ee.focus({preventScroll:!0}),L.preventDefault()}),children:t.jsx(Us,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:i,onPointerDownOutside:l,onFocusOutside:L=>L.preventDefault(),onDismiss:()=>b.onOpenChange(!1),children:t.jsx(Z,{role:"listbox",id:b.contentId,"data-state":b.open?"open":"closed",dir:b.dir,onContextMenu:L=>L.preventDefault(),...x,...Y,onPlaced:()=>_(!0),ref:W,style:{display:"flex",flexDirection:"column",outline:"none",...x.style},onKeyDown:ae(x.onKeyDown,L=>{const ee=L.ctrlKey||L.altKey||L.metaKey;if(L.key==="Tab"&&L.preventDefault(),!ee&&L.key.length===1&&T(L.key),["ArrowUp","ArrowDown","Home","End"].includes(L.key)){let J=R().filter(re=>!re.disabled).map(re=>re.ref.current);if(["ArrowUp","End"].includes(L.key)&&(J=J.slice().reverse()),["ArrowUp","ArrowDown"].includes(L.key)){const re=L.target,le=J.indexOf(re);J=J.slice(le+1)}setTimeout(()=>ne(J)),L.preventDefault()}})})})})})})});Bl.displayName=Wp;var Hp="SelectItemAlignedPosition",Wl=c.forwardRef((e,n)=>{const{__scopeSelect:r,onPlaced:s,...a}=e,i=Ot(qt,r),l=Ft(qt,r),[o,d]=c.useState(null),[u,h]=c.useState(null),g=Ie(n,W=>h(W)),p=Xr(r),v=c.useRef(!1),f=c.useRef(!0),{viewport:m,selectedItem:w,selectedItemText:x,focusSelectedItem:b}=l,y=c.useCallback(()=>{if(i.trigger&&i.valueNode&&o&&u&&m&&w&&x){const W=i.trigger.getBoundingClientRect(),G=u.getBoundingClientRect(),C=i.valueNode.getBoundingClientRect(),A=x.getBoundingClientRect();if(i.dir!=="rtl"){const re=A.left-G.left,le=C.left-re,Se=W.left-le,ze=W.width+Se,_e=Math.max(ze,G.width),Ge=window.innerWidth-Xe,Fe=mi(le,[Xe,Math.max(Xe,Ge-_e)]);o.style.minWidth=ze+"px",o.style.left=Fe+"px"}else{const re=G.right-A.right,le=window.innerWidth-C.right-re,Se=window.innerWidth-W.right-le,ze=W.width+Se,_e=Math.max(ze,G.width),Ge=window.innerWidth-Xe,Fe=mi(le,[Xe,Math.max(Xe,Ge-_e)]);o.style.minWidth=ze+"px",o.style.right=Fe+"px"}const j=p(),R=window.innerHeight-Xe*2,z=m.scrollHeight,_=window.getComputedStyle(u),K=parseInt(_.borderTopWidth,10),ne=parseInt(_.paddingTop,10),F=parseInt(_.borderBottomWidth,10),B=parseInt(_.paddingBottom,10),D=K+ne+z+B+F,N=Math.min(w.offsetHeight*5,D),T=window.getComputedStyle(m),I=parseInt(T.paddingTop,10),M=parseInt(T.paddingBottom,10),E=W.top+W.height/2-Xe,Z=R-E,Y=w.offsetHeight/2,L=w.offsetTop+Y,ee=K+ne+L,ie=D-ee;if(ee<=E){const re=j.length>0&&w===j[j.length-1].ref.current;o.style.bottom="0px";const le=u.clientHeight-m.offsetTop-m.offsetHeight,Se=Math.max(Z,Y+(re?M:0)+le+F),ze=ee+Se;o.style.height=ze+"px"}else{const re=j.length>0&&w===j[0].ref.current;o.style.top="0px";const Se=Math.max(E,K+m.offsetTop+(re?I:0)+Y)+ie;o.style.height=Se+"px",m.scrollTop=ee-E+m.offsetTop}o.style.margin=`${Xe}px 0`,o.style.minHeight=N+"px",o.style.maxHeight=R+"px",s==null||s(),requestAnimationFrame(()=>v.current=!0)}},[p,i.trigger,i.valueNode,o,u,m,w,x,i.dir,s]);zt(()=>y(),[y]);const[P,V]=c.useState();zt(()=>{u&&V(window.getComputedStyle(u).zIndex)},[u]);const $=c.useCallback(W=>{W&&f.current===!0&&(y(),b==null||b(),f.current=!1)},[y,b]);return t.jsx($p,{scope:r,contentWrapper:o,shouldExpandOnScrollRef:v,onScrollButtonChange:$,children:t.jsx("div",{ref:d,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:P},children:t.jsx(je.div,{...a,ref:g,style:{boxSizing:"border-box",maxHeight:"100%",...a.style}})})})});Wl.displayName=Hp;var Kp="SelectPopperPosition",Is=c.forwardRef((e,n)=>{const{__scopeSelect:r,align:s="start",collisionPadding:a=Xe,...i}=e,l=es(r);return t.jsx(qs,{...l,...i,ref:n,align:s,collisionPadding:a,style:{boxSizing:"border-box",...i.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});Is.displayName=Kp;var[$p,Ca]=Nn(qt,{}),Os="SelectViewport",Ll=c.forwardRef((e,n)=>{const{__scopeSelect:r,nonce:s,...a}=e,i=Ft(Os,r),l=Ca(Os,r),o=Ie(n,i.onViewportChange),d=c.useRef(0);return t.jsxs(t.Fragment,{children:[t.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:s}),t.jsx(Qr.Slot,{scope:r,children:t.jsx(je.div,{"data-radix-select-viewport":"",role:"presentation",...a,ref:o,style:{position:"relative",flex:1,overflow:"hidden auto",...a.style},onScroll:ae(a.onScroll,u=>{const h=u.currentTarget,{contentWrapper:g,shouldExpandOnScrollRef:p}=l;if(p!=null&&p.current&&g){const v=Math.abs(d.current-h.scrollTop);if(v>0){const f=window.innerHeight-Xe*2,m=parseFloat(g.style.minHeight),w=parseFloat(g.style.height),x=Math.max(m,w);if(x<f){const b=x+v,y=Math.min(f,b),P=b-y;g.style.height=y+"px",g.style.bottom==="0px"&&(h.scrollTop=P>0?P:0,g.style.justifyContent="flex-end")}}}d.current=h.scrollTop})})})]})});Ll.displayName=Os;var Hl="SelectGroup",[Vp,Up]=Nn(Hl),qp=c.forwardRef((e,n)=>{const{__scopeSelect:r,...s}=e,a=ln();return t.jsx(Vp,{scope:r,id:a,children:t.jsx(je.div,{role:"group","aria-labelledby":a,...s,ref:n})})});qp.displayName=Hl;var Kl="SelectLabel",$l=c.forwardRef((e,n)=>{const{__scopeSelect:r,...s}=e,a=Up(Kl,r);return t.jsx(je.div,{id:a.id,...s,ref:n})});$l.displayName=Kl;var Pr="SelectItem",[Gp,Vl]=Nn(Pr),Ul=c.forwardRef((e,n)=>{const{__scopeSelect:r,value:s,disabled:a=!1,textValue:i,...l}=e,o=Ot(Pr,r),d=Ft(Pr,r),u=o.value===s,[h,g]=c.useState(i??""),[p,v]=c.useState(!1),f=Ie(n,b=>{var y;return(y=d.itemRefCallback)==null?void 0:y.call(d,b,s,a)}),m=ln(),w=c.useRef("touch"),x=()=>{a||(o.onValueChange(s),o.onOpenChange(!1))};if(s==="")throw new Error("A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return t.jsx(Gp,{scope:r,value:s,disabled:a,textId:m,isSelected:u,onItemTextChange:c.useCallback(b=>{g(y=>y||((b==null?void 0:b.textContent)??"").trim())},[]),children:t.jsx(Qr.ItemSlot,{scope:r,value:s,disabled:a,textValue:h,children:t.jsx(je.div,{role:"option","aria-labelledby":m,"data-highlighted":p?"":void 0,"aria-selected":u&&p,"data-state":u?"checked":"unchecked","aria-disabled":a||void 0,"data-disabled":a?"":void 0,tabIndex:a?void 0:-1,...l,ref:f,onFocus:ae(l.onFocus,()=>v(!0)),onBlur:ae(l.onBlur,()=>v(!1)),onClick:ae(l.onClick,()=>{w.current!=="mouse"&&x()}),onPointerUp:ae(l.onPointerUp,()=>{w.current==="mouse"&&x()}),onPointerDown:ae(l.onPointerDown,b=>{w.current=b.pointerType}),onPointerMove:ae(l.onPointerMove,b=>{var y;w.current=b.pointerType,a?(y=d.onItemLeave)==null||y.call(d):w.current==="mouse"&&b.currentTarget.focus({preventScroll:!0})}),onPointerLeave:ae(l.onPointerLeave,b=>{var y;b.currentTarget===document.activeElement&&((y=d.onItemLeave)==null||y.call(d))}),onKeyDown:ae(l.onKeyDown,b=>{var P;((P=d.searchRef)==null?void 0:P.current)!==""&&b.key===" "||(Pp.includes(b.key)&&x(),b.key===" "&&b.preventDefault())})})})})});Ul.displayName=Pr;var Tn="SelectItemText",ql=c.forwardRef((e,n)=>{const{__scopeSelect:r,className:s,style:a,...i}=e,l=Ot(Tn,r),o=Ft(Tn,r),d=Vl(Tn,r),u=Op(Tn,r),[h,g]=c.useState(null),p=Ie(n,x=>g(x),d.onItemTextChange,x=>{var b;return(b=o.itemTextRefCallback)==null?void 0:b.call(o,x,d.value,d.disabled)}),v=h==null?void 0:h.textContent,f=c.useMemo(()=>t.jsx("option",{value:d.value,disabled:d.disabled,children:v},d.value),[d.disabled,d.value,v]),{onNativeOptionAdd:m,onNativeOptionRemove:w}=u;return zt(()=>(m(f),()=>w(f)),[m,w,f]),t.jsxs(t.Fragment,{children:[t.jsx(je.span,{id:d.textId,...i,ref:p}),d.isSelected&&l.valueNode&&!l.valueNodeHasChildren?Wi.createPortal(i.children,l.valueNode):null]})});ql.displayName=Tn;var Gl="SelectItemIndicator",Zl=c.forwardRef((e,n)=>{const{__scopeSelect:r,...s}=e;return Vl(Gl,r).isSelected?t.jsx(je.span,{"aria-hidden":!0,...s,ref:n}):null});Zl.displayName=Gl;var Fs="SelectScrollUpButton",Yl=c.forwardRef((e,n)=>{const r=Ft(Fs,e.__scopeSelect),s=Ca(Fs,e.__scopeSelect),[a,i]=c.useState(!1),l=Ie(n,s.onScrollButtonChange);return zt(()=>{if(r.viewport&&r.isPositioned){let o=function(){const u=d.scrollTop>0;i(u)};const d=r.viewport;return o(),d.addEventListener("scroll",o),()=>d.removeEventListener("scroll",o)}},[r.viewport,r.isPositioned]),a?t.jsx(Ql,{...e,ref:l,onAutoScroll:()=>{const{viewport:o,selectedItem:d}=r;o&&d&&(o.scrollTop=o.scrollTop-d.offsetHeight)}}):null});Yl.displayName=Fs;var Bs="SelectScrollDownButton",Jl=c.forwardRef((e,n)=>{const r=Ft(Bs,e.__scopeSelect),s=Ca(Bs,e.__scopeSelect),[a,i]=c.useState(!1),l=Ie(n,s.onScrollButtonChange);return zt(()=>{if(r.viewport&&r.isPositioned){let o=function(){const u=d.scrollHeight-d.clientHeight,h=Math.ceil(d.scrollTop)<u;i(h)};const d=r.viewport;return o(),d.addEventListener("scroll",o),()=>d.removeEventListener("scroll",o)}},[r.viewport,r.isPositioned]),a?t.jsx(Ql,{...e,ref:l,onAutoScroll:()=>{const{viewport:o,selectedItem:d}=r;o&&d&&(o.scrollTop=o.scrollTop+d.offsetHeight)}}):null});Jl.displayName=Bs;var Ql=c.forwardRef((e,n)=>{const{__scopeSelect:r,onAutoScroll:s,...a}=e,i=Ft("SelectScrollButton",r),l=c.useRef(null),o=Xr(r),d=c.useCallback(()=>{l.current!==null&&(window.clearInterval(l.current),l.current=null)},[]);return c.useEffect(()=>()=>d(),[d]),zt(()=>{var h;const u=o().find(g=>g.ref.current===document.activeElement);(h=u==null?void 0:u.ref.current)==null||h.scrollIntoView({block:"nearest"})},[o]),t.jsx(je.div,{"aria-hidden":!0,...a,ref:n,style:{flexShrink:0,...a.style},onPointerDown:ae(a.onPointerDown,()=>{l.current===null&&(l.current=window.setInterval(s,50))}),onPointerMove:ae(a.onPointerMove,()=>{var u;(u=i.onItemLeave)==null||u.call(i),l.current===null&&(l.current=window.setInterval(s,50))}),onPointerLeave:ae(a.onPointerLeave,()=>{d()})})}),Zp="SelectSeparator",Xl=c.forwardRef((e,n)=>{const{__scopeSelect:r,...s}=e;return t.jsx(je.div,{"aria-hidden":!0,...s,ref:n})});Xl.displayName=Zp;var Ws="SelectArrow",Yp=c.forwardRef((e,n)=>{const{__scopeSelect:r,...s}=e,a=es(r),i=Ot(Ws,r),l=Ft(Ws,r);return i.open&&l.position==="popper"?t.jsx(Zs,{...a,...s,ref:n}):null});Yp.displayName=Ws;var Jp="SelectBubbleInput",ec=c.forwardRef(({__scopeSelect:e,value:n,...r},s)=>{const a=c.useRef(null),i=Ie(s,a),l=Kc(n);return c.useEffect(()=>{const o=a.current;if(!o)return;const d=window.HTMLSelectElement.prototype,h=Object.getOwnPropertyDescriptor(d,"value").set;if(l!==n&&h){const g=new Event("change",{bubbles:!0});h.call(o,n),o.dispatchEvent(g)}},[l,n]),t.jsx(je.select,{...r,style:{...$c,...r.style},ref:i,defaultValue:n})});ec.displayName=Jp;function tc(e){return e===""||e===void 0}function nc(e){const n=Gs(e),r=c.useRef(""),s=c.useRef(0),a=c.useCallback(l=>{const o=r.current+l;n(o),function d(u){r.current=u,window.clearTimeout(s.current),u!==""&&(s.current=window.setTimeout(()=>d(""),1e3))}(o)},[n]),i=c.useCallback(()=>{r.current="",window.clearTimeout(s.current)},[]);return c.useEffect(()=>()=>window.clearTimeout(s.current),[]),[r,a,i]}function rc(e,n,r){const a=n.length>1&&Array.from(n).every(u=>u===n[0])?n[0]:n,i=r?e.indexOf(r):-1;let l=Qp(e,Math.max(i,0));a.length===1&&(l=l.filter(u=>u!==r));const d=l.find(u=>u.textValue.toLowerCase().startsWith(a.toLowerCase()));return d!==r?d:void 0}function Qp(e,n){return e.map((r,s)=>e[(n+s)%e.length])}var Xp=Al,sc=Tl,ex=El,tx=Rl,nx=Il,ac=Ol,rx=Ll,ic=$l,oc=Ul,sx=ql,ax=Zl,lc=Yl,cc=Jl,dc=Xl;const yt=Xp,kt=ex,ut=c.forwardRef(({className:e,children:n,...r},s)=>t.jsxs(sc,{ref:s,className:Q("flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm r
327ing-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",e),...r,children:[n,t.jsx(tx,{asChild:!0,children:t.jsx(Kr,{className:"h-4 w-4 opacity-50"})})]}));ut.displayName=sc.displayName;const uc=c.forwardRef(({className:e,...n},r)=>t.jsx(lc,{ref:r,className:Q("flex cursor-default items-center justify-center py-1",e),...n,children:t.jsx(Rd,{className:"h-4 w-4"})}));uc.displayName=lc.displayName;const hc=c.forwardRef(({className:e,...n},r)=>t.jsx(cc,{ref:r,className:Q("flex cursor-default items-center justify-center py-1",e),...n,children:t.jsx(Kr,{className:"h-4 w-4"})}));hc.displayName=cc.displayName;const ht=c.forwardRef(({className:e,children:n,position:r="popper",...s},a)=>t.jsx(nx,{children:t.jsxs(ac,{ref:a,className:Q("relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",r==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",e),position:r,...s,children:[t.jsx(uc,{}),t.jsx(rx,{className:Q("p-1",r==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:n}),t.jsx(hc,{})]})}));ht.displayName=ac.displayName;const ix=c.forwardRef(({className:e,...n},r)=>t.jsx(ic,{ref:r,className:Q("py-1.5 pl-8 pr-2 text-sm font-semibold",e),...n}));ix.displayName=ic.displayName;const we=c.forwardRef(({className:e,children:n,...r},s)=>t.jsxs(oc,{ref:s,className:Q("relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground",e),...r,children:[t.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:t.jsx(ax,{children:t.jsx(tt,{className:"h-4 w-4"})})}),t.jsx(sx,{children:n})]}));we.displayName=oc.displayName;const ox=c.forwardRef(({className:e,...n},r)=>t.jsx(dc,{ref:r,className:Q("-mx-1 my-1 h-px bg-muted",e),...n}));ox.displayName=dc.displayName;function ts({value:e,onChange:n,className:r,compact:s=!0,time:a,onTimeChange:i,reminder:l,onReminderChange:o,customReminderAt:d,onCustomReminderChange:u}){const[h,g]=c.useState(!1),p=wt(e),v=e?Eh(e)+(a?` · ${a}`:""):"Fälligkeit (optional)",f=typeof i=="function",m=typeof o=="function";function w(b){const y=new Date;y.setDate(y.getDate()+b),n(pr(y))}function x(){const b=new Date,y=(5-b.getDay()+7)%7||7;b.setDate(b.getDate()+y),n(pr(b))}return t.jsxs(wn,{open:h,onOpenChange:g,children:[t.jsxs(xe,{children:[t.jsx(be,{asChild:!0,children:t.jsx(jn,{asChild:!0,children:s?t.jsxs(S,{type:"button",variant:"outline",size:"icon","aria-label":v,className:Q("h-11 w-11 shrink-0 relative",e&&"border-primary text-primary",r),children:[t.jsx(Sr,{className:"h-5 w-5"}),e&&t.jsx("span",{className:"absolute -top-1 -right-1 h-2.5 w-2.5 rounded-full bg-primary"})]}):t.jsxs(S,{type:"button",variant:"outline",className:Q("h-11 gap-2",r),children:[t.jsx(Sr,{className:"h-4 w-4"})," ",v]})})}),t.jsx(ve,{children:v})]}),t.jsxs(Qt,{className:"w-auto p-0",align:"end",children:[t.jsxs("div",{className:"flex flex-wrap gap-1 p-2 border-b",children:[t.jsx(S,{size:"sm",variant:"outline",className:"text-xs h-7",onClick:()=>w(0),children:"Heute"}),t.jsx(S,{size:"sm",variant:"outline",className:"text-xs h-7",onClick:()=>w(1),children:"Morgen"}),t.jsx(S,{size:"sm",variant:"outline",className:"text-xs h-7",onClick:x,children:"Freitag"}),t.jsx(S,{size:"sm",variant:"outline",className:"text-xs h-7",onClick:()=>w(7),children:"Nächste Woche"}),t.jsx(S,{size:"sm",variant:"ghost",className:"text-xs h-7",onClick:()=>{n(null),i==null||i(null),o==null||o("off")},children:"Löschen"})]}),t.jsx(_a,{mode:"single",selected:p??void 0,onSelect:b=>{n(b?pr(b):null)},initialFocus:!0,className:Q("p-3 pointer-events-auto")}),e&&f&&t.jsxs("div",{className:"px-3 py-2 border-t flex items-center gap-2",children:[t.jsx(Ln,{className:"h-4 w-4 text-muted-foreground shrink-0"}),t.jsx("label",{className:"text-xs text-muted-foreground",children:"Uhrzeit"}),t.jsx(oe,{type:"time",value:a??"",onChange:b=>i==null?void 0:i(b.target.value||null),className:"h-8 text-sm flex-1"}),a&&t.jsx(S,{type:"button",variant:"ghost",size:"sm",className:"h-7 text-xs px-2",onClick:()=>i==null?void 0:i(null),children:"ganztägig"})]}),e&&m&&t.jsxs("div",{className:"px-3 py-2 border-t space-y-2",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(bt,{className:"h-4 w-4 text-muted-foreground shrink-0"}),t.jsx("label",{className:"text-xs text-muted-foreground",children:"Erinnerung"}),t.jsxs(yt,{value:l??"off",onValueChange:b=>o==null?void 0:o(b),children:[t.jsx(ut,{className:"h-8 text-sm flex-1",children:t.jsx(kt,{})}),t.jsxs(ht,{children:[t.jsx(we,{value:"off",children:"Aus"}),t.jsx(we,{value:"due",children:"Zur Fälligkeit"}),t.jsx(we,{value:"10m",children:"10 Min vorher"}),t.jsx(we,{value:"1h",children:"1 Std vorher"}),t.jsx(we,{value:"1d",children:"1 Tag vorher"}),t.jsx(we,{value:"custom",children:"Eigene Zeitâ¦"})]})]})]}),l==="custom"&&t.jsx(oe,{type:"datetime-local",value:d?d.slice(0,16):"",onCh
327ange:b=>{const y=b.target.value;u==null||u(y?new Date(y).toISOString():null)},className:"h-8 text-sm w-full"}),l&&l!=="off"&&!a&&l!=="custom"&&t.jsx("p",{className:"text-[11px] text-muted-foreground",children:"Ohne Uhrzeit wird 09:00 als Standard angenommen."})]}),e&&t.jsxs("div",{className:"p-2 border-t flex justify-between",children:[t.jsxs(S,{type:"button",variant:"ghost",size:"sm",onClick:()=>{n(null),i==null||i(null),o==null||o("off")},children:[t.jsx(Me,{className:"h-3 w-3 mr-1"})," Datum entfernen"]}),t.jsx(S,{type:"button",size:"sm",className:"bg-gradient-brand",onClick:()=>g(!1),children:"Fertig"})]})]})]})}function Aa(e,n){const r=e??[],s=new Set((n??[]).map(o=>String(o))),a=new Map;for(const o of r)a.set((o.name??"").toLowerCase(),o);const i=[];for(const o of Bn){if(s.has(o.id))continue;const d=a.get(o.label.toLowerCase())??a.get(o.id.toLowerCase());d?i.push({id:o.id,label:d.name||o.label,emoji:d.emoji||o.emoji,description:o.description,source:"default",color:d.color??null,tagId:d.id}):i.push({...o,source:"default"})}const l=new Set(Bn.flatMap(o=>[o.label.toLowerCase(),o.id.toLowerCase()]));for(const o of r){const d=(o.name??"").toLowerCase();l.has(d)||i.push({id:o.name,label:o.name,emoji:o.emoji||Ss(o.name),description:"Eigene Rubrik",source:"custom",color:o.color??null,tagId:o.id})}return i}function mc(e){const{tags:n,hidden:r,todos:s}=e;return c.useMemo(()=>{const a=Aa(n,r),i=new Map;for(const l of s??[]){const o=l.tag??"";o&&i.set(o,(i.get(o)??0)+1)}return[...a].sort((l,o)=>{const d=i.get(l.id)??0,u=i.get(o.id)??0;return u!==d?u-d:0})},[n,r,s])}function za(e,n,r){if(!e)return null;const s=Aa(n,r),a=e.toLowerCase();return s.find(i=>i.id.toLowerCase()===a||i.label.toLowerCase()===a)??null}const lx=[{v:1,l:"Mo"},{v:2,l:"Di"},{v:3,l:"Mi"},{v:4,l:"Do"},{v:5,l:"Fr"},{v:6,l:"Sa"},{v:0,l:"So"}],cx=["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"];function fi(){const e=new Date;return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`}function Er({value:e,onChange:n}){var w;const[r,s]=c.useState(!1),a=(e==null?void 0:e.mode)??"none",i=Math.max(1,(e==null?void 0:e.interval)??1),l=(e==null?void 0:e.end_kind)??"never";function o(x){if(!e)return;const b="end_kind"in x||"end_until"in x||"end_count"in x?{end_shortcut:void 0,...x}:x;n({...e,...b})}function d(x){if(x==="none")return n(null);const b=new Date,y={mode:x,interval:(e==null?void 0:e.interval)??1,start_date:(e==null?void 0:e.start_date)??fi(),end_kind:(e==null?void 0:e.end_kind)??"never",end_count:e==null?void 0:e.end_count,end_until:e==null?void 0:e.end_until,end_shortcut:e==null?void 0:e.end_shortcut};x==="daily"&&(y.include_weekend=(e==null?void 0:e.include_weekend)??!0),x==="weekly"&&(y.weekdays=(e==null?void 0:e.weekdays)??[b.getDay()]),x==="monthly"&&(y.day_of_month=(e==null?void 0:e.day_of_month)??b.getDate()),x==="yearly"&&(y.day_of_month=(e==null?void 0:e.day_of_month)??b.getDate(),y.month_of_year=(e==null?void 0:e.month_of_year)??b.getMonth()+1),n(y)}function u(x){if((e==null?void 0:e.mode)!=="weekly")return;const b=new Set(e.weekdays??[]);b.has(x)?b.delete(x):b.add(x),o({weekdays:Array.from(b).sort()})}function h(x){if(!e)return;const b=e.start_date??fi(),y=e.mode==="monthly"||e.mode==="yearly",P=y?Xa(Bh(b,x),-1):Xa(b,x*7-1);n({...e,end_kind:"until",end_until:P,end_shortcut:{unit:y?"months":"weeks",n:x}})}const g=a==="daily"?"Tag(e)":a==="weekly"?"Woche(n)":a==="monthly"?"Monat(e)":a==="yearly"?"Jahr(e)":"",p=a==="daily"?"Täglich":a==="weekly"?"Wöchentlich":a==="monthly"?"Monatlich":a==="yearly"?"Jährlich":"",v="Wiederholung einstellen",f=(e==null?void 0:e.mode)==="monthly"||(e==null?void 0:e.mode)==="yearly"?"Monate":"Wochen",m=((w=e==null?void 0:e.end_shortcut)==null?void 0:w.n)??null;return t.jsxs(wn,{open:r,onOpenChange:s,children:[t.jsxs(xe,{children:[t.jsx(be,{asChild:!0,children:t.jsx(jn,{asChild:!0,children:t.jsx(S,{type:"button",variant:"outline",size:"icon",className:Q("h-10 w-10 shrink-0",e&&"border-primary text-primary"),"aria-label":v,children:t.jsx(Xd,{className:"h-4 w-4"})})})}),t.jsx(ve,{children:e?$t(e):v})]}),t.jsxs(Qt,{className:"w-[min(94vw,380px)] p-3 max-h-[80vh] overflow-y-auto",align:"end",children:[t.jsx("div",{className:"text-xs font-medium text-muted-foreground mb-2",children:e?$t(e):"Einmalig"}),t.jsx("div",{className:"grid grid-cols-3 gap-1 mb-3",children:["none","daily","weekly","monthly","yearly"].map(x=>t.jsx("button",{type:"button",onClick:()=>d(x),className:Q("rounded-md text-xs py-1.5 border",a===x?"bg-primary text-primary-foreground border-primary":"border-border"),children:x==="none"?"Einmalig":x==="daily"?"Täglich":x==="weekly"?"Wöchentlich":x==="monthly"?"Monatlich":"Jährlich"},x))}),e&&t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"flex items-center gap-2 mb-3",children:i>=2?t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"text-xs whitespace-nowrap",children:"Alle"}),t.jsx(oe,{type:"number",min:1,max:99,value:i,onChange:x=>o({interval:Math.max(1,Math.min(99,Number(x.target.value)||1))}),className:"h-8 w-20"}),t.jsx("span",{className:"text-xs",children:g})]}):t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"text-xs font-medium",children:p}),t.jsx(oe,{type:"number",min:1,max:99,value:i,onChange:x=>o({interval:Math.max(1,Math.min(99,Number(x.target.value)||1))}),className:"h-8 w-16 ml-auto",title:"Intervall"}),t.jsx("span",{className:"text-[10px] text-muted-foreground",children:"Intervall"})]})}),e.mode==="daily"&&t.jsxs("div",{className:"flex items-center justify-between gap-2 mb-3 rounded-md border border-border p-2",children:[t.jsxs("div",{className:"text-xs",children:[t.jsx("div",{className:"font-medium",children:"Inkl. Wochenende"}),t.jsx("div",{className:"text-muted-foreground",children:"Sa & So mitlaufen lassen"})]}),t.jsx(Ds,{checked:e.include_weekend!==!1,onCheckedChange:x=>o({include_weekend:x})})]}),e.mode==="weekly"&&t.jsxs("div",{className:"mb-3",children:[t.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"An welchen Wochentagen?"}),t.jsx("div",{className:"flex flex-wrap gap-1",children:lx.map(x=>{const b=(e.weekdays??[]).includes(x.v);return t.jsx("button",{type:"button",onClick:()=>u(x.v),className:Q("h-9 w-9 rounded-full text-xs border",b?"bg-primary text-primary-foreground border-primary":"border-border"),children:x.l},x.v)})})]}),e.mode==="monthly"&&t.jsxs("div",{className:"mb-3 space-y-2",children:[t.jsx("div",{className:"text-xs text-muted-foreground",children:"An welchem Tag im Monat?"}),t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("span",{className:"text-xs whitespace-nowrap",children:"Am"}),t.jsx(oe,{type:"number",min:1,max:31,value:e.day_of_month??1,onChange:x=>o({day_of_month:Math.max(1,Math.min(31,Number(x.target.value)||1))}),className:"h-9 w-20",inputMode:"numeric"}),t.jsx("span",{className:"text-xs",children:". des Monats"})]}),t.jsx("div",{className:"text-[11px] text-muted-foreground",children:"Hat ein Monat diesen Tag nicht (z. B. 31. im Februar), wird der letzte Tag genommen."}),t.jsxs("div",{className:"flex items-center justify-between gap-2 rounded-md border border-border p-2",children:[t.jsxs("div",{className:"text-xs",children:[t.jsx("div",{className:"font-medium",children:"Am letzten Tag des Monats"}),t.jsx("div",{className:"text-muted-foreground",children:"Zusätzlich auslösen"})]}),t.jsx(Ds,{checked:!!e.last_day_of_month,onCheckedChange:x=>o({last_day_of_month:x})})]})]}),e.mode==="yearly"&&t.jsxs("div",{className:"mb-3 space-y-2",children:[t.jsx("div",{className:"text-xs text-muted-foreground",children:"An welchem Tag im Jahr?"}),t.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[t.jsx("span",{className:"text-xs whitespace-nowrap",children:"Am"}),t.jsx(oe,{type:"number",min:1,max:31,value:e.day_of_month??1,onChange:x=>o({day_of_month:Math.max(1,Math.min(31,Number(x.target.value)||1))}),className:"h-9 w-20",inputMode:"numeric"}),t.jsx("span",{className:"text-xs",children:"."}),t.jsxs(yt,{value:String(e.month_of_year??new Date().getMonth()+1),onValueChange:x=>o({month_of_year:Math.max(1,Math.min(12,Number(x)||1))}),children:[t.jsx(ut,{className:"h-9 w-[130px]",children:t.jsx(kt,{})}),t.jsx(ht,{children:cx.map((x,b)=>t.jsx(we,{value:String(b+1),children:x},x))})]})]}),t.jsx("div",{className:"text-[11px] text-muted-foreground",children:'Z. B. Geburtstag â24. Juli" â die Aufgabe taucht jedes Jahr automatisch auf.'})]}),t.jsxs("div",{className:"mb-2",children:[t.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"Ende"}),t.jsx("div",{className:"grid grid-cols-3 gap-1",children:["never","count","until"].map(x=>t.jsx("button",{type:"button",onClick:()=>o({end_kind:x}),className:Q("rounded-md text-xs py-1.5 border",l===x?"bg-primary text-primary-foreground border-primary":"border-border"),children:x==="never"?"Nie":x==="count"?"Anzahl":"Bis Datum"},x))}),l==="count"&&t.jsxs("div",{className:"flex items-center gap-2 mt-2",children:[t.jsx("span",{className:"text-xs",children:"Nach"}),t.jsx(oe,{type:"number",min:1,max:365,value:e.end_count??1,onChange:x=>o({end_count:Math.max(1,Math.min(365,Number(x.target.value)||1))}),className:"h-8 w-20"}),t.jsx("span",{className:"text-xs",children:"Vorkommen"})]}),l==="until"&&t.jsx("div",{className:"mt-2",children:t.jsx(oe,{type:"date",value:e.end_until??"",onChange:x=>o({end_until:x.target.value||void 0}),className:"h-8"})})]}),t.jsxs("div",{className:"mb-2",children:[t.jsxs("div",{className:"text-xs text-muted-foreground mb-1",children:["Schnell: für die nächsten ",f]}),t.jsx("div",{className:"flex flex-wrap gap-1",children:[2,3,4,6,12].map(x=>{var y;const b=m===x&&((y=e==null?void 0:e.end_shortcut)==null?void 0:y.unit)===(f==="Monate"?"months":"weeks");return t.jsxs("button",{type:"button",onClick:()=>h(x),className:Q("rounded-full border px-3 py-1 text-xs transition",b?"bg-primary text-primary-foreground border-primary":"border-border hover:bg-accent"),children:[x," ",f==="Monate"?"Mo.":"Wo."]},x)})})]}),t.jsxs("div",{className:"flex items-center gap-2 mt-2",children:[t.jsxs(S,{type:"button",variant:"ghost",size:"sm",onClick:()=>n(null),children:[t.jsx(Me,{className:"h-3 w-3 mr-1"})," Routine entfernen"]}),t.jsx(S,{type:"button",size:"sm",className:"ml-auto bg-gradient-brand",onClick:()=>s(!1),children:"Ãbernehmen"})]})]})]})]})}const dx="Nachfass-Aufgabe, erledigt am";function ux(e){const n=(e??"").trim();if(!n)return{note:null,origin:null};const r=n.split(` 328`);if(r[0].trim().startsWith(dx)){const s=r[0].trim();return{note:r.slice(1).join(` 329`).trim()||null,origin:s}}return{note:n,origin:null}}function hx(e,n={}){const r=[],s=(n.prefix??"").trim();s&&r.push(s,"");const{note:a,origin:i}=ux(e.note);r.push(`Aufgabe: ${e.text}`),a&&r.push(`Notiz: ${a}`);const l=[];
329if(n.categoryLabel&&l.push(`Rubrik: ${n.categoryLabel}`),l.push(`Prio: ${e.prio}`),l.push(`Wichtig: ${e.important?"ja":"nein"}`),r.push(l.join(" · ")),e.due_date){const u=e.due_time?`, ${String(e.due_time).slice(0,5)} Uhr`:"";r.push(`Fällig: ${Yo(e.due_date)}${u}`)}const o=(n.objectiveTitles??[]).filter(Boolean);o.length&&r.push(`Fokus-Ziel: ${o.join(", ")}`),n.roleName&&r.push(`Projekt/Rolle: ${n.roleName}`);const d=n.subtasks??[];return d.length&&(r.push("Unteraufgaben:"),d.forEach(u=>r.push(`- ${u.text} (${u.done?"erledigt":"offen"})`))),i&&r.push(`Herkunft: ${i}`),r.join(` 330`)+` 331`}async function mx(e){var n;try{if((n=navigator.clipboard)!=null&&n.writeText)return await navigator.clipboard.writeText(e),!0}catch{}try{const r=document.createElement("textarea");r.value=e,r.setAttribute("readonly",""),r.style.position="fixed",r.style.top="-1000px",r.style.opacity="0",document.body.appendChild(r),r.focus(),r.select(),r.setSelectionRange(0,e.length);const s=document.execCommand("copy");return document.body.removeChild(r),s}catch{return!1}}function fx(){const{tags:e,roles:n,profile:r}=de(),{objectives:s}=He(),{todoObjectives:a}=kn();async function i(l){var m,w;const o=((m=r.data)==null?void 0:m.hidden_categories)??[],d=za(l.tag,e.data??[],o),u=(n.data??[]).find(x=>x.id===l.role_id)??null,h=new Map;(e.data??[]).forEach(x=>{x.objective_id&&h.set(x.name,x.objective_id)});const p=va(l,a.data??new Map,h).map(x=>{var b;return(b=(s.data??[]).find(y=>y.id===x))==null?void 0:b.title}).filter(Boolean);let v=[];try{const{data:x}=await H.from("todo_subtasks").select("text, done, sort_order, created_at").eq("todo_id",l.id).order("sort_order",{ascending:!0}).order("created_at",{ascending:!0});v=(x??[]).map(b=>({text:b.text,done:!!b.done}))}catch{v=[]}const f=hx(l,{prefix:((w=r.data)==null?void 0:w.ai_copy_prefix)??null,categoryLabel:(d==null?void 0:d.label)??l.tag??null,roleName:(u==null?void 0:u.name)??null,objectiveTitles:p,subtasks:v});return mx(f)}return{copyTodo:i}}const fr="Für KI kopieren";function fc({todo:e,variant:n="icon",className:r}){const{copyTodo:s}=fx(),[a,i]=c.useState(!1),l=c.useRef(null);async function o(u){if(u==null||u.stopPropagation(),!await s(e)){U.error("Kopieren hat nicht geklappt â bitte Text manuell markieren.");return}U.success("In die Zwischenablage kopiert â einfach bei Deiner KI einfügen."),i(!0),l.current&&window.clearTimeout(l.current),l.current=window.setTimeout(()=>i(!1),1500)}const d=a?tt:Wd;return n==="button"?t.jsxs(S,{type:"button",variant:"outline",size:"sm",className:Q("min-h-[44px] gap-2",r),onClick:o,"aria-label":fr,children:[t.jsx(d,{className:Q("h-4 w-4",a&&"text-emerald-600")}),fr]}):t.jsxs(xe,{children:[t.jsx(be,{asChild:!0,children:t.jsx(S,{size:"icon",variant:"ghost",className:Q("h-9 w-9 min-h-[44px] min-w-[44px] sm:min-h-0 sm:min-w-0 text-muted-foreground hover:text-primary shrink-0",r),onClick:o,"aria-label":fr,children:t.jsx(d,{className:Q("h-4 w-4",a&&"text-emerald-600")})})}),t.jsx(ve,{children:fr})]})}const gx=10*1024*1024,px=["image/png","image/jpeg","image/jpg","application/pdf"];function xx(e){const n=e.payload||{};switch(e.action){case"created":return"hat die Aufgabe erstellt";case"edited":return"hat die Aufgabe bearbeitet";case"completed":return"hat die Aufgabe erledigt";case"reopened":return"hat die Aufgabe wieder geöffnet";case"assigned":return"hat die Aufgabe zugewiesen";case"commented":return`hat kommentiert: â${String(n.preview??"")}"`;case"subtask_added":return`hat einen Schritt hinzugefügt: â${String(n.text??"")}"`;case"subtask_done":return`hat einen Schritt erledigt: â${String(n.text??"")}"`;case"attachment_added":return`hat einen Anhang hinzugefügt: ${String(n.file_name??"")}`;default:return e.action}}function bx(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(1)} MB`}function vx(e){return!e||e==="web"?"im Cockpit":e==="voice"?"per Sprache":e==="template"?"aus einer Vorlage":e==="recurring"?"automatisch (wiederkehrend)":e==="rule"?"automatisch (Butler-Regel)":e.startsWith("api:")?`via API (${e.slice(4)})`:e}function yx({todo:e}){const{updateTodo:n}
331=de(),r=e.note??"",[s,a]=c.useState(r),[i,l]=c.useState(!1);return c.useEffect(()=>{a(e.note??""),l(!1)},[e.id,e.note]),!r&&!i?t.jsxs("button",{type:"button",onClick:()=>l(!0),className:"text-xs text-muted-foreground hover:text-primary inline-flex items-center gap-1",children:[t.jsx(Cs,{className:"h-3.5 w-3.5"})," Notiz hinzufügen"]}):t.jsxs("section",{className:"space-y-2",children:[t.jsxs("div",{className:"flex items-center gap-2 text-sm font-medium",children:[t.jsx(Cs,{className:"h-4 w-4 text-primary"})," Notiz"]}),i?t.jsxs("div",{className:"space-y-2",children:[t.jsx(vt,{value:s,onChange:o=>a(o.target.value),rows:4,placeholder:"Woran willst Du anknüpfen?"}),t.jsxs("div",{className:"flex gap-2 justify-end",children:[t.jsx(S,{variant:"ghost",size:"sm",onClick:()=>{a(r),l(!1)},children:"Abbrechen"}),t.jsx(S,{size:"sm",onClick:()=>{n.mutate({id:e.id,note:s.trim()?s.trim():null}),l(!1)},children:"Speichern"})]})]}):t.jsx("button",{type:"button",onClick:()=>l(!0),className:"w-full text-left text-sm whitespace-pre-line rounded-lg border border-border bg-muted/40 px-3 py-2 hover:border-primary transition",children:r})]})}function gc({todo:e,open:n,onOpenChange:r}){var _n,Mn;const{user:s}=ge(),{profile:a,tags:i,allTodos:l,updateTodo:o,deleteTodo:d}=de(),u=((_n=a.data)==null?void 0:_n.hidden_categories)??[],h=mc({tags:i.data??[],hidden:u,todos:l}),g=mt(),{todoObjectives:p,setLinks:v}=kn(),f=((Mn=a.data)==null?void 0:Mn.ai_subtasks_enabled)===!0,[m,w]=c.useState([]),[x,b]=c.useState([]),[y,P]=c.useState([]),[V,$]=c.useState([]),[W,G]=c.useState({}),[C,A]=c.useState(""),[j,R]=c.useState(""),[z,_]=c.useState(!1),[K,ne]=c.useState(!1),[F,B]=c.useState(!1),D=c.useRef(null),[N,T]=c.useState(""),[I,M]=c.useState(""),[E,Z]=c.useState(!1),[Y,L]=c.useState([]),[ee,ie]=c.useState(new Set),[J,re]=c.useState(!1),[le,Se]=c.useState(null),[ze,_e]=c.useState(!1),[Ge,Fe]=c.useState("");c.useEffect(()=>{n&&e&&(Fe(e.text),_e(!1))},[n,e==null?void 0:e.id,e==null?void 0:e.text]);function gt(){if(!e)return;const k=Ge.trim();if(!k||k===e.text){_e(!1),Fe(e.text);return}o.mutate({id:e.id,text:k},{onSuccess:()=>{_e(!1),U.success("Titel aktualisiert")},onError:q=>U.error((q==null?void 0:q.message)??"Speichern fehlgeschlagen")})}function Nt(k){e&&o.mutate({id:e.id,recurrence:k},{onSuccess:()=>U.success(k?"Wiederholung aktualisiert":"Wiederholung entfernt"),onError:q=>U.error((q==null?void 0:q.message)??"Fehler")})}function pt(){e&&confirm("Diese Aufgabe wirklich löschen?")&&d.mutate(e.id,{onSuccess:()=>{U.success("Aufgabe gelöscht"),r(!1)},onError:k=>U.error((k==null?void 0:k.message)??"Löschen fehlgeschlagen")})}async function te(){var ue;if(!e)return;re(!0);const{data:k,error:q}=await H.functions.invoke("suggest-subtasks",{body:{task_text:e.text}});if(re(!1),q||!((ue=k==null?void 0:k.subtasks)!=null&&ue.length)){const ke=k==null?void 0:k.reason;U.error("Keine Vorschläge",{description:ke==="missing_key"?"AI-Schlüssel noch nicht hinterlegt":ke==="rate_limited"?"Zu viele Anfragen â kurz warten":ke==="no_credits"?"AI-Guthaben aufgebraucht":"Versuch es nochmal."});return}L(k.subtasks),Se((k==null?void 0:k.provider)??null),ie(new Set(k.subtasks.map((ke,Be)=>Be)))}async function me(){if(!e||!s)return;const k=Y.filter((ke,Be)=>ee.has(Be));if(!k.length)return;const q=k.map((ke,Be)=>({todo_id:e.id,text:ke,sort_order:m.length+Be,created_by:s.id})),{error:ue}=await H.from("todo_subtasks").insert(q);if(ue)return U.error(ue.message);U.success(`${k.length} Subtasks hinzugefügt`),L([]),ie(new Set),pe()}async function pe(){if(!e)return;const[{data:k},{data:q},{data:ue},{data:ke}]=await Promise.all([H.from("todo_subtasks").select("*").eq("todo_id",e.id).order("sort_order",{ascending:!0}).order("created_at",{ascending:!0}),H.from("todo_comments").select("*").eq("todo_id",e.id).order("created_at",{ascending:!0}),H.from("todo_attachments").select("*").eq("todo_id",e.id).order("created_at",{ascending:!1}),H.from("todo_activity").select("*").eq("todo_id",e.id).order("created_at",{ascending:!1}).limit(50)]);w(k??[]),b(q??[]);const Be=ue??[];P(Be),$(ke??[]);const cr=Be.filter(Dt=>Dt.mime_type.startsWith("image/")),Bt={};await Promise.all(cr.map(async Dt=>{const{data:Oe}=await H.storage.from("todo-attachments").createSignedUrl(Dt.storage_path,3600);Oe!=null&&Oe.signedUrl&&(Bt[Dt.id]=Oe.signedUrl)})),G(Bt),g.invalidateQueries({queryKey:["todo-meta"]})}c.useEffect(()=>{n&&e&&pe()},[n,e==null?void 0:e.id]),c.useEffect(()=>{n&&e&&(T(e.cover_color||""),M(e.cover_emoji||""))},[n,e==null?void 0:e.id]);async function Je(){if(!e)return;Z(!0);const{error:k}=await H.from("todos").update({cover_color:N||null,cover_emoji:I||null}).eq("id",e.id);if(Z(!1),k)return U.error(k.message);U.success("Cover gespeichert")}async function Re(){if(!C.trim()||!e||!s)return;_(!0);const{error:k}=await H.from("todo_subtasks").insert({todo_id:e.id,text:C.trim(),sort_order:m.length,created_by:s.id});if(_(!1),k)return U.error(k.message);A(""),pe()}async function Ze(k){await H.from("todo_subtasks").update({done:!k.done}).eq("id",k.id),pe()}async function Qe(k){await H.from("todo_subtasks").delete().eq("id",k),pe()}async function St(k,q){await H.from("todo_subtasks").update(q).eq("id",k),pe()}async function lr(){var ue;if(!j.trim()||!e||!s)return;_(!0);const k=((ue=s.user_metadata)==null?void 0:ue.vorname)||s.email||"Anon",{error:q}=await H.from("todo_comments").insert({todo_id:e.id,author_id:s.id,author_name:k,text:j.trim()});if(_(!1),q)return U.error(q.message);R(""),pe()}async function Xt(k){await H.from("todo_comments").delete().eq("id",k),pe()}async function ss(k){if(!k||!k.length||!e||!s)return;const q=k[0];if(!px.includes(q.type))return U.error("Nur PNG, JPG oder PDF.");if(q.size>gx)return U.error("Maximal 10 MB.");B(!0);const ue=`${s.id}/${e.id}/${Date.now()}-${q.name}`,{error:ke}=await H.storage.from("todo-attachments").upload(ue,q,{contentType:q.type});if(ke)return B(!1),U.error(ke.message);const{error:Be}=await H.from("todo_attachments").insert({todo_id:e.id,user_id:s.id,file_name:q.name,file_size:q.size,mime_type:q.type,storage_path:ue});if(B(!1),Be)return U.error(Be.message);pe()}async function Sn(k){const{data:q,error:ue}=await H.storage.from("todo-attachments").createSignedUrl(k.storage_path,60,{download:k.file_name});if(ue||!q)return U.error((ue==null?void 0:ue.message)||"Download fehlgeschlagen");window.open(q.signedUrl,"_blank")}async function as(k){confirm(`Anhang â${k.file_name}" entfernen?`)&&(await H.storage.from("todo-attachments").remove([k.storage_path]),await H.from("todo_attachments").delete().eq("id",k.id),pe())}const Dn=m.filter(k=>k.done).length;return c.useEffect(()=>{if(!n){const k=setTimeout(()=>{try{document.body.style.removeProperty("overflow"),document.body.style.removeProperty("position"),document.body.style.removeProperty("top"),document.body.style.removeProperty("pointer-events"),document.documentElement.style.removeProperty("overflow")}catch{}},250);return()=>clearTimeout(k)}},[n]),e?t.jsx(Ne,{open:n,onOpenChange:r,children:t.jsxs(De,{className:"p-0 gap-0 flex flex-col w-screen h-[100dvh] max-w-full max-h-[100dvh] rounded-none sm:w-[calc(100vw-1rem)] sm:max-w-lg sm:h-auto sm:max-h-[90vh] sm:rou
331nded-lg",style:{paddingTop:0,paddingBottom:0},children:[t.jsx(jt,{open:n}),t.jsxs(Ce,{className:"sticky top-0 z-10 flex flex-row items-center justify-between gap-2 border-b bg-background px-4 py-2",style:{paddingTop:"max(env(safe-area-inset-top), 0.5rem)"},children:[ze?t.jsxs("div",{className:"flex-1 min-w-0 flex items-center gap-1",children:[t.jsx(oe,{autoFocus:!0,value:Ge,onChange:k=>Fe(k.target.value),onKeyDown:k=>{k.key==="Enter"?(k.preventDefault(),gt()):k.key==="Escape"&&(k.preventDefault(),_e(!1),Fe(e.text))},className:"h-10 text-base","aria-label":"Aufgabentitel bearbeiten"}),t.jsx(S,{size:"sm",onClick:gt,className:"shrink-0",style:{minHeight:44},children:t.jsx(tt,{className:"h-4 w-4"})}),t.jsx(S,{size:"sm",variant:"ghost",onClick:()=>{_e(!1),Fe(e.text)},className:"shrink-0",style:{minHeight:44},children:t.jsx(Me,{className:"h-4 w-4"})})]}):t.jsxs("button",{type:"button",onClick:()=>{Fe(e.text),_e(!0)},className:"flex-1 min-w-0 flex items-center gap-2 text-left rounded hover:bg-muted/40 px-1 py-1",style:{minHeight:44},"aria-label":"Titel bearbeiten",children:[t.jsx(Ae,{className:"text-base leading-snug flex-1 min-w-0 truncate pr-1",children:e.text}),t.jsx(sa,{className:"h-4 w-4 text-muted-foreground shrink-0"})]}),t.jsx("button",{type:"button",onClick:()=>r(!1),"aria-label":"SchlieÃen",className:"shrink-0 inline-flex items-center justify-center rounded-full hover:bg-muted active:bg-muted/80",style:{minWidth:44,minHeight:44},children:t.jsx(Me,{className:"h-6 w-6"})})]}),t.jsxs("div",{className:"flex-1 overflow-y-auto overflow-x-hidden break-words px-4 sm:px-6 py-4 space-y-4",children:[t.jsx("div",{className:"flex",children:t.jsx(fc,{todo:e,variant:"button"})}),t.jsx(yx,{todo:e}),t.jsxs("section",{className:"space-y-2",children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsxs("div",{className:"flex items-center gap-2 text-sm font-medium",children:[t.jsx(Kt,{className:"h-4 w-4 text-primary"})," Unteraufgaben (Checkliste)"]}),m.length>0&&t.jsxs("span",{className:"text-xs text-muted-foreground",children:[Dn,"/",m.length," erledigt"]})]}),t.jsx("div",{className:"space-y-1",children:m.map(k=>t.jsx(kx,{s:k,categories:h,tags:i.data??[],hidden:u,onToggle:()=>Ze(k),onDelete:()=>Qe(k.id),onUpdate:q=>St(k.id,q),onRefresh:pe},k.id))}),t.jsxs("div",{className:"flex gap-2",children:[t.jsx(oe,{placeholder:"Neuen Schrittâ¦",value:C,onChange:k=>A(k.target.value),onKeyDown:k=>{k.key==="Enter"&&(k.preventDefault(),Re())}}),t.jsxs(S,{onClick:Re,disabled:z||!C.trim(),children:[t.jsx(Tt,{className:"h-4 w-4 mr-1"})," Schritt"]})]}),m.length===0&&t.jsx("p",{className:"text-xs text-muted-foreground",children:"Zerlege diese Aufgabe in kleine Schritte â manuell oder mit KI."}),t.jsx("div",{className:"pt-1",children:f?t.jsxs(t.Fragment,{children:[t.jsxs(S,{onClick:te,disabled:J,className:"bg-gradient-brand text-white hover:opacity-90 w-full sm:w-auto",children:[t.jsx(Qn,{className:"h-4 w-4 mr-1"}),J?"Denkt nachâ¦":"⨠Mit KI in Schritte aufteilen"]}),t.jsxs("p",{className:"text-xs text-muted-foreground mt-1.5",children:["ðªðº KI über Mistral â EU/DSGVO-konform",le==="mistral-eu"&&" · zuletzt erstellt mit Mistral (EU)",le==="lovable-gateway-fallback"&&" · Fallback verwendet"]})]}):t.jsx("p",{className:"text-[11px] text-muted-foreground italic",children:"ð¡ KI-Subtask-Vorschläge sind deaktiviert. Aktivieren im Profil â Datenschutz & Daten."})}),Y.length>0&&t.jsxs(qe,{className:"p-3 mt-2 bg-primary/5",children:[t.jsx("div",{className:"text-xs font-semibold mb-2",children:"Vorschläge (haken ab, was übernommen werden soll):"}),Y.map((k,q)=>t.jsxs("label",{className:"flex items-start gap-2 text-sm py-1 cursor-pointer",children:[t.jsx("input",{type:"checkbox",checked:ee.has(q),onChange:ue=>{const ke=new Set(ee);ue.target.checked?ke.add(q):ke.delete(q),ie(ke)},className:"mt-1"}),t.jsx("span",{children:k})]},q)),t.jsxs("div",{className:"flex gap-2 mt-2",children:[t.jsxs(S,{size:"sm",className:"bg-gradient-brand",onClick:me,children:["Ãbernehmen (",ee.size,")"]}),t.jsx(S,{size:"sm",variant:"ghost",onClick:()=>{L([]),ie(new Set)},children:"Verwerfen"})]})]})]}),t.jsxs("section",{className:"space-y-2 border-t pt-4",children:[t.jsx(ll,{values:(()=>{var ue;
331const k=((ue=p.data)==null?void 0:ue.get(e.id))??[];if(k.length>0)return k;const q=e.objective_id;return q?[q]:[]})(),suggestText:e.text,onChange:async k=>{try{await v.mutateAsync({todo_id:e.id,objective_ids:k}),U.success(k.length>0?`Mit ${k.length} Fokus-Ziel${k.length===1?"":"en"} verknüpft`:"Verknüpfung entfernt")}catch(q){U.error((q==null?void 0:q.message)??"Fehler beim Speichern")}}}),t.jsxs("label",{className:"flex items-center gap-2 text-xs cursor-pointer",children:[t.jsx(cn,{checked:!!e.is_firefighter,onCheckedChange:async k=>{await H.from("todos").update({is_firefighter:!!k}).eq("id",e.id),g.invalidateQueries({queryKey:["todos"]})}}),t.jsx("span",{children:"ð Feuerwehr â kam ungeplant dazwischen"})]})]}),t.jsxs("section",{className:"space-y-2 border-t pt-4",children:[t.jsxs("div",{className:"flex items-center gap-2 text-sm font-medium",children:[t.jsx("span",{"aria-hidden":!0,children:"ð"})," Wiederholung"]}),e.recurrence?t.jsxs("div",{className:"rounded-md border border-primary/40 bg-primary/5 p-3 space-y-2",children:[t.jsxs("div",{className:"text-sm",children:[t.jsx("span",{className:"font-medium",children:"Diese Aufgabe wiederholt sich:"})," ",t.jsx("span",{className:"text-primary",children:$t(e.recurrence)})]}),t.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[t.jsxs("div",{className:"flex items-center gap-1 text-xs text-muted-foreground",children:[t.jsx("span",{children:"Bearbeiten:"}),t.jsx(Er,{value:e.recurrence,onChange:Nt})]}),t.jsx(S,{size:"sm",variant:"outline",onClick:()=>Nt(null),children:"Wiederholung entfernen"}),t.jsxs(S,{size:"sm",variant:"destructive",onClick:pt,children:[t.jsx(at,{className:"h-3.5 w-3.5 mr-1"})," Aufgabe löschen"]})]}),t.jsx("p",{className:"text-[11px] text-muted-foreground",children:'âEntfernen" macht daraus eine einmalige Aufgabe. âLöschen" entfernt sie komplett â künftige Instanzen können neu erzeugt werden, falls die Routine erhalten bleibt.'})]}):e.source==="recurring"?t.jsxs("div",{className:"rounded-md border border-primary/30 bg-primary/5 p-3 space-y-2",children:[t.jsxs("div",{className:"text-sm",children:[t.jsx("span",{className:"font-medium",children:"ð Aus einer Wiederholung entstanden"}),t.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"Diese Aufgabe wurde automatisch aus einer wiederkehrenden Routine erzeugt. Sie kann bearbeitet oder gelöscht werden, ohne die Routine selbst zu ändern."})]}),t.jsxs(S,{size:"sm",variant:"destructive",onClick:pt,children:[t.jsx(at,{className:"h-3.5 w-3.5 mr-1"})," Aufgabe löschen"]})]}):t.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[t.jsx("span",{className:"text-sm text-muted-foreground",children:"Einmalige Aufgabe."}),t.jsxs("div",{className:"flex items-center gap-1 text-xs text-muted-foreground",children:[t.jsx("span",{children:"Wiederholung hinzufügen:"}),t.jsx(Er,{value:null,onChange:Nt})]}),t.jsxs(S,{size:"sm",variant:"destructive",onClick:pt,children:[t.jsx(at,{className:"h-3.5 w-3.5 mr-1"})," Aufgabe löschen"]})]})]}),t.jsxs("section",{className:"space-y-2 border-t pt-4",children:[t.jsxs("div",{className:"flex items-center gap-2 text-sm font-medium",children:[t.jsx(Yd,{className:"h-4 w-4 text-primary"})," Cover"]}),t.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[t.jsxs("div",{className:"space-y-1",children:[t.jsx(dn,{className:"text-xs",children:"Farbe (überschreibt Tag)"}),t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("label",{className:"h-10 w-12 rounded border border-input cursor-pointer inline-flex items-center justify-center relative overflow-hidden",style:{background:N||"#3D53A4"},"aria-label":"Farbe wählen",children:t.jsx("input",{type:"color",value:N||"#3D53A4",onChange:k=>T(k.target.value),className:"absolute inset-0 opacity-0 cursor-pointer",tabIndex:-1})}),t.jsx(S,{variant:"ghost",size:"sm",onClick:()=>T(""),className:"text-xs",children:"vom Tag"})]})]}),t.jsxs("div",{className:"space-y-1",children:[t.jsx(dn,{className:"text-xs",children:"Emoji (überschreibt Tag)"}),t.jsx(oe,{value:I,onChange:k=>M(k.target.value),placeholder:"ð",className:"h-10",maxLength:4})]})]}),t.jsx("div",{className:"flex justify-end",children:t.jsx(S,{size:"sm",variant:"outline",onClick:Je,disabled:E,children:E?"Speichertâ¦":"Cover speichern"})})]}),t.jsxs("section",{className:"space-y-2 border-t pt-4",children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsxs("div",{className:"flex items-center gap-2 text-sm font-medium",children:[t.jsx(_s,{className:"h-4 w-4 text-primary"})," Anhänge",y.length>0&&t.jsxs("span",{className:"text-xs text-muted-foreground",children:["(",y.length,")"]})]}),t.jsxs(S,{size:"sm",variant:"outline",onClick:()=>{var k;return(k=D.current)==null?void 0:k.click()},disabled:F,children:[t.jsx(ou,{className:"h-3.5 w-3.5 mr-1"}
331)," ",F?"Lädtâ¦":"+ Datei"]}),t.jsx("input",{ref:D,type:"file",className:"hidden",accept:"image/png,image/jpeg,application/pdf",onChange:k=>{ss(k.target.files),k.target.value=""}})]}),t.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[y.map(k=>t.jsxs("div",{className:"relative group rounded-md border border-border bg-card overflow-hidden",children:[k.mime_type.startsWith("image/")&&W[k.id]?t.jsx("img",{src:W[k.id],alt:k.file_name,className:"w-full h-24 object-cover cursor-pointer",onClick:()=>Sn(k)}):t.jsx("button",{onClick:()=>Sn(k),className:"w-full h-24 flex items-center justify-center bg-muted",children:t.jsx(_s,{className:"h-6 w-6 text-muted-foreground"})}),t.jsxs("div",{className:"p-1.5 text-[11px]",children:[t.jsx("div",{className:"truncate font-medium",children:k.file_name}),t.jsxs("div",{className:"flex items-center justify-between text-muted-foreground",children:[t.jsx("span",{children:bx(k.file_size)}),t.jsxs("div",{className:"flex gap-1",children:[t.jsx("button",{onClick:()=>Sn(k),"aria-label":"Download",children:t.jsx(Nd,{className:"h-3 w-3"})}),k.user_id===(s==null?void 0:s.id)&&t.jsx("button",{onClick:()=>as(k),"aria-label":"Entfernen",children:t.jsx(at,{className:"h-3 w-3 text-destructive"})})]})]})]})]},k.id)),y.length===0&&t.jsx("p",{className:"text-xs text-muted-foreground col-span-2",children:"Noch keine Anhänge. PNG, JPG oder PDF bis 10 MB."})]})]}),t.jsxs("section",{className:"space-y-2 border-t pt-4",children:[t.jsxs("div",{className:"flex items-center gap-2 text-sm font-medium",children:[t.jsx(En,{className:"h-4 w-4 text-primary"})," Kommentare ",x.length>0&&t.jsxs("span",{className:"text-xs text-muted-foreground",children:["(",x.length,")"]})]}),t.jsxs("div",{className:"space-y-2 max-h-64 overflow-y-auto",children:[x.map(k=>t.jsxs("div",{className:"rounded-md border border-border p-2 bg-card",children:[t.jsxs("div",{className:"flex items-center justify-between text-xs text-muted-foreground mb-1",children:[t.jsx("span",{className:"font-medium text-foreground",children:k.author_name??"Unbe
331kannt"}),t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("span",{children:new Date(k.created_at).toLocaleString("de-DE",{dateStyle:"short",timeStyle:"short"})}),k.author_id===(s==null?void 0:s.id)&&t.jsx("button",{onClick:()=>Xt(k.id),"aria-label":"Kommentar löschen",children:t.jsx(at,{className:"h-3 w-3 text-destructive"})})]})]}),t.jsx("div",{className:"text-sm whitespace-pre-wrap",children:k.text})]},k.id)),x.length===0&&t.jsx("p",{className:"text-xs text-muted-foreground",children:"Noch keine Kommentare."})]}),t.jsxs("div",{className:"flex gap-2 items-end",children:[t.jsx(vt,{placeholder:"Kommentar schreibenâ¦",value:j,onChange:k=>R(k.target.value),rows:2,className:"resize-none"}),t.jsx(S,{onClick:lr,disabled:z||!j.trim(),children:"Senden"})]})]}),t.jsxs("section",{className:"space-y-2 border-t pt-4",children:[t.jsxs("button",{type:"button",onClick:()=>ne(k=>!k),className:"w-full flex items-center justify-between text-sm font-medium",children:[t.jsxs("span",{className:"flex items-center gap-2",children:[t.jsx(ra,{className:"h-4 w-4 text-primary"})," Verlauf ",V.length>0&&t.jsxs("span",{className:"text-xs text-muted-foreground",children:["(",V.length,")"]})]}),t.jsx("span",{className:"text-xs text-muted-foreground",children:K?"Verbergen":"Anzeigen"})]}),K&&t.jsxs("ol",{className:"space-y-2 border-l-2 border-border pl-3",children:[V.map(k=>t.jsxs("li",{className:"text-xs text-muted-foreground",children:[t.jsx("span",{className:"text-foreground",children:xx(k)})," · ",Qm(new Date(k.created_at),{addSuffix:!0,locale:ol})]},k.id)),V.length===0&&t.jsx("p",{className:"text-xs text-muted-foreground",children:"Noch keine Aktivität."})]})]}),t.jsxs("div",{className:"flex items-center gap-2 text-[11px] text-muted-foreground mt-3 pt-3 border-t border-border",children:[t.jsx(Hd,{className:"h-3 w-3 shrink-0"}),t.jsxs("span",{children:["Angelegt am ",new Date(e.created_at).toLocaleString("de-DE",{dateStyle:"short",timeStyle:"short"})," ",vx(e.source??null),e.assigned_to&&e.assigned_to!==e.user_id?" · zugewiesen":""]})]})]}),t.jsx("div",{className:"sticky bottom-0 z-10 border-t bg-background px-4 py-2 flex justify-end gap-2",style:{paddingBottom:"max(env(safe-area-inset-bottom), 0.5rem)"},children:t.jsxs(S,{onClick:()=>r(!1),className:"bg-gradient-brand text-white hover:opacity-90",style:{minHeight:44},children:[t.jsx(tt,{className:"h-4 w-4 mr-1"})," Fertig"]})})]})}):null}function kx({s:e,categories:n,tags:r,hidden:s,onToggle:a,onDelete:i,onUpdate:l,onRefresh:o}){const[d,u]=c.useState(!1),[h,g]=c.useState(e.text),p=za(e.tag??null,r,s);async function v(){const f=h.trim();if(!f||f===e.text){u(!1),g(e.text);return}const{error:m}=await H.from("todo_subtasks").update({text:f}).eq("id",e.id);if(u(!1),m){U.error(m.message);return}o()}return t.jsxs("div",{className:"flex flex-col gap-1.5 p-2 rounded-md border border-border bg-card",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(cn,{checked:e.done,onCheckedChange:a,className:"h-4 w-4"}),d?t.jsx(oe,{autoFocus:!0,defaultValue:e.text,onChange:f=>g(f.target.value),onBlur:v,onKeyDown:f=>{f.key==="Enter"?(f.preventDefault(),v()):f.key==="Escape"&&(f.preventDefault(),u(!1),g(e.text))},className:"h-7 text-sm flex-1"}):t.jsx("span",{className:`flex-1 text-sm cursor-text ${e.done?"line-through text-muted-foreground":""}`,onDoubleClick:()=>{g(e.text),u(!0)},children:e.text}),!d&&t.jsx(S,{size:"icon",variant:"ghost",className:"h-7 w-7",onClick:()=>{g(e.text),u(!0)},"aria-label":"Schritt bearbeiten",children:t.jsx(sa,{className:"h-3.5 w-3.5 text-muted-foreground"})}),t.jsx(S,{size:"icon",variant:"ghost",className:"h-7 w-7",onClick:i,"aria-label":"Schritt löschen",children:t.jsx(at,{className:"h-3.5 w-3.5 text-destructive"})})]}),(e.due_date||p||e.prio)&&t.jsxs("div",{className:"flex flex-wrap gap-1 pl-7 text-[11px]",children:[e.due_date&&t.jsxs("span",{className:"chip border border-primary/40 bg-primary/10 text-primary",children:["ð
",new Date(e.due_date).toLocaleDateString("de-DE",{day:"2-digit",month:"2-digit"}),e.due_time?` · ${e.due_time.slice(0,5)}`:""]}),p&&t.jsxs("span",{className:"chip bg-muted text-muted-foreground border border-border",children:[p.emoji," ",p.label]}),e.prio&&t.jsxs("span",{className:"chip border border-border bg-muted text-muted-foreground",children:["Pri
331o ",e.prio]})]}),t.jsxs("div",{className:"flex flex-wrap gap-1.5 pl-7",children:[t.jsx(ts,{value:e.due_date??null,onChange:f=>l({due_date:f}),time:e.due_time??null,onTimeChange:f=>l({due_time:f}),compact:!0}),t.jsxs(yt,{value:e.tag??"__none__",onValueChange:f=>l({tag:f==="__none__"?null:f}),children:[t.jsx(ut,{className:"h-8 text-xs min-w-[120px] flex-1 sm:flex-none sm:w-auto",children:t.jsx(kt,{placeholder:"Rubrik"})}),t.jsxs(ht,{className:"max-h-[260px]",children:[t.jsx(we,{value:"__none__",children:"â keine â"}),n.map(f=>t.jsxs(we,{value:f.id,children:[f.emoji," ",f.label]},f.id))]})]}),t.jsxs(yt,{value:e.prio??"__none__",onValueChange:f=>l({prio:f==="__none__"?null:f}),children:[t.jsx(ut,{className:"h-8 text-xs w-[78px]",children:t.jsx(kt,{placeholder:"Prio"})}),t.jsxs(ht,{children:[t.jsx(we,{value:"__none__",children:"â"}),t.jsx(we,{value:"A",children:"A"}),t.jsx(we,{value:"B",children:"B"}),t.jsx(we,{value:"C",children:"C"})]})]})]})]})}function wx(e){return e.trim().toLowerCase().replace(/\s+/g," ")}function jx(e){return e==="A"?0:e==="B"?1:e==="C"?2:3}function gs(e){const n=e.important?0:1,r=jx(e.prio),s=e.due_date?new Date(e.due_date).getTime():Number.POSITIVE_INFINITY;return n*1e15+r*1e13+s}function Nx({open:e,onOpenChange:n,onPick:r}){const[s,a]=c.useState(null),{allTodos:i,roles:l,toggleDone:o,reopenTodo:d,todoMeta:u}=de(),[h,g]=c.useState("");c.useEffect(()=>{e||(g(""),a(null))},[e]);const p=c.useMemo(()=>{const m=h.trim().toLowerCase();if(!m)return[];const w=new Map((l.data??[]).map(P=>[P.id,P.name.toLowerCase()])),x=i.filter(P=>[P.text,P.tag??"",P.notes??"",P.role_id?w.get(P.role_id)??"":""].join(" ").toLowerCase().includes(m)),b=new Map;for(const P of x){const V=P.done?`__done__${P.id}`:`title:${wx(P.text)}`,$=b.get(V);$?$.push(P):b.set(V,[P])}const y=Array.from(b.entries()).map(([P,V])=>{const $=[...V].sort((G,C)=>gs(G)-gs(C)),W=$[0];return{key:P,head:W,rest:$.slice(1),sortKey:gs(W)+(W.done?1e18:0)}});return y.sort((P,V)=>P.sortKey-V.sortKey),y.slice(0,40)},[h,i,l.data]),v=(m,w)=>{if(!m.done){const x=et(m.due_date),y=m.prio==="A"||m.important?"big":m.prio==="B"?"medium":"mini",V=(Wn[m.prio]??0)+(m.important?5:0),$=w.getBoundingClientRect();Pe(async()=>{const{celebrate:W}=await import("./confetti-bEOLSAJf.js");return{celebrate:W}},[]).then(({celebrate:W})=>{W({x:$.left+$.width/2,y:$.top,size:y,boost:x})}),U(`Aufgabe abgehakt · +${V} Pkt`,{duration:4500,action:{label:"Rückgängig",onClick:()=>d.mutate(m.id)}})}o.mutate(m)},f=(m,w)=>{const x=m.tag?Vc[m.tag]:null;return t.jsxs("li",{className:"flex items-stretch hover:bg-muted/40 transition "+(w?"pl-6 bg-muted/10":""),children:[t.jsx("button",{type:"button",onClick:b=>{b.stopPropagation(),v(m,b.currentTarget)},"aria-label":m.done?"Als nicht erledigt markieren":"Abhaken",className:"px-3 py-2 flex items-start hover:bg-muted/60 active:bg-muted/80",children:m.done?t.jsx(ea,{className:"h-4 w-4 mt-1 text-emerald-500 shrink-0"}):t.jsx(Ui,{className:"h-4 w-4 mt-1 text-muted-foreground shrink-0"})}),t.jsx("button",{type:"button",onClick:()=>{a(m.id)},className:"flex-1 text-left flex items-start gap-3 py-2 pr-3",children:t.jsxs("span",{className:"flex-1 min-w-0",children:[t.jsxs("span",{className:"text-sm inline-flex items-center gap-1 "+(m.done?"line-through text-muted-foreground":""),children:[m.recurrence&&t.jsx("span",{title:$t(m.recurrence),children:"ð"}),!m.recurrence&&m.source==="recurring"&&t.jsx("span",{title:"aus Wiederholung",children:"ð"}),m.text]}),t.jsxs("span",{className:"flex flex-wrap gap-2 mt-1 text-[11px] text-muted-foreground",children:[m.recurrence&&t.jsxs("span",{className:"chip border border-primary/40 bg-primary/10 text-primary",children:["ð ",Ts(m.recurrence)]}),!m.recurrence&&m.source==="recurring"&&t.jsx("span",{className:"chip border border-primary/30 bg-primary/5 text-primary",children:"ð aus Wiederholung"}),m.prio&&t.jsx("span",{className:"font-mono",children:m.prio}),x&&t.jsxs("span",{children:[x.emoji," #",m.tag]}),m.due_date&&t.jsxs("span",{children:["ð
",new Date(m.due_date).toLocaleDateString("de-DE")]}),m.important&&t.jsxs("span",{className:"text-amber-500 flex items-center",children:[t.jsx(ft,{className:"h-3 w-3 mr-0.5 fill-current"}),"wichtig"]}),(()=>{var y;const b=(y=u.data)==null?void 0:y.get(m.id);return!b||b.commentCount<=0?null:t.jsxs("span",{className:"inline-flex items-center gap-1 px-1.5 py-0.5 rounded-full text-[11px] font-semibold bg-accent/15 text-accent border border-accent/40",children:[t.jsx(En,{className:"h-3 w-3"}),b.commentCount]})})()]})]})})]},m.id)};return t.jsxs(Ne,{open:e,onOpenChange:n,children:[t.jsxs(De,{className:"max-w-xl p-0 gap-0",children:[t.jsxs("div",{className:"flex items-center gap-2 border-b border-border px-3 py-2",children:[t.jsx(Hn,{className:"h-4 w-4 text-muted-foreground"}),t.jsx(oe,{autoFocus:!0,placeholder:"Aufgaben durchsuchen â Text, Tag, Rolle, Notizenâ¦",value:h,onChange:m=>g(m.target.value),className:"border-0 focus-visible:ring-0 focus-visible:ring-offset-0 px-0 h-9"}),t.jsx("kbd",{className:"hidden md:inline text-[10px] text-muted-foreground bg-muted border border-border rounded px-2 py-0.5 font-mono",children:"ESC"})]}),t.jsxs("div",{className:"max-h-[60vh] overflow-y-auto",children:[h&&p.length===0&&t.jsx("p",{className:"text-sm text-muted-foreground px-4 py-6",children:"Keine Treffer."}),!h&&t.jsxs("p",{className:"text-xs text-muted-foreground px-4 py-3",children:["Tipp: Du kannst nach Text, Tag, Rolle und Notizen suchen. Mehrere Treffer kannst Du direkt nacheinander abhaken â die Suche bleibt offen.",t.jsxs("span",{className:"hidden md:inline",children:[" Tastatur: ",t.jsx("kbd",{className:"border border-border rounded px-1",children:"â/Strg+K"})]})]}),t.jsx("ul",{className:"divide-y divide-border",children:p.map(m=>t.jsx("li",{className:"block",children:t.jsxs("ul",{className:"divide-y divide-border/60",children:[f(m.head,!1),m.rest.length>0&&t.jsxs("li",{className:"px-3 py-1 text-[10px] uppercase tracking-wide text-muted-foreground bg-muted/20",children:[m.rest.length+1,"à gleicher Titel · Wiederholungen"]}),m.rest.map(w=>f(w,!0))]})},m.key))})]})]}),t.jsx(gc,{todo:s?i.find(m=>m.id===s)??null:null,open:!!s,onOpenChange:m=>{m||a(null)}})]})}const ps=new Date(Date.UTC(2026,4,29)),An=[{text:"Du hast 24 Stunden. Heute zählt nur der erste Schritt.",author:"Daniel Müller"},{text:"Fokus ist die ehrlichste Form der Liebe zur Aufgabe.",author:"Daniel Müller"},{text:"Dranbleiben schlägt Talent.",author:"Daniel Müller"},{text:"Wer plant, kommt an. Wer plant und losgeht, kommt vorne an.",author:"Daniel Müller"},{text:"Häkchen sind Dopamin. Verdien sie Dir.",author:"Daniel Müller"},{text:"Was Du heute nicht entscheidest, entscheidet morgen für Dich.",author:"Daniel Müller"},{text:"GroÃe Dinge entstehen aus konsequenten Schritten.",author:"Daniel Müller"},{text:"Wer nicht hingeht, kommt nicht an.",author:"Daniel Müller"},{text:"Du brauchst keinen perfekten Plan. Du brauchst den Mut zum nächsten Schritt.",author:"Daniel Müller"},{text:"Beginne den Tag mit Klarheit, beende ihn mit Stolz.",author:"Daniel Müller"},{text:"Der Mut, anzufangen, ist schon der halbe Erfolg.",author:"Daniel Müller"},{text:"Du kannst Dich nicht über den Berg klagen. Du musst ihn besteigen.",author:"Daniel Müller"}
331,{text:"Plane Deinen Tag, sonst plant der Tag Dich.",author:"Daniel Müller"},{text:"Glaube an Dich â sonst tut es niemand.",author:"Daniel Müller"},{text:"Wer Zeit hat, hat keine Prioritäten.",author:"Daniel Müller"},{text:"Tu es jetzt. Manchmal wird aus âspäterâ niemals.",author:"Daniel Müller"},{text:"Wer Spuren hinterlassen will, darf nicht nur dem Wind folgen.",author:"Daniel Müller"},{text:"Wer auf das Glück wartet, wartet ein Leben lang.",author:"Daniel Müller"},{text:"Was Du Dir vornimmst, gehört Dir. Was Du tust, definiert Dich.",author:"Daniel Müller"},{text:"Die einfachste Lösung ist meistens die beste.",author:"Daniel Müller"},{text:"Wer brennt, muss nichts entzünden.",author:"Daniel Müller"},{text:"Ein klares Nein erschafft Raum für ein gröÃeres Ja.",author:"Daniel Müller"},{text:"Wer wartet, dass es leichter wird, wartet, dass es schwerer wird.",author:"Daniel Müller"},{text:"Probleme sind nur Aufgaben, die noch keinen Namen haben.",author:"Daniel Müller"},{text:"Wer nicht weiÃ, wofür er aufsteht, bleibt liegen.",author:"Daniel Müller"},{text:"Das Beste, was Du tun kannst, ist anzufangen. Der Rest kommt von selbst.",author:"Daniel Müller"},{text:"Heute ist ein guter Tag, um anders zu sein als gestern.",author:"Daniel Müller"},{text:"Erfolg ist keine Frage des Glücks, sondern der Wiederholung.",author:"Daniel Müller"},{text:"Wer immer nur reagiert, verliert die Initiative.",author:"Daniel Müller"},{text:"Liebe Deine Arbeit â dann arbeitest Du nie.",author:"Daniel Müller"},{text:"Erfolg hat drei Buchstaben: TUN.",author:"Johann Wolfgang von Goethe"},{text:"Der Weg ist das Ziel.",author:"Konfuzius"},{text:"Mitten in jeder Schwierigkeit liegt eine Chance.",author:"Albert Einstein"},{text:"Wir sind, was wir wiederholt tun. Exzellenz ist eine Gewohnheit.",author:"Aristoteles"},{text:"Das Geheimnis des Erfolgs ist anzufangen.",author:"Mark Twain"},{text:"Tu, was Du kannst, mit dem, was Du hast, dort, wo Du bist.",author:"Theodore Roosevelt"},{text:"Disziplin ist die Brücke zwischen Zielen und Ergebnissen.",author:"Jim Rohn"},{text:"Sei der Wandel, den Du in der Welt sehen willst.",author:"Mahatma Gandhi"},{text:"Energie und Beharrlichkeit überwinden alles.",author:"Benjamin Franklin"},{text:"Die Zukunft hängt davon ab, was Du heute tust.",author:"Mahatma Gandhi"},{text:"Der beste Zeitpunkt, einen Baum zu pflanzen, war vor 20 Jahren. Der zweitbeste ist jetzt.",author:"Chinesisches Sprichwort"},{text:"Ein Ziel ohne Plan ist nur ein Wunsch.",author:"Antoine de Saint-Exupéry"},{text:"Wer nicht weiÃ, wohin er will, kommt nirgends an.",author:"Seneca"},{text:"Wer aufhört, besser werden zu wollen, hat aufgehört, gut zu sein.",author:"Philip Rosenthal"},{text:"Gewinner suchen Wege, Verlierer Ausreden.",author:"Franklin D. Roosevelt"},{text:"Erfolg ist die Summe richtiger Entscheidungen, getroffen Tag für Tag.",author:"Jim Rohn"},{text:"Die gröÃte Investition ist die in Dich selbst.",author:"Warren Buffett"},{text:"Wenn Du es träumen kannst, kannst Du es auch tun.",author:"Walt Disney"},{text:"Wer aufhört zu lernen, ist alt. Wer immer weiter lernt, bleibt jung.",author:"Henry Ford"},{text:"Wer den ersten Knopf falsch knöpft, knöpft alle anderen falsch.",author:"Johann Wolfgang von Goethe"}];function Sx(e=new Date){const r=(Math.floor((Date.UTC(e.getFullYear(),e.getMonth(),e.getDate())-Date.UTC(ps.getUTCFullYear(),ps.getUTCMonth(),ps.getUTCDate()))/864e5)%An.length+An.length)%An.length;return{quote:An[r],index:r,daysLeft:An.length-r}}function Dx(){const{quote:e}=Sx();return t.jsx("div",{className:"w-full flex justify-center px-4 py-1 text-hero-foreground/85",children:t.jsxs("div",{className:"max-w-2xl text-center min-w-0",children:[t.jsxs("p",{className:"text-[11px] sm:text-xs italic leading-snug break-words",children:["â",e.text,'"']}),t.jsx("p",{className:"text-[9px] sm:text-[10px] opacity-70 italic",children:e.author})]})})}const _x=3*24*3600*1e3;function Mx({onJumpToRanking:e}){const{user:n}=ge(),{profile:r}=de(),s=r.data,[a,i]=c.useState(!1);if(!vn().hints||!s||s.leaderboard_optin||s.ranking_prompt_never)return null;
331const l=s.ranking_prompt_dismissed_at?new Date(s.ranking_prompt_dismissed_at).getTime():0;if(l&&Date.now()-l<_x||a)return null;async function o(d=!1){if(!n)return;const u=d?{ranking_prompt_never:!0}:{ranking_prompt_dismissed_at:new Date().toISOString()};await H.from("profiles").update(u).eq("user_id",n.id),i(!0),r.refetch()}return t.jsxs("div",{className:"mt-3 text-xs bg-gold/15 border border-gold/40 text-foreground/90 px-3 py-2 rounded-lg flex items-start gap-2",children:[t.jsx(er,{className:"h-4 w-4 mt-0.5 text-gold shrink-0"}),t.jsxs("div",{className:"flex-1 min-w-0",children:[t.jsx("div",{className:"font-medium",children:"Bestenliste anschalten?"}),t.jsx("div",{className:"opacity-80 leading-snug mt-0.5",children:"Sieh, wo Du im Liebe-Zeitarbeit-Club stehst. Andere sehen nur Deinen Namen und Punkte â keine Aufgabeninhalte."}),t.jsxs("div",{className:"flex flex-wrap gap-2 mt-2",children:[t.jsx(S,{size:"sm",className:"h-7 px-3 bg-gradient-brand text-primary-foreground",onClick:e,children:"Jetzt anschalten"}),t.jsx(S,{size:"sm",variant:"ghost",className:"h-7 px-2 text-xs",onClick:()=>o(!1),children:"Später erinnern"}),t.jsx(S,{size:"sm",variant:"ghost",className:"h-7 px-2 text-xs opacity-70",onClick:()=>o(!0),children:"Nicht mehr fragen"})]})]}),t.jsx("button",{onClick:()=>o(!1),"aria-label":"SchlieÃen",className:"opacity-60 hover:opacity-100",children:t.jsx(Me,{className:"h-3 w-3"})})]})}const Cx=["[email protected]","[email protected]"];function Ta(e){return e?Cx.includes(e.toLowerCase()):!1}function gi(e){return e&&([e.vorname,e.nachname].filter(Boolean).join(" ").trim()||e.email)||"Unbekannt"}function xs(e){const n=new Date(e),r=new Date;return n.toDateString()===r.toDateString()?"Heute, "+n.toLocaleTimeString("de-DE",{hour:"2-digit",minute:"2-digit"}):n.toLocaleString("de-DE",{dateStyle:"short",timeStyle:"short"})}function pi(){const{user:e}=ge(),n=Ta(e==null?void 0:e.email),[r,s]=c.useState(!1),[a,i]=c.useState("all"),[l,o]=c.useState([]),[d,u]=c.useState([]),[h,g]=c.useState({}),[p,v]=c.useState(null),[f,m]=c.useState(null),[w,x]=c.useState({bugs:!0,signups:!0,important:!0}),[b,y]=c.useState([]);async function P(){if(!e)return;const{data:N}=await H.from("profiles").select("signups_last_seen_at, feedback_last_seen_at, notify_new_bug_reports, notify_new_signups").eq("user_id",e.id).maybeSingle(),T=N;v((T==null?void 0:T.signups_last_seen_at)??null),m((T==null?void 0:T.feedback_last_seen_at)??null),x({bugs:(T==null?void 0:T.notify_new_bug_reports)??!0,signups:(T==null?void 0:T.notify_new_signups)??!0,important:!0});const{data:I}=await H.from("user_notifications").select("id,kind,title,body,link,read_at,created_at").order("created_at",{ascending:!1}).limit(30);if(y(I??[]),n){const[{data:M},{data:E}]=await Promise.all([H.from("app_feedback").select("id,user_id,kind,text,status,created_at,version").order("created_at",{ascending:!1}).limit(30),H.from("profiles").select("user_id,email,vorname,nachname,created_at").order("created_at",{ascending:!1}).limit(30)]),Z=M??[],Y=E??[];o(Z),u(Y);const L=Array.from(new Set(Z.map(ee=>ee.user_id).filter(Boolean)));if(L.length){const{data:ee}=await H.from("profiles").select("user_id,vorname,nachname,email").in("user_id",L),ie={};(ee??[]).forEach(J=>{ie[J.user_id]=J}),g(ie)}}}c.useEffect(()=>{e&&P()},[e==null?void 0:e.id,n]),c.useEffect(()=>{!r||!e||P()},[r]);const V=c.useMemo(()=>{if(!n||!w.bugs)return[];const N=f?new Date(f).getTime():0;return l.filter(T=>new Date(T.created_at).getTime()>N)},[l,f,w.bugs,n]),$=c.useMemo(()=>{if(!n||!w.signups)return[];const N=p?new Date(p).getTime():0;return d.filter(T=>new Date(T.created_at).getTime()>N&&T.user_id!==(e==null?void 0:e.id))},[d,p,w.signups,e==null?void 0:e.id,n]),W=c.useMemo(()=>b.filter(N=>!N.read_at),[b]),G=V.length+$.length+W.length;async function C(){if(!e)return;const N=new Date().toISOString();n&&(await H.from("profiles").update({signups_last_seen_at:N,feedback_last_seen_at:N}).eq("user_id",e.id),v(N),m(N)),W.length&&(await H.from("user_notifications").update({read_at:N}).is("read_at",null).eq("user_id",e.id),y(T=>T.map(I=>I.read_at?I:{...I,read_at:N})))}async function A(N){if(!e)return;const T=new Date().toISOString();await H.from("user_notifications").update({read_at:T}).eq("id",N),y(I=>I.map(M=>M.id===N?{...M,read_at:T}:M))}async function j(N){await C(),s(!1),window.dispatchEvent(new CustomEvent("jump-to-tab",{detail:"admin"})),setTimeout(()=>{const T=document.querySelector(`[data-feedback-id="${N.id}"]`);T&&T.scrollIntoView({behavior:"smooth",block:"center"})},250)}async function R(){await C(),s(!1),window.dispatchEvent(new CustomEvent("jump-to-tab",{detail:"help"})),setTimeout(()=>{var N;(N=document.querySelector("[data-beta-testers], [data-admin-signups]"))==null||N.scrollIntoView({behavior:"smooth",block:"start"})},250)}async function z(N){await A(N.id),s(!1),window.dispatchEvent(new CustomEvent("jump-to-tab",{detail:"help"}))}if(!e)return null;function _(N){return N==="achievement"?"achievements":N==="ticket_resolved"||N==="bug"||N==="feedback"?"bugs":N==="signup"?"signups":"system"}const K=[];
331b.slice(0,30).forEach(N=>{K.push({kind:"mine",key:"m-"+N.id,ts:N.created_at,data:N,unread:!N.read_at,cat:_(N.kind)})}),n&&(l.slice(0,15).forEach(N=>{K.push({kind:"bug",key:"f-"+N.id,ts:N.created_at,data:N,unread:V.some(T=>T.id===N.id),cat:"bugs"})}),d.slice(0,15).forEach(N=>{N.user_id!==(e==null?void 0:e.id)&&K.push({kind:"signup",key:"s-"+N.user_id,ts:N.created_at,data:N,unread:$.some(T=>T.user_id===N.user_id),cat:"signups"})})),K.sort((N,T)=>new Date(T.ts).getTime()-new Date(N.ts).getTime());const ne={all:K.length,achievements:K.filter(N=>N.cat==="achievements").length,bugs:K.filter(N=>N.cat==="bugs").length,signups:K.filter(N=>N.cat==="signups").length,system:K.filter(N=>N.cat==="system").length},F=a==="all"?K:K.filter(N=>N.cat===a),B=[{key:"all",label:"Alle",icon:bt},{key:"achievements",label:"Erfolge",icon:er},{key:"bugs",label:"Bug-Reports & Feedback",icon:Va},{key:"system",label:"System & News",icon:Vd}];n&&B.splice(3,0,{key:"signups",label:"Anmeldungen",icon:Ga});const D=t.jsxs("button",{type:"button",className:"relative inline-flex items-center justify-center h-9 w-9 rounded-md text-hero-foreground hover:bg-white/10","aria-label":`Benachrichtigungen (${G} ungelesen)`,children:[t.jsx(bt,{className:"h-4 w-4"}),G>0&&t.jsx("span",{className:"absolute -top-0.5 -right-0.5 min-w-[18px] h-[18px] px-1 rounded-full bg-accent text-accent-foreground text-[10px] font-bold flex items-center justify-center",children:G>99?"99+":G})]});return t.jsxs(wn,{open:r,onOpenChange:s,children:[t.jsx(jn,{asChild:!0,children:D}),t.jsxs(Qt,{align:"end",className:"w-[min(92vw,380px)] p-0",children:[t.jsxs("div",{className:"flex items-center justify-between border-b border-border px-3 py-2",children:[t.jsxs("div",{className:"font-display text-sm flex items-center gap-2",children:[t.jsx(bt,{className:"h-4 w-4 text-primary"})," Benachrichtigungen"]}),G>0&&t.jsxs(S,{size:"sm",variant:"ghost",onClick:C,className:"h-7 text-xs",children:[t.jsx(tt,{className:"h-3 w-3 mr-1"})," Alle gelesen"]})]}),t.jsx("div",{className:"flex gap-1 overflow-x-auto border-b border-border px-2 py-2 scrollbar-none",children:B.map(N=>{const T=N.icon,I=a===N.key,M=ne[N.key];return t.jsxs("button",{type:"button",onClick:()=>i(N.key),className:`shrink-0 inline-flex items-center gap-1 px-2 py-1 rounded-full text-[11px] border transition ${I?"bg-primary text-primary-foreground border-primary":"bg-muted/40 text-foreground border-border hover:bg-muted"}`,children:[t.jsx(T,{className:"h-3 w-3"}),t.jsx("span",{children:N.label}),M>0&&t.jsx("span",{className:`ml-0.5 text-[10px] tabular-nums ${I?"opacity-90":"text-muted-foreground"}`,children:M})]},N.key)})}),t.jsxs("div",{className:"max-h-[60vh] overflow-y-auto",children:[F.length===0&&t.jsx("div",{className:"px-3 py-6 text-center text-sm text-muted-foreground",children:"Keine Benachrichtigungen."}),F.map(N=>{if(N.kind==="mine"){const I=N.data;return t.jsxs("button",{type:"button",onClick:()=>z(I),className:`w-full text-left px-3 py-2 border-b border-border/60 hover:bg-muted/40 transition flex gap-2 ${N.unread?"bg-green-500/5":""}`,children:[t.jsx("div",{className:"mt-0.5",children:t.jsx(ea,{className:`h-4 w-4 ${N.unread?"text-green-600":"text-muted-foreground"}`})}),t.jsxs("div",{className:"min-w-0 flex-1",children:[t.jsxs("div",{className:"text-sm font-medium",children:[I.title,N.unread&&t.jsx("span",{className:"ml-1 inline-block w-1.5 h-1.5 rounded-full bg-green-500 align-middle"})]}),I.body&&t.jsx("div",{className:"text-xs text-muted-foreground line-clamp-2",children:I.body}),t.jsx("div",{className:"text-[10px] text-muted-foreground mt-0.5",children:xs(I.created_at)})]})]},N.key)}if(N.kind==="bug"){const I=N.data,M=gi(h[I.user_id??""]),E=I.kind==="bug"?"Bug-Report":I.kind==="wish"?"Wunsch":"Feedback";return t.jsxs("button",{type:"button",onClick:()=>j(I),className:`w-full text-left px-3 py-2 border-b border-border/60 hover:bg-muted/40 transition flex gap-2 ${N.unread?"bg-accent/5":""}`,children:[t.jsx("div",{className:"mt-0.5",children:t.jsx(Va,{className:`h-4 w-4 ${N.unread?"text-accent":"text-muted-foreground"}`})}),t.jsxs("div",{className:"min-w-0 flex-1",children:[t.jsxs("div",{className:"text-sm",children:[t.jsx("strong",{children:E})," von ",t.jsx("span",{className:"text-foreground",children:M}),N.unread&&t.jsx("span",{className:"ml-1 inline-block w-1.5 h-1.5 rounded-full bg-accent align-middle"})]}),t.jsx("div",{className:"text-xs text-muted-foreground line-clamp-2",children:I.text}),t.jsxs("div",{className:"text-[10px] text-muted-foreground mt-0.5",children:[xs(I.created_at),I.version?` · v${I.version}`:""]})]})]},N.key)}const T=N.data;return t.jsxs("button",{type:"button",onClick:R,className:`w-full text-left px-3 py-2 border-b border-border/60 hover:bg-muted/40 transition flex gap-2 ${N.unread?"bg-accent/5":""}`,children:[t.jsx("div",{className:"mt-0.5",children:t.jsx(Ga,{className:`h-4 w-4 ${N.unread?"text-accent":"text-muted-foreground"}`})}),t.jsxs("div",{className:"min-w-0 flex-1",children:[t.jsxs("div",{className:"text-sm",children:[t.jsx("strong",{children:"Neue Anmeldung:"})," ",gi(T),N.unread&&t.jsx("span",{className:"ml-1 inline-block w-1.5 h-1.5 rounded-full bg-accent align-middle"})]}),t.jsx("div",{className:"text-[10px] text-muted-foreground mt-0.5",children:xs(T.created_at)})]})]},N.key)})]}),t.jsxs("div",{className:"border-t border-border px-3 py-2 text-[11px] text-muted-foreground flex items-center gap-1",children:[t.jsx(ft,{className:"h-3 w-3"})," Einstellungen â Profil â Benachrichtigungen"]})]})]})}function Ax({onSearchPick:e}={}){var ne;const n=de(),{totalPoints:r,todayPoints:s,weekPoints:a,level:i,streak:l,profile:o,rewards:d,allTodos:u,rewardsAvailable:h}=n,{signOut:g,user:p}=ge(),v=Ch(),[f,m]=c.useState(!1),[w,x]=c.useState(!1),[b,y]=c.useState(!1),[P,V]=c.useState(!1);c.useEffect(()=>{const F=D=>{(D.metaKey||D.ctrlKey)&&D.key.toLowerCase()==="k"&&(D.preventDefault(),V(N=>!N))},B=()=>V(!0);return window.addEventListener("keydown",F),window.addEventListener("open-global-search",B),()=>{window.removeEventListener("keydown",F),window.removeEventListener("open-global-search",B)}},[]);const[$,W]=c.useState(!1),G=c.useRef(s);c.useEffect(()=>{if(s!==G.current){if(s>G.current){W(!0);const F=setTimeout(()=>W(!1),320);return G.current=s,()=>clearTimeout(F)}G.current=s}},[s]);const C=Jn();c.useEffect(()=>{if(!C||!(p!=null&&p.id)||!o.data)return;const F=o.data.last_seen_version;F!==rn&&F&&y(!0)},[C,p==null?void 0:p.id,o.data]);async function A(F){var B,D;if(y(F),!F&&(p!=null&&p.id)&&((B=o.data)==null?void 0:B.last_seen_version)!==rn)try{const{supabase:T}=await Pe(async()=>{const{supabase:I}=await import("./index-C9ebdKB5.js").then(M=>M.aW);return{supabase:I}},__vite__mapDeps([0,1]));await T.from("profiles").update({last_seen_version:rn}).eq("user_id",p.id),(D=o.refetch)==null||D.call(o)}catch{}}const j=i.next,R=Math.round(i.progress*100),z=Ta(p==null?void 0:p.email),[_,K]=c.useState(0);return c.useEffect(()=>{if(!z||!o.data)return;const F=o.data.signups_last_seen_at;(async()=>{let B=H.from("profiles").select("user_id",{count:"exact",head:!0});F&&(B=B.gt("created_at",F));const{count:D}=await B;K(D??0)})()},[z,o.data]),t.jsxs("header",{style:{paddingTop:"max(env(safe-area-inset-top), 0.5rem)",paddingLeft:"env(safe-area-inset-left)",paddingRight:"env(safe-area-inset-right)"},children:[t.jsx("div",{className:"container mx-auto px-3 md:px-4 pt-2 md:pt-3",children:t.jsxs("div",{className:"hero-card px-4 py-3 md:py-4",children:[t.jsxs("div",{className:"flex items-center justify-between gap-2",children:[t.jsxs("div",{className:"flex items-center gap-3 min-w-0",children:[t.jsx(Li,{size:36,primary:v.primary,accent:v.accent,imageUrl:v.logoUrl||void 0,letter:(v.appName||"F").charAt(0).toUpperCase()}),t.jsxs("div",{className:"min-w-0",children:[t.jsx("h1",{className:"font-display text-lg sm:text-xl md:text-2xl leading-tight",children:v.appName}),t.jsx("p",{className:"text-[11px] md:text-xs opacity-70 tracking-wide",children:v.subt
331itle}),t.jsx(Tx,{onOpen:()=>y(!0)}),t.jsx("div",{className:"mt-0.5",children:t.jsx(Th,{})})]})]}),t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsxs(xe,{children:[t.jsx(be,{asChild:!0,children:t.jsx(S,{size:"icon",variant:"ghost",className:"hidden md:inline-flex h-9 w-9 text-hero-foreground hover:bg-white/10",onClick:()=>V(!0),"aria-label":"Aufgaben durchsuchen",children:t.jsx(Hn,{className:"h-4 w-4"})})}),t.jsx(ve,{children:"Aufgaben durchsuchen (Cmd/Strg+K)"})]}),t.jsx("div",{className:"hidden md:inline-flex",children:t.jsx(pi,{})}),t.jsxs(S,{size:"sm",variant:"ghost",className:"hidden md:inline-flex text-hero-foreground hover:bg-white/10",onClick:()=>x(!0),children:[t.jsx(Ka,{className:"h-4 w-4 md:mr-1"})," ",t.jsx("span",{className:"hidden md:inline",children:"Abmelden"})]}),t.jsx("div",{className:"hidden md:block h-6 w-px bg-white/20 mx-1","aria-hidden":!0}),t.jsx(zh,{hidden:v.lzHidden,size:32}),t.jsx("div",{className:"md:hidden",children:t.jsx(pi,{})}),t.jsxs(ha,{children:[t.jsx(ma,{asChild:!0,children:t.jsx(S,{size:"icon",variant:"ghost",className:"md:hidden h-9 w-9 text-hero-foreground hover:bg-white/10","aria-label":"Mehr",children:t.jsx(qi,{className:"h-5 w-5"})})}),t.jsxs(Gr,{align:"end",className:"w-56",children:[t.jsxs(Ve,{onClick:()=>V(!0),children:[t.jsx(Hn,{className:"h-4 w-4 mr-2"})," Aufgaben durchsuchen"]}),t.jsx(Ve,{asChild:!0,children:t.jsxs("a",{href:"/handbuch",children:[t.jsx(Sd,{className:"h-4 w-4 mr-2"})," Handbuch"]})}),t.jsx(Vn,{}),t.jsxs(Ve,{onClick:()=>x(!0),className:"text-destructive",children:[t.jsx(Ka,{className:"h-4 w-4 mr-2"})," Abmelden"]})]})]})]})]}),t.jsx(ld,{open:w,onOpenChange:x,children:t.jsxs(cd,{children:[t.jsxs(dd,{children:[t.jsx(ud,{children:"Wirklich abmelden?"}),t.jsx(hd,{children:"Du wirst zur Login-Seite weitergeleitet. Deine Daten bleiben sicher gespeichert."})]}),t.jsxs(md,{children:[t.jsx(fd,{children:"Abbrechen"}),t.jsx(gd,{onClick:()=>g(),children:"Abmelden"})]})]})}),t.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-2 mt-3 text-xs md:text-sm",children:[t.jsx(zx,{todayPoints:s,pulse:$,allTodos:u}),t.jsx(bs,{icon:t.jsx($i,{className:"h-3.5 w-3.5"}),label:"Woche",value:`${a} Pkt`}),t.jsx(bs,{icon:t.jsx(er,{className:"h-3.5 w-3.5"}),label:"Gesamt",value:`${r} Pkt`}),t.jsx(bs,{icon:t.jsx(ta,{className:"h-3.5 w-3.5"}),label:"Streak",value:`${((ne=l.data)==null?void 0:ne.count)??0}`})]}),t.jsx("button",{onClick:()=>m(!0),className:"w-full text-left mt-3 group",children:t.jsxs("div",{className:"flex items-center gap-2.5 rounded-lg bg-white/5 hover:bg-white/10 transition px-2.5 py-2 border border-white/10",children:[t.jsx("div",{className:"text-xl leading-none",children:i.current.icon}),t.jsxs("div",{className:"flex-1 min-w-0",children:[t.jsxs("div",{className:"flex items-center justify-between gap-2",children:[t.jsxs("span",{className:"font-display text-sm leading-tight truncate",children:["Stufe ",i.current.level," â ",i.current.name]}),t.jsx("span",{className:"text-[10px] opacity-70 hidden sm:inline whitespace-nowrap",children:j?`noch ${j.min-r} â ${j.name}`:"Max"})]}),t.jsx("div",{className:"mt-1.5 h-2.5 w-full bg-white/10 rounded-full overflow-hidden",children:t.jsx("div",{className:"h-full bg-gradient-gold transition-all shadow-[0_0_12px_hsl(var(--gold)/0.6)]",style:{width:`${R}%`}})})]})]})}),(()=>{const F=(d.data??[]).filter(B=>!B.claimed&&!B.archived&&B.points>h).sort((B,D)=>B.points-D.points)[0];return F?t.jsxs("div",{className:"mt-2 flex items-center gap-2 text-xs opacity-80",children:[t.jsx("span",{children:"ð"}),t.jsxs("span",{className:"truncate",children:["Nächste Belohnung: ",t.jsxs("strong",{children:["â",F.text,'"']})," â noch ",t.jsxs("strong",{children:[(F.points-h).toLocaleString("de-DE")," Pkt"]})]})]}):null})(),o.data&&(!o.data.email||!o.data.phone)&&t.jsxs("div",{className:"mt-3 text-xs bg-accent/15 border border-accent/40 text-accent-foreground/90 px-3 py-2 rounded-lg",children:["ð¡ Ergänze noch deine ",o.data.email?"Handynummer":"E-Mail"," im Profil",!o.data.phone&&o.data.email?" â Benachrichtigungen schalten wir dann frei, sobald sie live sind":"","."]}),t.jsx(Mx,{onJumpToRanking:()=>window.dispatchEvent(new CustomEvent("jump-to-tab",{detail:"ranking"}))})]})}),t.jsx(Dx,{}),t.jsx(kh,{open:f,onOpenChange:m,totalPoints:r}),t.jsx(_h,{open:b,onOpenChange:A}),t.jsx(Nx,{open:P,onOpenChange:V,onPick:F=>e==null?void 0:e(F)})]})}function bs({label:e,value:n,pulse:r,icon:s}){return t.jsxs("div",{className:"rounded-lg bg-white/5 border border-white/10 px-2.5 py-2.5 flex items-center gap-2",children:[s&&t.jsx("div",{className:"shrink-0 grid place-items-center h-7 w-7 rounded-full bg-gradient-brand text-white shadow-sm",children:s}),t.jsxs("div",{className:"min-w-0 flex-1",children:[t.jsx("div",{className:"text-[9px] sm:text-[10px] uppercase tracking-wider opacity-60 leading-tight",children:e}),t.jsx("div",{className:"font-display num-tab text-base sm:text-lg leading-tight "+(r?"animate-pulse-once":""),children:n})]})]})}function zx({todayPoints:e,pulse:n,allTodos:r}){var o;const{profile:s}=Ee(),{activeObjectives:a}=He(),i=((o=s.data)==null?void 0:o.focus_v2_enabled)===!0&&a.length>0,{quota:l}=Uc(r);return t.jsxs("div",{className:"rounded-lg bg-white/5 border border-white/10 px-2.5 py-2.5 flex items-center gap-2",children:[t.jsx("div",{className:"shrink-0 grid place-items-center h-7 w-7 rounded-full bg-gradient-gold text-white shadow-sm",children:t.jsx(ft,{className:"h-3.5 w-3.5"})}),t.jsxs("div",{className:"min-w-0 flex-1",children:[t.jsx("div",{className:"text-[9px] sm:text-[10px] uppercase tracking-wider opacity-60 leading-tight",children:"Heute"}),t.jsxs("div",{className:"font-display num-tab text-base sm:text-lg leading-tight "+(n?"animate-pulse-once":""),children:[e," Pkt",i&&t.jsxs("span",{className:"ml-1 text-[10px] opacity-70",title:"Fokus-Quote: Anteil heutiger Punkte aus Fokus-Ziel-Aufgaben",children:["· ð¯ ",l===null?"â":`${Math.round(l*100)} %`]})]})]})]})}function Tx({onOpen:e}){return t.jsx("button",{type:"button",onClick:e,className:"text-[10px] sm:text-xs opacity-70 hover:opacity-100 underline underline-offset-2 transition","aria-label":"Was ist neu â Versionshistorie öffnen",title:"Was ist neu?",children:`v${rn}`})}function Px(){if(typeof window>"u")return!1;const e=window;return!!(e.SpeechRecognition||e.webkitSpeechRecognition)}function Ex(e){const n=e==null?void 0:e.lang,[r,s]=c.useState(!1),[a,i]=c.useState(""),[l,o]=c.useState(null),d=c.useRef(null),u=Px(),h=c.useCallback(()=>{var p;try{(p=d.current)==null||p.stop()}catch{}s(!1)},[]),g=c.useCallback(()=>
331{if(!u){o("Voice in diesem Browser nicht verfügbar.");return}o(null),i("");const p=window,v=p.SpeechRecognition||p.webkitSpeechRecognition,f=new v;f.lang=n,f.continuous=!1,f.interimResults=!0,f.onresult=m=>{let w="";for(let x=m.resultIndex;x<m.results.length;x++)w+=m.results[x][0].transcript;i(w)},f.onerror=m=>{o(m.error||"Unbekannter Voice-Fehler"),s(!1)},f.onend=()=>s(!1),d.current=f;try{f.start(),s(!0)}catch(m){o(String(m)),s(!1)}},[n,u]);return c.useEffect(()=>()=>{var p;try{(p=d.current)==null||p.abort()}catch{}},[]),{supported:u,listening:r,transcript:a,error:l,start:g,stop:h}}const Rx=[{pattern:/\b(bafa|baffa|baffer|baufa|bavar|baphar)\b/gi,replace:"BAFA"},{pattern:/\bliebe\s+zeit\s*-?\s*arbeit\b/gi,replace:"Liebe Zeitarbeit"},{pattern:/\bzeit\s*-?\s*arbeit\b/gi,replace:"Zeitarbeit"},{pattern:/\bvip\s*-?\s*club\b/gi,replace:"VIP Club"},{pattern:/\b(fokus|focus)\s+cockpit\b/gi,replace:"Fokus Cockpit"},{pattern:/\bdispositionen\b/gi,replace:"Dispositionen"},{pattern:/\bdisposition\b/gi,replace:"Disposition"},{pattern:/\brecruiting\b/gi,replace:"Recruiting"}];function Ix(e){if(!e)return e;let n=e;for(const r of Rx)n=n.replace(r.pattern,r.replace);return n=n.trim(),n.length>0&&(n=n.charAt(0).toUpperCase()+n.slice(1)),n}function Ox({onTranscript:e,className:n}){const{supported:r,listening:s,transcript:a,error:i,start:l,stop:o}=Ex({lang:"de-DE"});c.useEffect(()=>{a&&e(Ix(a))},[a]),c.useEffect(()=>{i&&U.error("Voice-Eingabe fehlgeschlagen",{description:i})},[i]);const d=!r,u=d?"Voice in diesem Browser leider nicht verfügbar â nimm bitte Chrome oder Safari auf iOS.":s?"Aufnahme läuft â tippen zum Stoppen":"Per Sprache eingeben";return t.jsxs(xe,{children:[t.jsx(be,{asChild:!0,children:t.jsx("span",{children:t.jsx(S,{type:"button",variant:"outline",size:"icon",disabled:d,onClick:()=>s?o():l(),"aria-label":u,className:Q("h-11 w-11 shrink-0 transition",s&&"border-destructive text-destructive bg-destructive/10 animate-pulse shadow-[0_0_0_4px_hsl(var(--destructive)/0.15)]",d&&"opacity-50 cursor-not-allowed",n),children:s?t.jsx(Gd,{className:"h-5 w-5"}):t.jsx(Zd,{className:"h-5 w-5"})})})}),t.jsx(ve,{children:u})]})}function Rr({role:e,compact:n,className:r}){return t.jsxs("span",{className:Q("inline-flex items-center gap-1 rounded-full text-[11px] font-medium px-2 py-0.5 border",r),style:{backgroundColor:e.color+"22",borderColor:e.color+"66",color:e.color},title:e.name,children:[e.emoji&&t.jsx("span",{children:e.emoji}),!n&&t.jsx("span",{className:"truncate max-w-[80px]",children:e.name})]})}const xi=["#3D53A4","#F15F22","#22C55E","#8B5CF6","#EAB308","#06B6D4","#EC4899","#64748B"];function pc({value:e,onChange:n,compact:r}){const{roles:s,addRole:a}=de(),[i,l]=c.useState(!1),[o,d]=c.useState(""),[u,h]=c.useState(xi[0]),g=s.data??[],p=g.find(m=>m.id===e)??null;function v(m){n(m),l(!1)}function f(){o.trim()&&a.mutate({name:o.trim(),color:u},{onSuccess:()=>{d(""),setTimeout(()=>{const m=(s.data??[]).slice().reverse()[0];m&&n(m.id)},300)}})}return t.jsxs(wn,{open:i,onOpenChange:l,children:[t.jsx(jn,{asChild:!0,children:t.jsx(S,{type:"button",variant:"outline",size:r?"sm":"default",className:Q("h-11 gap-1",r&&"h-9 px-2"),children:p?t.jsx(Rr,{role:p,compact:r}):t.jsxs(t.Fragment,{children:[t.jsx(Yi,{className:"h-4 w-4"}),t.jsx("span",{className:"text-xs",children:"Rolle"})]})})}),t.jsxs(Qt,{className:"w-64 p-3",align:"start",children:[t.jsx("div",{className:"text-xs font-medium text-muted-foreground mb-2",children:"Zuständig"}),t.jsxs("div",{className:"flex flex-wrap gap-1 mb-3",children:[t.jsxs("button",{type:"button",onClick:()=>v(null),className:Q("chip border",e?"border-border text-muted-foreground":"border-primary text-primary"),children:[t.jsx(Me,{className:"h-3 w-3 mr-0.5 inline"})," ohne"]}),g.map(m=>t.jsx("button",{type:"button",onClick:()=>v(m.id),className:"hover:opacity-80",children:t.jsx(Rr,{role:m})},m.id))]}),t.jsxs("div",{className:"border-t pt-2",children:[t.jsx("div",{className:"text-xs font-medium text-muted-foreground mb-1",children:"Neue Rolle"}),t.jsx(oe,{value:o,onChange:m=>d(m.target.value),placeholder:"z. B. Sales",className:"h-8 text-sm mb-2"}),t.jsx("div",{className:"flex flex-wrap gap-1 mb-2",children:xi.map(m=>t.jsx("button",{type:"button",onClick:()=>h(m),className:Q("h-6 w-6 rounded-full border-2",u===m?"border-foreground":"border-transparent"),style:{backgroundColor:m}},m))}),t.jsxs(S,{type:"button",size:"sm",className:"w-full",onClick:f,disabled:!o.trim(),children:[t.jsx(Tt,{className:"h-3 w-3 mr-1"})," Anlegen & zuweisen"]})]})]})]})}function Fx({onApply:e}){const{templates:n,deleteTemplate:r}=de(),[s,a]=c.useState(!1),i=n.data??[];return t.jsxs(wn,{open:s,onOpenChange:a,children:[t.jsxs(xe,{children:[t.jsx(be,{asChild:!0,children:t.jsx(jn,{asChild:!0,children:t.jsx(S,{type:"button",size:"icon",variant:"ghost",className:"h-11 w-11","aria-label":"Vorlage einfügen",children:t.jsx(zd,{className:"h-4 w-4"})})})}),t.jsx(ve,{children:"Aufgaben-Vorlage einfügen"})]}),t.jsxs(Qt,{className:"w-72 p-0",children:[t.jsx("div",{className:"px-3 py-2 border-b text-sm font-medium",children:"Deine Vorlagen"}),t.jsxs("div",{className:"max-h-72 overflow-y-auto",children:[i.length===0&&t.jsx("p",{className:"text-xs text-muted-foreground px-3 py-3",children:'Noch keine Vorlagen. Lege welche im Profil â âVorlagen" an.'}
331),i.map(l=>t.jsxs("div",{className:"flex items-center gap-2 px-3 py-2 hover:bg-muted/40",children:[t.jsxs("button",{className:"flex-1 text-left text-sm",onClick:()=>{e(l),a(!1)},children:[t.jsx("div",{className:"font-medium",children:l.name}),t.jsx("div",{className:"text-xs text-muted-foreground truncate",children:l.text})]}),t.jsx(S,{size:"icon",variant:"ghost",className:"h-7 w-7",onClick:()=>r.mutate(l.id),"aria-label":"Löschen",children:t.jsx(at,{className:"h-3.5 w-3.5"})})]},l.id))]})]})]})}const bi={sonntag:0,so:0,montag:1,mo:1,dienstag:2,di:2,mittwoch:3,mi:3,donnerstag:4,do:4,freitag:5,fr:5,samstag:6,sa:6,sonnabend:6};function vi(e,n=new Date){const r=new Date(n);r.setHours(0,0,0,0);const s=(e-r.getDay()+7)%7;return r.setDate(r.getDate()+(s===0?7:s)),r}function vs(){const e=new Date;return e.setHours(0,0,0,0),e}function Bx(e){let n=e.match(/\b(?:um\s+)?(\d{1,2}):(\d{2})(?:\s*uhr)?\b/i);if(n){const r=+n[1],s=+n[2];if(r<=23&&s<=59)return{time:`${String(r).padStart(2,"0")}:${String(s).padStart(2,"0")}`,match:n[0]}}if(n=e.match(/\b(?:um\s+)?(\d{1,2})\s*uhr\b/i),n){const r=+n[1];if(r<=23)return{time:`${String(r).padStart(2,"0")}:00`,match:n[0]}}if(n=e.match(/\bum\s+(\d{1,2})\b(?!\s*[.\-/])/i),n){const r=+n[1];if(r>=1&&r<=23)return{time:`${String(r).padStart(2,"0")}:00`,match:n[0]}}return null}function Wx(e){const n=e.toLowerCase();let r=n.match(/\b(heute)\b/);if(r)return{date:vs(),match:r[0],label:"heute"};if(r=n.match(/\b(morgen)\b/),r){const a=vs();return a.setDate(a.getDate()+1),{date:a,match:r[0],label:"morgen"}}if(r=n.match(/\b(übermorgen|uebermorgen)\b/),r){const a=vs();return a.setDate(a.getDate()+2),{date:a,match:r[0],label:"übermorgen"}}if(r=n.match(/\b(n[äa]chste[nr]?\s+woche)\b/),r)return{date:vi(1),match:r[0],label:"nächste Woche"};const s=Object.keys(bi).sort((a,i)=>i.length-a.length);for(const a of s){const i=new RegExp(`\\b(am\\s+|n[äa]chste[nr]?\\s+)?${a}\\b`,"i"),l=n.match(i);if(l){const o=bi[a],d=vi(o),u=a.charAt(0).toUpperCase()+a.slice(1);return{date:d,match:l[0],label:u}}}return null}function Lx(e){if(!e||e.length<3)return null;const n=Wx(e),r=Bx(e);if(!n&&!r||!n)return null;const s=pr(n.date),a=(r==null?void 0:r.time)??null,i=[n.match,r==null?void 0:r.match].filter(Boolean).join(" "),l=a?`${n.label} · ${a}`:n.label;return{date:s,time:a,matchedText:i,label:l}}function yi(e,n){if(!n)return e;let r=e;const s=n.matchedText.split(" ").filter(Boolean);for(const a of s){const i=a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");r=r.replace(new RegExp(`\\s*\\b${i}\\b\\s*`,"i")," ")}return r.replace(/\s{2,}/g," ").trim()}function Hx(e){if(e.preset==="off")return null;if(e.preset==="custom")return e.custom_at??null;if(!e.due_date)return null;const n=e.due_time??"09:00",[r,s]=n.split(":").map(Number),[a,i,l]=e.due_date.split("-").map(Number),o=new Date(a,(i??1)-1,l??1,r??9,s??0,0,0);switch(e.preset){case"due":break;case"10m":o.setMinutes(o.getMinutes()-10);break;case"1h":o.setHours(o.getHours()-1);break;case"1d":o.setDate(o.getDate()-1);break}return o.toISOString()}function Kx(){var Nt,pt;const{addTodo:e,roles:n,allTodos:r,tags:s,profile:a,addTag:i,unlockAchievement:l}=de();ge();const{setLinks:o}=kn(),[d,u]=c.useState(""),[h,g]=c.useState("B"),[p,v]=c.useState("ADMIN"),[f,m]=c.useState(!1),[w,x]=c.useState(null),[b,y]=c.useState(null),[P,V]=c.useState("off"),[$,W]=c.useState(null),[G,C]=c.useState(null),[A,j]=c.useState(null),[R,z]=c.useState([]),[_,K]=c.useState(!1),[ne,F]=c.useState("web"),[B,D]=c.useState(!1),[N,T]=c.useState(null),[I,M]=c.useState(!1),{profile:E}=Ee(),Z=!!((Nt=E.data)!=null&&Nt.focus_v2_enabled),{activeObjectives:Y}=He(),L=R[0]??null,[ee,ie]=c.useState(!1),[J,re]=c.useState(""),[le,Se]=c.useState(!1);async function ze(){const te=J.trim().toUpperCase();te&&(await i.mutateAsync({name:te,color:"#3D53A4",emoji:Ss(te)}),l("category_creator"),v(te),D(!0),re(""),ie(!1))}const _e=((pt=a.data)==null?void 0:pt.hidden_categories)??[],Ge=mc({tags:s.data??[],hidden:_e,todos:r??[]});c.useEffect(()=>{if(!L||B)return;const te=(Y??[]).find(pe=>pe.id===L),me=qc(te==null?void 0:te.category);me&&Bn.some(pe=>pe.id===me)&&v(me)},[L,Y,B]),c.useEffect(()=>{if(I)return;if(w){T(null);return}const te=Lx(d);T(te)},[d,w,I]);function Fe(){N&&(x(N.date),N.time&&y(N.time),u(te=>yi(te,N)),T(null))}if(G===null&&(n.data??[]).length>0){const te=(n.data??[]).find(me=>me.is_default);te&&setTimeout(()=>C(te.id),0)}c.useEffect(()=>{const te=me=>{const pe=me.target,Je=pe.tagName==="INPUT"||pe.tagName==="TEXTAREA"||pe.isContentEditable;if(me.key==="/"&&!Je){me.preventDefault();const Re=document.querySelector('input[placeholder*="nächste Aufgabe"]');Re==null||Re.focus()}if(me.key.toLowerCase()==="n"&&!Je&&!me.metaKey&&!me.ctrlKey&&!me.altKey){me.preventDefault();const Re=document.querySelector('input[placeholder*="nächste Aufgabe"]');Re&&(u(""),Re.focus())}Je&&me.altKey&&["a","b","c"].includes(me.key.toLowerCase())&&(me.preventDefault(),g(me.key.toUpperCase()))};return window.addEventListener("keydown",te),()=>window.removeEventListener("keydown",te)},[]);function gt(te){te==null||te.preventDefault();let me=d.trim(),pe=w,Je=b;if(N&&!w&&!I&&(pe=N.date,N.time&&(Je=N.time),me=yi(d,N).trim()),!me)return;const Re=Hx({due_date:pe,due_time:Je,preset:P,custom_at:$});e.mutate({text:me,prio:h,tag:p,important:f,date_label:null,due_date:pe,due_time:Je,reminder_at:Re,role_id:G,re
331currence:A,source:ne,objective_id:L,is_firefighter:_},{onSuccess:async Ze=>{if(Ze!=null&&Ze.id&&R.length>0)try{await o.mutateAsync({todo_id:Ze.id,objective_ids:R})}catch(Qe){console.warn("[todo_objectives insert]",Qe)}}}),ne==="voice"&&l("voice_first"),u(""),m(!1),x(null),y(null),V("off"),W(null),j(null),F("web"),z([]),K(!1),D(!1),T(null),M(!1)}return t.jsx("form",{onSubmit:gt,className:"sticky bottom-16 md:bottom-0 md:relative z-10 bg-background/95 backdrop-blur md:rounded-xl px-3 py-2 md:p-3",children:t.jsxs("div",{className:"bg-primary/5 border-2 border-primary/30 rounded-2xl p-3 space-y-2",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(oe,{value:d,onChange:te=>u(te.target.value),placeholder:"Deine nächste Aufgabeâ¦",className:"flex-1 text-base h-11 bg-white dark:bg-background"}),t.jsxs(xe,{children:[t.jsx(be,{asChild:!0,children:t.jsxs(S,{type:"button",onClick:()=>gt(),className:"h-11 px-4 bg-gradient-brand shrink-0","aria-label":"Aufgabe speichern",children:[t.jsx(Tt,{className:"h-4 w-4 sm:mr-1"})," ",t.jsx("span",{className:"hidden sm:inline",children:"Anlegen"})]})}),t.jsx(ve,{children:"Aufgabe speichern"})]})]}),N&&!w&&!I&&t.jsxs("div",{className:"flex items-center gap-2 -mt-1",children:[t.jsxs("button",{type:"button",onClick:Fe,className:"inline-flex items-center gap-1.5 px-2.5 py-1 rounded-full text-xs bg-primary/10 border border-primary/40 text-primary hover:bg-primary/20 transition",title:"Als Fälligkeit übernehmen â Phrase wird aus dem Titel entfernt",children:[t.jsx(Td,{className:"h-3.5 w-3.5"}),"ð
",N.label," ",t.jsx("span",{className:"opacity-70",children:"übernehmen"})]}),t.jsx("button",{type:"button",onClick:()=>{M(!0),T(null)},className:"inline-flex items-center text-muted-foreground hover:text-foreground p-1","aria-label":"Vorschlag verwerfen",children:t.jsx(Me,{className:"h-3.5 w-3.5"})})]}),t.jsxs("div",{className:"flex flex-wrap items-center gap-1.5",children:[t.jsx(Ox,{onTranscript:te=>{u(te),F("voice")}}),t.jsx(ts,{value:w,onChange:x,time:b,onTimeChange:y,reminder:P,onReminderChange:V,customReminderAt:$,onCustomReminderChange:W}),t.jsx(Er,{value:A,onChange:j}),t.jsx(Fx,{onApply:te=>{te.text&&u(te.text),te.prio&&g(te.prio),te.tag&&v(te.tag),typeof te.important=="boolean"&&m(te.important),te.role_id!==void 0&&C(te.role_id),F("template")}}),t.jsxs(xe,{children:[t.jsx(be,{asChild:!0,children:t.jsx(S,{type:"button",variant:"outline",size:"icon",className:"h-10 w-10 shrink-0",onClick:()=>m(te=>!te),"aria-label":"Als wichtig markieren",children:t.jsx(ft,{className:Q("h-5 w-5",f&&"fill-gold text-gold")})})}),t.jsx(ve,{children:"Als wichtig markieren · +5 Bonus-Punkte beim Erledigen"})]}),Z&&t.jsxs(xe,{children:[t.jsx(be,{asChild:!0,children:t.jsx(S,{type:"button",variant:"outline",size:"icon",className:Q("h-10 w-10 shrink-0",_&&"bg-destructive/10 border-destructive/50"),onClick:()=>K(te=>!te),"aria-label":"Feuerwehr-Aufgabe (kam ungeplant dazwischen)",children:t.jsx(au,{className:Q("h-5 w-5",_&&"text-destructive")}
331)})}),t.jsx(ve,{children:"ð Feuerwehr: kam ungeplant dazwischen"})]})]}),t.jsxs("div",{className:"flex flex-wrap items-center gap-1.5",children:[t.jsxs(xe,{children:[t.jsx(be,{asChild:!0,children:t.jsx("div",{children:t.jsxs(yt,{value:h,onValueChange:te=>g(te),children:[t.jsx(ut,{className:"w-[110px] h-10","aria-label":"ABC-Priorität wählen",children:t.jsx(kt,{})}),t.jsxs(ht,{children:[t.jsx(we,{value:"A",children:"Prio: A (10)"}),t.jsx(we,{value:"B",children:"Prio: B (5)"}),t.jsx(we,{value:"C",children:"Prio: C (2)"})]})]})})}),t.jsxs(ve,{className:"max-w-[260px] text-xs",children:["ABC-Analyse: ",t.jsx("b",{children:"A"})," = wichtig / höchste Priorität, ",t.jsx("b",{children:"B"})," = mittel, ",t.jsx("b",{children:"C"})," = weniger wichtig. Ziel: möglichst viele A-Aufgaben erledigen."]})]}),t.jsxs(yt,{open:le,onOpenChange:Se,value:p,onValueChange:te=>{v(te),D(!0)},children:[t.jsx(ut,{className:"min-w-[170px] md:min-w-[190px] w-auto h-9 text-sm","aria-label":"Kategorie wählen",children:t.jsx(kt,{})}),t.jsx(ht,{className:"max-h-[280px]",children:Ge.map(te=>t.jsx(we,{value:te.id,title:te.description,className:"py-1.5 text-sm",children:t.jsxs("span",{className:"inline-flex items-center gap-1 max-w-[200px]",children:[t.jsx("span",{"aria-hidden":!0,children:te.emoji}),t.jsx("span",{className:"truncate",children:te.label})]})},te.id))})]}),t.jsxs(xe,{children:[t.jsx(be,{asChild:!0,children:t.jsx(S,{type:"button",variant:"outline",size:"icon",className:"h-9 w-9 shrink-0",onClick:()=>{Se(!1),ie(!0)},"aria-label":"Eigene Rubrik anlegen",children:t.jsx(Tt,{className:"h-4 w-4"})})}),t.jsx(ve,{children:"Eigene Rubrik anlegen"})]}),t.jsx(pc,{value:G,onChange:C,compact:!0})]}),ee&&t.jsxs("div",{className:"flex items-center gap-1 w-full mt-1",children:[t.jsx(oe,{value:J,onChange:te=>re(te.target.value.toUpperCase()),onKeyDown:te=>{te.key==="Enter"&&(te.preventDefault(),ze()),te.key==="Escape"&&(te.preventDefault(),ie(!1),re(""))},placeholder:`Name der Rubrik (z. B. KUNDE-X) ${J?Ss(J):"ð·ï¸"}`,className:"h-9 text-sm flex-1",autoFocus:!0}),t.jsx(S,{type:"button",size:"sm",className:"bg-gradient-brand",onClick:()=>void ze(),children:"Anlegen"}),t.jsx(S,{type:"button",size:"sm",variant:"ghost",onClick:()=>{ie(!1),re("")},children:"Abbrechen"})]}),t.jsx(ll,{values:R,onChange:z,suggestText:d})]})})}const ki=[{id:"heute",label:"Heute",icon:Sr},{id:"woche",label:"Woche",icon:$i},{id:"kalender",label:"Kalender",icon:Pd},{id:"projekte",label:"Projekte",icon:Ld},{id:"hebel",label:Pf,icon:Xn},{id:"done",label:"Erledigt",icon:Od},{id:"erfolge",label:"Erfolge",icon:er},{id:"stats",label:"Stats",icon:Ed},{id:"help",label:"Hilfe",icon:Fd},{id:"profile",label:"Profil",icon:As}],$x={id:"admin",label:"Admin",icon:su};function xc(){var i;const{user:e}=ge(),n=Ta(e==null?void 0:e.email),{profile:r}=Ee(),s=((i=r.data)==null?void 0:i.focus_v2_enabled)===!0;let a=n?[...ki,$x]:[...ki];return s||(a=a.filter(l=>l.id!=="hebel")),a}function bc(){return!1}function vc({className:e}){return t.jsx("span",{className:Q("inline-block rounded-sm bg-primary/15 text-primary text-[9px] font-bold tracking-wider px-1 py-[1px] leading-none align-middle",e),children:"BETA"})}
331function Vx({active:e,onChange:n}){const r=xc(),s=bc(),a=r.length+1;return t.jsx("nav",{className:"md:hidden fixed bottom-0 inset-x-0 bg-card/70 backdrop-blur-xl border-t border-border/60 z-20 overflow-x-auto",style:{paddingBottom:"env(safe-area-inset-bottom)",maskImage:"linear-gradient(to right, black 88%, transparent 100%)",WebkitMaskImage:"linear-gradient(to right, black 88%, transparent 100%)"},children:t.jsxs("div",{className:"flex",style:{minWidth:`${a*68}px`},children:[t.jsxs("button",{onClick:()=>window.dispatchEvent(new CustomEvent("open-global-search")),"aria-label":"Suchen",className:"flex-1 flex flex-col items-center justify-center gap-1 py-2 min-h-[52px] min-w-[68px] text-[11px] text-muted-foreground active:bg-muted/60",children:[t.jsx(Hn,{className:"h-5 w-5"}),"Suche"]}),r.map(i=>{const l=i.icon,o=e===i.id;return t.jsxs("button",{onClick:()=>n(i.id),"aria-label":i.label,className:Q("relative flex-1 flex flex-col items-center justify-center gap-1 py-2 min-h-[52px] min-w-[68px] text-[11px] motion-safe:transition-colors motion-safe:duration-200 active:bg-muted/60",o?"text-primary font-semibold":"text-foreground/70 hover:text-foreground"),children:[o&&t.jsx("span",{className:"absolute top-0 left-1/2 -translate-x-1/2 h-1 w-8 rounded-b-full bg-gradient-brand motion-safe:transition-all motion-safe:duration-200","aria-hidden":!0}),t.jsx(l,{className:Q("h-5 w-5",o&&"text-primary")}),t.jsxs("span",{className:"flex items-center gap-1",children:[i.label,i.id==="hebel"&&s&&t.jsx(vc,{})]})]},i.id)})]})})}
331function Ux({active:e,onChange:n}){const r=xc(),s=bc();return t.jsx("div",{className:"hidden md:flex justify-center mb-4",children:t.jsx("nav",{className:"nav-pill-bar overflow-x-auto max-w-full",children:r.map(a=>{const i=a.icon,l=e===a.id;return t.jsxs("button",{onClick:()=>n(a.id),className:Q("nav-pill",l&&"nav-pill-active"),children:[t.jsx(i,{className:"h-4 w-4"})," ",a.label,a.id==="hebel"&&s&&t.jsx(vc,{})]},a.id)})})})}const yc=c.createContext({selected:new Set,toggle:()=>{},clear:()=>{},isActive:!1});function qx({children:e}){const[n,r]=c.useState(new Set);function s(i){r(l=>{const o=new Set(l);return o.has(i)?o.delete(i):o.add(i),o})}function a(){r(new Set)}return t.jsx(yc.Provider,{value:{selected:n,toggle:s,clear:a,isActive:n.size>0},children:e})}const kc=()=>c.useContext(yc);function Gx(e,n){if(e.cover_color||e.cover_emoji)return{color:e.cover_color??null,emoji:e.cover_emoji??null};const r=e.tag?n.find(s=>s.name===e.tag):null;return{color:(r==null?void 0:r.color)??null,emoji:(r==null?void 0:r.emoji)??null}}function Ir(e,n){const r=e.defer_until;return r?r>Ph():!1}function Ct(e,n){const r=n?wt(n)??new Date:new Date;return r.setDate(r.getDate()+e),`${r.getFullYear()}-${String(r.getMonth()+1).padStart(2,"0")}-${String(r.getDate()).padStart(2,"0")}`}function an(e){const n=wt(e);return n?n.toLocaleDateString("de-DE",{weekday:"short",day:"numeric",month:"long"}):""}const Zx=[{key:"tomorrow",label:"Morgen",days:1},{key:"3days",label:"In 3 Tagen",days:3},{key:"nextweek",label:"Nächste Woche",days:7},{key:"2weeks",label:"In 2 Wochen",days:14}];function wc(e,n){if(e!=null&&e.recurrence)return e;const r=e==null?void 0:e.series_id;return r?n.find(s=>s.id===r&&s.recurrence)??null:null}function Yx(e,n){var r;return((r=wc(e,n))==null?void 0:r.recurrence)??null}function Jx(e,n){if(!e)return null;for(let r=1;r<=400;r++){const s=Ct(r,n),a=wt(s);if(a&&Ih(e,a))return s}return null}const wi=[{key:"1w",label:"In 1 Woche",days:7},{key:"2w",label:"In 2 Wochen",days:14},{key:"1m",label:"In 1 Monat",days:30}];function Qx({todo:e,open:n,onOpenChange:r}){var x;const{addTodo:s,tags:a}=de(),{todoObjectives:i,setLinks:l}=kn(),[o,d]=c.useState("2w"),[u,h]=c.useState(Ct(14)),[g,p]=c.useState(""),[v,f]=c.useState(!1);c.useEffect(()=>{n&&(d("2w"),h(Ct(14)),p(""))},[n]);const m=o==="custom"?u:Ct(((x=wi.find(b=>b.key===o))==null?void 0:x.days)??14);async function w(){if(m){f(!0);try{const b=new Map;(a.data??[]).forEach($=>{$.objective_id&&b.set($.name,$.objective_id)});const y=va(e,i.data??new Map,b),P=e.done_at?new Date(e.done_at).toLocaleDateString("de-DE",{day:"numeric",month:"long"}):new Date().toLocaleDateString("de-DE",{day:"numeric",month:"long"}),V=await s.mutateAsync({text:`ð Nachfassen: ${e.text}`,prio:e.prio,tag:e.tag,important:!1,due_date:m,defer_until:m,role_id:e.role_id??null,objective_id:e.objective_id??null,note:[`Nachfass-Aufgabe, erledigt am ${P}`,g.trim()].filter(Boolean).join(` 332 333`),source:"followup"});if(V!=null&&V.id&&y.length>0)try{await l.mutateAsync({todo_id:V.id,objective_ids:y})}catch($){console.warn("[followup] objective links failed",$)}U.success(`Nachfassen angelegt â taucht am ${an(m)} automatisch auf.`),r(!1)}catch(b){U.error(`Nachfassen konnte nicht angelegt werden: ${(b==null?void 0:b.message)??"Fehler"}`)}finally{f(!1)}}}return t.jsx(Ne,{open:n,onOpenChange:r,children:t.jsxs(De,{className:"max-w-[calc(100vw-2rem)] sm:max-w-sm",children:[t.jsxs(Ce,{children:[t.jsx(Ae,{className:"text-base",children:"ð Nachfassen anlegen"}),t.jsxs(st,{className:"break-words",children:["Aus â",e.text,"â wird eine neue Aufgabe, die bis zum gewählten Tag unsichtbar bleibt."]})]}),t.jsxs("div",{className:"space-y-3",children:[t.jsxs("div",{className:"flex flex-wrap gap-2",children:[wi.map(b=>t.jsx("button",{type:"button",onClick:()=>d(b.key),className:Q("px-3 py-1.5 rounded-full text-sm border transition",o===b.key?"bg-primary text-primary-foreground border-transparent":"bg-muted text-muted-foreground border-border hover:border-primary"),children:b.label},b.key)),t.jsx("button",{type:"button",onClick:()=>d("custom"),className:Q("px-3 py-1.5 rounded-full text-sm border transition",o==="custom"?"bg-primary text-primary-foreground border-transparent":"bg-muted text-muted-foreground border-border hover:border-primary"),children:"Eigenes Datum"})]}),o==="custom"&&t.jsx(oe,{type:"date",value:u,onChange:b=>h(b.target.value),"aria-label":"Eigenes Datum"}),t.jsxs("div",{className:"space-y-1",children:[t.jsx("label",{className:"text-xs font-medium text-muted-foreground",htmlFor:"followup-note",children:"Woran willst Du anknüpfen? (optional)"}),t.jsx(vt,{id:"followup-note",value:g,onChange:b=>p(b.target.value),placeholder:"Angebot lag bei ihm, Rückmeldung stand aus",rows:3})]}),m&&t.jsxs("p",{className:"text-xs text-muted-foreground",children:["Taucht wieder auf am ",an(m),". Punkte gibt es dafür keine."]})]}),t.jsxs(Zt,{children:[t.jsx(S,{variant:"outline",onClick:()=>r(!1),children:"Abbrechen"}),t.jsx(S,{onClick:w,disabled:v||!m,children:"Nachfassen anlegen"})]})]})})}const Xx={A:"bg-prio-a text-white border-transparent",B:"bg-prio-b text-white border-transparent",C:"bg-prio-c text-white border-transparent"};function Ls({todo:e,showReopen:n=!1}){var Mn;const{toggleDone:r,toggleImportant:s,deleteTodo:a,updateTodo:i,reopenTodo:l,roles:o,tags:d,todoMeta:u,profile:h,unlockAchievement:g,allTodos:p}=de(),v=kc(),f=v.selected.has(e.id),m=((Mn=h.data)==null?void 0:Mn.hidden_categories)??[],w=Aa(d.data??[],m),x=za(e.tag,d.data??[],m),b=(o.data??[]).find(k=>k.id===e.role_id)??null,y=Gx(e,d.data??[]),{todoObjectives:P}=kn(),V=new Map;
333(d.data??[]).forEach(k=>{k.objective_id&&V.set(k.name,k.objective_id)});const $=va(e,P.data??new Map,V),[W,G]=c.useState(!1),[C,A]=c.useState(null),[j,R]=c.useState(e.text),[z,_]=c.useState(e.prio),[K,ne]=c.useState(e.tag??"ADMIN"),[F,B]=c.useState(e.due_date),[D,N]=c.useState(e.due_time??null),[T,I]=c.useState(e.reminder_at?"custom":"off"),[M,E]=c.useState(e.reminder_at??null),[Z,Y]=c.useState(e.role_id),[L,ee]=c.useState(e.recurrence),ie=c.useRef(null),[J,re]=c.useState(!1),[le,Se]=c.useState(!1),[ze,_e]=c.useState(!1),[Ge,Fe]=c.useState(""),[gt,Nt]=c.useState(!1),pt=e.text.length>90;c.useEffect(()=>{W&&(R(e.text),_(e.prio),ne(e.tag??"ADMIN"),B(e.due_date),N(e.due_time??null),I(e.reminder_at?"custom":"off"),E(e.reminder_at??null),Y(e.role_id),ee(e.recurrence),setTimeout(()=>{var k;return(k=ie.current)==null?void 0:k.focus()},30))},[W,e]);const te=!e.done&&Ir(e),me=!e.done&&!te&&et(e.due_date),pe=!e.done&&At(e.due_date),Je=!e.done&&Zo(e.due_date),Re=Un(e.created_at),Ze=!e.done&&Re>=7?Re>=30?"old":"stale":null,Qe=Yx(e,p),St=wc(e,p),lr=!!Qe||e.source==="recurring"||!!e.series_id,Xt=e.skipped_count??0,ss=e.prio==="A"?"before:bg-prio-a":e.prio==="B"?"before:bg-prio-b":"before:bg-prio-c",Sn=me?"before:bg-destructive":pe?"before:bg-accent":Je?"before:bg-primary":ss,as=lr?"before:[background-image:repeating-linear-gradient(180deg,transparent_0px,transparent_4px,hsl(var(--card))_4px,hsl(var(--card))_7px)]":"";function Dn(k,q){const ue=e.defer_until??null,ke=e.due_date??null;i.mutate({id:e.id,defer_until:k,...e.due_date?{}:{due_date:k},...q??{}}),U(`Bis ${an(k)} zurückgestellt â taucht dann automatisch wieder auf.`,{duration:6e3,action:{label:"Rückgängig",onClick:()=>i.mutate({id:e.id,defer_until:ue,due_date:ke})}})}function _n(){const k=j.trim();if(!k){G(!1);return}let q=null;if(T==="custom")q=M;else if(T!=="off"&&F){const ue=D??"09:00",[ke,Be]=ue.split(":").map(Number),[cr,Bt,Dt]=F.split("-").map(Number),Oe=new Date(cr,(Bt??1)-1,Dt??1,ke??9,Be??0,0,0);T==="10m"?Oe.setMinutes(Oe.getMinutes()-10):T==="1h"?Oe.setHours(Oe.getHours()-1):T==="1d"&&Oe.setDate(Oe.getDate()-1),q=Oe.toISOString()}i.mutate({id:e.id,text:k,prio:z,tag:K,due_date:F,due_time:D,reminder_at:q,role_id:Z,recurrence:L},{onSuccess:()=>G(!1)})}return t.jsxs("div",{id:`todo-${e.id}`,onClick:k=>{if(v.isActive){const q=k.target.tagName;q!=="BUTTON"&&q!=="INPUT"&&q!=="SVG"&&q!=="PATH"&&(k.preventDefault(),v.toggle(e.id))}},className:Q("relative flex flex-wrap items-start gap-2 p-2 pl-3 sm:p-3 sm:pl-4 rounded-xl border bg-card shadow-card transition","before:absolute before:left-0 before:top-2 before:bottom-2 before:w-[3px] before:rounded-full",Sn,as,e.done&&"opacity-60",e.important&&"border-gold/60 ring-1 ring-gold/30",me&&"border-destructive/40",Ze==="stale"&&"opacity-90 bg-muted/30",Ze==="old"&&"opacity-85 bg-muted/40",f&&"ring-2 ring-primary"),children:[(()=>{var q;const k=(q=u.data)==null?void 0:q.get(e.id);return!k||k.commentCount<=0?null:t.jsx("div",{className:"absolute -top-1.5 -right-1.5 z-10 pointer-events-none select-none touch-none",children:t.jsxs("div",{className:"bg-accent text-white text-xs font-bold rounded-full min-w-[22px] h-[22px] px-1.5 inline-flex items-center justify-center gap-0.5 shadow-md ring-2 ring-background",children:[t.jsx(En,{className:"h-3 w-3"}),k.commentCount]})})})(),y.color&&t.jsx("div",{"aria-hidden":!0,className:"absolute left-0 right-0 top-0 h-1 rounded-t-xl",style:{background:y.color}}),t.jsx(cn,{checked:e.done,onDoubleClick:()=>v.toggle(e.id),onCheckedChange:k=>{if(v.isActive){v.toggle(e.id);return}if(!e.done){const ue=et(e.due_date),Be=e.prio==="A"||e.important?"big":e.prio==="B"?"medium":"mini",Bt=(Wn[e.prio]??0)+(e.important?5:0);A(Bt),setTimeout(()=>A(null),750),Pe(async()=>{const{celebrate:Oe}=await import("./confetti-bEOLSAJf.js");return{celebrate:Oe}},[]).then(({celebrate:Oe})=>{const is=ie.current??null,Cn=is==null?void 0:is.getBoundingClientRect();Oe({x:Cn?Cn.left+Cn.width/2:void 0,y:Cn?Cn.top:void 0,size:Be,boost:ue})});const Dt=U(`Aufgabe abgehakt · +${Bt} Pkt`,{duration:5e3,description:t.jsx("button",{type:"button",className:"mt-1 inline-flex items-center gap-1 text-xs font-medium text-primary hover:underline",onClick:()=>{U.dismiss(Dt),_e(!0)},children:"ð Nachfassen"}),action:{label:"Rückgängig",onClick:()=>l.mutate(e.id)}})}r.mutate(e)},className:"h-5 w-5 mt-0.5"}),C!==null&&t.jsxs("span",{"aria-hidden":"true",className:"pointer-events-none absolute left-8 top-1 z-10 rounded-full bg-emerald-500 text-white text-xs font-bold px-2 py-0.5
333shadow-lg animate-fly-up",children:["+",C," Pkt"]}),t.jsxs(xe,{children:[t.jsx(be,{asChild:!0,children:t.jsx("button",{onClick:k=>{k.stopPropagation(),s.mutate(e)},className:"shrink-0 mt-0.5",type:"button",children:t.jsx(ft,{className:Q("h-4 w-4",e.important?"fill-gold text-gold":"text-muted-foreground")})})}),t.jsx(ve,{children:"Wichtig markieren · +5 Bonus-Punkte beim Erledigen"})]}),t.jsx("div",{className:"flex-1 min-w-0",children:W?t.jsxs("div",{className:"space-y-2",children:[t.jsx(oe,{ref:ie,value:j,onChange:k=>R(k.target.value),onKeyDown:k=>{k.key==="Enter"&&(k.preventDefault(),_n()),k.key==="Escape"&&(k.preventDefault(),G(!1))},className:"h-10 focus-visible:ring-primary","aria-label":"Aufgabentext"}),t.jsxs("div",{className:"flex flex-wrap gap-2",children:[t.jsxs(yt,{value:z,onValueChange:k=>_(k),children:[t.jsx(ut,{className:"w-[88px] h-10",children:t.jsx(kt,{})}),t.jsxs(ht,{children:[t.jsx(we,{value:"A",children:"A (10)"}),t.jsx(we,{value:"B",children:"B (5)"}),t.jsx(we,{value:"C",children:"C (2)"})]})]}),t.jsxs(yt,{value:K,onValueChange:ne,children:[t.jsx(ut,{className:"h-10 min-w-[140px] flex-1",children:t.jsx(kt,{})}),t.jsx(ht,{className:"max-h-[260px]",children:w.map(k=>t.jsxs(we,{value:k.id,children:[k.emoji," ",k.label]},k.id))})]}),t.jsx(ts,{value:F,onChange:B,time:D,onTimeChange:N,reminder:T,onReminderChange:I,customReminderAt:M,onCustomReminderChange:E}),t.jsx(pc,{value:Z,onChange:Y,compact:!0}),t.jsx(Er,{value:L,onChange:ee})]}),t.jsxs("div",{className:"flex gap-2 justify-end",children:[t.jsxs(S,{type:"button",variant:"ghost",size:"sm",onClick:()=>G(!1),children:[t.jsx(Me,{className:"h-4 w-4 mr-1"})," Abbrechen"]}),t.jsxs(S,{type:"button",size:"sm",className:"bg-gradient-brand",onClick:_n,children:[t.jsx(tt,{className:"h-4 w-4 mr-1"})," Speichern"]})]})]}):t.jsxs(t.Fragment,{children:[t.jsxs("button",{type:"button",onClick:()=>!e.done&&G(!0),className:Q("text-left w-full text-[15px] sm:text-sm leading-snug rounded transition flex items-start gap-1",e.done&&"line-through cursor-default",!e.done&&"hover:text-primary cursor-text"),"aria-label":"Aufgabe bearbeiten",children:[e.recurrence&&t.jsx("span",{title:$t(e.recurrence),className:"shrink-0 mt-0.5 inline-flex","aria-label":"Wiederkehrende Aufgabe",children:"ð"}),y.emoji&&t.jsx("span",{className:"text-base leading-none shrink-0 mt-0.5","aria-hidden":!0,children:y.emoji}),t.jsx("span",{className:Q("break-words whitespace-normal flex-1 min-w-0",!gt&&pt&&"line-clamp-2"),children:e.text})]}),pt&&t.jsx("button",{type:"button",onClick:k=>{k.stopPropagation(),Nt(q=>!q)},className:"mt-1 text-xs text-primary hover:underline font-medium","aria-label":gt?"Weniger anzeigen":"Mehr anzeigen",children:gt?"Weniger anzeigen":"Mehr anzeigen"}),t.jsxs("div",{className:"flex flex-wrap gap-1 mt-1 items-center",children:[t.jsxs("span",{className:Q("chip border",Xx[e.prio]),children:[e.prio," · ",Wn[e.prio],e.important?" +5":"",e.focus_doubled?" Ã2":""]}),e.recurrence&&t.jsxs("span",{className:"chip border border-primary/40 bg-primary/10 text-primary inline-flex items-center gap-1 font-semibold",title:$t(e.recurrence),children:["ð ",Ts(e.recurrence)]}),!e.recurrence&&lr&&t.jsxs("span",{className:"chip border border-primary/40 bg-primary/10 text-primary inline-flex items-center gap-1 font-semibold",title:Qe?$t(Qe):"Diese Aufgabe kommt aus einer Wiederholung",children:["ð ",Qe?Ts(Qe):"Routine"]}),Xt>=2&&t.jsxs(xe,{children:[t.jsx(be,{asChild:!0,children:t.jsxs("span",{className:"chip border border-border bg-muted text-muted-foreground",children:["schon ",Xt,"x verschoben"]})}),t.jsxs(ve,{children:["Diese Routine wurde ",Xt,"x weitergerollt, ohne erledigt zu werden."]})]}),e.note&&t.jsxs(xe,{children:[t.jsx(be,{asChild:!0,children:t.jsx("button",{type:"button",onClick:k=>{k.stopPropagation(),re(!0)},className:"chip border border-border bg-muted text-muted-foreground inline-flex items-center","aria-label":"Notiz ansehen",children:t.jsx(Cs,{className:"h-3 w-3"})})}),t.jsx(ve,{className:"max-w-[260px] whitespace-pre-line",children:String(e.note)})]}),te&&t.jsxs("span",{className:"chip border border-border bg-muted text-muted-foreground",title:"Wiedervorlage",children:["ð® ab ",an(e.defer_until)]}
333),e.is_firefighter&&t.jsxs(xe,{children:[t.jsx(be,{asChild:!0,children:t.jsx("span",{className:"chip border border-destructive/40 bg-destructive/10 text-destructive","aria-label":"Feuerwehr",children:"ð"})}),t.jsx(ve,{children:"Feuerwehr â kam ungeplant dazwischen"})]}),t.jsx(Wf,{objectiveIds:$}),Ze&&t.jsxs(xe,{children:[t.jsx(be,{asChild:!0,children:t.jsxs("span",{className:Q("inline-flex items-center gap-1 text-[10px] px-1.5 py-0.5 rounded-full",Ze==="old"?"bg-destructive/15 text-destructive":"bg-muted text-muted-foreground"),children:[Ze==="old"?t.jsx(bt,{className:"h-3 w-3"}):t.jsx(Ln,{className:"h-3 w-3"}),Re,"d"]})}),t.jsxs(ve,{children:["Diese Aufgabe liegt seit ",Re," ",Re===1?"Tag":"Tagen"," hier. Erledigen, planen oder löschen."]})]}),x&&t.jsxs(xe,{children:[t.jsx(be,{asChild:!0,children:t.jsxs("span",{className:"chip bg-muted text-muted-foreground border border-border",children:[x.emoji," ",x.label]})}),t.jsx(ve,{children:x.description})]}),b&&t.jsx(Rr,{role:b}),me&&t.jsxs("span",{className:"chip border border-destructive/40 bg-destructive/10 text-destructive flex items-center gap-1",children:[t.jsx(bt,{className:"h-3 w-3"})," Ãberfällig"]}),!me&&pe&&t.jsx("span",{className:"chip border border-accent/40 bg-accent/15 text-accent",children:"Heute"}),!me&&!pe&&e.due_date&&t.jsxs("span",{className:"chip border border-primary/40 bg-primary/10 text-primary",children:["ð
",Yo(e.due_date)]}),e.due_time&&t.jsxs("span",{className:"chip border border-border bg-muted text-muted-foreground inline-flex items-center gap-1",title:"Uhrzeit",children:[t.jsx(Ln,{className:"h-3 w-3"})," ",String(e.due_time).slice(0,5)]}),e.reminder_at&&t.jsxs(xe,{children:[t.jsx(be,{asChild:!0,children:t.jsx("span",{className:"chip border border-border bg-muted text-muted-foreground inline-flex items-center gap-1",children:t.jsx(bt,{className:"h-3 w-3"})})}),t.jsxs(ve,{children:["Erinnerung: ",new Date(e.reminder_at).toLocaleString("de-DE",{day:"2-digit",month:"2-digit",hour:"2-digit",minute:"2-digit"})]})]}),e.date_label&&t.jsxs("span",{className:"chip bg-muted text-muted-foreground border border-border",children:["ð
",e.date_label]}),(()=>{var q;const k=(q=u.data)==null?void 0:q.get(e.id);return k?t.jsxs(t.Fragment,{children:[k.subtaskCount>0?t.jsxs("button",{type:"button",onClick:()=>re(!0),className:"chip bg-muted text-muted-foreground border border-border inline-flex items-center gap-1 hover:bg-accent/20",title:`${k.subtaskDone}/${k.subtaskCount} Teilschritte erledigt`,children:[t.jsx(Kt,{className:"h-3 w-3"}),k.subtaskDone,"/",k.subtaskCount]}):t.jsxs("button",{type:"button",onClick:()=>re(!0),className:"chip border border-dashed border-border text-muted-foreground hover:text-primary hover:border-primary inline-flex items-center gap-1",title:"In Schritte aufteilen (Checkliste)",children:[t.jsx(Kt,{className:"h-3 w-3"}),"+ Schritte"]}),k.commentCount>0&&t.jsxs("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs font-semibold bg-accent/15 text-accent border border-accent/40 ring-1 ring-accent/20",title:`${k.commentCount} Kommentar${k.commentCount===1?"":"e"} â Klick zum Lesen`,children:[t.jsx(En,{className:"h-3.5 w-3.5"}),k.commentCount]}),k.attachmentCount>0&&t.jsxs("span",{className:"chip bg-muted text-muted-foreground border border-border inline-flex items-center gap-1",title:`${k.attachmentCount} Anhang/Anhänge`,children:[t.jsx(_s,{className:"h-3 w-3"}),k.attachmentCount]})]}):null})()]})]})}),!W&&t.jsxs("div",{className:"flex items-center gap-1.5 w-full justify-end shrink-0 order-last -mt-1 pt-0.5 border-t border-border/40",children:[t.jsxs(xe,{children:[t.jsx(be,{asChild:!0,children:t.jsx(S,{size:"icon",variant:"ghost",className:"h-9 w-9 text-muted-foreground hover:text-primary shrink-0",onClick:()=>re(!0),"aria-label":"Unteraufgaben / Checkliste",children:t.jsx(Kt,{className:"h-4 w-4"})})}),t.jsx(ve,{children:"Unteraufgaben / Checkliste"})]}),t.jsxs(xe,{children:[t.jsx(be,{asChild:!0,children:t.jsx(S,{size:"icon",variant:"ghost",className:"h-9 w-9 text-muted-foreground hover:text-primary shrink-0",onClick:()=>re(!0),"aria-label":"Details, Checkliste & Kommentare",children:t.jsx(En,{className:"h-4 w-4"})})}),t.jsx(ve,{children:"Kommentare & Details"})]}),t.jsx(fc,{todo:e}),!e.done&&t.jsxs(ha,{children:[t.jsxs(xe,{children:[t.jsx(be,{asChild:!0,children:t.jsx(ma,{asChild:!0,children:t.jsx(S,{size:"icon",variant:"ghost",className:"h-9 w-9 text-muted-foreground hover:text-primary shrink-0","aria-label":"Aufschieben (morgen / nächste Woche)",children:t.jsx(Cd,{className:"h-4 w-4"})})})}),t.jsx(ve,{children:"Aufschieben (morgen / nächste Woche)"})]}),t.jsxs(Gr,{align:"end",children:[[{key:"hour",label:"+1 Stunde (heute)"}
333,{key:"tomorrow",label:"Auf morgen schieben"},{key:"week",label:"Nächste Woche"}].map(k=>t.jsx(Ve,{onClick:()=>{const q=new Date;k.key==="hour"?q.setHours(q.getHours()+1):k.key==="tomorrow"?q.setDate(q.getDate()+1):q.setDate(q.getDate()+7);const ue=q.toISOString().slice(0,10),ke=e.due_date;i.mutate({id:e.id,due_date:ue}),g("snooze_first"),U(`Verschoben auf ${q.toLocaleDateString("de-DE")}`,{duration:5e3,action:{label:"Rückgängig",onClick:()=>i.mutate({id:e.id,due_date:ke})}})},children:k.label},k.key)),t.jsx(Vn,{}),t.jsx(Mr,{className:"text-[11px] text-muted-foreground",children:"ð® Wiedervorlage â erst dann wieder sichtbar"}),Zx.map(k=>t.jsx(Ve,{onClick:()=>Dn(Ct(k.days)),children:k.label},k.key)),t.jsx(Ve,{onClick:()=>{Fe(Ct(1)),Se(!0)},children:"Eigenes Datumâ¦"}),e.defer_until&&t.jsx(Ve,{onClick:()=>i.mutate({id:e.id,defer_until:null,series_paused_until:null}),children:"Wiedervorlage aufheben"}),Qe&&t.jsxs(t.Fragment,{children:[t.jsx(Vn,{}),t.jsx(Mr,{className:"text-[11px] text-muted-foreground",children:"ð Wiederholung"}),t.jsx(Ve,{onClick:()=>{const k=Jx(Qe,e.due_date??Ct(0));if(!k){U("Kein nächster Termin in dieser Serie gefunden.");return}i.mutate({id:e.id,due_date:k,defer_until:k,skipped_count:Xt+1}),U(`Runde übersprungen â nächster Termin: ${an(k)}`)},children:"Diese Runde überspringen"}),[{label:"Serie pausieren: 1 Woche",days:7},{label:"Serie pausieren: 2 Wochen",days:14},{label:"Serie pausieren: 1 Monat",days:30}].map(k=>t.jsx(Ve,{onClick:()=>{const q=Ct(k.days);St&&St.id!==e.id&&i.mutate({id:St.id,series_paused_until:q}),Dn(q,{series_paused_until:q})},children:k.label},k.days)),t.jsx(Ve,{className:"text-destructive",onClick:()=>{if(!confirm("Serie wirklich beenden? Die Aufgabe bleibt als einmalige Aufgabe bestehen, es entstehen keine neuen Wiederholungen mehr."))return;const k=(St==null?void 0:St.id)??e.id;i.mutate({id:k,recurrence:null}),U("Serie beendet â die Aufgabe bleibt als einmalige Aufgabe erhalten.")},children:"Serie beendenâ¦"})]})]})]}),t.jsxs(xe,{children:[t.jsx(be,{asChild:!0,children:t.jsx(S,{size:"icon",variant:"ghost",className:"h-9 w-9 text-muted-foreground hover:text-primary shrink-0",onClick:()=>G(!0),"aria-label":"Bearbeiten",children:t.jsx(sa,{className:"h-4 w-4"})})}),t.jsx(ve,{children:"Bearbeiten"})]}),e.done&&t.jsxs(xe,{children:[t.jsx(be,{asChild:!0,children:t.jsx(S,{size:"icon",variant:"ghost",className:"h-9 w-9 text-muted-foreground hover:text-primary shrink-0",onClick:k=>{k.stopPropagation(),_e(!0)},"aria-label":"Nachfassen anlegen",children:t.jsx(Qd,{className:"h-4 w-4"})})}),t.jsx(ve,{children:"ð Nachfassen anlegen"})]}),n&&e.done&&t.jsxs(xe,{children:[t.jsx(be,{asChild:!0,children:t.jsx(S,{size:"icon",variant:"ghost",className:"h-9 w-9 text-muted-foreground hover:text-primary shrink-0",onClick:k=>{k.stopPropagation(),l.mutate(e.id)},"aria-label":"Wieder zu To-do",children:t.jsx(tu,{className:"h-4 w-4"})})}),t.jsx(ve,{children:"Wieder zu To-do (zieht die vergebenen Punkte ab)"})]}),t.jsx(S,{size:"icon",variant:"ghost",className:"h-9 w-9 text-muted-foreground hover:text-destructive shrink-0",onClick:()=>{confirm(`Löschen: â${e.text}"?`)&&a.mutate(e.id)},"aria-label":"Löschen",children:t.jsx(at,{className:"h-4 w-4"})})]}),t.jsx(gc,{todo:e,open:J,onOpenChange:re}),t.jsx(Qx,{todo:e,open:ze,onOpenChange:_e}),t.jsx(Ne,{open:le,onOpenChange:Se,children:t.jsxs(De,{className:"max-w-[calc(100vw-2rem)] sm:max-w-sm",children:[t.jsx(Ce,{children:t.jsx(Ae,{children:"Wiedervorlage: eigenes Datum"})}),t.jsx("p",{className:"text-sm text-muted-foreground",children:"Die Aufgabe verschwindet bis zu diesem Tag aus der Liste und taucht dann automatisch wieder auf."}),t.jsx(oe,{type:"date",value:Ge,onChange:k=>Fe(k.target.value)}),t.jsxs(Zt,{children:[t.jsx(S,{variant:"outline",onClick:()=>Se(!1),children:"Abbrechen"}),t.jsx(S,{disabled:!Ge,onClick:()=>{Dn(Ge),Se(!1)},children:"Zurückstellen"})]})]})})]})}function eb({value:e,onChange:n}){const{roles:r}=de(),s=r.data??[];return s.length===0?null:t.jsxs("div",{className:"flex gap-2 overflow-x-auto pb-2 -mx-1 px-1 scrollbar-thin",children:[t.jsx("button",{onClick:()=>n(null),className:Q("chip border whitespace-nowrap",e?"border-border text-muted-foreground":"border-primary text-primary bg-primary/10"),children:"Alle"}),s.map(a=>t.jsx("button",{onClick:()=>n(a.id===e?null:a.id),className:Q("shrink-0 transition",a.id===e?"ring-2 ring-offset-1 ring-offset-background rounded-full":"opacity-80"),style:{"--tw-ring-color":a.color},children:t.jsx(Rr,{role:a})},a.id))]})}const tb=10;function nb(e,n,r=tb){const s=`fokus-page-${n}`,[a,i]=c.useState(()=>{if(typeof window>"u")return 1;const u=Number(localStorage.getItem(s)??"1");return Number.isFinite(u)&&u>0?u:1}),l=Math.max(1,Math.ceil(e.length/r));c.useEffect(()=>{a>l&&i(l)},[a,l]);const o=u=>{const h=Math.min(Math.max(1,u),l);i(h);try{localStorage.setItem(s,String(h))}catch{}},d=c.useMemo(()=>{const u=(a-1)*r;return e.slice(u,u+r)},[e,a,r]);return{page:a,setPage:o,totalPages:l,pageItems:d,pageSize:r,total:e.length}}function rb({page:e,totalPages:n,onChange:r}){return n<=1?null:t.jsxs("div",{className:"flex items-center justify-center gap-2 pt-2 text-sm",children:[t.jsx(S,{size:"sm",variant:"outline",className:"min-h-[40px] min-w-[40px]",onClick:()=>r(e-1),disabled:e<=1,"aria-label":"Vorherige Seite",children:t.jsx(Vi,{className:"h-4 w-4"})}),t.jsxs("span",{className:"text-xs text-muted-foreground px-2 min-w-[7rem] text-center",children:["Seite ",t.jsx("span",{className:"font-semibold text-foreground",children:e})," von ",n]}),t.jsx(S,{size:"sm",variant:"outline",className:"min-h-[40px] min-w-[40px]",onClick:()=>r(e+1),disabled:e>=n,"aria-label":"Nächste Seite",children:t.jsx($r,{className:"h-4 w-4"})})]})}
333function sb(e){const n=e==null?void 0:e.daily_focus;return!n||n.date!==Ue()?null:n}const ji=new Set(["VERTRIEB","GELD","FINANZEN","UMSATZ","SALES","MONEY"]);function ab(){var C,A;const{user:e}=ge(),n=mt(),{profile:r,allTodos:s,addTodo:a}=de(),{profile:i}=Ee(),{activeObjectives:l}=He(),[o,d]=c.useState(!1),[u,h]=c.useState([]),[g,p]=c.useState(""),[v,f]=c.useState(""),[m,w]=c.useState(!1),x=((C=i.data)==null?void 0:C.focus_v2_enabled)===!0&&((A=i.data)==null?void 0:A.focus_onboarding_state)==="done"&&l.length>0;c.useEffect(()=>{const j=()=>{x&&(d(!0),h([]),p(""),f(""))};return window.addEventListener("open-daily-focus-picker",j),()=>window.removeEventListener("open-daily-focus-picker",j)},[x]);const b=c.useMemo(()=>new Set(l.map(j=>j.id)),[l]),y=c.useMemo(()=>{const j=(s??[]).filter(_=>!_.done),R={A:0,B:1,C:2};function z(_){let K=0;K+=(3-R[_.prio])*10,_.important&&(K+=8),_.objective_id&&b.has(_.objective_id)&&(K+=25),et(_.due_date)?K+=30:At(_.due_date)&&(K+=18),_.tag&&ji.has(_.tag.toUpperCase())&&(K+=12);const F=Un(_.created_at);return F>=30?K+=6:F>=14&&(K+=3),K}return j.map(_=>({t:_,w:z(_)})).sort((_,K)=>K.w-_.w).map(_=>_.t)},[s,b]),P=c.useMemo(()=>{const j=g.trim().toLowerCase();return j?y.filter(R=>R.text.toLowerCase().includes(j)||(R.tag??"").toLowerCase().includes(j)):y},[y,g]);if(!x)return null;function V(j){h(R=>R.includes(j)?R.filter(z=>z!==j):R.length>=3?[...R.slice(1),j]:[...R,j])}async function $(){const j=v.trim();if(!(!j||m)){w(!0);try{const R=await a.mutateAsync({text:j,prio:"B",tag:null,important:!1,due_date:Ue(),source:"web"});h(z=>{const _=[...z,R.id];return _.length>3?_.slice(_.length-3):_}),f(""),U.success("Aufgabe angelegt und für heute gesetzt")}catch{U.error("Konnte Aufgabe nicht anlegen")}finally{w(!1)}}}async function W(j=!1){var z;const R=j?{date:Ue(),ids:[],skipped:!0}:{date:Ue(),ids:u};await H.from("profiles").update({daily_focus:R}).eq("user_id",e.id),n.invalidateQueries({queryKey:["profile",e==null?void 0:e.id]}),(z=r.refetch)==null||z.call(r),d(!1),!j&&u.length>0&&U.success(`${u.length} Tages-Fokus gesetzt â los geht's!`)}function G(j){return et(j.due_date)?{icon:t.jsx(qa,{className:"h-3 w-3"}),text:"überfällig"}:At(j.due_date)?{icon:t.jsx(qa,{className:"h-3 w-3"}),text:"heute fällig"}:j.tag&&ji.has(j.tag.toUpperCase())?{icon:t.jsx(Ad,{className:"h-3 w-3"}),text:j.tag}:Un(j.created_at)>=30?{icon:t.jsx(Ln,{className:"h-3 w-3"}),text:"lange offen"}:null}return t.jsx(Ne,{open:o,onOpenChange:j=>{j||W(!0)},children:t.jsxs(De,{className:"max-w-md max-h-[90vh] flex flex-col p-0",children:[t.jsx(jt,{open:o}),t.jsxs(Ce,{className:"p-5 pb-3 border-b",children:[t.jsxs(Ae,{className:"flex items-center gap-2",children:[t.jsx(ft,{className:"h-5 w-5 text-gold"})," Heute zählen diese 3 Dinge"]}),t.jsx(st,{children:"Welche 3 Aufgaben machen Deinen Tag heute wirklich erfolgreich? Max. 3 wählen â Du kannst auch direkt eine neue Aufgabe anlegen."})]}),t.jsxs("div",{className:"px-5 pt-3 space-y-2",children:[t.jsxs("div",{className:"flex gap-1.5",children:[t.jsx(oe,{value:v,onChange:j=>f(j.target.value),onKeyDown:j=>{j.key==="Enter"&&(j.preventDefault(),$())},placeholder:"+ Neue Aufgabe für heuteâ¦",className:"h-9 text-sm",disabled:m}),t.jsx(S,{size:"sm",onClick:$,disabled:m||!v.trim(),className:"h-9 px-3",children:t.jsx(Tt,{className:"h-4 w-4"})})]}),t.jsxs("div",{className:"relative",children:[t.jsx(Hn,{className:"absolute left-2 top-1/2 -translate-y-1/2 h-3.5 w-3.5 text-muted-foreground"}),t.jsx(oe,{value:g,onChange:j=>p(j.target.value),placeholder:"In offenen Aufgaben suchenâ¦",className:"h-8 pl-7 text-xs"})]})]}),t.jsx("div",{className:"flex-1 overflow-y-auto px-5 py-2 min-h-0",children:t.jsxs("div",{className:"space-y-1.5",children:[P.map(j=>{const R=u.includes(j.id),z=j.objective_id&&b.has(j.objective_id),_=G(j);return t.jsxs("button",{type:"button",onClick:()=>V(j.id),className:`w-full text-left p-2 rounded-md border text-sm flex items-start gap-2 ${R?"border-primary bg-primary/5":"border-border bg-card hover:bg-muted/40"}`,children:[t.jsx(cn,{checked:R,className:"mt-0.5 pointer-events-none"}),t.jsxs("span",{className:"flex-1 min-w-0",children:[t.jsx("span",{className:"block",children:j.text}),(z||_)&&t.jsxs("span",{className:"mt-0.5 flex flex-wrap gap-1",children:[z&&t.jsxs("span",{className:"inline-flex items-center gap-0.5 text-[10px] px-1.5 py-0.5 rounded bg-primary/10 text-primary",children:[t.jsx(Xn,{className:"h-2.5 w-2.5"})," Fokus"]}),_&&t.jsxs("span",{className:"inline-flex items-center gap-0.5 text-[10px] px-1.5 py-0.5 rounded bg-amber-500/10 text-amber-700 dark:text-amber-400",children:[_.icon," ",_.text]}),t.jsx("span",{className:"inline-flex items-center text-[10px] px-1.5 py-0.5 rounded bg-muted text-muted-foreground",children:j.prio})]})]})]},j.id)}),P.length===0&&t.jsx("p",{className:"text-sm text-muted-foreground text-center py-4",children:g?"Nichts gefunden.":"Keine offenen Aufgaben â leg oben eine neue an!"})]})}),t.jsxs("div",{className:"flex items-center justify-between gap-2 p-4 border-t bg-card",children:[t.jsx(S,{variant:"ghost",size:"sm",onClick:()=>W(!0),children:"Ãberspringen"}),t.jsxs(S,{size:"sm",className:"bg-gradient-brand",disabled:u.length===0,onClick:()=>W(!1),children:[t.jsx(tt,{className:"h-4 w-4 mr-1"})," ",u.length,"/3 setzen"]})]})]})})}function ib(){var d,u;const{user:e}=ge(),n=mt(),{profile:r,allTodos:s}=de(),{profile:a}=Ee(),i=((d=a.data)==null?void 0:d.focus_v2_enabled)===!0,l=sb(r.data);if(c.useEffect(()=>{if(!i||!l||l.bonus_awarded||l.ids.length===0)return;const h=(s??[]).filter(g=>l.ids.includes(g.id));h.length!==0&&h.length===l.ids.length&&h.every(g=>g.done)&&(async()=>{var p;
333await H.from("todos").insert({user_id:e.id,text:"â Tagesfokus-Bonus (alle 3 erledigt)",prio:"C",tag:"SYSTEM",important:!0,done:!0,done_at:new Date().toISOString(),source:"system"});const g={...l,bonus_awarded:!0};await H.from("profiles").update({daily_focus:g}).eq("user_id",e.id),n.invalidateQueries({queryKey:["todos",e==null?void 0:e.id]}),(p=r.refetch)==null||p.call(r),U.success("â +10 Tagesfokus-Bonus â alle 3 erledigt!")})()},[i,(u=l==null?void 0:l.ids)==null?void 0:u.join(","),l==null?void 0:l.bonus_awarded,s==null?void 0:s.map(h=>`${h.id}:${h.done}`).join(",")]),!i||!l||l.ids.length===0)return null;const o=(s??[]).filter(h=>l.ids.includes(h.id));return o.length===0?null:t.jsxs("section",{className:"space-y-2",children:[t.jsxs("h2",{className:"font-display text-lg flex items-center gap-2",children:[t.jsx(ft,{className:"h-5 w-5 text-gold fill-gold"})," Heute zählen diese ",o.length===1?"Sache":`${o.length} Dinge`]}),t.jsx(qe,{className:"p-2 bg-gradient-to-br from-gold/5 to-primary/5 border-gold/40 ring-1 ring-gold/30",children:t.jsx("div",{className:"space-y-2",children:o.map(h=>t.jsx(Ls,{todo:h},h.id))})})]})}const In={wizard:!1,tagesstart:!1,beta:!1},Hs=new Set;function ob(){Hs.forEach(e=>e())}function lb(e){return Hs.add(e),()=>{Hs.delete(e)}}function Or(e,n){In[e]!==n&&(In[e]=n,ob())}function Gt(){return In.wizard||In.tagesstart||In.beta}function cb(){return c.useSyncExternalStore(lb,Gt,Gt)}let jc=null;function db(){return jc}function Ni(e){jc=e}let Nc=!1;function ub(){return Nc}function hb(){Nc=!0}function Sc(){const e=new Date;return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`}const Dc="fokus-onboarding-done-day";function mb(){if(!(typeof window>"u"))try{window.localStorage.setItem(Dc,Sc())}catch{}}function ns(){if(typeof window>"u")return!1;try{return window.localStorage.getItem(Dc)===Sc()}catch{return!1}}function fb(){var m,w,x;const{user:e}=ge(),n=mt(),{profile:r,allTodos:s,updateTodo:a}=de(),{profile:i}=Ee(),{activeObjectives:l}=He(),o=((m=i.data)==null?void 0:m.focus_onboarding_state)==="done",d=((w=i.data)==null?void 0:w.focus_v2_enabled)===!0&&o&&l.length>0&&!ns(),u=Ue(),h=((x=r.data)==null?void 0:x.nudge_dismissed_at)===u,{hasFocusForToday:g,openCandidates:p}=c.useMemo(()=>{const b=new Set(l.map($=>$.id)),P=(s??[]).filter($=>!$.done).filter($=>$.objective_id&&b.has($.objective_id));return{hasFocusForToday:P.filter($=>et($.due_date)||At($.due_date)).length>0,openCandidates:P.filter($=>!et($.due_date)&&!At($.due_date)).sort(($,W)=>({A:0,B:1,C:2})[$.prio]-{A:0,B:1,C:2}[W.prio]).slice(0,3)}},[s,l]);if(!d||h||g||p.length===0)return null;async function v(){var b;await H.from("profiles").update({nudge_dismissed_at:u}).eq("user_id",e.id),n.invalidateQueries({queryKey:["profile",e==null?void 0:e.id]}),(b=r.refetch)==null||b.call(r)}function f(b){a.mutate({id:b,due_date:u})}return t.jsxs(qe,{className:"p-3 bg-primary/5 border-primary/30 relative",children:[t.jsx("button",{onClick:v,"aria-label":"SchlieÃen",className:"absolute top-2 right-2 text-muted-foreground hover:text-foreground",children:t.jsx(Me,{className:"h-4 w-4"})}),t.jsxs("div",{className:"flex items-start gap-2 mb-2",children:[t.jsx(Xn,{className:"h-4 w-4 text-primary mt-0.5"}),t.jsxs("p",{className:"text-sm",children:[t.jsx("strong",{children:"Heute zahlt noch nichts auf Deine Fokus-Ziele ein"})," â diese Aufgaben würden helfen:"]})]}),t.jsx("div",{className:"space-y-1",children:p.map(b=>t.jsxs("button",{type:"button",onClick:()=>f(b.id),className:"w-full text-left p-1.5 rounded text-xs hover:bg-primary/10 border border-border bg-card",children:[t.jsx("span",{className:"text-primary mr-1",children:"+ Heute"})," ",b.text]},b.id))})]})}const gb=3*24*3600*1e3;function pb(){const{user:e}=ge(),{profile:n}=de(),r=n.data,[s,a]=c.useState(!1),[i,l]=c.useState(!1);if(!vn().hints||!r||r.leaderboard_optin||s)return null;const o=r.ranking_reminder_dismissed_at?new Date(r.ranking_reminder_dismissed_at).getTime():0;if(o&&Date.now()-o<gb)return null;async function d(){if(!e||i)return;l(!0);
333const h=[r.vorname,r.nachname].filter(Boolean).join(" ").trim()||r.email||"Hero",{error:g}=await H.from("leaderboard_optin").upsert({user_id:e.id,display_name:h});if(g){U.error(g.message),l(!1);return}await H.from("profiles").update({leaderboard_optin:!0}).eq("user_id",e.id),U.success("Du bist im Ranking dabei! ð"),a(!0),n.refetch(),l(!1)}async function u(){e&&(a(!0),await H.from("profiles").update({ranking_reminder_dismissed_at:new Date().toISOString()}).eq("user_id",e.id),n.refetch())}return t.jsxs(qe,{className:"p-3 bg-gradient-to-r from-gold/10 to-primary/10 border-gold/30 flex items-start gap-3",children:[t.jsx(er,{className:"h-5 w-5 text-gold shrink-0 mt-0.5"}),t.jsxs("div",{className:"flex-1 min-w-0",children:[t.jsx("div",{className:"font-display text-sm",children:"Miss Dich mit anderen ð"}),t.jsx("div",{className:"text-xs text-muted-foreground mt-0.5",children:"Sieh, wie produktiv Du im Vergleich bist, und bleib dran. Mach beim Ranking mit!"}),t.jsxs("div",{className:"flex gap-2 mt-2",children:[t.jsx(S,{size:"sm",className:"h-7 px-3 bg-gradient-brand text-primary-foreground",onClick:d,disabled:i,children:"Jetzt mitmachen"}),t.jsx(S,{size:"sm",variant:"ghost",className:"h-7 px-2 text-xs",onClick:u,children:"Später"})]})]}),t.jsx("button",{onClick:u,"aria-label":"SchlieÃen",className:"opacity-60 hover:opacity-100",children:t.jsx(Me,{className:"h-3 w-3"})})]})}function xb(){var e;if(typeof window>"u")return!1;try{if((e=window.matchMedia)!=null&&e.call(window,"(display-mode: standalone)").matches)return!0}catch{}return window.navigator.standalone===!0}function bb(){if(typeof navigator>"u")return!1;const e=navigator.userAgent||"";return/Android|iPhone|iPad|iPod|Mobile|Opera Mini|IEMobile|BlackBerry/i.test(e)}function vb(){if(typeof navigator>"u")return"other";const e=navigator.userAgent||"";return/iPhone|iPad|iPod/i.test(e)?"ios":/Android/i.test(e)?"android":"other"}let On=null;const Fn=new Set;typeof window<"u"&&(window.addEventListener("beforeinstallprompt",e=>{e.preventDefault(),On=e,Fn.forEach(n=>n(On))}),window.addEventListener("appinstalled",()=>{On=null,Fn.forEach(e=>e(null))}));function yb(){const[e,n]=c.useState(On);return c.useEffect(()=>(Fn.add(n),()=>{Fn.delete(n)}),[]),{canInstall:!!e,async install(){if(!e)return"unavailable";try{await e.prompt();const r=await e.userChoice;return r.outcome==="accepted"&&(On=null,Fn.forEach(s=>s(null))),r.outcome}catch{return"error"}}}}function kb({compact:e=!1}){const n=vb(),{canInstall:r,install:s}=yb();return t.jsxs("div",{className:e?"space-y-2 text-xs":"space-y-3 text-sm",children:[t.jsxs("div",{children:[t.jsxs("div",{className:"font-medium flex items-center gap-1.5",children:[t.jsx(Ms,{className:"h-4 w-4 text-primary"})," Android (Chrome)"]}),r&&n!=="ios"?t.jsxs("div",{className:"mt-1.5",children:[t.jsx(S,{size:"sm",className:"bg-gradient-brand text-primary-foreground",onClick:()=>s(),children:"Jetzt installieren"}),t.jsx("div",{className:"text-[11px] text-muted-foreground mt-1",children:'Tippt auf âInstallieren", um Fokus Cockpit als App hinzuzufügen.'})]}):t.jsxs("ol",{className:"list-decimal list-inside text-muted-foreground mt-1 space-y-0.5",children:[t.jsxs("li",{children:["Oben rechts auf das Menü ",t.jsx(qi,{className:"inline h-3.5 w-3.5"})," tippen."]}),t.jsx("li",{children:'âApp installieren" bzw. âZum Startbildschirm hinzufügen" wählen.'}),t.jsx("li",{children:"Bestätigen â fertig."})]})]}),t.jsxs("div",{children:[t.jsxs("div",{className:"font-medium flex items-center gap-1.5",children:[t.jsx(Ms,{className:"h-4 w-4 text-primary"})," iPhone / iPad (Safari)"]}),t.jsxs("ol",{className:"list-decimal list-inside text-muted-foreground mt-1 space-y-0.5",children:[t.jsxs("li",{children:["Unten in Safari auf das Teilen-Symbol ",t.jsx(ru,{className:"inline h-3.5 w-3.5"})," tippen (Quadrat mit Pfeil nach oben)."]}),t.jsxs("li",{children:['âZum Home-Bildschirm" ',t.jsx(Tt,{className:"inline h-3.5 w-3.5"})," wählen (ggf. nach unten scrollen)."]}),t.jsx("li",{children:'Oben rechts auf âHinzufügen" tippen.'})]})]})]})}const wb=7*24*3600*1e3;function jb(){const{user:e}=ge(),{profile:n}
333=de(),r=n.data,[s,a]=c.useState(!1),[i,l]=c.useState(!1),[o,d]=c.useState(!0),[u,h]=c.useState(!1);if(c.useEffect(()=>{d(xb()),h(bb())},[]),!vn().hints||!r||o||!u||s)return null;const g=r.pwa_prompt_dismissed_at?new Date(r.pwa_prompt_dismissed_at).getTime():0;if(g&&Date.now()-g<wb)return null;async function p(){a(!0),e&&(await H.from("profiles").update({pwa_prompt_dismissed_at:new Date().toISOString()}).eq("user_id",e.id),n.refetch())}return t.jsx(qe,{className:"p-3 bg-gradient-to-r from-primary/10 to-accent/10 border-primary/30",children:t.jsxs("div",{className:"flex items-start gap-3",children:[t.jsx(Ms,{className:"h-5 w-5 text-primary shrink-0 mt-0.5"}),t.jsxs("div",{className:"flex-1 min-w-0",children:[t.jsx("div",{className:"font-display text-sm",children:"ð² Hol Dir Fokus Cockpit aufs Handy"}),t.jsx("div",{className:"text-xs text-muted-foreground mt-0.5",children:"Einmal installieren â dann hast Du's immer griffbereit auf dem Startbildschirm."}),t.jsxs("div",{className:"flex gap-2 mt-2",children:[t.jsx(S,{size:"sm",className:"h-7 px-3 bg-gradient-brand text-primary-foreground",onClick:()=>l(v=>!v),children:i?"Anleitung schlieÃen":"So geht's"}),t.jsx(S,{size:"sm",variant:"ghost",className:"h-7 px-2 text-xs",onClick:p,children:"Später"})]}),i&&t.jsx("div",{className:"mt-3 pt-3 border-t border-border/60",children:t.jsx(kb,{compact:!0})})]}),t.jsx("button",{onClick:p,"aria-label":"SchlieÃen",className:"opacity-60 hover:opacity-100",children:t.jsx(Me,{className:"h-3 w-3"})})]})})}const Si="Ich arbeite mit dem Fokus Cockpit â ein kostenloses, gamifiziertes To-do-Tool von Liebe Zeitarbeit. Punkte, Streaks, Belohnungen. Probier's aus:";function Nb(e){const n="https://fokus.liebezeitarbeit.com";return e?`${n}?ref=${encodeURIComponent(e)}`:n}async function _c(e){const n=Nb(e),r=`${Si} ${n}`;try{if(typeof navigator<"u"&&navigator.share){await navigator.share({title:"Fokus Cockpit",text:Si,url:n});return}}catch{}try{await navigator.clipboard.writeText(r),U.success("Einladung kopiert â jetzt einfach einfügen und teilen.")}catch{U.error("Konnte nicht kopieren. Bitte Link manuell teilen: "+n)}}function yy(){const{user:e}=ge();return t.jsxs(qe,{className:"p-4 space-y-3",children:[t.jsxs("h3",{className:"font-display text-base flex items-center gap-2",children:[t.jsx(na,{className:"h-4 w-4 text-primary"})," Freunde einladen"]}),t.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Kennst Du jemanden, der mehr Fokus und Struktur braucht? Teile das Fokus Cockpit â kostenlos, mit Punkten, Streaks und Belohnungen."}),t.jsxs(S,{onClick:()=>_c(e==null?void 0:e.id),className:"bg-gradient-brand w-full sm:w-auto",children:[t.jsx(Zi,{className:"h-4 w-4 mr-2"})," Einladung teilen"]})]})}function Sb(){const{user:e}=ge();return t.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-1.5 text-[11px] py-1.5",children:[t.jsx("span",{className:"text-muted-foreground",children:"Community:"}),t.jsx("a",{href:"https://liebezeitarbeit.com/liebe-zeitarbeit-club/",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 rounded-full border border-primary/30 bg-primary/5 px-2.5 py-0.5 text-primary hover:bg-primary/10 transition",children:"ð¤ Liebe Zeitarbeit Club"}),t.jsx("a",{href:"https://vip-club-liebezeitarbeit.lovable.app/",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 rounded-full border border-amber-500/40 bg-amber-500/5 px-2.5 py-0.5 text-amber-700 dark:text-amber-400 hover:bg-amber-500/10 transition",children:"ð VIP Club"}),t.jsxs("button",{type:"button",onClick:()=>_c(e==null?void 0:e.id),className:"inline-flex items-center gap-1 rounded-full border border-accent/40 bg-accent/5 px-2.5 py-0.5 text-accent hover:bg-accent/10 transition",children:[t.jsx(Zi,{className:"h-3 w-3"})," Freunde einladen"]})]})}function Db({todos:e}){const{updateTodo:n}=de(),[r,s]=c.useState(!1),a=c.useMemo(()=>e.filter(l=>!l.done&&Ir(l)).sort((l,o)=>String(l.defer_until).localeCompare(String(o.defer_until))),[e]);if(a.length===0)return null;const i=l=>{const o=l.defer_until;n.mutate({id:l.id,defer_until:null,series_paused_until:null}),U("Zurückgeholt â die Aufgabe ist wieder in der Liste.",{duration:5e3,action:{label:"Rückgängig",onClick:()=>n.mutate({id:l.id,defer_until:o})}})};return t.jsxs(qe,{className:"p-3",children:[t.jsxs("button",{type:"button",onClick:()=>s(l=>!l),className:"flex w-full items-center gap-2 text-left","aria-expanded":r,children:[r?t.jsx(Kr,{className:"h-4 w-4 shrink-0"}):t.jsx($r,{className:"h-4 w-4 shrink-0"}),t.jsxs("span",{className:"font-display text-base",children:["ð® Wiedervorlage (",a.length,")"]}),t.jsx("span",{className:"ml-auto text-[11px] text-muted-foreground hidden sm:inline",children:"taucht automatisch wieder auf"})]}
333),r&&t.jsx("div",{className:"mt-3 space-y-2",children:a.map(l=>t.jsxs("div",{className:"flex flex-wrap items-center gap-2 rounded-lg border border-border/60 bg-muted/30 p-2.5",children:[t.jsxs("div",{className:"min-w-0 flex-1",children:[t.jsx("div",{className:"text-sm [overflow-wrap:anywhere]",children:l.text}),t.jsxs("div",{className:"text-[11px] text-muted-foreground",children:["taucht wieder auf am ",an(l.defer_until)]})]}),t.jsxs(S,{size:"sm",variant:"outline",className:"text-xs shrink-0",onClick:()=>i(l),children:[t.jsx(iu,{className:"mr-1 h-3 w-3"}),"Jetzt zurückholen"]})]},l.id))})]})}function _b(){var F,B;const{allTodos:e,streak:n,tags:r}=de(),{profile:s}=Ee(),{activeObjectives:a}=He(),{todoObjectives:i}=kn(),l=i.data??new Map,o=((F=s.data)==null?void 0:F.focus_v2_enabled)===!0&&a.length>0,d=new Set(a.map(D=>D.id)),u=new Map;(r.data??[]).forEach(D=>{D.objective_id&&u.set(D.name,D.objective_id)});const h=((B=n.data)==null?void 0:B.count)??0,g=h<7?7:h<30?30:h<100?100:h+(7-(h%7||7)),p=g===100?500:g===30?200:50,v=g-h,[f,m]=c.useState(null),[w,x]=c.useState(!1),[b,y]=c.useState(new Set),P=D=>y(N=>{const T=new Set(N);return T.has(D)?T.delete(D):T.add(D),T});function V(D){if(b.size===0)return!0;const N=["overdue","today","week"].filter(E=>b.has(E)),T=["prioA","important"].filter(E=>b.has(E)),I=N.length===0||N.some(E=>E==="overdue"?et(D.due_date):E==="today"?At(D.due_date):Zo(D.due_date)),M=T.every(E=>E==="prioA"?D.prio==="A":D.important);return I&&M}const $=c.useMemo(()=>e.filter(D=>!D.done&&!Ir(D)&&Un(D.created_at)>=30).length,[e]),W=c.useMemo(()=>e.filter(D=>!D.done&&!Ir(D)&&(!f||D.role_id===f)&&(!w||Un(D.created_at)>=30)&&V(D)),[e,f,w,b]),G={A:0,B:1,C:2};function C(D){if(!o)return!1;if((l.get(D.id)??[]).some(I=>d.has(I)))return!0;const T=D.objective_id??(D.tag?u.get(D.tag):null)??null;return!!(T&&d.has(T))}const A=c.useMemo(()=>[...W].sort((D,N)=>{const T=C(D)?0:1,I=C(N)?0:1;if(T!==I)return T-I;const M=et(D.due_date)?0:1,E=et(N.due_date)?0:1;if(M!==E)return M-E;const Z=At(D.due_date)?0:1,Y=At(N.due_date)?0:1;return Z!==Y?Z-Y:D.important!==N.important?Number(N.important)-Number(D.important):G[D.prio]-G[N.prio]}),[W,o,l,u,a]),j=A.slice(0,3),R=A.slice(3),{page:z,setPage:_,totalPages:K,pageItems:ne}=nb(R,"heute");return t.jsxs("div",{className:"space-y-5",children:[t.jsx(jb,{}),t.jsx(pb,{}),o&&t.jsxs(qe,{className:"p-3",children:[t.jsx("div",{className:"text-xs uppercase tracking-wide text-muted-foreground mb-2",children:"Woran willst Du heute arbeiten?"}),t.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[t.jsxs("button",{type:"button",onClick:()=>{const D=document.getElementById("heute-top3");D==null||D.scrollIntoView({behavior:"smooth",block:"start"})},className:"flex items-center gap-2 p-2.5 rounded-lg border border-border hover:bg-muted/40 text-left transition",children:[t.jsx(Kt,{className:"h-4 w-4 text-primary shrink-0"}),t.jsxs("div",{className:"min-w-0",children:[t.jsx("div",{className:"text-sm font-medium",children:"Meine Aufgaben"}),t.jsx("div",{className:"text-[10px] text-muted-foreground truncate",children:"Heute-Liste"})]})]}),t.jsxs("button",{type:"button",onClick:()=>window.dispatchEvent(new CustomEvent("jump-to-tab",{detail:"hebel"})),className:"flex items-center gap-2 p-2.5 rounded-lg border border-primary/40 bg-primary/5 hover:bg-primary/10 text-left transition",children:[t.jsx(Xn,{className:"h-4 w-4 text-primary shrink-0"}),t.jsxs("div",{className:"min-w-0",children:[t.jsxs("div",{className:"text-sm font-medium",children:["Meine ",Gn]}),t.jsxs("div",{className:"text-[10px] text-muted-foreground truncate",children:[a.length," aktiv"]})]})]})]})]}),t.jsx(ib,{}),t.jsx(fb,{}),h>0&&t.jsx(qe,{className:"p-3 flex items-center justify-between gap-3 bg-gradient-to-r from-accent/10 to-primary/10 border-accent/30",children:t.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[t.jsx(ta,{className:"h-4 w-4 text-accent"}),t.jsxs("span",{children:[t.jsxs("strong",{children:[h," ",h===1?"Tag":"Tage"," Streak."]})," ",t.jsxs("span",{className:"text-muted-foreground",children:["Nächste Belohnung in ",v," ",v===1?"Tag":"Tagen"," (+",p," Punkte)"]})]})]})}),t.jsx(eb,{value:f,onChange:m}),t.jsxs("div",{className:"flex flex-wrap gap-2",children:[[["overdue","Ãberfällig"],["today","Heute"],["week","Die
333se Woche"],["prioA","A-Prio"],["important","Wichtig"]].map(([D,N])=>t.jsx(S,{size:"sm",variant:b.has(D)?"default":"outline",onClick:()=>P(D),className:"text-xs",children:N},D)),$>0&&t.jsxs(S,{size:"sm",variant:w?"default":"outline",onClick:()=>x(D=>!D),className:"text-xs",children:[t.jsx(Ln,{className:"h-3 w-3 mr-1"}),"Ãlter als 30 Tage (",$,")"]}),t.jsxs(S,{size:"sm",variant:"outline",onClick:()=>window.dispatchEvent(new Event("open-daily-review")),className:"text-xs",title:"Was lief heute? Was bleibt offen?",children:[t.jsx(ra,{className:"h-3 w-3 mr-1"}),"Tages-Bilanz ansehen"]})]}),t.jsxs("section",{id:"heute-top3",children:[t.jsxs("h2",{className:"font-display text-lg flex items-center gap-2 mb-2",children:[t.jsx(ft,{className:"h-4 w-4 text-gold fill-gold"})," Top 3 heute"]}),j.length===0?t.jsxs(qe,{className:"p-8 text-center",children:[t.jsx("div",{className:"mx-auto mb-3 grid h-12 w-12 place-items-center rounded-full bg-gradient-brand text-white shadow-glow",children:t.jsx(Kt,{className:"h-6 w-6"})}),t.jsx("div",{className:"font-display text-base mb-1",children:"Alles erledigt â stark!"}),t.jsx("div",{className:"text-sm text-muted-foreground",children:"Gönn Dir was, oder leg gleich eine neue Aufgabe an. ð"})]}):t.jsx("div",{className:"space-y-2",children:j.map(D=>t.jsx(Ls,{todo:D},D.id))})]}),t.jsx(Sb,{}),R.length>0&&t.jsxs("section",{children:[t.jsxs("h2",{className:"font-display text-lg mb-2",children:["Alle weiteren offenen Aufgaben (",R.length,")"]}),t.jsx("div",{className:"space-y-2",children:ne.map(D=>t.jsx(Ls,{todo:D},D.id))}),t.jsx(rb,{page:z,totalPages:K,onChange:_})]}),t.jsx(Db,{todos:e})]})}const Mb=[{code:"+49",label:"ð©ðª Deutschland (+49)"},{code:"+43",label:"ð¦ð¹ Ãsterreich (+43)"},{code:"+41",label:"ð¨ð Schweiz (+41)"},{code:"+39",label:"ð®ð¹ Italien (+39)"},{code:"+33",label:"ð«ð· Frankreich (+33)"},{code:"+31",label:"ð³ð± Niederlande (+31)"},{code:"+1",label:"ðºð¸ USA / Kanada (+1)"}],Cb=3*24*3600*1e3;function Ab(){const{user:e}=ge(),{profile:n}=de(),[r,s]=c.useState(!1),[a,i]=c.useState("+49"),[l,o]=c.useState(""),[d,u]=c.useState(!1);c.useEffect(()=>{if(!e||!n.data)return;const v=n.data;if(v.phone||v.phone_prompt_never)return;const f=v.phone_prompt_dismissed_at?new Date(v.phone_prompt_dismissed_at).getTime():0;if(Date.now()-f<Cb)return;const m=setTimeout(()=>s(!0),800);return()=>clearTimeout(m)},[e,n.data]);async function h(){if(!e)return;const v=l.replace(/[^0-9]/g,"");if(v.length<4){U.error("Bitte gib eine gültige Handynummer ein.");return}u(!0);const f=`${a}${v.replace(/^0+/,"")}`,{error:m}=await H.from("profiles").update({phone:f,phone_prompt_dismissed_at:new Date().toISOString()}).eq("user_id",e.id);if(u(!1),m){U.error("Konnte nicht speichern",{description:m.message});return}U.success("Handynummer gespeichert â danke!"),s(!1),n.refetch()}async function g(){e&&(await H.from("profiles").update({phone_prompt_dismissed_at:new Date().toISOString()}).eq("user_id",e.id),s(!1),n.refetch())}async function p(){e&&(await H.from("profiles").update({phone_prompt_never:!0}).eq("user_id",e.id),s(!1),n.refetch())}return t.jsx(Ne,{open:r,onOpenChange:v=>{v||g()},children:t.jsxs(De,{className:"sm:max-w-md",children:[t.jsxs(Ce,{children:[t.jsxs(Ae,{className:"flex items-center gap-2",children:[t.jsx(Gi,{className:"h-5 w-5 text-primary"})," Handynummer hinterlegen"]}),t.jsx(st,{className:"leading-relaxed pt-1",children:"Damit Dich wichtige Erinnerungen auch unterwegs erreichen, hinterlege bitte einmal Deine Handynummer. Push-Benachrichtigungen kommen später, aber dann haben wir Dich auf dem Schirm."})]}),t.jsxs("div",{className:"grid grid-cols-[140px_1fr] gap-2 pt-2",children:[t.jsxs("div",{children:[t.jsx(dn,{className:"text-xs",children:"Land"}),t.jsxs(yt,{value:a,onValueChange:i,children:[t.jsx(ut,{className:"h-11 mt-1",children:t.jsx(kt,{})}),t.jsx(ht,{children:Mb.map(v=>t.jsx(we,{value:v.code,children:v.label},v.code))})]})]}),t.jsxs("div",{children:[t.jsx(dn,{className:"text-xs",children:"Handynummer"}),t.jsx(oe,{value:l,onChange:v=>o(v.target.value),inputMode:"tel",autoComplete:"tel-national",placeholder:"171 1234567",className:"h-11 mt-1"})]})]}),t.jsxs(Zt,{className:"flex-col sm:flex-row gap-2 pt-2",children:[t.jsx(S,{variant:"ghost",size:"sm",onClick:p,className:"sm:mr-auto text-xs text-muted-foreground",children:"Nicht mehr fragen"}),t.jsx(S,{variant:"ghost",onClick:g,children:"Später erinnern"}),t.jsx(S,{onClick:h,disabled:d,className:"bg-gradient-brand",children:d?"Speichertâ¦":"Speichern"})]})]})})}const zb=[{id:"feedback",label:"Idee",emoji:"ð¡"},{id:"bug",label:"Bug",emoji:"ð"},{id:"wish",label:"Wunsch",emoji:"â¨"}];function Tb(){const{user:e}=ge(),[n,r]=c.useState(!1),[s,a]=c.useState("feedback"),[i,l]=c.useState(""),[o,d]=c.useState([]),[u,h]=c.useState(!1),g=5,p=5*1024*1024;function v(w){if(!w||!w.length)return;const x=[...o];for(const b of Array.from(w)){if(x.length>=g){U.error(`Maximal ${g} Bilder`);break}if(b.size>p){U.error(`â${b.name}â ist zu groà (max. 5 MB)`);continue}if(!/^image\/(png|jpeg|jpg)$/.test(b.type)){U.error(`â${b.name}â: nur PNG/JPG`);continue}x.push(b)}d(x)}function f(w){d(x=>x.filter((b,y)=>y!==w))}async function m(){if(i.trim()){h(!0);try{const w=[];for(const W of o){const G=W.name.split(".").pop()??"png",C=`${(e==null?void 0:e.id)??"anon"}/${crypto.randomUUID()}.${G}`,{error:A}=await H.storage.from("feedback-screenshots").upload(C,W,{contentType:W.type,upsert:!1});if(A)return h(!1),U.error("Upload fehlgeschlagen: "+A.message);const{data:j}=H.storage.from("feedback-screenshots").getPublicUrl(C);w.push(j.publicUrl)}const x=w[0]??null,b=w.length>1?`${i.trim()} 334 335Weitere Bilder: 336${w.slice(1).join(` 337`)}`:i.trim(),{data:y,error:P}=await H.from("app_feedback").insert({user_id:(e==null?void 0:e.id)??null,kind:s,text:b,version:rn,user_agent:navigator.userAgent,screenshot_url:x}).select("id,ticket_no").maybeSingle();if(P)return h(!1),U.error(P.message);const V=y==null?void 0:y.ticket_no,$=V?`FC-${V}`:"";y!=null&&y.id&&(H.functions.invoke("notify-bug-report",{body:{feedback_id:y.id}}).catch(()=>{}),e!=null&&e.id&&H.functions.invoke("notify-ticket-confirmation",{body:{feedback_id:y.id}}).catch(()=>{})),U.success($?`Danke! Ticket #${$} ist eingegangen. Du machst Fokus Cockpit damit besser. ð¦`:"Danke, ich hab's bekommen!",{duration:6e3}),l(""),d([]),a("feedback"),r(!1)}finally{h(!1)}}}return t.jsxs(t.Fragment,{children:[t.jsxs(xe,{children:[t.jsx(be,{asChild:!0,children:t.jsx("button",{onClick:()=>r(!0),"aria-label":"Feedback, Idee oder Bug an Daniel schicken",className:"fixed bottom-20 right-4 md:bottom-6 md:right-6 z-40 h-12 w-12 rounded-full bg-primary text-primary-foreground shadow-lg hover:opacity-90 flex items-center justify-center",style:{minWidth:44,minHeight:44},children:t.jsx(Ud,{className:"h-5 w-5"})})}),t.jsx(ve,{side:"left",children:"Feedback, Idee oder Bug an Daniel schicken"})]}),t.jsx(Ne,{open:n,onOpenChange:r,children:t.jsxs(De,{className:"max-w-md",children:[t.jsx(jt,{open:n}),t.jsx(Ce,{children:t.jsx(Ae,{children:"Was würdest Du Dir wünschen?"})}),t.jsxs("div",{className:"space-y-3",children:[t.jsx("div",{className:"flex gap-2",children:zb.map(w=>t.jsxs("button",{onClick:()=>a(w.id),className:Q("flex-1 rounded-full border px-3 py-2 text-sm transition",s===w.id?"border-primary bg-primary/10 text-primary font-medium":"border-border bg-card hover:border-primary/50"),children:[w.emoji," ",w.label]},w.id))}),t.jsx(vt,{placeholder:"Erzähl mir, was Dir auffälltâ¦",rows:5,value:i,onChange:w=>l(w.target.value)}),t.jsxs("div",{className:"space-y-2",children:[t.jsxs("label",{className:"text-xs text-muted-foreground block",children:["Screenshots (optional, bis zu ",g," Bilder, je max. 5 MB)"]}),t.jsx("input",{type:"file",multiple:!0,accept:"image/png,image/jpeg,image/jpg",onChange:w=>{v(w.target.files),w.currentTarget.value=""},className:"text-sm"}),o.length>0&&t.jsx("ul",{className:"space-y-1",children:o.map((w,x)=>t.jsxs("li",{className:"flex items-center justify-between rounded border border-border bg-card px-2 py-1 text-xs",children:[t.jsxs("span",{className:"truncate flex-1",children:[w.name," ",t.jsxs("span",{className:"text-muted-foreground",children:["(",(w.size/1024/1024).toFixed(1)," MB)"]})]}),t.jsx("button",{type:"button",onClick:()=>f(x),"aria-label":`Entfernen: ${w.name}`,className:"ml-2 text-destructive hover:opacity-80 p-1",children:t.jsx(Me,{className:"h-3.5 w-3.5"})})]},x))})]}),t.jsxs("div",{className:"flex justify-end gap-2 pt-2",children:[t.jsxs(S,{variant:"ghost",onClick:()=>r(!1),children:[t.jsx(Me,{className:"h-4 w-4 mr-1"})," SchlieÃen"]}),t.jsxs(S,{onClick:m,disabled:u||!i.trim(),className:"bg-gradient-brand",children:[t.jsx(nu,{className:"h-4 w-4 mr-1"})," Senden"]})]}),t.jsxs("p",{className:"text-[11px] text-muted-foreground",children:["Geht direkt an Daniel. Aktuelle Version: v",rn,"."]})]})]})})]})}function Pb(){const e=kc(),{toggleDone:n,deleteTodo:r,allTodos:s}=de();if(!e.isActive)return null;const a=Array.from(e.selected);function i(){for(const o of a){const d=s.find(u=>u.id===o);d&&!d.done&&n.mutate(d)}e.clear(),U.success(`${a.length} ${a.length===1?"Aufgabe":"Aufgaben"} abgehakt`)}function l(){if(confirm(`${a.length} ${a.length===1?"Aufgabe":"Aufgaben"} wirklich löschen?`)){for(const o of a)r.mutate(o);e.clear(),U.success(`${a.length} ${a.length===1?"Aufgabe":"Aufgaben"} gelöscht`)}}return t.jsxs("div",{className:"fixed bottom-20 md:bottom-6 left-1/2 -translate-x-1/2 z-40 flex items-center gap-2 bg-card border border-border shadow-lg rounded-full px-3 py-2",children:[t.jsxs("span",{className:"text-sm font-medium px-2",children:[a.length," ausgewählt"]}),t.jsxs(S,{size:"sm",variant:"ghost",onClick:i,children:[t.jsx(ea,{className:"h-4 w-4 mr-1"})," Abhaken"]}
337),t.jsxs(S,{size:"sm",variant:"ghost",onClick:l,className:"text-destructive",children:[t.jsx(at,{className:"h-4 w-4 mr-1"})," Löschen"]}),t.jsx(S,{size:"icon",variant:"ghost",onClick:()=>e.clear(),"aria-label":"Auswahl aufheben",children:t.jsx(Me,{className:"h-4 w-4"})})]})}function Di(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`}function Eb(){var b;const{allTodos:e,updateTodo:n,deleteTodo:r}=de(),{profile:s}=Ee(),{activeObjectives:a}=He(),[i,l]=c.useState(!1);Jn();const o=((b=s.data)==null?void 0:b.focus_v2_enabled)===!0&&a.length>0;c.useEffect(()=>{const y=()=>l(!0);return window.addEventListener("open-daily-review",y),()=>window.removeEventListener("open-daily-review",y)},[]);const d=c.useMemo(()=>{const y=new Date;return y.setDate(y.getDate()-1),y},[i]),u=Di(d),h=c.useMemo(()=>new Set(a.map(y=>y.id)),[a]),g=c.useMemo(()=>e.filter(y=>{var P;return y.done&&((P=y.done_at)==null?void 0:P.startsWith(u))}),[e,u]),p=c.useMemo(()=>g.reduce((y,P)=>y+Wa(P),0),[g]),v=c.useMemo(()=>g.reduce((y,P)=>y+(P.focus_doubled||P.objective_id&&h.has(P.objective_id)?Wa(P):0),0),[g,h]),f=p>0?Math.round(v/p*100):null,m=c.useMemo(()=>e.filter(y=>!y.done&&(y.due_date===u||et(y.due_date))),[e,u]);function w(y){const P=new Date;n.mutate({id:y,due_date:Di(P)})}function x(y){r.mutate(y)}return t.jsx(Ne,{open:i,onOpenChange:l,children:t.jsxs(Gc,{children:[t.jsx(Zc,{className:"z-[70] bg-black/70 backdrop-blur-md"}),t.jsxs(Yc,{className:"fixed left-1/2 top-1/2 z-[80] flex w-[95vw] max-w-2xl max-h-[85vh] -translate-x-1/2 -translate-y-1/2 flex-col overflow-hidden border bg-card shadow-2xl sm:rounded-xl data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=closed]:zoom-out-95",children:[t.jsxs("div",{className:"p-6 border-b",children:[t.jsx(Ce,{children:t.jsx(Ae,{className:"text-xl",children:"Rückblick auf gestern"})}),t.jsxs("p",{className:"text-sm mt-2",children:["Gestern hast Du ",t.jsxs("strong",{children:[g.length," ",g.length===1?"Aufgabe":"Aufgaben"]})," erledigt und"," ",t.jsxs("strong",{children:[p," ",p===1?"Punkt":"Punkte"]})," gesammelt."]}),o&&t.jsxs("p",{className:"text-sm mt-1",children:["ð¯ Fokus-Quote gestern: ",t.jsx("strong",{children:f===null?"â":`${f} %`})]})]}),t.jsx("div",{className:"flex-1 overflow-y-auto px-6 py-4",children:m.length>0?t.jsxs(t.Fragment,{children:[t.jsx("h3",{className:"text-sm font-medium mb-1",children:"Offene Aufgaben von gestern â was machst Du damit?"}),t.jsx("p",{className:"text-xs text-muted-foreground mb-3",children:"Pro Aufgabe entscheiden: auf heute holen, neu terminieren oder löschen."}),t.jsx("div",{className:"divide-y rounded-lg border",children:m.map(y=>t.jsxs("div",{className:"flex items-center gap-1 p-3 hover:bg-muted/50 transition-colors",children:[t.jsxs("span",{className:"flex-1 text-sm truncate",title:y.text,children:[y.important&&t.jsx(ft,{className:"inline h-3 w-3 mr-1 text-amber-500 fill-current"}),y.text]}),t.jsxs("div",{className:"flex flex-col items-center",children:[t.jsx(S,{size:"icon",variant:"ghost",onClick:()=>w(y.id),title:"Auf heute holen","aria-label":"Auf heute holen",children:t.jsx(nn,{className:"h-4 w-4"})}),t.jsx("span",{className:"text-[9px] text-muted-foreground sm:hidden -mt-1",children:"heute"})]}),t.jsxs("div",{className:"flex flex-col items-center",children:[t.jsx(ts,{value:y.due_date,onChange:P=>n.mutate({id:y.id,due_date:P}),time:y.due_time,onTimeChange:P=>n.mutate({id:y.id,due_time:P})}),t.jsx("span",{className:"text-[9px] text-muted-foreground sm:hidden -mt-1",children:"Datum"})]}),t.jsxs("div",{className:"flex flex-col items-center",children:[t.jsx(S,{size:"icon",variant:"ghost",className:"text-destructive",onClick:()=>x(y.id),title:"Löschen","aria-label":"Löschen",children:t.jsx(at,{className:"h-4 w-4"})}),t.jsx("span",{className:"text-[9px] text-muted-foreground sm:hidden -mt-1",children:"löschen"})]})]},y.id))})]}):t.jsx("p",{className:"text-sm text-muted-foreground text-center py-4",children:"Nichts mehr offen von gestern â stark! ð"})}),t.jsx("div",{className:"p-6 border-t bg-card",children:t.jsx(S,{onClick:()=>l(!1),className:"w-full bg-gradient-brand",children:"Rückblick schlieÃen"})})]})]})})}const gr=[{title:"Willkommen im Fokus Cockpit!",text:"Hi, ich bin Daniel. Lass mich Dir in 8 Schritten zeigen, wie das Cockpit Dich produktiver macht.",icon:"ð"},{title:"Aufgaben anlegen",text:"Tippe in das Eingabefeld oben. Setze Priorität A/B/C, optional Datum und Tag. Mit dem Mikrofon kannst Du auch diktieren.",icon:"âï¸"},{title:"Abhaken & Punkte sammeln",text:"Klick auf das Kästchen links â Konfetti fliegt, Punkte flieÃen. A-Aufgaben bringen 10, B = 5, C = 2 Punkte. Mit Wichtig-Stern +5.",icon:"â
"},{title:"Streak halten",text:"Jeden Tag mindestens eine Aufgabe abhaken = Streak. Alle 7 Tage Bonu
337spunkte. Heute bloà nicht abbrechen.",icon:"ð¥"},{title:"Belohnungen",text:'Im Tab âReward" findest Du echte Belohnungen, die Du Dir gönnst, wenn Du genug Punkte hast. Setz Dir eigene Ziele.',icon:"ð"},{title:"Tags & Rollen",text:"Strukturiere Deine Aufgaben mit Tags (VERTRIEB, PODCAST, GELD â¦) und Rollen. Im Profil legst Du eigene Tags und Rollen an â ganz wie Du arbeitest.",icon:"ð·ï¸"},{title:"Templates für Routinen",text:"Aufgaben, die Du regelmäÃig anlegst, speicherst Du als Template. Ein Klick und sie ist drin â inklusive Priorität, Tag und Subtasks.",icon:"ð"},{title:"Benachrichtigungen",text:"Browser-Push und SMS sind in Vorbereitung. Hinterlege schon mal Deine Handynummer im Profil â wir geben Dir Bescheid, sobald die Erinnerungen live sind.",icon:"ð"}];function Rb(){const{user:e}=ge(),{profile:n}=de(),[r,s]=c.useState(!1),[a,i]=c.useState(0),l=Jn();c.useEffect(()=>{if(!l||!(e!=null&&e.id)||!n.data)return;const h=`fokus-onboarded:${e.id}`;localStorage.getItem(h)||Pt("onboarding-tour",Et.ONBOARDING,()=>s(!0))},[l,e==null?void 0:e.id,n.data]);function o(){a<gr.length-1?i(h=>h+1):d()}function d(){e!=null&&e.id&&localStorage.setItem(`fokus-onboarded:${e.id}`,"1"),s(!1)}const u=gr[a];return t.jsx(Ne,{open:r,onOpenChange:h=>{h||d()},children:t.jsxs(De,{className:"max-w-md text-center",children:[t.jsx(Ce,{children:t.jsxs(Ae,{className:"flex items-center justify-center gap-2",children:[t.jsx(Qn,{className:"h-5 w-5 text-primary"})," Onboarding"]})}),t.jsx("div",{className:"text-5xl py-2",children:u.icon}),t.jsx("h3",{className:"font-display text-lg",children:u.title}),t.jsx("p",{className:"text-sm text-muted-foreground",children:u.text}),t.jsx("div",{className:"flex items-center justify-center gap-1 my-2",children:gr.map((h,g)=>t.jsx("span",{className:`h-1.5 w-1.5 rounded-full ${g===a?"bg-primary":"bg-muted"}`},g))}),t.jsxs("div",{className:"flex gap-2 justify-center",children:[t.jsx(S,{variant:"ghost",onClick:d,children:"Ãberspringen"}),t.jsx(S,{onClick:o,className:"bg-gradient-brand",children:a<gr.length-1?t.jsxs(t.Fragment,{children:["Weiter ",t.jsx(nn,{className:"h-4 w-4 ml-1"})]}):"Los geht's"})]})]})})}const Ib=9e4,Ob=15e3,Fb=4*60*60*1e3,Bb="Selbstbelohnung wirkt â Dein Gehirn verstärkt das Verhalten, das Dich hierhergebracht hat (Dopamin-Schleife). Du musst Deine Erfolge wirklich feiern.";function Wb(){const{user:e}=ge(),{rewardsAvailable:n,rewards:r,claimReward:s}=de(),a=Jn(),i=c.useRef(!1),l=c.useRef(new Set);return c.useEffect(()=>{if(!a||!(e!=null&&e.id))return;const o=`fokus-rewards-last-seen-${e.id}`,d=`fokus-reward-snooze-until:${e.id}`,u=parseInt(localStorage.getItem(o)||""),h=Number.isFinite(u)?u:n;if(!i.current&&(i.current=!0,!Number.isFinite(u))){localStorage.setItem(o,String(n));return}if(n<=h){n<h&&localStorage.setItem(o,String(n));return}const g=localStorage.getItem(d);if(g&&new Date(g).getTime()>Date.now())return;const p=(r.data??[]).filter(x=>!x.claimed&&!x.archived&&x.points>h&&x.points<=n).filter(x=>!l.current.has(x.id)).sort((x,b)=>x.points-b.points);if(p.length===0){localStorage.setItem(o,String(n));return}function v(){return Gt()?!0:typeof document>"u"?!1:!!document.querySelector('[role="dialog"][data-state="open"], [role="alertdialog"][data-state="open"]')}function f(){if(v()){m=setTimeout(f,Ob);return}p.forEach(x=>{l.current.add(x.id),U.success(`ð Neue Belohnung freigeschaltet: â${x.text}"`,{description:Bb,duration:12e3,action:{label:"Einlösen",onClick:()=>{localStorage.removeItem(d),s.mutate(x)}},cancel:{label:"Später",onClick:()=>{const b=new Date(Date.now()+Fb).toISOString();localStorage.setItem(d,b)}}})}),localStorage.setItem(o,String(n))}let m=null;const w=setTimeout(f,Ib);return()=>{clearTimeout(w),m&&clearTimeout(m)}},[a,n,r.data,e==null?void 0:e.id]),null}function Lb(){const{user:e}=ge(),{profile:n}=de(),r=Jn(),[s,a]=c.useState(!1),i=n.data;c.useEffect(()=>{r&&(!(e!=null&&e.id)||!i||i.welcome_message&&!i.welcome_message_seen_at&&Pt("welcome-message",Et.OTHER,()=>a(!0)))},[r,e==null?void 0:e.id,i==null?void 0:i.welcome_message,i==null?void 0:i.welcome_message_seen_at]);async function l(){a(!1),e&&(await H.from("profiles").update({welcome_message_seen_at:new Date().toISOString()}).eq("user_id",e.id),n.refetch())}return i!=null&&i.welcome_message?t.jsx(Ne,{open:s,onOpenChange:o=>{o||l()},children:t.jsxs(De,{className:"sm:max-w-md",children:[t.jsx(Ce,{children:t.jsxs(Ae,{className:"flex items-center gap-2",children:[t.jsx(na,{className:"h-5 w-5 text-gold"})," Eine Nachricht für Dich"]})}),t.jsx("p",{className:"text-sm leading-relaxed whitespace-pre-wrap py-2",children:i.welcome_message}),t.jsx("div",{className:"flex justify-end",children:t.jsx(S,{onClick:l,className:"bg-gradient-brand",children:"Alles klar, danke!"})})]})}):null}const _i="2026-05-31";function Hb(){const{user:e,signOut:n}=ge(),{profile:r}=de(),s=r.data,[a,i]=c.useState(!1),[l,o]=c.useState(!1);c.useEffect(()=>{!(e!=null&&e.id)||!s||(!s.privacy_accepted_at||s.privacy_version!==_i?(Jc("privacy-consent"),i(!0)):i(!1))}
337,[e==null?void 0:e.id,s==null?void 0:s.privacy_accepted_at,s==null?void 0:s.privacy_version]);async function d(){e&&(o(!0),await H.from("profiles").update({privacy_accepted_at:new Date().toISOString(),privacy_version:_i}).eq("user_id",e.id),o(!1),i(!1),r.refetch())}return!e||!s?null:t.jsx(Ne,{open:a,onOpenChange:()=>{},children:t.jsxs(De,{className:"sm:max-w-lg z-[100]",onPointerDownOutside:u=>u.preventDefault(),onEscapeKeyDown:u=>u.preventDefault(),children:[t.jsx(Ce,{children:t.jsxs(Ae,{className:"flex items-center gap-2",children:[t.jsx(yd,{className:"h-5 w-5 text-primary"})," Datenschutz & Nutzung"]})}),t.jsxs("div",{className:"space-y-3 text-sm leading-relaxed",children:[t.jsx("p",{children:"Bevor Du loslegst, brauchen wir Deine aktive Zustimmung â damit Du genau weiÃt, wo Deine Daten verarbeitet werden."}),t.jsxs("ul",{className:"list-disc pl-5 space-y-1 text-xs",children:[t.jsxs("li",{children:[t.jsx("strong",{children:"Deine Aufgaben & Profil"})," liegen in einer Datenbank in Irland (EU-West, Supabase)."]}),t.jsxs("li",{children:[t.jsx("strong",{children:"E-Mails"})," verschicken wir über Resend in Irland."]}),t.jsxs("li",{children:[t.jsx("strong",{children:"Die App selbst"})," wird auf Lovable.dev (USA) entwickelt â die Daten bleiben aber in der EU."]}),t.jsxs("li",{children:[t.jsx("strong",{children:"KI-Features sind standardmäÃig AUS."})," Wenn Du sie aktivierst, gehen Aufgabentexte an Mistral (Frankreich, EU). Im technischen Ausnahmefall existiert ein Notfall-Fallback auf Google Gemini â im Normalbetrieb läuft alles EU-only."]}),t.jsxs("li",{children:[t.jsx("strong",{children:"Deine Eigenverantwortung:"})," Du musst keine personenbezogenen Daten in Aufgaben schreiben â formuliere abstrakt, wenn der Inhalt sensibel ist."]}),t.jsxs("li",{children:[t.jsx("strong",{children:"Jederzeit:"})," Datenpaket herunterladen oder Account löschen über Dein Profil."]})]}),t.jsxs("p",{className:"text-xs",children:["Details:"," ",t.jsxs(La,{to:"/datenschutz",className:"underline text-primary inline-flex items-center gap-1",children:["Datenschutzerklärung ",t.jsx(Ua,{className:"h-3 w-3"})]})," ","·"," ",t.jsxs(La,{to:"/disclaimer",className:"underline text-primary inline-flex items-center gap-1",children:["Disclaimer ",t.jsx(Ua,{className:"h-3 w-3"})]})]})]}),t.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 justify-end mt-2",children:[t.jsx(S,{variant:"ghost",onClick:()=>n(),disabled:l,children:"Nicht einverstanden â Abmelden"}),t.jsx(S,{onClick:d,disabled:l,className:"bg-gradient-brand",children:"Verstanden â Datenschutz akzeptieren"})]})]})})}const ys=[{emoji:"ð¦",title:"Das groÃe Fokus-Update ist da.",body:"Dein Cockpit kann weiterhin alles, was es konnte: Aufgaben anlegen, abhaken, Punkte sammeln. Aber ab heute kann es mehr: Es bringt Dich in den FOKUS."},{emoji:"ð¤¯",title:"Das Problem kennst Du:",body:"Du bist den ganzen Tag beschäftigt. Aber beschäftigt sein heiÃt nicht vorankommen. Die Frage ist: Wie viel von dem, was Du heute tust, bringt Dich WIRKLICH weiter?"},{emoji:"ð¯",title:"Die Idee: Deine Fokus-Ziele.",body:"Du legst maximal 3 Fokus-Ziele für die nächsten 30, 60 oder 90 Tage fest â die Dinge, die Dein Geschäft wirklich bewegen. Aufgaben, die darauf einzahlen, geben doppelte Fokus-Punkte. Und Du siehst jeden Tag Deine Fokus-Quote: Wie viel Deiner Energie floss in Deine Zukunft?"},{emoji:"ð",title:"Jedes Fokus-Ziel bekommt Zahlen.",body:"Wo stehst Du heute â wo willst Du am Ende der Fokus-Phase stehen? Beispiel: Kontostand heute 10.000 ⬠â Ziel 25.000 â¬. Dazwischen misst Du kurz jede Woche. So wird Fortschritt sichtbar statt gefühlt."},{emoji:"ð",title:"Dein Alltag mit Fokus.",body:"Morgens wählst Du Deine 3 Tagesziele. Montags 3 Minuten Wochenplan, freitags 2 Minuten Bilanz. Mehr ist es nicht â das Cockpit erinnert Dich."},{emoji:"ð",title:"So starten wir:",body:"Wir machen jetzt zusammen Deine Grundkonfiguration â dauert 5 Minuten. Du wählst auch, wie lange Deine Fokus-Phase läuft (30 / 60 / 90 Tage oder eigenes Datum). Du kannst alles jederzeit später ändern."}];function Kb({open:e,onStart:n,onSkip:r}){const[s,a]=c.useState(0),i=s===ys.length-1,l=ys[s];return t.jsx(Ne,{open:e,children:t.jsx(De,{className:"max-w-md p-0 overflow-hidden border-primary/30 bg-gradient-to-br from-background via-background to-primary/10",children:t.jsxs("div",{className:"p-6 pt-8 text-center space-y-4",children:[t.jsx("div",{className:"text-6xl",children:l.emoji}),t.jsx("h2",{className:"font-display text-2xl text-foreground",children:l.title}),t.jsx("p",{className:"text-sm text-muted-foreground leading-relaxed",children:l.body}),t.jsx("div",{className:"flex justify-center gap-1.5 pt-2",children:ys.map((o,d)=>t.jsx("span",{className:Q("h-1.5 rounded-full transition-all",d===s?"w-6 bg-primary":"w-1.5 bg-muted-foreground
337/30")},d))}),t.jsxs("div",{className:"pt-4 space-y-2",children:[!i&&t.jsxs(t.Fragment,{children:[t.jsx(S,{className:"w-full",onClick:()=>a(s+1),children:"Weiter"}),t.jsx("button",{onClick:r,className:"text-xs text-muted-foreground hover:text-foreground",children:"Ãberspringen"})]}),i&&t.jsxs(t.Fragment,{children:[t.jsx(S,{className:"w-full",onClick:n,children:"Los geht's ð"}),t.jsx(S,{variant:"ghost",className:"w-full",onClick:r,children:"Später"})]})]})]})})})}var Pa="Progress",Ea=100,[$b,ky]=Yn(Pa),[Vb,Ub]=$b(Pa),Mc=c.forwardRef((e,n)=>{const{__scopeProgress:r,value:s=null,max:a,getValueLabel:i=qb,...l}=e;(a||a===0)&&!Mi(a)&&console.error(Gb(`${a}`,"Progress"));const o=Mi(a)?a:Ea;s!==null&&!Ci(s,o)&&console.error(Zb(`${s}`,"Progress"));const d=Ci(s,o)?s:null,u=Fr(d)?i(d,o):void 0;return t.jsx(Vb,{scope:r,value:d,max:o,children:t.jsx(je.div,{"aria-valuemax":o,"aria-valuemin":0,"aria-valuenow":Fr(d)?d:void 0,"aria-valuetext":u,role:"progressbar","data-state":zc(d,o),"data-value":d??void 0,"data-max":o,...l,ref:n})})});Mc.displayName=Pa;var Cc="ProgressIndicator",Ac=c.forwardRef((e,n)=>{const{__scopeProgress:r,...s}=e,a=Ub(Cc,r);return t.jsx(je.div,{"data-state":zc(a.value,a.max),"data-value":a.value??void 0,"data-max":a.max,...s,ref:n})});Ac.displayName=Cc;function qb(e,n){return`${Math.round(e/n*100)}%`}
337function zc(e,n){return e==null?"indeterminate":e===n?"complete":"loading"}function Fr(e){return typeof e=="number"}function Mi(e){return Fr(e)&&!isNaN(e)&&e>0}function Ci(e,n){return Fr(e)&&!isNaN(e)&&e<=n&&e>=0}function Gb(e,n){return`Invalid prop \`max\` of value \`${e}\` supplied to \`${n}\`. Only numbers greater than 0 are valid max values. Defaulting to \`${Ea}\`.`}function Zb(e,n){return`Invalid prop \`value\` of value \`${e}\` supplied to \`${n}\`. The \`value\` prop must be: 338 - a positive number 339 - less than the value passed to \`max\` (or ${Ea} if no \`max\` prop is set) 340 - \`null\` or \`undefined\` if the progress is indeterminate. 341 342Defaulting to \`null\`.`}var Tc=Mc,Yb=Ac;const or=c.forwardRef(({className:e,value:n,...r},s)=>t.jsx(Tc,{ref:s,className:Q("relative h-4 w-full overflow-hidden rounded-full bg-secondary",e),...r,children:t.jsx(Yb,{className:"h-full w-full flex-1 bg-primary transition-all",style:{transform:`translateX(-${100-(n||0)}%)`}})}));or.displayName=Tc.displayName;function Jb(e){const n=(e||"").toLowerCase();return/pro\s+woche|wöchentlich/.test(n)?"weekly_rate":/\bneukunden\b|\bangebote\b|einstellungen|rahmenverträge|direktansprachen|reaktivierte|in\s+90\s+tagen|verkaufsgespräche|geführte|abgegebene|versendete|gewonnene/.test(n)?"counter":"stock"}function Ra(e=new Date){const n=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate())),r=n.getUTCDay()||7;n.setUTCDate(n.getUTCDate()+4-r);const s=new Date(Date.UTC(n.getUTCFullYear(),0,1)),a=Math.ceil(((+n-+s)/864e5+1)/7);return`${n.getUTCFullYear()}-W${String(a).padStart(2,"0")}`}function rs(e){const n=e.milestones??[];return Array.isArray(n)?n.filter(r=>r&&typeof r=="object"&&typeof r.week=="string").map(r=>({week:r.week,count:Number(r.count)||0})):[]}function wy(e,n=new Date){const r=Ra(n),s=rs(e),a=s[s.length-1],i=Number(e.current_value??0);if(!a)return{milestones:[...s,{week:r,count:i}]};if(a.week===r){if(a.count!==i){const o=[...s];return o[o.length-1]={week:r,count:i},{milestones:o}}return null}return{milestones:[...s,{week:r,count:0}],current_value:0}}function jy(e){const n=Number(e.target_value??0),r=rs(e),s=Math.max(r.length,0);if(s===0||n<=0)return{met:0,total:s,pct:0};const a=r.filter(i=>i.count>=n).length;return{met:a,total:s,pct:a/s}}function Ny(e){const n=rs(e),r=Ra(),s=n[n.length-1];return s&&s.week===r?s.count:Number(e.current_value??0)}function Qb(e){const n=rs(e),r=Ra(),s=n.filter(a=>a.week!==r);return s.length>0?s[s.length-1]:null}function Xb(e,n,r){if(e.target_value==null||!n||!r)return null;const s=Math.max(1,Of(n,r)),a=Math.max(0,Ff(n)),i=Math.max(0,Math.min(1,a/s)),l=e.measure_kind??"stock",o=Number(e.target_value??0);if(l==="weekly_rate"){const u=Math.max(1,Math.ceil(a/7));return o*u}const d=Number(e.start_value??0);return d+i*(o-d)}const ks={geschaeftsfuehrer:"Geschäftsführer / Inhaber",niederlassungsleiter:"Niederlassungsleiter",vertriebsleiter:"Vertriebsleiter",recruitingleiter:"Recruitingleiter",disponent:"Disponent",backoffice:"Backoffice / Verwaltung",unternehmer:"Unternehmer / Selbstständig"},ev={geschaeftsfuehrer:"ð",niederlassungsleiter:"ð¢",vertriebsleiter:"ð",recruitingleiter:"ð§²",disponent:"ðï¸",backoffice:"ð§¾",unternehmer:"ð"},O=(e,n,r)=>({title:e,type:"number",unit:n,...r?{lower:!0}:{}}),he=(e,n)=>({title:e,type:"percent",unit:"%",...n?{lower:!0}:{}}),Pn=[O("Kontostand","â¬"),O("Umsatz pro Monat","â¬"),O("Offene Forderungen","â¬",!0)],wr={umsatz:[O("Umsatz pro Monat","â¬"),O("à Auftragswert","â¬"),O("Wiederkehrender Umsatz pro Monat","â¬"),O("Neue Aufträge pro Monat","Anzahl")],kunden:[O("Aktive Kunden","Anzahl"),O("Neukunden in 90 Tagen","Anzahl"),O("Kundentermine pro Woche","Anzahl"),O("Entscheiderkontakte pro Woche","Anzahl")],recruiting:[he("Besetzungsquote"),O("à Besetzungsdauer","Tage",!0),O("Qualifizierte Bewerbungen pro Woche","Anzahl"),O("Einstellungen pro Woche","Anzahl")],mitarbeiter_fuehrung:[he("Fluktuation",!0),O("1:1-Gespräche pro Monat","Anzahl"),O("Mitarbeitergespräche pro Monat","Anzahl"),he("Vertragsverlängerungsquote")],marge_cashflow:[O("Rohertrag pro Monat","â¬"),he("Rohertragsmarge"),O("Kontostand","â¬"),O("Offene Forderungen","â¬",!0),O("à Zahlungsdauer","Tage",!0)],prozesse_ki:[O("Automatisierte Prozesse","Anzahl"),O("Eingesparte Stunden pro Woche","Std"),O("Tools im Echtbetrieb","Anzahl"),he("Digitalisierte Workflows")],sichtbarkeit:[O("Newsletter-Abonnenten","Anzahl"),O("LinkedIn-Follower","Anzahl"),O("Reichweite pro Monat","Anzahl"),O("Veröffentlichungen pro Woche","Anzahl")],privat:[O("Sport-Einheiten pro Woche","Anzahl"),O("Schlafstunden pro Nacht","Std"),O("Lese-Minuten pro Tag","Min")]};function tv(e,n){const s=(e?Br[e]:[]).find(o=>o.title===n.title),a=s?s.krSuggestionsRich:wr[n.category]??[],i=new Set;return[...a,...Pn].filter(o=>i.has(o.title)?!1:(i.add(o.title),!0)).filter(o=>!n.krs.find(d=>d.title===o.title))}const nv=e=>e.map(n=>n.title),Br={unternehmer:[{title:"Umsatz & Liquidität steigern",category:"marge_cashflow",icon:"ð°",krSuggestionsRich:[O("Umsatz pro Monat","â¬"),O("Kontostand","â¬"),O("Offene Forderungen","â¬",!0),O("Wiederkehrender Umsatz pro Monat","â¬"),O("à Auftragswert","â¬")],krSuggestions:[]},{title:"Aktive Kunden & Aufträge ausbauen",category:"kunden",icon:"ð¤",krSuggestionsRich:[O("Aktive Kunden","Anzahl"),O("Laufende Aufträge","Anzahl"),O("Folgeaufträge in 90 Tagen","Anzahl"),O("Kundentermine pro Woche","Anzahl")],krSuggestions:[]},{title:"Programm-/VIP-Kunden gewinnen",category:"umsatz",icon:"â",krSuggestionsRich:[O("Programm-/VIP-Teilnehmer","Anzahl"),O("Geführte Verkaufsgespräche","Anzahl"),O("Versendete Angebote","Anzahl"),he("Abschlussquote"),O("Umsatz aus Programmen","â¬")],krSuggestions:[]},{title:"Reichweite & Community",category:"sichtbarkeit",icon:"ð£",krSuggestionsRich:[O("Newsletter-Abonnenten","Anzahl"),O("Community-Mitglieder","Anzahl"),O("Podcast-/Video-Abrufe pro Monat","Anzahl"),O("LinkedIn-Follower","Anzahl")],krSuggestions:[]},{title:"Prozesse automatisieren",category:"prozesse_ki",icon:"âï¸",krSuggestionsRich:[O("Automatisierte Abläufe","Anzahl"),O("Eingesparte Stunden pro Woche","Std"),O("Durchlaufzeit je Vorgang","Min",!0),he("Anteil automatisch erstellter Rechnungen")],krSuggestions:[]}],geschaeftsfuehrer:[{title:"Rohertrag steigern",category:"marge_cashflow",icon:"ð°",krSuggestionsRich:[O("Rohertrag pro Monat","â¬"),he("Rohertragsmarge"),O("à Verrechnungssatz","â¬"),O("Umsatz je Mitarbeiter","â¬")],krSuggestions:[]},{title:"Liquidität sichern",category:"marge_cashflow",icon:"ð¦",krSuggestionsRich:[O("Kontostand","â¬"),O("Offene Forderungen","â¬",!0),O("à Zahlungsdauer Kunden","Tage",!0),O("Ãberfällige Rechnungen","Anzahl",!0)],krSuggestions:[]},{title:"Neue Kunden strategisch gewinnen",category:"kunden",icon:"ð¯",krSuggestionsRich:[O("Neukunden","Anzahl"),O("Rahmenverträge","Anzahl"),O("Entscheidertermine pro Woche","Anzahl"),he("Umsatzanteil Top-5-Kunden",!0)],krSuggestions:[]},{title:"Führungsteam entlasten & entwickeln",category:"mitarbeiter_fuehrung",icon:"ð¤",krSuggestionsRich:[O("Delegierte Verantwortungsbereiche","Anzahl"),O("1:1-Gespräche pro Monat","Anzahl"),O("Eigene operative Stunden pro Woche","Std",!0)],krSuggestions:[]},{title:"Digitalisierung & KI einführen",category:"prozesse_ki",icon:"ð¤",krSuggestionsRich:[O("Tools im Echtbetrieb","Anzahl"),O("Geschulte Mitarbeiter","Anzahl"),O("Automatisierte Prozesse","Anzahl"),O("Eingesparte Stunden pro Woche","Std")],krSuggestions:[]}],niederlassungsleiter:[{title:"Besetzungsquote erhöhen",category:"recruiting",icon:"â ",krSuggestionsRich:[he("Besetzungsquote"),O("Offene Aufträge","Anzahl",!0),O("à Besetzungsdauer","Tage",!0),O("Besetzungen pro Woche","Anzahl")],krSuggestions:[]},{title:"Kundenbesuchs-Routine etablieren",category:"kunden",icon:"ð",krSuggestionsRich:[O("Kundenbesuche pro Woche","Anzahl"),O("Entscheiderkontakte pro Woche","Anzahl"),O("Neue Aufträge aus Besuchen","Anzahl")],krSuggestions:[]},{title:"Mitarbeiterbindung stärken",category:"mitarbeiter_fuehrung",icon:"â¤ï¸",krSuggestionsRich:[he("Fluktuation",!0),he("Krankenquote",!0),O("Mitarbeitergespräche pro Monat","Anzahl"),he("Vertragsverlängerungsquote")],krSuggestions:[]},{title:"Bestandskunden ausbauen",category:"umsatz",icon:"ð",krSuggestionsRich:[O("Umsatz Bestandskunden","â¬"),O("Zusatzaufträge je Kunde","Anzahl"),O("Reaktivierte Kunden","Anzahl")],krSuggestions:[]},{title:"Dispo & Recruiting verzahnen",category:"prozesse_ki",icon:"ð",krSuggestionsRich:[O("Zeit Auftrag â erster Vorschlag","Std",!0),O("Vorschläge je Auftrag","Anzahl"),O("Dokumentierte gemeinsame Prozesse","Anzahl")],krSuggestions:[]}],vertriebsleiter:[{title:"Mehr Entscheiderkontakte",category:"kunden",icon:"ð",krSuggestionsRich:[O("Entscheiderkontakte pro Woche","Anzahl"),O("Erstgespräche pro Woche","Anzahl"),O("Termine aus Kaltakquise","Anzahl")],krSuggestions:[]},{title:"Profilvertrieb konsequent umsetzen",category:"umsatz",icon:"ð",krSuggestionsRich:[O("Versendete Profile pro Woche","Anzahl"),he("Profil-zu-Termin-Quote"),O("Aufträge aus Profilen","Anzahl")],krSuggestions:[]},{title:"Mehr Rahmenverträge",category:"umsatz",icon:"ð",krSuggestionsRich:[O("Rahmenverträge","Anzahl"),O("Abgegebene Angebote","Anzahl"),he("Abschlussquote")],krSuggestions:[]},{title:"Angebots-Nachverfolgung erhöhen",category:"umsatz",icon:"ð",krSuggestionsRich:[he("Nachgefasste Angebote"),O("à Tage bis Nachfass","Tage",!0),O("Gewonnene Aufträge aus Nachfass","Anzahl")],krSuggestions:[]},{title:"Preis & Marge durchsetzen",category:"marge_cashflow",icon:"ð",krSuggestionsRich:[O("à Verrechnungssatz","â¬"),O("Durchgesetzte Preiserhöhungen","Anzahl"),he("Marge je Neuabschluss")],krSuggestions:[]}],recruitingleiter:[{title:"Bewerber-Reaktionszeit senken",category:"recruiting",icon:"â±ï¸",krSuggestionsRich:[O("Zeit Bewerbung â Erstkontakt","Std",!0),he("Erreichbarkeitsquote"),he("Same-Day-Kontakte")],krSuggestions:[]},{title:"Mehr qualifizierte Bewerber",category:"recruiting",icon:"ð¯",krSuggestionsRich:[O("Qualifizierte Bewerbungen pro Woche","Anzahl"),O("Bewerbungen je Kanal","Anzahl"),O("Kosten je Bewerbung","â¬",!0)],krSuggestions:[]},{title:"Absprung-/No-Show-Quote senken",category:"recruiting",icon:"ð«",krSuggestionsRich:[he("No-Show-Quote",!0),O("Absprünge in den ersten 30 Tagen","Anzahl",!0),he("Show-up-Quote Vorstellungsgespräche")],krSuggestions:[]},{title:"Active Sourcing als System",category:"recruiting",icon:"ð",krSuggestionsRich:[O("Direktansprachen pro Woche","Anzahl"),he("Antwortquote"),O("Einstellungen aus Sourcing","Anzahl")],krSuggestions:[]},{title:"KI im Recruiting einsetzen",category:"prozesse_ki",icon:"ð¤",krSuggestionsRich:[O("Automatisierte Prozessschritte","Anzahl"),O("Zeit je Bewerbungsprozess","Tage",!0),O("KI-Vorqualifizierungen","Anzahl")],krSuggestions:[]}],disponent:[{title:"Aufträge schneller besetzen",category:"recruiting",icon:"â¡",krSuggestionsRich:[O("à Besetzungsdauer","Tage",!0),O("Besetzungen pro Woche","Anzahl"),O("Vorschläge je Auftrag","Anzahl")],krSuggestions:[]},{title:"Mitarbeiter betreuen & binden",category:"mitarbeiter_fuehrung",icon:"ð¤",krSuggestionsRich:[O("Betreuungsgespräche pro Woche","Anzahl"),he("Fluktuation",!0),he("Folgegespräche nach Krankmeldung")],krSuggestions:[]},{title:"Kundenpflege im Tagesgeschäft",category:"kunden",icon:"âï¸",krSuggestionsRich:[O("Kundenkontakte pro Woche","Anzahl"),O("Zusatzaufträge aus Bestand","Anzahl")],krSuggestions:[]},{title:"Profilqualität erhöhen",category:"recruiting",icon:"ð",krSuggestionsRich:[he("Profil-zu-Vorstellungs-Quote"),he("Einsatzstarts ohne Reklamation")],krSuggestions:[]}],backoffice:[{title:"Abrechnungsfehler senken",category:"prozesse_ki",icon:"ð§¾",krSuggestionsRich:[he("Fehlerquote Abrechnung",!0),O("Reklamationen pro Monat","Anzahl",!0),he("Pünktliche Abrechnungen")],krSuggestions:[]},{title:"Forderungsmanagement verbessern",category:"marge_cashflow",icon:"ð¶",krSuggestionsRich:[O("Offene Forderungen","â¬",!0),O("à Zahlungsdauer","Tage",!0),he("Erledigte Mahnfälle")],krSuggestions:[]},{title:"Prozesse digitalisieren",category:"prozesse_ki",icon:"ð»",krSuggestionsRich:[O("Digitalisierte Prozesse","Anzahl"),he("Papierfreie Vorgänge"),O("Eingesparte Stunden pro Woche","Std")],krSuggestions:[]},{title:"Fristen & Compliance im Griff",category:"prozesse_ki",icon:"ð ",krSuggestionsRich:[O("FristverstöÃe","Anzahl",!0),he("Geprüfte Equal-Pay-Fälle"),O("Erledigte AÃG-Checks","Anzahl")],krSuggestions:[]}]};function Pc(e){return e.measure?e:{...e,measure:Jb(e.title)}}for(const e of Object.keys(Br))for(const n of Br[e])n.krSuggestionsRich=n.krSuggestionsRich.map(Pc),(!n.krSuggestions||n.krSuggestions.length===0)&&(n.krSuggestions=nv(n.krSuggestionsRich));for(const e of Object.keys(wr))wr[e]=wr[e].map(Pc);for(let e=0;e<Pn.length;e++)Pn[e].measure||(Pn[e]={...Pn[e],measure:"stock"});const rv=kd,sv=wd,av=jd;function Ai(e){var n;return((n=Bn.find(r=>r.id===e))==null?void 0:n.label)??e}function Ec({onApplied:e}={}){const{user:n}=ge(),r=mt(),{allTodos:s,tags:a}=de(),{activeObjectives:i}=He(),[l,o]=c.useState({todos:{},tags:{}}),[d,u]=c.useState(!1),[h,g]=c.useState(!1),[p,v]=c.useState(""),f=c.useMemo(()=>{const C={};if(i.forEach(_=>C[_.id]={projects:[],todos:[]}),i.length===0)return C;const A=(s??[]).filter(_=>!_.done&&!_.objective_id),j=new Map;for(const _ of A)_.tag&&j.set(_.tag,(j.get(_.tag)??0)+1);const R=new Set((a.data??[]).filter(_=>!_.objective_id).map(_=>_.name));for(const[_,K]of j){if(!R.has(_))continue;const ne=Ha(_,i,{category:_,categoryLabel:Ai});ne&&C[ne.objectiveId]&&C[ne.objectiveId].projects.push({tagName:_,count:K,reason:ne.reason})}const z=new Set(Object.values(C).flatMap(_=>_.projects.map(K=>K.tagName)));for(const _ of A){if(_.tag&&z.has(_.tag))continue;const K=Ha(_.text+" "+(_.tag??""),i,{category:_.tag??null,categoryLabel:Ai});K&&C[K.objectiveId]&&C[K.objectiveId].todos.length<50&&C[K.objectiveId].todos.push({todo:_,reason:K.reason})}return C},[s,a.data,i]),m=c.useMemo(()=>new Set(Object.values(f).flatMap(C=>C.projects.map(A=>A.tagName))),[f]),w=c.useMemo(()=>new Set(Object.values(f).flatMap(C=>C.todos.map(A=>A.todo.id))),[f]),x=c.useMemo(()=>(s??[]).filter(C=>!C.done&&!C.objective_id&&!(C.tag&&m.has(C.tag))&&!w.has(C.id)).slice(0,100),[s,m,w]),b=c.useMemo(()=>{const C=p.trim().toLowerCase();return C?x.filter(A=>(A.text+" "+(A.tag??"")).toLowerCase().includes(C)):x},[x,p]);function y(C,A){o(j=>{const R={...j.todos};return R[C]===A?delete R[C]:R[C]=A,{...j,todos:R}})}function P(C,A){o(j=>{const R={...j.tags};return R[C]===A?delete R[C]:R[C]=A,{...j,tags:R}})}function V(C,A){const j=f[C];j&&o(R=>{const z={...R.tags},_={...R.todos};for(const K of j.projects)A?z[K.tagName]=C:z[K.tagName]===C&&delete z[K.tagName];for(const K of j.todos)A?_[K.todo.id]=C:_[K.todo.id]===C&&delete _[K.todo.id];return{tags:z,todos:_}})}async function $(){u(!0);const C=Object.entries(l.tags),A=Object.entries(l.todos);try{for(const[R,z]of C){const _=(a.data??[]).find(K=>K.name===R);_&&await H.from("tags").update({objective_id:z}).eq("id",_.id)}const j={};for(const[R,z]of A)(j[z]??(j[z]=[])).push(R);for(const[R,z]of Object.entries(j))await H.from("todos").update({objective_id:R}).in("id",z);r.invalidateQueries({queryKey:["todos",n==null?void 0:n.id]}),r.invalidateQueries({queryKey:["tags",n==null?void 0:n.id]}),U.success(`${C.length} ${C.length===1?"Projekt":"Projekte"} + ${A.length} ${A.length===1?"Aufgabe":"Aufgaben"} verknüpft.`),o({todos:{},tags:{}}),e==null||e()}catch(j){U.error((j==null?void 0:j.message)??"Fehlgeschlagen")}finally{u(!1)}}const W=Object.keys(l.tags).length+Object.keys(l.todos).length,G=i.some(C=>{var A,j;return(((A=f[C.id])==null?void 0:A.projects.length)??0)+(((j=f[C.id])==null?void 0:j.todos.length)??0)>0}
342);return t.jsxs("div",{className:"space-y-3",children:[t.jsxs("div",{className:"rounded-lg border bg-muted/40 p-3 text-sm text-muted-foreground space-y-1",children:[t.jsx("p",{className:"text-foreground font-medium",children:"Was hier passiert"}),t.jsx("p",{children:"Deine offenen Aufgaben werden Deinen Fokus-Zielen zugeordnet. Nur was Du ankreuzt, wird verknüpft â es wird nichts verschoben, umbenannt oder gelöscht."}),t.jsx("p",{children:"Verknüpfte Aufgaben zählen auf Deinen Fokus ein und geben doppelte Punkte. Alles Weitere kannst Du jederzeit später beim Bearbeiten einer Aufgabe nachholen."})]}),!G&&x.length===0&&t.jsx("p",{className:"text-sm text-muted-foreground py-4 text-center",children:"Keine offenen Aufgaben gefunden. Alles weitere kannst Du beim Bearbeiten einer Aufgabe verknüpfen."}),i.map(C=>{const A=f[C.id];if(!A||A.projects.length===0&&A.todos.length===0)return null;const j=A.projects.length+A.todos.length,R=A.projects.every(z=>l.tags[z.tagName]===C.id)&&A.todos.every(z=>l.todos[z.todo.id]===C.id);return t.jsxs(qe,{className:"p-3 space-y-2",style:{borderLeft:`4px solid ${C.color??"#F15F22"}`},children:[t.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-2",children:[t.jsxs("div",{className:"font-display text-base flex items-center gap-2 min-w-0",children:[t.jsx("span",{children:C.icon??"ð¯"}),t.jsx("span",{className:"truncate",children:C.title}),t.jsxs("span",{className:"text-xs text-muted-foreground shrink-0",children:[j," ","Treffer"]})]}),t.jsx(S,{type:"button",variant:"outline",size:"sm",className:"h-7 text-xs shrink-0",onClick:()=>V(C.id,!R),children:R?"Auswahl aufheben":"Alle auswählen"})]}),A.projects.length>0&&t.jsxs("div",{className:"space-y-1",children:[t.jsx("div",{className:"text-xs uppercase tracking-wide text-muted-foreground",children:"Projekte"}),A.projects.map(z=>{const _=Bn.find(ne=>ne.id===z.tagName),K=l.tags[z.tagName]===C.id;return t.jsxs("label",{className:"flex items-start gap-2 p-2 rounded border border-border text-sm cursor-pointer hover:bg-muted/40",children:[t.jsx(cn,{checked:K,onCheckedChange:()=>P(z.tagName,C.id),className:"mt-0.5"}),t.jsxs("span",{className:"flex-1 min-w-0",children:["Projekt â",(_==null?void 0:_.label)??z.tagName,'" mit ',t.jsx("strong",{children:z.count})," ",z.count===1?"Aufgabe":"Aufgaben"," verknüpfen?",t.jsx("span",{className:"block text-[11px] text-muted-foreground",children:z.reason})]})]},z.tagName)})]}),A.todos.length>0&&t.jsxs("div",{className:"space-y-1",children:[t.jsxs("div",{className:"text-xs uppercase tracking-wide text-muted-foreground",children:["Einzelne Aufgaben (",A.todos.length,")"]}),t.jsx("div",{className:"max-h-48 overflow-y-auto space-y-1",children:A.todos.map(z=>{const _=l.todos[z.todo.id]===C.id;return t.jsxs("label",{className:"flex items-start gap-2 p-1.5 rounded text-xs cursor-pointer hover:bg-muted/40",children:[t.jsx(cn,{checked:_,onCheckedChange:()=>y(z.todo.id,C.id),className:"mt-0.5"}),t.jsxs("span",{className:"flex-1 min-w-0",children:[t.jsx("span",{className:"[overflow-wrap:anywhere]",children:z.todo.text}),t.jsx("span",{className:"block text-[11px] text-muted-foreground",children:z.reason})]})]},z.todo.id)})})]})]},C.id)}),x.length>0&&t.jsxs(rv,{open:h,onOpenChange:g,children:[t.jsxs(sv,{className:"w-full flex items-center justify-between gap-2 p-2 rounded border border-dashed text-xs text-muted-foreground hover:bg-muted/40",children:[t.jsxs("span",{children:["Ohne Vorschlag (",x.length," ",x.length===1?"Aufgabe":"Aufgaben",")"]}),t.jsx(Kr,{className:`h-3 w-3 transition ${h?"rotate-180":""}`})]}),t.jsxs(av,{className:"mt-2 space-y-2",children:[t.jsx(oe,{value:p,onChange:C=>v(C.target.value),placeholder:"Aufgabe suchenâ¦","aria-label":"Aufgaben ohne Vorschlag durchsuchen",className:"h-8 text-xs"}),b.length===0?t.jsxs("p",{className:"text-xs text-muted-foreground px-1",children:["Kein Treffer für â",p,'".']}):t.jsx("div",{className:"space-y-1 max-h-64 overflow-y-auto",children:b.map(C=>t.jsxs("div",{className:"flex items-center gap-2 p-1.5 rounded text-xs border border-border",children:[t.jsx("span",{className:"flex-1 min-w-0 truncate",children:C.text}),t.jsxs("select",{value:l.todos[C.id]??"","aria-label":`Fokus-Ziel für â${C.text}
342" wählen`,onChange:A=>{const j=A.target.value;o(R=>{const z={...R.todos};return j?z[C.id]=j:delete z[C.id],{...R,todos:z}})},className:"h-7 shrink-0 rounded border border-input bg-background text-xs px-1",children:[t.jsx("option",{value:"",children:"Fokus-Ziel wählenâ¦"}),i.map(A=>t.jsxs("option",{value:A.id,children:[A.icon," ",A.title]},A.id))]})]},C.id))})]})]}),t.jsx("div",{className:"flex items-center justify-end gap-2 pt-2",children:t.jsx(S,{className:"bg-gradient-brand",disabled:d||W===0,onClick:$,children:d?"Speichertâ¦":`Zuordnen (${W})`})})]})}function Sy({open:e,onOpenChange:n}){return t.jsx(Ne,{open:e,onOpenChange:n,children:t.jsxs(De,{className:"max-w-2xl max-h-[85vh] overflow-y-auto",children:[t.jsx(jt,{open:e}),t.jsxs(Ce,{children:[t.jsx(Ae,{children:"Bestehende Aufgaben Deinen Fokus-Zielen zuordnen"}),t.jsx(st,{children:"Stichwort-Vorschläge â Du entscheidest. Nichts wird ohne Deine Bestätigung verknüpft."})]}),t.jsx(Ec,{onApplied:()=>n(!1)}),t.jsx(Zt,{className:"gap-2",children:t.jsx(S,{variant:"ghost",onClick:()=>n(!1),children:"SchlieÃen"})})]})})}function iv({value:e,onChange:n,className:r}){const[s,a]=c.useState((e==null?void 0:e.end)??""),i=new Date,l=Ht(i);function o(p){const v=new Date(i);v.setDate(v.getDate()+p),n({start:l,end:Ht(v)})}function d(){n({start:l,end:Ht(vr(i))})}function u(p){a(p),p&&n({start:l,end:p})}const h=[{id:"90",label:"90 Tage ab heute",sub:"empfohlen",run:()=>o(90)},{id:"60",label:"60 Tage ab heute",sub:"kürzer & knackiger",run:()=>o(60)},{id:"30",label:"30 Tage ab heute",sub:"Sprint",run:()=>o(30)},{id:"q",label:"Bis Quartalsende",sub:Ht(vr(i)),run:d}];function g(p){return(e==null?void 0:e.end)===p}return t.jsxs("div",{className:Q("space-y-2",r),children:[t.jsx("div",{className:"text-sm font-medium",children:"Wie lange läuft Deine Fokus-Phase?"}),t.jsx("div",{className:"grid grid-cols-2 gap-2",children:h.map(p=>{const v=new Date(i);p.id==="90"?v.setDate(v.getDate()+90):p.id==="60"?v.setDate(v.getDate()+60):p.id==="30"?v.setDate(v.getDate()+30):p.id==="q"&&v.setTime(vr(i).getTime());const f=Ht(v),m=g(f);return t.jsxs("button",{type:"button",onClick:p.run,className:Q("p-2.5 rounded-md border text-left text-xs transition",m?"border-primary bg-primary/10 text-foreground":"border-border hover:bg-muted/40"),children:[t.jsx("div",{className:"font-medium",children:p.label}),t.jsx("div",{className:"text-muted-foreground text-[10px] mt-0.5",children:p.sub})]},p.id)})}),t.jsxs("div",{className:"space-y-1",children:[t.jsx("label",{className:"text-[11px] text-muted-foreground",children:"Oder eigenes Enddatum:"}),t.jsx(oe,{type:"date",value:s,min:l,onChange:p=>u(p.target.value),className:"h-9 text-sm"})]}),e&&t.jsxs("div",{className:"text-[11px] text-muted-foreground",children:["Aktuell: ",e.start," â ",e.end]})]})}const ov={step:1,position:null,drafts:[]};function lv(){return db()??ov}function cv({open:e,onOpenChange:n}){var T,I;const r=lv(),[s,a]=c.useState(r.step),[i,l]=c.useState(r.position??null),[o,d]=c.useState((r.drafts??[]).map(M=>({title:M.title,icon:M.icon,color:M.color,category:M.category,krs:(M.krs??[]).map(E=>({title:E.title,type:E.type,start:E.start,target:E.target,unit:E.unit,measure:E.measure??(E.type==="number"||E.type==="percent"?"stock":null)}))}))),{profile:u,update:h}=Ee(),{addObjective:g,addKeyResult:p}=He(),{allTodos:v}=de(),[f,m]=c.useState(!1),[w,x]=c.useState(r.savedObjIds??[]),b=(()=>{const M=new Date,E=new Date(M);return E.setDate(E.getDate()+90),{start:Ht(M),end:Ht(E)}})(),[y,P]=c.useState((T=u.data)!=null&&T.cycle_start_date&&((I=u.data)!=null&&I.cycle_end_date)?{start:u.data.cycle_start_date,end:u.data.cycle_end_date}:b),V=c.useRef(!1);c.useEffect(()=>(Or("wizard",e),()=>Or("wizard",!1)),[e]),c.useEffect(()=>{Ni({step:s,position:i,drafts:o,savedObjIds:w})},[s,i,o,w]);function $(){a(1),l(null),d([]),x([]),V.current=!1,Ni(null)}function W(M){if(o.length>=3){U.error("Drei Fokus-Ziele reichen. Entferne eines, wenn Du dieses aufnehmen willst.");return}d([...o,{title:M.title,icon:M.icon,category:M.category,color:mr[M.category],krs:[]}])}function G(){o.length>=3||d([...o,{title:"",icon:"ð¯",category:"umsatz",color:mr.umsatz,krs:[]}])}function C(M){d(o.filter((E,Z)=>Z!==M))}function A(M,E){d(o.map((Z,Y)=>Y===M?{...Z,...E,color:E.category?mr[E.category]:Z.color}:Z))}function j(M,E,Z){const Y=[...o[M].krs];Y[E]={...Y[E],...Z},A(M,{krs:Y})}function R(M,E){if(o[M].krs.length>=3)return;const Z=E.measure??"stock";A(M,{krs:[...o[M].krs,{title:E.title,type:E.type,measure:Z,start:"",target:"",unit:E.unit}]})}function z(M){o[M].krs.length>=3||A(M,{krs:[...o[M].krs,{title:"",type:"auto",measure:null,start:"",target:"",unit:""}]})}function _(M,E){A(M,{krs:o[M].krs.filter((Z,Y)=>Y!==E)})}function K(){for(const M of o)for(const E of M.krs)if(E.type==="number"||E.type==="percent"){if(!E.title.trim())return{ok:!1,reason:"Messpunkt ohne Titel"};if(!E.measure)return{ok:!1,reason:`Bei â${E.title}" fehlt die Mess-Art (Stand / Zähler / pro Woche).`};if(E.measure==="stock"){if(E.start.trim()===""||E.target.trim()==="")return{ok:!1,reason:`Bei â${E.title}" fehlt Start- oder Zielwert.`};if(isNaN(Number(E.start))||isNaN(Number(E.target)))return{ok:!1,reason:`Start/Ziel bei â${E.title}" muss eine Zahl sein.`}}else if(E.target.trim()===""||isNaN(Number(E.target)))return{ok:!1,reason:`Bei â${E.title}" fehlt das Ziel.`}}return{ok:!0}}async function ne(){if(w.length>0)return!0;
342if(V.current)return!1;V.current=!0,m(!0);try{const M={};i&&(M.focus_position=i),M.cycle_start_date=y.start,M.cycle_end_date=y.end,await h.mutateAsync(M);const E=[];for(const Z of o){if(!Z.title.trim())continue;const Y=await g.mutateAsync({title:Z.title.trim(),category:Z.category,icon:Z.icon,color:Z.color});E.push(Y.id);const L=Z.krs.length>0?Z.krs:[{title:"Verknüpfte Aufgaben erledigt",type:"auto",measure:null,start:"",target:"",unit:""}];for(const ee of L){const ie=ee.type==="number"||ee.type==="percent",J=ie?ee.measure??"stock":"stock",re=ee.target!==""?Number(ee.target):null;let le=null,Se=null,ze=null,_e=null;ie?J==="stock"?(le=ee.start!==""?Number(ee.start):null,Se=le,ze=re):J==="counter"?(le=0,Se=0,ze=re):(le=0,Se=0,ze=re,_e=[]):ee.type==="milestone"&&(_e=[]),await p.mutateAsync({objective_id:Y.id,title:ee.title||"Messpunkt",type:ee.type,measure_kind:J,start_value:le,target_value:ze,current_value:Se,unit:ee.unit||(ee.type==="percent"?"%":null),milestones:_e})}}x(E);try{const{supabase:Z}=await Pe(async()=>{const{supabase:L}=await import("./index-C9ebdKB5.js").then(ee=>ee.aW);return{supabase:L}},__vite__mapDeps([0,1])),{data:Y}=await Z.auth.getUser();if(Y.user){const{unlockFocusAchievement:L}=await Pe(async()=>{const{unlockFocusAchievement:ee}=await Promise.resolve().then(()=>gv);return{unlockFocusAchievement:ee}},void 0);await L(Y.user.id,"focus_set")}}catch{}return!0}catch(M){const E=String((M==null?void 0:M.message)??"");return E.includes("max_active_objectives_exceeded")?U.error("Du hast in dieser Phase bereits 3 aktive Fokus-Ziele â der Wizard wurde offenbar doppelt abgeschickt. Die Fokus-Ziele sind bereits angelegt."):U.error("Speichern fehlgeschlagen: "+(E||"Fehler")),!1}finally{V.current=!1,m(!1)}}async function F(){if(!((v??[]).filter(E=>E.objective_id&&w.includes(E.objective_id)).length===0&&!(typeof window>"u"||window.confirm('Wirklich ohne Zuordnung fortfahren? Du kannst es jederzeit im Fokus-Ziele-Tab über âBestehende Aufgaben zuordnen" nachholen.')))){m(!0);try{await h.mutateAsync({focus_onboarding_state:"done"}),mb();try{window.localStorage.setItem(`fokus-tagesstart:${Ue()}`,"1")}catch{}U.success("Deine Fokus-Ziele sind aktiv â Aufgaben zuordnen kannst Du hier jederzeit. ð¦"),n(!1),$(),setTimeout(()=>window.dispatchEvent(new CustomEvent("jump-to-tab",{detail:"hebel"})),150)}finally{m(!1)}}}const B=i?Br[i]:[];function D(M){return tv(i,M)}const N=K();return t.jsx(Ne,{open:e,onOpenChange:M=>{n(M)},children:t.jsxs(De,{className:"max-w-lg max-h-[90vh] overflow-y-auto p-0",onPointerDownOutside:M=>M.preventDefault(),onEscapeKeyDown:M=>M.preventDefault(),children:[t.jsx(jt,{open:e}),t.jsxs("div",{className:"sticky top-0 bg-background border-b p-4 z-10",children:[t.jsxs("div",{className:"flex items-center justify-between mb-2",children:[t.jsxs("span",{className:"text-xs text-muted-foreground",children:["Schritt ",s," von 5"]}),t.jsx("button",{onClick:()=>n(!1),className:"text-muted-foreground hover:text-foreground","aria-label":"SchlieÃen (Fortschritt bleibt erhalten)",children:t.jsx(Me,{className:"h-4 w-4"})})]}),t.jsx(or,{value:s/5*100,className:"h-1"})]}),t.jsxs("div",{className:"p-5 space-y-4",children:[s===1&&t.jsxs(t.Fragment,{children:[t.jsx("h2",{className:"font-display text-xl",children:"Deine Position"}),t.jsx("p",{className:"text-sm text-muted-foreground",children:"Wofür bekommst Du passende Fokus-Ziel-Vorlagen? (Nur für die Vorlagen-Auswahl â Deine Rollen Chef/Assistenz/⦠bleiben unverändert.)"}),t.jsx("div",{className:"grid gap-2",children:Object.keys(ks).map(M=>t.jsxs("button",{onClick:()=>l(M),className:Q("flex items-center gap-3 p-3 rounded-lg border text-left transition",i===M?"border-primary bg-primary/10":"border-border hover:bg-muted/40"),children:[t.jsx("span",{className:"text-2xl",children:ev[M]}),t.jsx("span",{className:"text-sm font-medium",children:ks[M]}),i===M&&t.jsx(tt,{className:"h-4 w-4 text-primary ml-auto"})]},M))})]}),s===2&&t.jsxs(t.Fragment,{children:[t.jsx("h2",{className:"font-display text-xl",children:"Was sind Deine Fokus-Ziele für diese Phase?"}),t.jsx("p",{className:"text-sm text-muted-foreground",children:"Maximal 3 wählen. Tippe eine Vorlage an oder leg ein eigenes Fokus-Ziel an."}),o.length>0&&t.jsxs("div",{className:"space-y-2",children:[t.jsxs("div",{className:"text-xs font-medium uppercase tracking-wide text-muted-foreground",children:["Deine Auswahl (",o.length,"/3)"]}),o.map((M,E)=>t.jsxs("div",{className:"p-3 rounded-lg border-l-4 border bg-card space-y-2",style:{borderLeftColor:M.color},children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(oe,{value:M.icon,onChange:Z=>A(E,{icon:Z.target.value}),className:"w-14 text-center"}),t.jsx(oe,{value:M.title,onChange:Z=>A(E,{title:Z.target.value}),placeholder:"Fokus-Ziel-Titel",className:"flex-1"}),t.jsx("button",{onClick:()=>C(E),className:"text-muted-foreground hover:text-destructive",children:t.jsx(Me,{className:"h-4 w-4"})})]}),t.jsx("select",{value:M.category,onChange:Z=>A(E,{category:Z.target.value}),className:"w-full h-9 rounded-md border border-input bg-background px-2 text-sm",children:Object.keys(hr).map(Z=>t.jsx("option",{value:Z,children:hr[Z]},Z))})]},E))]}),o.length<3&&t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"text-xs font-medium uppercase tracking-wide text-muted-foreground pt-2",children:["Vorlagen für ",i&&ks[i]]}),t.jsxs("div",{className:"grid gap-2",children:[B.map((M,E)=>t.jsxs("button",{onClick:()=>W(M),className:"flex items-center gap-3 p-3 rounded-lg border border-border hover:bg-muted/40 text-left transition",style:{borderLeftColor:mr[M.category],borderLeftWidth:3},children:[t.jsx("span",{className:"text-xl",children:M.icon}),t.jsxs("div",{className:"flex-1 min-w-0",children:[t.jsx("div",{className:"text-sm font-medium",children:M.title}),t.jsx("div",{className:"text-xs text-muted-foreground",children:hr[M.category]})]}),t.jsx(Tt,{className:"h-4 w-4 text-muted-foreground"})]},E)),t.jsxs("button",{onClick:G,className:"flex items-center gap-3 p-3 rounded-lg border-2 border-dashed border-border hover:bg-muted/40 text-left transition",children:[t.jsx("span",{className:"text-xl",children:"â¨"}),t.jsxs("div",{className:"flex-1",children:[t.jsx("div",{className:"text-sm font-medium",children:"Eigenes Fokus-Ziel"}),t.jsx("div",{className:"text-xs text-muted-foreground",children:"Titel, Icon und Kategorie frei wählen"})]})]})]})]})]}),s===3&&t.jsxs(t.Fragment,{children:[t.jsx("h2",{className:"font-display text-xl",children:"Woran merkst Du, dass es besser wird?"}),t.jsxs("p",{className:"text-sm text-muted-foreground",children:["Pro Fokus-Ziel 1â3 Messpunkte. Es gibt drei Mess-Arten: ",t.jsx("b",{children:"ð Stand"})," (heute â in 90 Tagen),",t.jsx("b",{children:" ð¢ Zähler"})," (ab jetzt zählen) und ",t.jsx("b",{children:"ð
pro Woche"})," (Routine halten)."]}),t.jsxs("div",{className:"rounded-md bg-muted/40 p-3 text-xs",children:[t.jsx("div",{className:"font-medium mb-1",children:"Beispiele:"}),t.jsx("div",{children:"ð Kontostand heute 10.000 ⬠â in 90 Tagen 25.000 â¬"}
342),t.jsx("div",{children:"ð¢ 20 Neukunden in den nächsten 90 Tagen"}),t.jsx("div",{children:"ð
10 Kundentermine pro Woche"})]}),o.map((M,E)=>{const Z=D(M);return t.jsxs("div",{className:"p-3 rounded-lg border-l-4 border bg-card space-y-3",style:{borderLeftColor:M.color},children:[t.jsxs("div",{className:"font-medium text-sm",children:[M.icon," ",M.title||"Neues Fokus-Ziel"]}),M.krs.map((Y,L)=>{const ee=Y.type==="number"||Y.type==="percent",ie=ee&&!Y.measure;return t.jsxs("div",{className:"rounded-md border border-border p-2 space-y-2 bg-background/40",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(oe,{value:Y.title,onChange:J=>j(E,L,{title:J.target.value}),placeholder:"Messpunkt-Titel",className:"flex-1"}),t.jsxs("select",{value:Y.type,onChange:J=>{const re=J.target.value,le=re==="number"||re==="percent"?Y.measure??null:null;j(E,L,{type:re,measure:le})},className:"h-9 rounded-md border border-input bg-background px-2 text-xs",children:[t.jsx("option",{value:"auto",children:"Auto"}),t.jsx("option",{value:"number",children:"Zahl"}),t.jsx("option",{value:"percent",children:"Prozent"}),t.jsx("option",{value:"milestone",children:"Meilensteine"})]}),t.jsx("button",{onClick:()=>_(E,L),className:"text-muted-foreground hover:text-destructive","aria-label":"Entfernen",children:t.jsx(Me,{className:"h-4 w-4"})})]}),ie&&t.jsxs("div",{className:"space-y-2",children:[t.jsx("div",{className:"text-[11px] font-medium",children:"Wie misst Du das?"}),t.jsx("div",{className:"grid gap-1.5",children:[{v:"stock",t:"ð Stand",h:"heute vs. in 90 Tagen (z. B. Kontostand, aktive Kunden)"},{v:"counter",t:"ð¢ Zähler",h:"ab jetzt zählen, Start = 0 (z. B. Neukunden, Angebote)"},{v:"weekly_rate",t:"ð
Pro Woche",h:"Routine halten (z. B. Kundenbesuche pro Woche)"}].map(J=>t.jsxs("button",{onClick:()=>j(E,L,{measure:J.v}),className:"text-left p-2 rounded-md border border-border hover:bg-muted/40",children:[t.jsx("div",{className:"text-xs font-medium",children:J.t}),t.jsx("div",{className:"text-[10px] text-muted-foreground",children:J.h})]},J.v))})]}),ee&&Y.measure==="stock"&&t.jsxs("div",{className:"space-y-1.5",children:[t.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[t.jsxs("div",{children:[t.jsx("label",{className:"text-[10px] uppercase tracking-wide text-muted-foreground block mb-0.5",children:"Wo stehst Du HEUTE? *"}),t.jsx(oe,{type:"number",inputMode:"decimal",value:Y.start,onChange:J=>j(E,L,{start:J.target.value}),placeholder:"z. B. 10000"})]}),t.jsxs("div",{children:[t.jsx("label",{className:"text-[10px] uppercase tracking-wide text-muted-foreground block mb-0.5",children:"In 90 Tagen *"}),t.jsx(oe,{type:"number",inputMode:"decimal",value:Y.target,onChange:J=>j(E,L,{target:J.target.value}),placeholder:"z. B. 25000"})]})]}),t.jsx(oe,{value:Y.unit,onChange:J=>j(E,L,{unit:J.target.value}),placeholder:"Einheit (â¬, %, Kunden, Stück â¦)",className:"h-8 text-xs"}),t.jsx("button",{type:"button",onClick:()=>j(E,L,{measure:null}),className:"text-[10px] text-muted-foreground hover:underline",children:"Mess-Art ändern"})]}),ee&&Y.measure==="counter"&&t.jsxs("div",{className:"space-y-1.5",children:[t.jsx("label",{className:"text-[10px] uppercase tracking-wide text-muted-foreground block mb-0.5",children:"Wie viele in den 90 Tagen? *"}),t.jsx(oe,{type:"number",inputMode:"decimal",value:Y.target,onChange:J=>j(E,L,{target:J.target.value}),placeholder:"z. B. 20"}),t.jsx(oe,{value:Y.unit,onChange:J=>j(E,L,{unit:J.target.value}),placeholder:"Einheit (Anzahl, Stück â¦)",className:"h-8 text-xs"}),t.jsx("p",{className:"text-[10px] text-muted-foreground",children:"Start = 0. Wird ab heute hochgezählt."}),t.jsx("button",{type:"button",onClick:()=>j(E,L,{measure:null}),className:"text-[10px] text-muted-foreground hover:underline",children:"Mess-Art ändern"})]}),ee&&Y.measure==="weekly_rate"&&t.jsxs("div",{className:"space-y-1.5",children:[t.jsx("label",{className:"text-[10px] uppercase tracking-wide text-muted-foreground block mb-0.5",children:"Wie viele pro Woche? *"}),t.jsx(oe,{type:"number",inputMode:"decimal",value:Y.target,onCh
342ange:J=>j(E,L,{target:J.target.value}),placeholder:"z. B. 10"}),t.jsx(oe,{value:Y.unit,onChange:J=>j(E,L,{unit:J.target.value}),placeholder:"Einheit (Anzahl, Termine â¦)",className:"h-8 text-xs"}),t.jsx("p",{className:"text-[10px] text-muted-foreground",children:"Wochenzähler startet jeden Montag bei 0."}),t.jsx("button",{type:"button",onClick:()=>j(E,L,{measure:null}),className:"text-[10px] text-muted-foreground hover:underline",children:"Mess-Art ändern"})]}),Y.type==="auto"&&t.jsx("p",{className:"text-[10px] text-muted-foreground",children:"Fortschritt = Anteil erledigter verknüpfter Aufgaben."}),Y.type==="milestone"&&t.jsx("p",{className:"text-[10px] text-muted-foreground",children:"Meilensteine kannst Du später im Fokus-Ziele-Tab pflegen."})]},L)}),M.krs.length<3&&t.jsxs(t.Fragment,{children:[Z.length>0&&t.jsx("div",{className:"flex flex-wrap gap-1.5",children:Z.slice(0,12).map(Y=>{const L=Y.measure,ee=L==="counter"?"ð¢":L==="weekly_rate"?"ð
":"ð";return t.jsxs("button",{onClick:()=>R(E,Y),className:"text-xs px-2 py-1 rounded-full border border-border hover:bg-muted/40 max-w-full text-left",children:["+ ",ee," ",Y.title," ",t.jsxs("span",{className:"text-muted-foreground",children:["(",Y.unit,Y.lower?" â":"",")"]})]},Y.title)})}),t.jsx("button",{onClick:()=>z(E),className:"text-xs text-primary hover:underline",children:"+ Eigener Messpunkt"})]})]},E)}
342),!N.ok&&t.jsx("p",{className:"text-xs text-rose-600 dark:text-rose-400",children:N.reason})]}),s===4&&t.jsxs(t.Fragment,{children:[t.jsx("h2",{className:"font-display text-xl",children:"Dein Fokus-Deal"}),t.jsx("div",{className:"p-3 rounded-lg border bg-card",children:t.jsx(iv,{value:y,onChange:P})}),t.jsx("div",{className:"space-y-2",children:o.map((M,E)=>t.jsxs("div",{className:"p-3 rounded-lg border-l-4 border bg-card",style:{borderLeftColor:M.color},children:[t.jsxs("div",{className:"font-medium text-sm",children:[M.icon," ",M.title]}),t.jsxs("div",{className:"text-xs text-muted-foreground",children:[hr[M.category]," · ",M.krs.length||"Auto"," Messpunkt",M.krs.length===1?"":"e"]}),M.krs.filter(Z=>Z.type==="number"||Z.type==="percent").map((Z,Y)=>t.jsxs("div",{className:"text-xs text-muted-foreground mt-1",children:["⢠",Z.title,": ",Z.measure==="counter"?`0 â ${Z.target} ${Z.unit} (Zähler)`:Z.measure==="weekly_rate"?`${Z.target} ${Z.unit} pro Woche`:`${Z.start} â ${Z.target} ${Z.unit}`]},Y))]},E))}),t.jsxs("p",{className:"text-sm text-muted-foreground leading-relaxed",children:["Im nächsten Schritt ordnest Du Deine bestehenden offenen Aufgaben Deinen ",Gn," zu â das geht in 1 Minute. Danach läuft Dein Fokus."]})]}),s===5&&t.jsxs(t.Fragment,{children:[t.jsxs("h2",{className:"font-display text-xl",children:["Ordne Deine offenen Aufgaben Deinen ",Gn," zu"]}),t.jsx("p",{className:"text-sm text-muted-foreground",children:"Projekte zuerst (1 Checkbox = ganzes Projekt), dann einzelne Treffer. Was nicht passt, lässt Du einfach weg â Du kannst Aufgaben jederzeit später beim Bearbeiten verknüpfen."}),w.length>0?t.jsx(Ec,{}):t.jsx("p",{className:"text-xs text-muted-foreground",children:"Lade Vorschläge â¦"})]})]}),t.jsxs("div",{className:"sticky bottom-0 bg-background border-t p-4 flex items-center justify-between gap-2",children:[s>1?t.jsxs(S,{variant:"ghost",size:"sm",onClick:()=>a(M=>M-1),disabled:f,children:[t.jsx(_d,{className:"h-4 w-4 mr-1"})," Zurück"]}):t.jsx(S,{variant:"ghost",size:"sm",onClick:()=>n(!1),children:"Später"}),s===1&&t.jsxs(S,{size:"sm",onClick:()=>a(2),disabled:!i,children:["Weiter ",t.jsx(nn,{className:"h-4 w-4 ml-1"})]}),s===2&&t.jsxs(S,{size:"sm",onClick:()=>a(3),disabled:o.length===0,children:["Weiter ",t.jsx(nn,{className:"h-4 w-4 ml-1"})]}),s===3&&t.jsxs(S,{size:"sm",onClick:()=>N.ok&&a(4),disabled:!N.ok,children:["Weiter ",t.jsx(nn,{className:"h-4 w-4 ml-1"})]}),s===4&&t.jsxs(S,{size:"sm",disabled:f,onClick:async()=>{await ne()&&a(5)},children:[f?"Speichereâ¦":"Fokus-Ziele speichern & weiter"," ",t.jsx(nn,{className:"h-4 w-4 ml-1"})]}),s===5&&t.jsx(S,{size:"sm",onClick:F,disabled:f,children:f?"Speichereâ¦":"Fokus aktivieren ð¦"})]})]})})}function dv(){var o;const{profile:e,update:n}=Ee(),[r,s]=c.useState(!1),[a,i]=c.useState(!1),l=c.useRef(!1);return c.useEffect(()=>{e.data&&e.data.focus_v2_enabled&&e.data.focus_onboarding_state==="not_started"&&(l.current||ub()||(l.current=!0,Pt("focus-story",Et.ONBOARDING,()=>{hb(),s(!0)})))},[e.data]),c.useEffect(()=>{const d=()=>{var u;(u=e.data)!=null&&u.focus_v2_enabled&&i(!0)};return window.addEventListener("open-focus-wizard",d),()=>window.removeEventListener("open-focus-wizard",d)},[(o=e.data)==null?void 0:o.focus_v2_enabled]),t.jsxs(t.Fragment,{children:[t.jsx(Kb,{open:r,onStart:()=>{s(!1),i(!0)},onSkip:async()=>{s(!1),await n.mutateAsync({focus_onboarding_state:"skipped"})}}),t.jsx(cv,{open:a,onOpenChange:i})]})}function uv(){var s;const{profile:e}=Ee(),[n,r]=c.useState(!1);return!((s=e.data)!=null&&s.focus_v2_enabled)||e.data.focus_onboarding_state!=="skipped"||n?null:t.jsxs("div",{className:"mb-3 flex items-center gap-2 p-3 rounded-lg border border-primary/30 bg-primary/10 text-sm",children:[t.jsx(Bd,{className:"h-4 w-4 text-primary shrink-0"}),t.jsx("button",{onClick:()=>window.dispatchEvent(new Event("open-focus-wizard")),className:"flex-1 text-left hover:underline",children:"ð§ Deine Fokus-Ziele warten â Grundkonfiguration in 5 Min"}),t.jsx("button",{onClick:()=>r(!0),className:"text-muted-foreground hover:text-foreground",children:t.jsx(Me,{className:"h-4 w-4"})})]})}function Ia(e=new Date){const n=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate())),r=n.getUTCDay()||7;n.setUTCDate(n.getUTCDate()+4-r);const s=new Date(Date.UTC(n.getUTCFullYear(),0,1)),a=Math.ceil(((+n-+s)/864e5+1)/7);return`${n.getUTCFullYear()}-W${String(a).padStart(2,"0")}`}function Wr(e=new Date){const n=Ia(e);return Number(n.split("-W")[1])}function hv(e=new Date){const n=e.getDay();return n===1||n===2||n===3}function mv(e=new Date){const n=e.getDay();return n===5||n===6||n===0||n===1}const fv="fokus_checkin_dismissed";function Rc(e,n){return`${fv}:${e}:${n}`}function Ic(e,n){try{return localStorage.getItem(Rc(e,n))==="1"}catch{return!1}}function on(e,n){try{localStorage.setItem(Rc(e,n),"1")}catch{}}async function Zn(e,n){if(!e)return!1;const{data:r}=await H.from("achievements").select("id").eq("user_id",e).eq("achievement_id",n).maybeSingle();if(r)return!1;const{error:s}=await H.from("achievements").insert({user_id:e,achievement_id:n});return!s}const gv=Object.freeze(Object.defineProperty({__proto__:null,unlockFocusAchievement:Zn},Symbol.toStringTag,{value:"Module"})),pv={green:"bg-emerald-500",yellow:"bg-amber-500",red:"bg-rose-500"},xv={green:"yellow",yellow:"red",red:"green"};function bv(){var G,C,A;const{user:e}=ge(),{profile:n}=Ee(),{activeObjectives:r,keyResults:s,updateKeyResult:a,updateObjective:i}=He(),{allTodos:l,unlockAchievement:o}=de(),[d,u]=c.useState(!1),[h,g]=c.useState(0),[p,v]=c.useState({}),f=Ia(),m=(G=n.data)==null?void 0:G.focus_v2_enabled,w=((C=n.data)==null?void 0:C.focus_onboarding_state)==="done",x=r.length>0;c.useEffect(()=>{!m||!e||!w||!x||ns()||hv()&&(Ic("monday",f)||vn().weekChecks&&(async()=>{const{data:j}=await H.from("okr_checkins").select("id").eq("user_id",e.id).eq("cycle",gn()).eq("week",Wr()).eq("kind","monday").maybeSingle();j||Pt("monday-checkin",Et.OTHER,()=>{Gt()||u(!0)})})())},[m,e,f,w,x]);const b=r,y=b[h],P=(s.data??[]).filter(j=>j.objective_id===(y==null?void 0:y.id)),V=(l??[]).filter(j=>!j.done&&j.objective_id===(y==null?void 0:y.id));function $(j){y&&v(R=>{var z,_;return{...R,[y.id]:{selectedTaskIds:((z=R[y.id])==null?void 0:z.selectedTaskIds)??V.slice(0,3).map(K=>
342K.id),newTaskTexts:((_=R[y.id])==null?void 0:_.newTaskTexts)??[],...j}}})}async function W(){if(!e)return;const j=b.every(R=>R.confidence==="green");for(const R of b){const z=p[R.id];if(z)for(const _ of z.newTaskTexts.filter(Boolean))await H.from("todos").insert({user_id:e.id,text:_,prio:"A",tag:null,important:!0,objective_id:R.id,source:"web"})}await H.from("okr_checkins").insert({user_id:e.id,cycle:gn(),week:Wr(),kind:"monday",answers:p}),j&&b.length>0&&await Zn(e.id,"focus_on_course"),U.success("Montags-Check abgeschlossen · +15 Punkte ð¯"),u(!1),g(0)}return!m||b.length===0?null:t.jsx(Ne,{open:d,onOpenChange:j=>{j||(on("monday",f),u(!1))},children:t.jsxs(De,{className:"max-w-lg",children:[t.jsx(jt,{open:d}),t.jsxs(Ce,{children:[t.jsxs(Ae,{children:[Rf," · Fokus-Ziel ",h+1," / ",b.length]}),t.jsx(st,{children:"3 Minuten. Was muss diese Woche passieren?"})]}),y&&t.jsxs("div",{className:"space-y-4",children:[t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsx("span",{className:"text-2xl",children:y.icon}),t.jsxs("div",{className:"flex-1 min-w-0",children:[t.jsx("div",{className:"font-medium truncate",children:y.title}),t.jsx(or,{value:yr(y,P)*100,className:"h-2 mt-1"})]}),t.jsx("button",{onClick:()=>i.mutate({id:y.id,confidence:xv[y.confidence]}),"aria-label":"Ampel umschalten",className:Q("h-4 w-4 rounded-full",pv[y.confidence])})]}),t.jsxs("div",{className:"space-y-2",children:[t.jsx("div",{className:"text-xs font-medium text-muted-foreground",children:"Messpunkte aktualisieren"}),P.length===0&&t.jsx("p",{className:"text-xs text-muted-foreground",children:"Keine Messpunkte definiert."}),P.map(j=>{var R,z;return t.jsx(vv,{kr:j,cycleStart:((R=n.data)==null?void 0:R.cycle_start_date)??null,cycleEnd:((z=n.data)==null?void 0:z.cycle_end_date)??null,fallbackText:`Fortschritt: ${l.filter(_=>_.key_result_id===j.id&&_.done).length} von ${l.filter(_=>_.key_result_id===j.id).length} ${l.filter(_=>_.key_result_id===j.id).length===1?"Aufgabe":"Aufgaben"}`,onUpdate:_=>{a.mutate({id:j.id,..._}),typeof _.current_value<"u"&&o("measure_first")}},j.id)})]}),t.jsxs("div",{className:"space-y-2",children:[t.jsx("div",{className:"text-xs font-medium text-muted-foreground",children:"Was muss diese Woche passieren?"}),V.slice(0,5).map(j=>{var z;const R=(((z=p[y.id])==null?void 0:z.selectedTaskIds)??V.slice(0,3).map(_=>_.id)).includes(j.id);return t.jsxs("label",{className:"flex items-start gap-2 text-sm cursor-pointer",children:[t.jsx("input",{type:"checkbox",checked:R,className:"mt-1 shrink-0",onChange:_=>{var ne;const K=((ne=p[y.id])==null?void 0:ne.selectedTaskIds)??V.slice(0,3).map(F=>F.id);$({selectedTaskIds:_.target.checked?[...K,j.id]:K.filter(F=>
342F!==j.id)})}}),t.jsx("span",{className:"flex-1 min-w-0 [overflow-wrap:anywhere] break-all",children:j.text})]},j.id)}),t.jsx(oe,{placeholder:"Neue Aufgabe für diese Wocheâ¦",onKeyDown:j=>{var R;if(j.key==="Enter"){const z=j.target.value.trim();if(!z)return;const _=((R=p[y.id])==null?void 0:R.newTaskTexts)??[];$({newTaskTexts:[..._,z]}),j.target.value=""}}}),(((A=p[y.id])==null?void 0:A.newTaskTexts)??[]).map((j,R)=>t.jsxs("div",{className:"text-xs text-muted-foreground",children:["+ ",j]},R))]})]}),t.jsxs(Zt,{className:"gap-2 flex-wrap",children:[t.jsx(S,{variant:"ghost",onClick:()=>{on("monday",f),u(!1)},children:"Später"}),t.jsx(S,{variant:"ghost",className:"opacity-70",onClick:()=>{Hr("monday-checkin"),on("monday",f),u(!1)},children:"Nicht mehr zeigen"}),h>0&&t.jsx(S,{variant:"outline",onClick:()=>g(h-1),children:"Zurück"}),h<b.length-1?t.jsx(S,{onClick:()=>g(h+1),children:"Weiter"}):t.jsx(S,{onClick:W,children:"Fertig · +15"})]})]})})}function vv({kr:e,fallbackText:n,onUpdate:r,cycleStart:s,cycleEnd:a}){const i=e.measure_kind??"stock",[l,o]=c.useState(e.current_value!=null?String(e.current_value):""),[d,u]=c.useState(!1);c.useEffect(()=>{d||o(e.current_value!=null?String(e.current_value):"")},[e.current_value,d]);function h(){const f=l.trim();if(f===""){r({current_value:null});return}const m=Number(f.replace(",","."));Number.isNaN(m)||m!==(e.current_value??null)&&r({current_value:m})}const g=Xb(e,s,a),p=Number(e.current_value??0),v=g!=null?t.jsxs("div",{className:"text-[11px] text-muted-foreground",children:["Soll bis jetzt: ",t.jsx("b",{children:Math.round(g*10)/10})," · Ist: ",t.jsx("b",{children:p})," ",p>=g?t.jsx("span",{className:"text-emerald-600",children:"â²"}):t.jsx("span",{className:"text-amber-600",children:"â¼"})]}):null;if(e.type==="auto")return t.jsxs("div",{className:"text-xs text-muted-foreground rounded bg-muted/40 p-2",children:[e.title," â ",n]});if(i==="weekly_rate"){const f=Qb(e),m=Number(e.target_value??0);return t.jsxs("div",{className:"rounded bg-muted/40 p-2 text-xs space-y-1",children:[t.jsxs("div",{children:["ð
",e.title]}),t.jsxs("div",{className:"text-muted-foreground",children:["Vorwoche: Soll ",m," â geschafft ",f?f.count:0]}),v]})}return e.type==="milestone"?t.jsxs("div",{className:"rounded bg-muted/40 p-2 space-y-1",children:[t.jsx("div",{className:"text-xs",children:e.title}),(e.milestones??[]).map((f,m)=>t.jsxs("label",{className:"flex items-center gap-2 text-xs",children:[t.jsx("input",{type:"checkbox",checked:!!f.done,onChange:()=>{const w=[...e.milestones??[]];w[m]={...w[m],done:!w[m].done},r({milestones:w})}}),t.jsx("span",{className:f.done?"line-through text-muted-foreground":"",children:f.text})]},m))]}):t.jsxs("div",{className:"rounded bg-muted/40 p-2 space-y-1",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("span",{className:"text-xs flex-1 min-w-0 truncate",children:e.title}),t.jsx(oe,{type:"text",inputMode:"decimal",value:l,onChange:f=>o(f.target.value),onFocus:()=>u(!0),onBlur:()=>{u(!1),h()},onKeyDown:f=>{f.key==="Enter"&&(f.preventDefault(),f.target.blur())},className:"h-7 w-20 text-sm text-center"}),t.jsxs("span",{className:"text-xs text-muted-foreground",children:[e.type==="percent"?"%":e.unit||""," ",e.target_value!=null&&`/ ${e.target_value}`]})]}),v]})}const yv=new Set(["umsatz","kunden","marge_cashflow"]);function kv(e,n){const r=new Date,s=new Date(r);s.setDate(r.getDate()-7),s.setHours(0,0,0,0);const a=(e??[]).filter(y=>y.done&&y.done_at&&new Date(y.done_at)>=s),i=a.reduce((y,P)=>y+(Wn[P.prio]??0)*(P.focus_doubled?2:1)+(P.important?5:0),0),l=n.map(y=>y.id),o=a.filter(y=>y.objective_id&&l.includes(y.objective_id)),d=a.filter(y=>y.is_firefighter),u=a.filter(y=>y.recurrence),h=a.length-o.length-d.length-u.length,g=a.length?Math.round(o.length/a.length*100):0,p=new Set(n.filter(y=>yv.has(y.category)).map(y=>y.id)),v=o.filter(y=>p.has(y.objective_id)).reduce((y,P)=>y+(Wn[P.prio]??0)*2,0),f=i?Math.round(v/i*100):0,m=n.map(y=>({o:y,count:o.filter(P=>P.objective_id===y.id).length})),w=[...m].sort((y,P)=>
342P.count-y.count)[0],x=m.filter(y=>y.count===0)[0],b=a.length?Math.round(d.length/a.length*100):0;return{totalDone:a.length,hebelDone:o.length,fireDone:d.length,routineDone:u.length,otherDone:h,focusQuota:g,cashflowShare:f,strongest:w,weakest:x,fireShare:b}}function wv(){var D,N;const{user:e}=ge(),{profile:n}=Ee(),{activeObjectives:r}=He(),{allTodos:s}=de(),{activeWorkspaceId:a}=Bi(),i=mt(),l=Ia(),o=`friday-review:${(e==null?void 0:e.id)??"anon"}:${l}`,d=Lh(o),[u,h]=c.useState((d==null?void 0:d.open)??!1),[g,p]=c.useState((d==null?void 0:d.step)??0),[v,f]=c.useState((d==null?void 0:d.fireAnswers)??{}),[m,w]=c.useState((d==null?void 0:d.q1)??""),[x,b]=c.useState((d==null?void 0:d.q2)??""),[y,P]=c.useState((d==null?void 0:d.q3)??""),[V,$]=c.useState(!1);c.useEffect(()=>{Wh(o,{open:u,step:g,q1:m,q2:x,q3:y,fireAnswers:v})},[o,u,g,m,x,y,v]),Jo(u);const W=h,G=p,C=f,A=w,j=b,R=P,z=(D=n.data)==null?void 0:D.focus_v2_enabled,_=((N=n.data)==null?void 0:N.focus_onboarding_state)==="done",K=r.length>0;c.useEffect(()=>{!z||!e||!_||!K||ns()||mv()&&(Ic("friday",l)||vn().weekChecks&&(async()=>{const{data:T}=await H.from("okr_checkins").select("id").eq("user_id",e.id).eq("cycle",gn()).eq("week",Wr()).eq("kind","friday").maybeSingle();T||Pt("friday-review",Et.OTHER,()=>{Gt()||W(!0)})})())},[z,e,l,_,K]);const ne=c.useMemo(()=>kv(s??[],r),[s,r]),F=c.useMemo(()=>{const T=new Date;return T.setDate(T.getDate()-7),T.setHours(0,0,0,0),(s??[]).filter(I=>I.is_firefighter&&new Date(I.created_at)>=T)},[s]);async function B(){if(!(!e||V||!m.trim()&&!x.trim()&&!y.trim()&&Object.keys(v).length===0&&!(typeof window>"u"||window.confirm("Ohne Eintrag abschlieÃen?")))){$(!0);try{const I=Wr(),M=gn(),{data:E}=await H.from("okr_checkins").select("id").eq("user_id",e.id).eq("cycle",M).eq("week",I).eq("kind","friday").maybeSingle();if(E){U("Diese Woche schon abgeschlossen"),ls(o),W(!1),G(0);return}const{error:Z}=await H.from("okr_checkins").insert({user_id:e.id,cycle:M,week:I,kind:"friday",answers:{fireAnswers:v,q1:m,q2:x,q3:y,report:ne}});if(Z){U("Diese Woche schon abgeschlossen"),ls(o),W(!1),G(0);return}ne.fireShare<20&&(ne.fireDone>0||ne.totalDone>=5)&&await Zn(e.id,"focus_firefighter_tamed");const Y=`ð Freitags-Realitätscheck (KW ${I})`,{data:L}=await H.from("todos").select("id").eq("user_id",e.id).eq("text",Y).maybeSingle();L||(await H.from("todos").insert({user_id:e.id,workspace_id:a,text:Y,prio:"A",tag:"SYSTEM",important:!1,done:!0,done_at:new Date().toISOString(),source:"system"}),i.invalidateQueries({queryKey:["todos",e.id]}),i.invalidateQueries({queryKey:["activity"]})),U.success("Freitags-Realitätscheck abgeschlossen · +10 Punkte â
"),ls(o),W(!1),G(0)}finally{$(!1)}}}return z?t.jsx(Ne,{open:u,onOpenChange:T=>{T||(on("friday",l),W(!1))},children:t.jsxs(De,{className:"max-w-lg max-h-[85vh] overflow-y-auto",onInteractOutside:T=>T.preventDefault(),children:[t.jsxs(Ce,{children:[t.jsx(Ae,{children:If}),t.jsx(st,{children:"2 Minuten. Was hat diese Woche wirklich Wirkung gemacht?"})]}),g===0&&t.jsxs("div",{className:"space-y-3",children:[t.jsx("div",{className:"text-sm font-medium",children:"Feuerwehr-Review"}),F.length===0&&t.jsx("p",{className:"text-xs text-muted-foreground",children:"Keine Feuerwehr-Aufgaben diese Woche. ð"}),F.map(T=>t.jsxs(qe,{className:"p-3 space-y-2",children:[t.jsxs("div",{className:"text-sm",children:["ð ",T.text]}),t.jsx("div",{className:"text-xs text-muted-foreground",children:"War das wirklich wichtig â oder nur laut?"}),t.jsx("div",{className:"flex gap-2 flex-wrap",children:["wichtig","laut","andere"].map(I=>t.jsx(S,{size:"sm",variant:v[T.id]===I?"default":"outline",onClick:()=>C(M=>({...M,[T.id]:I})),children:I==="wichtig"?"wichtig":I==="laut"?"nur laut":"hätte jemand anders gekonnt"},I))})]},T.id))]}),g===1&&t.jsxs("div",{className:"space-y-3",children:[t.jsxs("div",{className:"space-y-1",children:[t.jsx("div",{className:"text-xs font-medium",children:"Was hat diese Woche wirklich Wirkung erzeugt?"}),t.jsx(vt,{value:m,onChange:T=>A(T.target.value),rows:2,onFocus:T=>{const I=T.currentTarget;setTimeout(()=>I.scrollIntoView({block:"center",behavior:"smooth"}),300)}})]}),t.jsxs("div",{className:"space-y-1",children:[t.jsx("div",{className:"text-xs font-medium",children:"Was war nur Beschäftigung?"}),t.jsx(vt,{value:x,onChange:T=>j(T.target.value),rows:2,onFocus:T=>{const I=T.currentTarget;setTimeout(()=>I.scrollIntoView({block:"center",behavior:"smooth"}),300)}})]}),t.jsxs("div",{className:"space-y-1",children:[t.jsx("div",{className:"text-xs font-medium",children:"Was wird nächste Woche delegiert oder gestrichen?"}),t.jsx(vt,{value:y,onChange:T=>R(T.target.value),rows:2,onFocus:T=>{const I=T.currentTarget;setTimeout(()=>I.scrollIntoView({block:"center",behavior:"smooth"}),300)}})]})]}),g===2&&t.jsx(jv,{report:ne}),t.jsxs(Zt,{className:"sticky bottom-0 bg-background pt-2 gap-2 flex-wrap",children:[t.jsx(S,{variant:"ghost",onClick:()=>{on("friday",l),W(!1)},children:"Später"}),t.jsx(S,{variant:"ghost",className:"opacity-70",onClick:()=>{Hr("friday-review"),on("friday",l),W(!1)},children:"Nicht mehr zeigen"}),g>0&&t.jsx(S,{variant:"outline",onClick:()=>G(g-1),children:"Zurück"}),g<2?t.jsx(S,{onClick:()=>G(g+1),children:"Weiter"}):t.jsx(S,{onClick:B,disabled:V,children:V?"Speichertâ¦":"AbschlieÃen · +10"})]})]})}):null}function jv({report:e}){const n=e;return t.jsxs("div",{className:"space-y-3",children:[t.jsx("div",{className:"text-base font-display",children:"Deine Fokus-Woche"}),t.jsxs("div",{className:"grid grid-cols-3 gap-2 text-center",children:[t.jsx(ws,{label:"Erledigt",v:n.totalDone}),t.jsx(ws,{label:"mit Fokus-Ziel",v:n.hebelDone}),t.jsx(ws,{label:"Fokus-Quote",v:`${n.focusQuota}%`})]}),t.jsxs("div",{className:"rounded-md bg-muted/40 p-3 text-sm space-y-1",children:[t.jsxs("div",{children:[t.jsx("strong",{children:"Cashflow-Fokus:"})," ",n.cashflowShare,"% Deiner Punkte aus Umsatz/Kunden/Marge."]}),t.jsxs("div",{children:[t.jsx("strong",{children:"Split:"})," Fokus-Ziel ",zi(n.hebelDone,n.totalDone),"% · Feuerwehr ",n.fireShare,"% · Routine ",zi(n.routineDone,n.totalDone),"%"]}),n.fireShare>=50&&t.jsxs("div",{className:"text-xs text-amber-700 dark:text-amber-400 mt-1",children:["â ï¸ ",n.fireShare," % Deiner Woche war Feuerwehr."]}),n.strongest&&n.strongest.count>0&&t.jsxs("div",{children:[t.jsx("strong",{children:"Stärkstes Fokus-Ziel:"})," ",n.strongest.o.icon," ",n.strongest.o.title]}),n.weakest&&t.jsxs("div",{children:[t.jsx("strong",{children:"Achtung:"})," ",n.weakest.o.icon," ",n.weakest.o.title," hat 0 erledigte Aufgaben."]})]}),t.jsxs("div",{className:"rounded-md border-l-4 border-primary bg-primary/5 p-3 text-sm",children:[t.jsx("strong",{children:"Empfehlung für Montag: "}),n.weakest?`Setze 1 konkrete Aufgabe für â${n.weakest.o.title}".`:n.fireShare>30?"Plane bewusst weniger Termine, schütze 2 Stunden Fokuszeit."
342:"Behalte den Rhythmus bei â Du bist auf Kurs."]})]})}function ws({label:e,v:n}){return t.jsxs("div",{className:"rounded bg-muted/40 p-2",children:[t.jsx("div",{className:"font-display text-xl text-primary",children:n}),t.jsx("div",{className:"text-[10px] text-muted-foreground",children:e})]})}function zi(e,n){return n?Math.round(e/n*100):0}function Nv(){const{allTodos:e,updateTodo:n,deleteTodo:r}=de(),[s,a]=c.useState(null),[i,l]=c.useState(""),[o,d]=c.useState(void 0);if(c.useEffect(()=>{const m=w=>{var y;if(Gt())return;const x=(y=w.detail)==null?void 0:y.todoId;if(!x)return;const b=(e??[]).find(P=>P.id===x);b&&(a(b),l(""),d(void 0))};return window.addEventListener("open-focus-killer",m),()=>window.removeEventListener("open-focus-killer",m)},[e]),!s)return null;const u=s,h=()=>a(null);function g(){const m=i.trim()||"jemand anderen";n.mutate({id:u.id,date_label:`Wartet auf: ${m}`},{onSuccess:()=>{dr(u.id),U.success(`Delegiert an ${m}`),h()}})}function p(){const m={...u};r.mutate(u.id,{onSuccess:()=>{dr(u.id),U("Aufgabe gestrichen",{action:{label:"Rückgängig",onClick:async()=>{try{const{supabase:w}=await Pe(async()=>{const{supabase:x}=await import("./index-C9ebdKB5.js").then(b=>b.aW);return{supabase:x}},__vite__mapDeps([0,1]));await w.from("todos").insert({...m,id:m.id}),U.success("Wiederhergestellt")}catch{U.error("Wiederherstellen fehlgeschlagen")}}}}),h()}})}function v(){if(!o)return;const m=ct(o,"yyyy-MM-dd");n.mutate({id:u.id,due_date:m},{onSuccess:()=>{dr(u.id),U.success(`Terminiert: ${ct(o,"dd.MM.yyyy")}`),h()}})}function f(){dr(u.id),h()}return t.jsx(Ne,{open:!0,onOpenChange:m=>!m&&h(),children:t.jsxs(De,{className:"max-w-md",children:[t.jsx(jt,{open:!!s}),t.jsxs(Ce,{children:[t.jsx(Ae,{children:"Diese Aufgabe schiebst Du vor Dir her."}),t.jsxs(st,{className:"text-sm",children:["â",u.text,'" â delegieren, streichen oder endlich terminieren?']})]}),t.jsxs("div",{className:"space-y-3 text-sm",children:[t.jsxs("div",{className:"space-y-2 rounded border p-3",children:[t.jsx("div",{className:"text-xs font-medium",children:"ð¤ Delegieren â wartet auf â¦"}),t.jsxs("div",{className:"flex gap-2",children:[t.jsx(oe,{placeholder:"Name",value:i,onChange:m=>l(m.target.value),className:"h-8"}),t.jsx(S,{size:"sm",onClick:g,children:"Delegieren"})]})]}),t.jsxs("div",{className:"space-y-2 rounded border p-3",children:[t.jsx("div",{className:"text-xs font-medium",children:"ð
Terminieren"}),t.jsxs(wn,{children:[t.jsx(jn,{asChild:!0,children:t.jsxs(S,{variant:"outline",size:"sm",className:Q("w-full justify-start",!o&&"text-muted-foreground"),children:[t.jsx(Sr,{className:"h-3 w-3 mr-1"}),o?ct(o,"PPP",{locale:ol}):"Datum wählen"]})}),t.jsx(Qt,{className:"w-auto p-0",align:"start",children:t.jsx(_a,{mode:"single",selected:o,onSelect:d,initialFocus:!0,className:"p-3 pointer-events-auto"})})]}),t.jsx(S,{size:"sm",onClick:v,disabled:!o,className:"w-full",children:"Termin setzen"})]}),t.jsx(S,{variant:"destructive",size:"sm",onClick:p,className:"w-full",children:"ð Streichen"}),t.jsx(S,{variant:"ghost",size:"sm",onClick:f,className:"w-full",children:"Behalten â gib mir Ruhe"})]})]})})}const Ti="fokus_cycle_reviewed";function Sv(){var $;const{user:e}=ge(),{profile:n}=Ee(),{activeObjectives:r,keyResults:s,updateObjective:a,archiveObjective:i}=He(),[l,o]=c.useState(!1),[d,u]=c.useState(0),[h,g]=c.useState({}),[p,v]=c.useState({});c.useEffect(()=>{var A;if(!((A=n.data)!=null&&A.focus_v2_enabled)||r.length===0)return;const W=n.data.cycle_end_date,G=W?new Date>new Date(W+"T23:59:59"):!1,C=`${Ti}:${W??""}`;if(G&&localStorage.getItem(C)!=="1"){if(!vn().monthCheck)return;Pt("phase-review",Et.OTHER,()=>{Gt()||o(!0)})}},[n.data,r]);const f=($=n.data)==null?void 0:$.cycle_end_date,w=(f?new Date>new Date(f+"T23:59:59"):!1)?r:[],x=w[d],b=(s.data??[]).filter(W=>W.objective_id===(x==null?void 0:x.id)),y=x?yr(x,b):0,P=Math.round(y*100);c.useEffect(()=>{x&&P>=70&&l&&Md({size:"medium"})},[d,l]);async function V(){var C;if(!e)return;for(const A of w){const j=h[A.id]??"continue",R=Math.round(yr(A,(s.data??[]).filter(z=>z.objective_id===A.id))*100);if(await H.from("objectives").update({final_score:R,learning_note:p[A.
342id]??null}).eq("id",A.id),j==="close")await H.from("objectives").update({status:"archived"}).eq("id",A.id);else{const{data:z}=await H.from("objectives").insert({user_id:e.id,title:A.title,icon:A.icon,color:A.color,category:A.category,cycle:gn(),status:"active",confidence:"green",sort:A.sort}).select().single();z!=null&&z.id&&(await H.from("todos").update({objective_id:z.id}).eq("objective_id",A.id).eq("done",!1),await H.from("objectives").update({status:"archived"}).eq("id",A.id))}}const W=(C=w[0])==null?void 0:C.cycle;if(W){const{data:A}=await H.from("okr_checkins").select("id").eq("user_id",e.id).eq("cycle",W);((A==null?void 0:A.length)??0)>=10&&await Zn(e.id,"focus_cycle_master")}w.every(A=>{const j=(s.data??[]).filter(R=>R.objective_id===A.id);return yr(A,j)>=.7})&&await Zn(e.id,"focus_70club"),localStorage.setItem(`${Ti}:${W}`,"1"),U.success("Zyklus abgeschlossen"),o(!1),setTimeout(()=>window.dispatchEvent(new Event("open-focus-wizard")),400)}return!l||!x?null:t.jsx(Ne,{open:l,onOpenChange:W=>{W||o(!1)},children:t.jsxs(De,{className:"max-w-lg",children:[t.jsx(jt,{open:l}),t.jsxs(Ce,{children:[t.jsxs(Ae,{children:[Ef," abgeschlossen â Fokus-Ziel ",d+1," / ",w.length]}),t.jsxs(st,{children:[x.icon," ",x.title]})]}),t.jsxs("div",{className:"space-y-3",children:[t.jsxs("div",{className:"rounded-md bg-muted/40 p-3 text-center",children:[t.jsx("div",{className:"text-xs text-muted-foreground",children:"Final-Score"}),t.jsxs("div",{className:"font-display text-3xl text-primary",children:[P,"%"]}),t.jsx(or,{value:P,className:"h-2 mt-2"}),P>=70&&t.jsx("div",{className:"text-xs mt-2 text-emerald-700 dark:text-emerald-400",children:"70 % erreicht = stark geführt ðª"})]}),t.jsxs("div",{className:"space-y-1",children:[t.jsx("div",{className:"text-xs font-medium",children:"Was nimmst Du mit? (optional)"}),t.jsx(vt,{rows:2,value:p[x.id]??"",onChange:W=>v(G=>({...G,[x.id]:W.target.value}))})]}),t.jsxs("div",{className:"space-y-2",children:[t.jsx("div",{className:"text-xs font-medium",children:"Wie geht es weiter?"}),t.jsx("div",{className:"grid grid-cols-3 gap-2",children:["continue","adjust","close"].map(W=>t.jsx(S,{size:"sm",variant:h[x.id]===W?"default":"outline",onClick:()=>g(G=>({...G,[x.id]:W})),children:W==="continue"?"Fortführen":W==="adjust"?"Anpassen":"AbschlieÃen"},W))}),h[x.id]!=="close"&&t.jsx("p",{className:"text-[11px] text-muted-foreground",children:"Offene Aufgaben wandern automatisch in den neuen Zyklus."})]})]}),t.jsxs(Zt,{className:"gap-2",children:[d>0&&t.jsx(S,{variant:"outline",onClick:()=>u(d-1),children:"Zurück"}),d<w.length-1?t.jsx(S,{onClick:()=>u(d+1),disabled:!h[x.id],children:"Weiter"}):t.jsx(S,{onClick:V,disabled:!h[x.id],children:"Zyklus abschlieÃen"})]})]})})}const Oc=e=>`fokus-tagesstart-visited:${Ue()}:${e}`;function js(e){if(typeof window>"u")return!1;try{return window.localStorage.getItem(Oc(e))==="1"}catch{return!1}}function Ns(e){if(!(typeof window>"u"))try{window.localStorage.setItem(Oc(e),"1")}catch{}}function Dv(){var C,A,j,R;const{profile:e}=Ee(),{profile:n}=de(),{activeObjectives:r}=He(),{user:s}=ge(),a=mt(),[i,l]=c.useState(!1),[o,d]=c.useState(0),u=cb(),h=((C=e.data)==null?void 0:C.focus_v2_enabled)===!0,g=((A=e.data)==null?void 0:A.focus_onboarding_state)==="done",p=r.length>0,v=(j=n.data)==null?void 0:j.daily_focus,f=!!(v&&v.date===Ue()&&(((R=v.ids)==null?void 0:R.length)>0||v.skipped)),m=c.useMemo(()=>js("yesterday"),[o,i]),w=c.useMemo(()=>js("hebel"),[o,i]),x=c.useMemo(()=>js("tasks"),[o,i]);c.useEffect(()=>{if(!h||!g||!p||ns()||!n.data||v&&v.date===Ue()&&v.tagesstart_seen)return;const z=`fokus-tagesstart:${Ue()}`;typeof window<"u"&&window.localStorage.getItem(z)||u||Qc()&&Pt("tagesstart",Et.DAILY_START,()=>l(!0))},[h,n.data,u,g,p]),c.useEffect(()=>(Or("tagesstart",i),()=>Or("tagesstart",!1)),[i]),c.useEffect(()=>{if(!i)return;const z=()=>d(_=>_+1);return window.addEventListener("focus",z),()=>window.removeEventListener("focus",z)},[i]);function b(){typeof window<"u"&&window.localStorage.setItem(`fokus-tagesstart:${Ue()}`,"1"),l(!1),(async()=>{var z;if(s!=null&&s.id)try{const _=(z=n.data)==null?void 0:z.daily_focu
342s,K=_&&_.date===Ue()?_:{date:Ue(),ids:[]};await H.from("profiles").update({daily_focus:{...K,tagesstart_seen:!0}}).eq("user_id",s.id),a.invalidateQueries({queryKey:["profile",s.id]})}catch{}})()}function y(){window.dispatchEvent(new Event("open-daily-focus-picker"))}function P(){Ns("yesterday"),d(z=>z+1),window.dispatchEvent(new Event("open-daily-review"))}function V(){Ns("hebel"),b(),setTimeout(()=>window.dispatchEvent(new CustomEvent("jump-to-tab",{detail:"hebel"})),80)}function $(){Ns("tasks"),b(),setTimeout(()=>window.dispatchEvent(new CustomEvent("jump-to-tab",{detail:"heute"})),80)}if(!h)return null;const W=f&&m,G=W&&(w||x);return t.jsx(Ne,{open:i,onOpenChange:z=>{z||b()},children:t.jsxs(De,{className:"max-w-md",children:[t.jsx(jt,{open:i}),t.jsxs(Ce,{children:[t.jsxs(Ae,{className:"flex items-center gap-2",children:[t.jsx(eu,{className:"h-5 w-5 text-primary"})," Tages-Start"]}),t.jsx(st,{children:"Erst kurz reflektieren â dann entscheiden, woran Du heute arbeitest."})]}),t.jsxs("div",{className:"space-y-2",children:[t.jsx("div",{className:"text-[11px] uppercase tracking-wide text-muted-foreground",children:"1. Reflexion"}),t.jsx(Pi,{done:f,onClick:y,icon:t.jsx(ft,{className:"h-5 w-5 text-gold"}),title:"Meine 3 Tagesziele wählen",subtitle:"Wähle die 3 Aufgaben, die heute wirklich zählen â Du kannst auch eine neue direkt anlegen."}),t.jsx(Pi,{done:m,onClick:P,icon:t.jsx(ra,{className:"h-5 w-5 text-muted-foreground"}),title:"Was habe ich gestern geschafft?",subtitle:"Rückblick auf Deinen gestrigen Tag mit Punkten und offenen Aufgaben."})]}),t.jsxs("div",{className:"space-y-2 pt-1",children:[t.jsx("div",{className:"text-[11px] uppercase tracking-wide text-muted-foreground",children:"2. Woran willst Du heute arbeiten?"}),t.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[t.jsxs("button",{type:"button",onClick:$,title:"Deine Heute-Liste mit allen offenen Aufgaben öffnen.",className:`flex items-center gap-2 p-3 rounded-lg border text-left transition ${x?"border-primary/40 bg-primary/5":"border-border hover:bg-primary/5 hover:border-primary/40"}`,children:[t.jsx(Kt,{className:"h-5 w-5 text-primary shrink-0"}),t.jsxs("div",{className:"min-w-0",children:[t.jsx("div",{className:"text-sm font-medium",children:"Meine Aufgaben"}),t.jsx("div",{className:"text-[10px] text-muted-foreground",children:"Heute-Liste öffnen"})]})]}),t.jsxs("button",{type:"button",onClick:V,title:"Deine aktiven Fokus-Ziele und passende Hebel-Aufgaben.",className:`flex items-center gap-2 p-3 rounded-lg border text-left transition ${w?"border-primary/40 bg-primary/5":"border-border hover:bg-primary/5 hover:border-primary/40"}`,children:[t.jsx(Xn,{className:"h-5 w-5 text-primary shrink-0"}),t.jsxs("div",{className:"min-w-0",children:[t.jsxs("div",{className:"text-sm font-medium",children:["Meine ",Gn]}),t.jsxs("div",{className:"text-[10px] text-muted-foreground",children:[r.length," aktiv"]})]})]})]})]}),t.jsxs("div",{className:"flex flex-wrap items-center justify-end gap-2 pt-2",children:[t.jsx(S,{variant:"ghost",className:"text-xs opacity-70",onClick:()=>{Xc("tagesstart"),b()},children:"Später"}),t.jsx(S,{variant:"ghost",className:"text-xs opacity-70",onClick:()=>{Hr("tagesstart"),b()},children:"Nicht mehr zeigen"}),t.jsx(S,{variant:W?"default":"ghost",onClick:b,className:W?"bg-gradient-brand":"",children:W?G?"Fertig":"Los geht's":"Ãberspringen"})]})]})})}function Pi({done:e,onClick:n,icon:r,title:s,subtitle:a}){return t.jsxs("button",{onClick:n,className:`w-full flex items-center gap-3 p-3 rounded-lg border text-left transition-colors ${e?"border-primary/40 bg-primary/5 hover:bg-primary/10":"border-border hover:bg-primary/5 hover:border-primary/40"}`,children:[t.jsx("div",{className:"shrink-0",children:r}),t.jsxs("div",{className:"flex-1 min-w-0",children:[t.jsx("div",{className:`text-sm font-medium flex items-center gap-2 ${e?"line-through opacity-70":""}`,children:s}),t.jsx("div",{className:"text-xs text-muted-foreground",children:a})]}),e&&t.jsx("div",{className:"shrink-0 h-6 w-6 rounded-full bg-primary/15 grid place-items-center","aria-label":"erledigt",children:t.jsx(tt,{className:"h-4 w-4 text-primary"})})]})}const Ei="fokus.push-reset-notice.2026-06.v1";function _v(){const[e,n]=c.useState(!0);if(c.useEffect(()=>{try{n(typeof window<"u"&&localStorage.getItem(Ei)==="1")}catch{n(!1)}},[]),e)return null;function r(){try{localStorage.setItem(Ei,"1")}catch{}n(!0)}function s(){window.dispatchEvent(new CustomEvent("jump-to-tab",{detail:"profile"})),setTimeout(()=>{const a=document.querySelector('[data-section="notifications"]');a==null||a.scrollIntoView({behavior:"smooth",block:"start"})},200)}return t.jsxs("div",{className:"mb-3 flex items-start gap-3 rounded-lg border border-primary/40 bg-primary/10 p-3 text-sm",children:[t.jsx(bt,{className:"h-5 w-5 mt-0.5 text-primary shrink-0"}),t.jsxs("div",{className:"flex-1 leading-relaxed",children:[t.jsx("strong",{children:"Push wurde zurückgesetzt"}),' â bitte einmal neu aktivieren: Profil â Benachrichtigungen â Push einschalten â im Browser âErlauben".',t.jsx("div",{className:"mt-2",children:t.jsx(S,{size:"sm",onClick:s,className:"bg-gradient-brand",children:"Zu den Benachrichtigungen"})})]}),t.jsx("button",{type:"button",onClick:r,"aria-label":"Hinweis schlieÃen",className:"shrink-0 text-muted-foreground hover:text-foreground p-1",children:t.jsx(Me,{className:"h-4 w-4"})})]})}const Fc="fokus.last-backup-export",Bc="fokus.backup-reminder-dismissed";function Dy(e=Date.now()){try{localStorage.setItem(Fc,String(e))}catch{}}function Mv(){try{const e=localStorage.getItem(Fc);return e?Number(e):null}catch{return null}}function Cv(){try{const e=localStorage.getItem(Bc);return e?Number(e):null}catch{return null}}function Av(e=Date.now()){try{localStorage.setItem(Bc,String(e))}catch{}}const Ri=864e5;
342function zv(e=Date.now()){if(ed("backup-reminder"))return!1;const n=td();if(n===null)return!1;const r=Mv(),s=Cv(),a=Math.max(r??0,s??0);if(a===0)try{const i=localStorage.getItem("fokus.backup-reminder-seed");return i?e-Number(i)>=n*Ri:(localStorage.setItem("fokus.backup-reminder-seed",String(e)),!1)}catch{return!1}return e-a>=n*Ri}function Tv(){const[e,n]=c.useState(!1);if(c.useEffect(()=>{n(zv())},[]),!e)return null;function r(){window.dispatchEvent(new CustomEvent("jump-to-tab",{detail:"profile"})),setTimeout(()=>{const i=document.getElementById("backup-section");i&&(i.scrollIntoView({behavior:"smooth",block:"start"}),i.classList.add("ring-2","ring-primary"),setTimeout(()=>i.classList.remove("ring-2","ring-primary"),2e3))},120)}function s(){Av(),n(!1)}function a(){Hr("backup-reminder"),n(!1)}return t.jsxs(qe,{className:"p-3 mb-3 border-amber-500/40 bg-amber-500/5 flex items-start gap-3",children:[t.jsx(Kd,{className:"h-5 w-5 text-amber-600 dark:text-amber-400 mt-0.5 shrink-0"}),t.jsxs("div",{className:"flex-1 text-sm",children:[t.jsx("p",{className:"font-medium",children:"ð Zeit fürs Backup"}),t.jsx("p",{className:"text-muted-foreground mt-0.5",children:"Sichere Deinen Fortschritt (Profil â Backup/Export) â so ist Dein Stand geschützt, falls mal etwas passiert."}),t.jsxs("div",{className:"mt-2 flex gap-2 flex-wrap",children:[t.jsx(S,{size:"sm",onClick:r,children:"Jetzt sichern"}),t.jsx(S,{size:"sm",variant:"ghost",onClick:s,children:"Später"}),t.jsx(S,{size:"sm",variant:"ghost",className:"opacity-70",onClick:a,children:"Nicht mehr zeigen"})]})]}),t.jsx("button",{"aria-label":"SchlieÃen",onClick:s,className:"text-muted-foreground hover:text-foreground",children:t.jsx(Me,{className:"h-4 w-4"})})]})}const Pv=nd("inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function Wt({className:e,variant:n,...r}){return t.jsx("div",{className:Q(Pv({variant:n}),e),...r})}const Ev="BInanSaMkFdBHM9VBxyaZ84nvjJGcGVqgH2rEq4ps2Vn04Ah1h_eOrmfE7WMJaXxcYhmCoMAPmgl6H7gGkCyP8U";function Rv(e){const n="=".repeat((4-e.length%4)%4),r=(e+n).replace(/-/g,"+").replace(/_/g,"/"),s=atob(r),a=new Uint8Array(s.length);for(let i=0;i<s.length;++i)a[i]=s.charCodeAt(i);return a}function Wc(){return typeof window<"u"&&"serviceWorker"in navigator&&"PushManager"in window&&"Notification"in window}function Iv(){var e;return typeof window>"u"?!1:((e=window.matchMedia)==null?void 0:e.call(window,"(display-mode: standalone)").matches)||navigator.standalone===!0}async function Ov(){if(!("serviceWorker"in navigator))return null;let e=await navigator.serviceWorker.getRegistration("/sw.js");return e||(e=await navigator.serviceWorker.register("/sw.js",{scope:"/"})),await navigator.serviceWorker.ready,e}async function Fv(e){var h,g,p,v;if(!Wc())return{ok:!1,reason:"unsupported"};if(/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream&&!Iv())return{ok:!1,reason:"ios_needs_install"};let r;try{r=await Notification.requestPermission()}catch{r=Notification.permission}if(r==="denied")return{ok:!1,reason:"permission_denied"};if(r!=="granted")return{ok:!1,reason:"permission_dismissed"};const s=await Ov();if(!s)return{ok:!1,reason:"no_sw"};let a=await s.pushManager.getSubscription();if(a){const f=a.toJSON();if(!((h=f==null?void 0:f.keys)!=null&&h.p256dh)||!((g=f==null?void 0:f.keys)!=null&&g.auth)){try{await a.unsubscribe()}catch{}a=null}}if(!a)try{a=await s.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:Rv(Ev)})}catch(f){return{ok:!1,reason:"subscribe_failed:"+((f==null?void 0:f.message)??"unknown")}}const i=a.toJSON(),l=a.endpoint,o=(p=i.keys)==null?void 0:p.p256dh,d=(v=i.keys)==null?void 0:v.auth;if(!l||!o||!d)return{ok:!1,reason:"bad_subscription"};const{error:u}=await H.from("push_subscriptions").upsert({user_id:e,endpoint:l,p256dh:o,auth:d,user_agent:navigator.userAgent},{onConflict:"endpoint"});return u?{ok:!1,reason:u.message}:(await H.from("profiles").update({notify_browser_push:!0}).eq("user_id",e),{ok:!0})}
342async function _y(e){try{if("serviceWorker"in navigator){const n=await navigator.serviceWorker.getRegistration("/sw.js"),r=await(n==null?void 0:n.pushManager.getSubscription());r&&(await H.from("push_subscriptions").delete().eq("endpoint",r.endpoint),await r.unsubscribe())}}catch{}await H.from("profiles").update({notify_browser_push:!1}).eq("user_id",e)}function Bv(){const{user:e}=ge(),{profile:n,addTodo:r}=de(),s=n.data,[a,i]=c.useState(!1),[l,o]=c.useState(0),[d,u]=c.useState(!1),[h,g]=c.useState(""),[p,v]=c.useState(""),[f,m]=c.useState(""),[w,x]=c.useState(!1),[b,y]=c.useState(!1),[P,V]=c.useState("weekdays"),[$,W]=c.useState(""),G="".replace(/^@/,"")??"",C=!!(s!=null&&s.telegram_chat_id);c.useEffect(()=>{!e||!s||s.setup_completed_at||Pt("setup-wizard",Et.ONBOARDING,()=>{o(0),i(!0)})},[e==null?void 0:e.id,s==null?void 0:s.setup_completed_at]),c.useEffect(()=>{a&&s&&(g(s.vorname??""),v(s.nachname??""),m(s.phone??""),x(!!s.notify_email_due),y(!!s.notify_browser_push),V(s.streak_mode??"weekdays"))},[a,s==null?void 0:s.user_id]),c.useEffect(()=>{const I=()=>{o(0),i(!0)};return window.addEventListener("open-setup-wizard",I),()=>window.removeEventListener("open-setup-wizard",I)},[]);const A=["Willkommen","Dein Name","Benachrichtigungen","Handynummer","Rubriken & Rollen","Streak-Modus","Erste Aufgabe","Belohnungen","Fertig"],j=A.length;async function R(I){if(!e)return;const{error:M}=await H.from("profiles").update(I).eq("user_id",e.id);M?U.error(M.message):n.refetch()}async function z(){e&&(await H.from("profiles").update({setup_completed_at:new Date().toISOString()}).eq("user_id",e.id),n.refetch())}function _(){o(I=>Math.min(I+1,j-1))}function K(){o(I=>Math.max(I-1,0))}async function ne(){await z(),i(!1),U("Einrichtung übersprungen â Du kannst sie jederzeit im Profil erneut starten.")}async function F(){await z(),i(!1),U.success("Einrichtung abgeschlossen ð")}async function B(){if(!e)return;if(!Wc()){U.error("Push wird von diesem Browser nicht unterstützt.");return}u(!0);const I=await Fv(e.id);u(!1),I.ok?(y(!0),await R({notify_browser_push:!0}),U.success("Push aktiviert â Du bekommst jetzt Erinnerungen.")):U.error("Push nicht aktiviert: "+I.reason)}async function D(){if(e){u(!0);try{let I=(s==null?void 0:s.telegram_link_code)??null;if(I||(I=`fc_${Math.random().toString(36).slice(2,10)}`,await H.from("profiles").update({telegram_link_code:I}).eq("user_id",e.id),n.refetch()),!G){U.error("Telegram-Bot nicht konfiguriert.");return}const M=`https://t.me/${G}?start=${encodeURIComponent(I)}`;window.open(M,"_blank","noopener"),U("Telegram öffnet sich â sende dem Bot âStartâ, dann bist Du verbunden.")}finally{u(!1)}}}async function N(){const I=$.trim();I&&(await r.mutateAsync({text:I,prio:"A",tag:null,important:!1}),U.success("Erste Aufgabe angelegt!"),W(""))}const T=t.jsxs(Ce,{className:"text-left",children:[t.jsxs("div",{className:"flex items-center justify-between gap-2 mb-2",children:[t.jsxs(Wt,{variant:"secondary",className:"text-xs",children:["Schritt ",l+1," von ",j]}),t.jsx(S,{type:"button",variant:"ghost",size:"sm",onClick:ne,className:"text-xs",children:"Alles überspringen"})]}),t.jsx(or,{value:(l+1)/j*100,className:"h-1.5"}),t.jsx(Ae,{className:"mt-3 font-display text-xl",children:A[l]})]});return t.jsx(Ne,{open:a,onOpenChange:I=>{I||i(!1)},children:t.jsxs(De,{className:"max-w-lg max-h-[92vh] overflow-y-auto",children:[T,t.jsxs("div",{className:"mt-4 space-y-4 text-sm",children:[l===0&&t.jsxs("div",{className:"space-y-3",children:[t.jsxs("div",{className:"flex items-center gap-2 text-primary",children:[t.jsx(Qn,{className:"h-5 w-5"}),t.jsx("span",{className:"font-medium",children:"Willkommen im Fokus Cockpit!"})]}),t.jsx("p",{children:"In wenigen Schritten richten wir alles Wichtige ein â Name, Benachrichtigungen, Rubriken, Streak und Deine erste Aufgabe. Jeder Schritt ist überspringbar."}),t.jsx("p",{className:"text-muted-foreground",children:"Dauert ~2 Minuten. Du kannst die Einrichtung jederzeit im Profil erneut starten."})]}),l===1&&t.jsxs("div",{className:"space-y-3",children:[t.jsx("p",{children:"Wie sollen wir Dich nennen? Dein N
342ame erscheint u. a. im Ranking."}),t.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[t.jsxs("div",{children:[t.jsx(dn,{className:"text-xs",children:"Vorname"}),t.jsx(oe,{value:h,onChange:I=>g(I.target.value)})]}),t.jsxs("div",{children:[t.jsx(dn,{className:"text-xs",children:"Nachname"}),t.jsx(oe,{value:p,onChange:I=>v(I.target.value)})]})]}),t.jsx(S,{size:"sm",onClick:async()=>{await R({vorname:h||"Hero",nachname:p||null}),U.success("Name gespeichert.")},disabled:d,children:"Speichern"})]}),l===2&&t.jsxs("div",{className:"space-y-4",children:[t.jsx("p",{children:"Wähle Deine Benachrichtigungs-Kanäle. Du kannst alles später ändern."}),t.jsxs("div",{className:"rounded-lg border p-3 space-y-2",children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(bt,{className:"h-4 w-4"}),t.jsx("span",{className:"font-medium",children:"Web-Push (Browser/Handy)"}),t.jsx(Wt,{variant:"secondary",className:"text-[10px]",children:"kostenlos"})]}),b?t.jsx(Wt,{className:"text-[10px]",children:"â
Aktiv"}):null]}),t.jsx("p",{className:"text-xs text-muted-foreground",children:"Erinnerungen direkt auf Dein Gerät â auch bei geschlossener App."}),!b&&t.jsx(S,{size:"sm",onClick:B,disabled:d,children:d?t.jsx($d,{className:"h-4 w-4 animate-spin"}):"Push aktivieren"})]}),t.jsxs("div",{className:"rounded-lg border p-3 space-y-2",children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("span",{children:"ð§"}),t.jsx("span",{className:"font-medium",children:"E-Mail-Morgenerinnerung"}),t.jsx(Wt,{variant:"secondary",className:"text-[10px]",children:"kostenlos"})]}),t.jsx(Ds,{checked:w,onCheckedChange:I=>{x(I),R({notify_email_due:I})}})]}),t.jsx("p",{className:"text-xs text-muted-foreground",children:"Täglich morgens Deine Top-3-Aufgaben per Mail."})]}),t.jsxs("div",{className:"rounded-lg border p-3 space-y-2",children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(qd,{className:"h-4 w-4"}),t.jsx("span",{className:"font-medium",children:"Telegram"}),t.jsx(Wt,{variant:"secondary",className:"text-[10px]",children:"kostenlos"})]}),C&&t.jsx(Wt,{className:"text-[10px]",children:"â
Verbunden"})]}),t.jsx("p",{className:"text-xs text-muted-foreground",children:"Gratis Erinnerungen aufs Handy via Telegram-Bot."}),!C&&t.jsx(S,{size:"sm",variant:"outline",onClick:D,disabled:d||!G,children:"Telegram verbinden"})]}),t.jsxs("div",{className:"rounded-lg border p-3 bg-muted/30",children:[t.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[t.jsx("span",{children:"ð±"}),t.jsx("span",{className:"font-medium",children:"SMS"}),t.jsx(Wt,{variant:"outline",className:"text-[10px]",children:"kostenpflichtige Selbsteinrichtung"})]}),t.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"Kein bezahlter Service â Du kannst SMS im Profil selbst einrichten."})]})]}),l===3&&t.jsxs("div",{className:"space-y-3",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(Gi,{className:"h-4 w-4"}),t.jsx("span",{className:"font-medium",children:"Handynummer (optional)"})]}),t.jsx("p",{className:"text-xs text-muted-foreground",children:"Nur für spätere SMS-Selbsteinrichtung. Kannst Du auch überspringen."}),t.jsx(oe,{value:f,onChange:I=>m(I.target.value),placeholder:"+49 ..."}),t.jsx(S,{size:"sm",onClick:()=>R({phone:f||null}).then(()=>U.success("Gespeichert.")),children:"Speichern"})]}),l===4&&t.jsxs("div",{className:"space-y-3",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(Yi,{className:"h-4 w-4"}),t.jsx("span",{className:"font-medium",children:"Rubriken & Rollen"})]}),t.jsx("p",{children:'Du startest mit sinnvollen Standard-Rubriken (VERTRIEB, KONTAKT, SYSTEM â¦) und -Rollen (Chef, Marketing â¦). Anpassen kannst Du sie später jederzeit im Profil unter âRollen" und âRubriken".'}),t.jsx("p",{className:"text-xs text-muted-foreground",children:'Kein Setup nötig â einfach âWeiter".'})]}),l===5&&t.jsxs("div",{className:"space-y-3",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(ta,{className:"h-4 w-4"}),t.jsx("span",{className:"font-medium",children:"Streak-Zählweise"})]}),t.jsx("p",{children:"Wann darf Dein Streak abreiÃen?"}),t.jsxs("div",{className:"grid gap-2",children:[t.jsxs("label",{className:`rounded-lg border p-3 cursor-pointer ${P==="weekdays"?"border-primary bg-primary/5":""}`,children:[t.jsx("input",{type:"radio",className:"mr-2",checked:P==="weekdays",onChange:()=>{V("weekdays"),R({streak_mode:"weekdays"})}}),t.jsx("span",{className:"font-medium",children:"Nur Werktage (MoâFr)"}),t.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"Empfohlen. Wochenende zählt nie negativ."})]}),t.jsxs("label",{className:`rounded-lg border p-3 cursor-pointer ${P==="everyday"?"border-primary bg-primary/5":""}`,children:[t.jsx("input",{type:"radio",className:"mr-2",checked:P==="everyday",onChange:()=>{V("everyday"),R({streak_mode:"everyday"})}}),t.jsx("span",{className:"font-medium",children:"Jeden Tag"}),t.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"Auch am Wochenende. Härter, aber konsequenter."})]})]})]}),l===6&&t.jsxs("div",{className:"space-y-3",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(Tt,{className:"h-4 w-4"}),t.jsx("span",{className:"font-medium",children:"Deine erste Aufgabe"})]}),t.jsx("p",{children:"Was willst Du heute schaffen? Trag eine kleine, konkrete Aufgabe ein â der beste Start."}),t.jsxs("div",{className:"flex gap-2",children:[t.jsx(oe,{value:$,onChange:I=>W(I.target.value),placeholder:"z. B. Angebot X rausschicken",onKeyDown:I=>{I.key==="Enter"&&N()}}),t.jsx(S,{size:"sm",onClick:N,disabled:!$.trim()||r.isPending,children:"Anlegen"})]})]}),l===7&&t.jsxs("div",{className:"space-y-3",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(na,{className:"h-4 w-4"}),t.jsx("span",{className:"font-medium",children:"Belohnungen"})]}),t.jsx("p",{children:'Du bekommst 15 sinnvolle Standard-Belohnungen (vom Lieblingskaffee bis zum Mini-Trip). Anpassen kannst Du sie später im Reiter âBelohnungen".'}),t.jsx("p",{className:"text-xs text-muted-foreground",children:"Punkte sammelst Du automatisch durch abgehakte Aufgaben."})]}),l===8&&t.jsxs("div",{className:"space-y-3 text-center",children:[t.jsx(Jd,{className:"h-10 w-10 text-primary mx-auto"}),t.jsx("div",{className:"font-display text-lg",children:"Alles eingerichtet!"}),t.jsx("p",{className:"text-sm",children:'Du kannst die Einrichtung jederzeit im Profil unter âEinrichtung erneut starten" wiederholen.'})]})]}),t.jsxs("div",{className:"mt-6 flex items-center justify-between gap-2",children:[t.jsx(S,{type:"button",variant:"ghost",size:"sm",onClick:K,disabled:l===0,children:"Zurück"}),t.jsxs("div",{className:"flex gap-2",children:[l<j-1&&t.jsxs(t.Fragment,{children:[t.jsx(S,{type:"button",variant:"outline",size:"sm",onClick:_,children:"Ãberspringen"}),t.jsx(S,{type:"button",size:"sm",onClick:_,children:"Weiter"})]}),l===j-1&&t.jsx(S,{type:"button",size:"sm",onClick:F,children:"Fertig"})]})]})]})})}const Wv=c.lazy(()=>Pe(()=>import("./TabWoche-_4nC0f5l.js"),__vite__mapDeps([2,0,1,3,4,5,6,7,8,9,10,11,12,13,14])).then(e=>({default:e.TabWoche}))),Lv=c.lazy(()=>Pe(()=>import("./TabKalender-DTKWtFAk.js"),__vite__mapDeps([15,0,1,3,4,5,6,7,8,9,10,11,12,13,14])).then(e=>({default:e.TabKalender}))),Hv=c.lazy(()=>Pe(()=>import("./TabProjekte-F3LwQgvn.js"),__vite__mapDeps([16,0,1,7,5,4,6,8,9,3,10,11,12,13,14])).then(e=>({default:e.TabProjekte}))),Kv=c.lazy(()=>Pe(()=>import("./TabDone-BnzJzH5R.js"),__vite__mapDeps([17,0,1,3,4,5,6,7,8,9,10,11,12,13,14])).then(e=>({default:e.TabDone}))),$v=c.lazy(()=>Pe(()=>import("./TabErfolge-DzhxhtdG.js"),__vite__mapDeps([18,0,1,3,19,9,20,6,5,21,22,23,7,4,8,10,11,12,13,14])).then(e=>({default:e.TabErfolge}))),Vv=c.lazy(()=>Pe(()=>import("./TabStats-C-fx6D-t.js"),__vite__mapDeps([24,0,1,3,25,9,20,6,5,26,4,7,8,10,11,12,13,14])).then(e=>({default:e.TabStats}))),Uv=c.lazy(()=>Pe(()=>import("./TabRewards-CSiNdTTH.js"),__vite__mapDeps([19,0,1,3,9,20,6,5,21,22,23,7,4,8,10,11,12,13,14])).then(e=>({default:e.TabRewards}))),qv=c.lazy(()=>Pe(()=>import("./TabProfile-Bj7LKHRw.js"),__vite__mapDeps([27,0,1,3,9,6,5,4,28,8,7,14,29,30,21,10,11,12,13])).then(e=>({default:e.TabProfile}))),Gv=c.lazy(()=>Pe(()=>import("./TabHelp-TeqWDuH7.js"),__vite__mapDeps([31,0,1,3,9,7,5,32,33,6,10,26,8,4,11,12,13,14])).then(e=>({default:e.TabHelp}))),Zv=c.lazy(()=>Pe(()=>import("./TabRanking-CXtUmLTs.js"),__vite__mapDeps([25,0,1,3,9,20,6,5,26,4,7,8,10,11,12,13,14])).then(e=>({default:e.TabRanking}))),Yv=c.lazy(()=>Pe(()=>import("./TabAdmin-DECXZs_K.js"),__vite__mapDeps([34,0,1,3,9,8,10,28,23,4,5,6,7,11,12,13,14])).then(e=>({default:e.TabAdmin}))),Jv=c.lazy(()=>Pe(()=>import("./TabHebel-CH1ZjIvn.js"),__vite__mapDeps([35,0,1,3,6,5,9,7,22,4,8,10,11,12,13,14])).then(e=>({default:e.TabHebel}))),Qv=["heute","woche","kalender","projekte","hebel","done","erfolge","stats"],Ii="fokus-visited-tabs";function Xv(){var o;const{user:e,loading:n}=ge(),[r,s]=c.useState("heute"),{profile:a}=Ee(),i=!!((o=a.data)!=null&&o.focus_v2_enabled),{unlockAchievement:l}=de();return c.useEffect(()=>{if(e)try{const d=localStorage.getItem(Ii),u=new Set(d?JSON.parse(d):[]);u.has(r)||(u.add(r),localStorage.setItem(Ii,JSON.stringify([...u]))),Qv.every(h=>u.has(h))&&l("explorer")}catch{}},[r,e,l]),c.useEffect(()=>{e!=null&&e.id?rd(e.id):ad()},[e==null?void 0:e.id]),c.useEffect(()=>{e&&s("heute")},[e==null?void 0:e.id]),c.useEffect(()=>{const d=u=>{const h=u.detail;h&&s(h)};return window.addEventListener("jump-to-tab",d),()=>window.removeEventListener("jump-to-tab",d)},[]),n?t.jsx("div",{className:"min-h-screen grid place-items-center bg-gradient-hero text-hero-foreground",children:t.jsx("div",{className:"font-display text-xl animate-pulse",children:"FOKUS Cockpit lädtâ¦"})}):e?t.jsx(Mh,{children:t.jsx(qx,{children:t.jsxs("div",{className:"min-h-screen bg-background pb-24 md:pb-8 flex flex-col",children:[t.jsx(Ax,{onSearchPick:d=>{s(d.done?"done":"heute"),setTimeout(()=>{const u=document.getElementById(`todo-${d.id}`);u&&(u.scrollIntoView({behavior:"smooth",block:"center"}),u.classList.add("ring-2","ring-primary"),setTimeout(()=>u.classList.remove("ring-2","ring-primary"),1800))},80)}}),t.jsxs("main",{className:"container mx-auto px-4 mt-2 flex-1",children:[t.jsx(Ux,{active:r,onChange:s}),t.jsx("div",{className:"md:hidden mb-3"}),t.jsx(uv,{}),t.jsx(_v,{}),t.jsx(Tv,{}),t.jsx(Kx,{}),t.jsx("div",{className:"mt-4",children:t.jsxs(c.Suspense,{fallback:t.jsx("div",{className:"py-10 text-center text-sm text-muted-foreground animate-pulse",children:"Lädtâ¦"}),children:[r==="heute"&&t.jsx(_b,{}),r==="woche"&&t.jsx(Wv,{}),r==="kalender"&&t.jsx(Lv,{}),r==="projekte"&&t.jsx(Hv,{}),r==="hebel"&&i&&t.jsx(Jv,{}),r==="done"&&t.jsx(Kv,{}),r==="erfolge"&&t.jsx($v,{}),r==="stats"&&t.jsx(Vv,{}),r==="rewards"&&t.jsx(Uv,{}),r==="ranking"&&t.jsx(Zv,{}),r==="help"&&t.jsx(Gv,{}),r==="profile"&&t.jsx(qv,{}),r==="admin"&&t.jsx(Yv,{})]})})]}),t.jsx(Dd,{}),t.jsx(Vx,{active:r,onChange:s}),t.jsx(Ab,{}),t.jsx(Tb,{}),t.jsx(Pb,{}),t.jsx(Eb,{}),t.jsx(Rb,{}),t.jsx(Wb,{}),t.jsx(Lb,{}),t.jsx(Bv,{}),t.jsx(Hb,{}),t.jsx(dv,{}),i&&t.jsx(Dv,{}),t.jsx(ab,{}),t.jsx(bv,{}),t.jsx(wv,{}),t.jsx(Nv,{}),t.jsx(Sv,{})]})})}):t.jsx(sd,{to:"/about",replace:!0})}const My=Object.freeze(Object.defineProperty({__proto__:null,default:Xv},Symbol.toStringTag,{value:"Module"}));
342export{Wc as $,Tt as A,or as B,Vi as C,at as D,Wd as E,Ua as F,na as G,Sr as H,tu as I,zd as J,Yi as K,Kt as L,En as M,sa as N,Wt as O,rb as P,ut as Q,eb as R,yt as S,Ls as T,Ga as U,kt as V,ht as W,we as X,Ta as Y,bt as Z,$d as _,$r as a,Fv as a0,_y as a1,qa as a2,vt as a3,Ch as a4,tn as a5,As as a6,yy as a7,su as a8,Yd as a9,mr as aA,hr as aB,Zi as aC,kn as aD,Bf as aE,wy as aF,Ny as aG,jy as aH,Ra as aI,My as aJ,Ln as aa,ou as ab,Sx as ac,Dy as ad,Hn as ae,er as af,qd as ag,gy as ah,Ef as ai,py as aj,Rf as ak,If as al,Qd as am,Hd as an,Sh as ao,Fd as ap,Dh as aq,Cr as ar,eu as as,Ms as at,kb as au,jt as av,Ff as aw,Pd as ax,iv as ay,Sy as az,Xd as b,za as c,Rr as d,_s as e,Yo as f,Gx as g,gc as h,et as i,Ee as j,He as k,wn as l,jn as m,Xn as n,Qt as o,rv as p,sv as q,Ih as r,av as s,pr as t,nb as u,Of as v,xy as w,yr as x,Gn as y,Ph as z};
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.