1 line
29 KiB
JavaScript
1 line
29 KiB
JavaScript
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4152],{14503:(e,t,a)=>{"use strict";a.d(t,{dj:()=>m,oR:()=>u});var s=a(12115);let r=0,n=new Map,l=e=>{if(n.has(e))return;let t=setTimeout(()=>{n.delete(e),c({type:"REMOVE_TOAST",toastId:e})},1e6);n.set(e,t)},i=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{let{toastId:a}=t;return a?l(a):e.toasts.forEach(e=>{l(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===a||void 0===a?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===t.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},d=[],o={toasts:[]};function c(e){o=i(o,e),d.forEach(e=>{e(o)})}function u(e){let{...t}=e,a=(r=(r+1)%Number.MAX_SAFE_INTEGER).toString(),s=()=>c({type:"DISMISS_TOAST",toastId:a});return c({type:"ADD_TOAST",toast:{...t,id:a,open:!0,onOpenChange:e=>{e||s()}}}),{id:a,dismiss:s,update:e=>c({type:"UPDATE_TOAST",toast:{...e,id:a}})}}function m(){let[e,t]=s.useState(o);return s.useEffect(()=>(d.push(t),()=>{let e=d.indexOf(t);e>-1&&d.splice(e,1)}),[e]),{...e,toast:u,dismiss:e=>c({type:"DISMISS_TOAST",toastId:e})}}},34964:(e,t,a)=>{"use strict";a.d(t,{Xi:()=>o,av:()=>c,j7:()=>d,tU:()=>i});var s=a(95155),r=a(12115),n=a(30064),l=a(53999);let i=n.bL,d=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)(n.B8,{ref:t,className:(0,l.cn)("inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",a),...r})});d.displayName=n.B8.displayName;let o=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)(n.l9,{ref:t,className:(0,l.cn)("inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm",a),...r})});o.displayName=n.l9.displayName;let c=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)(n.UC,{ref:t,className:(0,l.cn)("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",a),...r})});c.displayName=n.UC.displayName},49026:(e,t,a)=>{"use strict";a.d(t,{Fc:()=>d,TN:()=>c,XL:()=>o});var s=a(95155),r=a(12115),n=a(74466),l=a(53999);let i=(0,n.F)("relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground",{variants:{variant:{default:"bg-background text-foreground",destructive:"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive"}},defaultVariants:{variant:"default"}}),d=r.forwardRef((e,t)=>{let{className:a,variant:r,...n}=e;return(0,s.jsx)("div",{ref:t,role:"alert",className:(0,l.cn)(i({variant:r}),a),...n})});d.displayName="Alert";let o=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("h5",{ref:t,className:(0,l.cn)("mb-1 font-medium leading-none tracking-tight",a),...r})});o.displayName="AlertTitle";let c=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("div",{ref:t,className:(0,l.cn)("text-sm [&_p]:leading-relaxed",a),...r})});c.displayName="AlertDescription"},52591:(e,t,a)=>{Promise.resolve().then(a.bind(a,60180))},53999:(e,t,a)=>{"use strict";a.d(t,{cn:()=>n});var s=a(52596),r=a(39688);function n(){for(var e=arguments.length,t=Array(e),a=0;a<e;a++)t[a]=arguments[a];return(0,r.QP)((0,s.$)(t))}},60180:(e,t,a)=>{"use strict";a.d(t,{AnnouncementsPage:()=>M});var s=a(95155),r=a(34964),n=a(12115),l=a(62177),i=a(90221),d=a(55594),o=a(97168),c=a(99708),u=a(53999),m=a(82714);let f=l.Op,x=n.createContext({}),h=e=>{let{...t}=e;return(0,s.jsx)(x.Provider,{value:{name:t.name},children:(0,s.jsx)(l.xI,{...t})})},p=()=>{let e=n.useContext(x),t=n.useContext(g),{getFieldState:a,formState:s}=(0,l.xW)(),r=a(e.name,s);if(!e)throw Error("useFormField should be used within <FormField>");let{id:i}=t;return{id:i,name:e.name,formItemId:"".concat(i,"-form-item"),formDescriptionId:"".concat(i,"-form-item-description"),formMessageId:"".concat(i,"-form-item-message"),...r}},g=n.createContext({}),b=n.forwardRef((e,t)=>{let{className:a,...r}=e,l=n.useId();return(0,s.jsx)(g.Provider,{value:{id:l},children:(0,s.jsx)("div",{ref:t,className:(0,u.cn)("space-y-2",a),...r})})});b.displayName="FormItem";let j=n.forwardRef((e,t)=>{let{className:a,...r}=e,{error:n,formItemId:l}=p();return(0,s.jsx)(m.J,{ref:t,className:(0,u.cn)(n&&"text-destructive",a),htmlFor:l,...r})});j.displayName="FormLabel";let y=n.forwardRef((e,t)=>{let{...a}=e,{error:r,formItemId:n,formDescriptionId:l,formMessageId:i}=p();return(0,s.jsx)(c.DX,{ref:t,id:n,"aria-describedby":r?"".concat(l," ").concat(i):"".concat(l),"aria-invalid":!!r,...a})});y.displayName="FormControl",n.forwardRef((e,t)=>{let{className:a,...r}=e,{formDescriptionId:n}=p();return(0,s.jsx)("p",{ref:t,id:n,className:(0,u.cn)("text-sm text-muted-foreground",a),...r})}).displayName="FormDescription";let v=n.forwardRef((e,t)=>{let{className:a,children:r,...n}=e,{error:l,formMessageId:i}=p(),d=l?String(null==l?void 0:l.message):r;return d?(0,s.jsx)("p",{ref:t,id:i,className:(0,u.cn)("text-sm font-medium text-destructive",a),...n,children:d}):null});v.displayName="FormMessage";var N=a(89852),w=a(99474),A=a(88482),R=a(85339),T=a(5196),C=a(51154),S=a(88145),E=a(14503),k=a(49026);let F=d.Ik({title:d.Yj().min(5,{message:"Title must be at least 5 characters"}),content:d.Yj().min(10,{message:"Content must be at least 10 characters"}),targetRoles:d.YO(d.Yj()).min(1,{message:"Select at least one target role"})});function D(e){let{userRole:t}=e,[a,r]=(0,n.useState)([]),[d,c]=(0,n.useState)(!1),[u,m]=(0,n.useState)(!1),[x,p]=(0,n.useState)(null),{toast:g}=(0,E.dj)(),D=(0,l.mN)({resolver:(0,i.u)(F),defaultValues:{title:"",content:"",targetRoles:[]}}),I=[{id:"all",name:"All Users"},{id:"admin",name:"Administrators"},{id:"entrepreneurship",name:"Entrepreneurship"},{id:"communication",name:"Communication"},{id:"expression",name:"Expression"},{id:"coding",name:"Coding"},{id:"dataintelligence",name:"Data Intelligence"},{id:"mediation",name:"Mediation"}],_=e=>{if("all"===e)r(["all"]),D.setValue("targetRoles",["all"]);else{let t=a.filter(e=>"all"!==e);if(t.includes(e)){let a=t.filter(t=>t!==e);r(a),D.setValue("targetRoles",a)}else{let a=[...t,e];r(a),D.setValue("targetRoles",a)}}},O=async e=>{c(!0),p(null);try{let t=await fetch("/api/announcements",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}),a=await t.json();if(!t.ok){let e=a.error||"Failed to create announcement";throw a.details&&(e+=": ".concat(a.details)),console.error("API Error:",a),p(e),Error(e)}D.reset(),r([]),m(!0),g({title:"Announcement created",description:"The announcement has been created successfully."}),setTimeout(()=>m(!1),3e3)}catch(e){console.error("Error submitting announcement:",e),g({title:"Error",description:e instanceof Error?e.message:"Failed to create the announcement. Please try again.",variant:"destructive"})}finally{c(!1)}};return(0,s.jsxs)(A.Zp,{className:"bg-white",children:[(0,s.jsxs)(A.aR,{className:"bg-white text-gray-800",children:[(0,s.jsx)(A.ZB,{children:"Create New Announcement"}),(0,s.jsx)(A.BT,{children:"Create an announcement to be displayed to specific user roles"})]}),(0,s.jsxs)(A.Wu,{children:[x&&(0,s.jsxs)(k.Fc,{variant:"destructive",className:"mb-6",children:[(0,s.jsx)(R.A,{className:"h-4 w-4"}),(0,s.jsx)(k.XL,{children:"Error"}),(0,s.jsx)(k.TN,{children:x})]}),(0,s.jsx)(f,{...D,children:(0,s.jsxs)("form",{onSubmit:D.handleSubmit(O),className:"space-y-6",children:[(0,s.jsx)(h,{control:D.control,name:"title",render:e=>{let{field:t}=e;return(0,s.jsxs)(b,{children:[(0,s.jsx)(j,{className:"text-gray-700",children:"Title"}),(0,s.jsx)(y,{children:(0,s.jsx)(N.p,{placeholder:"Enter announcement title",className:"bg-white text-gray-800 border-gray-300",...t})}),(0,s.jsx)(v,{})]})}}),(0,s.jsx)(h,{control:D.control,name:"content",render:e=>{let{field:t}=e;return(0,s.jsxs)(b,{children:[(0,s.jsx)(j,{className:"text-gray-700",children:"Content"}),(0,s.jsx)(y,{children:(0,s.jsx)(w.T,{placeholder:"Enter announcement content",rows:5,className:"bg-white text-gray-800 border-gray-300",...t})}),(0,s.jsx)(v,{})]})}}),(0,s.jsx)(h,{control:D.control,name:"targetRoles",render:()=>(0,s.jsxs)(b,{children:[(0,s.jsx)(j,{className:"text-gray-700",children:"Target Audience"}),(0,s.jsx)(y,{children:(0,s.jsxs)("div",{className:"p-3 border border-gray-200 rounded-md bg-white",children:[(0,s.jsx)("p",{className:"text-sm text-gray-500 mb-2",children:"Select which roles can see this announcement:"}),(0,s.jsx)("div",{className:"flex flex-wrap gap-2",children:I.map(e=>(0,s.jsxs)(S.E,{variant:a.includes(e.id)?"default":"outline",className:"cursor-pointer px-3 py-1 ".concat(a.includes(e.id)?"bg-blue-600 hover:bg-blue-700 text-white":"bg-white hover:bg-gray-100 text-gray-700 border-gray-300"),onClick:()=>_(e.id),children:[e.name,a.includes(e.id)&&(0,s.jsx)(T.A,{className:"ml-1 h-3 w-3"})]},e.id))})]})}),(0,s.jsx)(v,{})]})}),(0,s.jsx)("div",{className:"flex justify-end",children:(0,s.jsx)(o.$,{type:"submit",disabled:d||u,className:"px-4",children:d?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(C.A,{className:"mr-2 h-4 w-4 animate-spin"}),"Submitting..."]}):u?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(T.A,{className:"mr-2 h-4 w-4"}),"Announcement Created!"]}):"Create Announcement"})})]})})]})]})}var I=a(88524),_=a(92657),O=a(62525),P=a(1243),z=a(99840);function L(e){let{userRole:t}=e,[a,r]=(0,n.useState)([]),[l,i]=(0,n.useState)(null),[d,c]=(0,n.useState)(!1),[u,m]=(0,n.useState)(!1),[f,x]=(0,n.useState)(!0),[h,p]=(0,n.useState)(null),{toast:g}=(0,E.dj)(),b=async()=>{try{x(!0);let e=await fetch("/api/announcements");if(!e.ok)throw Error("Failed to fetch announcements");let t=await e.json();r(t),p(null)}catch(e){console.error("Error fetching announcements:",e),p("Failed to load announcements")}finally{x(!1)}};(0,n.useEffect)(()=>{b()},[]);let j=e=>{i(e),c(!0)},y=e=>{i(e),m(!0)},v=async()=>{if(l)try{if(!(await fetch("/api/announcements/".concat(l.id),{method:"DELETE"})).ok)throw Error("Failed to delete announcement");r(a.filter(e=>e.id!==l.id)),m(!1),g({title:"Announcement deleted",description:"The announcement has been deleted successfully."})}catch(e){console.error("Error deleting announcement:",e),g({title:"Error",description:"Failed to delete the announcement. Please try again.",variant:"destructive"})}},N=e=>e.map(e=>{let t="all"===e?"All Users":e.charAt(0).toUpperCase()+e.slice(1);return(0,s.jsx)(S.E,{variant:"outline",className:"mr-1 bg-white text-gray-700 border-gray-300",children:t},e)});return(0,s.jsxs)(A.Zp,{children:[(0,s.jsx)(A.aR,{children:(0,s.jsx)("div",{className:"flex justify-between items-center",children:(0,s.jsxs)("div",{children:[(0,s.jsx)(A.ZB,{children:"All Announcements"}),(0,s.jsx)(A.BT,{children:"Manage announcements for different user roles"})]})})}),(0,s.jsxs)(A.Wu,{children:[f?(0,s.jsx)("div",{className:"flex items-center justify-center h-40",children:(0,s.jsx)("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-gray-900"})}):h?(0,s.jsxs)("div",{className:"text-center py-10 text-red-500",children:[h,(0,s.jsx)(o.$,{onClick:b,className:"ml-4",children:"Retry"})]}):0===a.length?(0,s.jsx)("div",{className:"text-center py-10 text-gray-500",children:"No announcements found"}):(0,s.jsx)("div",{className:"border rounded-md max-h-[500px] overflow-y-auto",children:(0,s.jsxs)(I.XI,{children:[(0,s.jsx)(I.A0,{className:"sticky top-0 bg-white z-10",children:(0,s.jsxs)(I.Hj,{children:[(0,s.jsx)(I.nd,{children:"Title"}),(0,s.jsx)(I.nd,{children:"Created"}),(0,s.jsx)(I.nd,{children:"Author"}),(0,s.jsx)(I.nd,{children:"Target Roles"}),(0,s.jsx)(I.nd,{className:"text-right",children:"Actions"})]})}),(0,s.jsx)(I.BF,{children:a.map(e=>(0,s.jsxs)(I.Hj,{children:[(0,s.jsx)(I.nA,{className:"font-medium",children:e.title}),(0,s.jsx)(I.nA,{children:new Date(e.createdAt).toLocaleDateString()}),(0,s.jsx)(I.nA,{children:e.author.email}),(0,s.jsx)(I.nA,{children:N(e.targetRoles)}),(0,s.jsx)(I.nA,{className:"text-right",children:(0,s.jsxs)("div",{className:"flex justify-end space-x-2",children:[(0,s.jsxs)(o.$,{variant:"outline",size:"sm",onClick:()=>j(e),className:"bg-white text-gray-700 border-gray-300",children:[(0,s.jsx)(_.A,{className:"h-4 w-4"}),(0,s.jsx)("span",{className:"sr-only",children:"View"})]}),(0,s.jsxs)(o.$,{variant:"outline",size:"sm",onClick:()=>y(e),className:"bg-white text-gray-700 border-gray-300",children:[(0,s.jsx)(O.A,{className:"h-4 w-4"}),(0,s.jsx)("span",{className:"sr-only",children:"Delete"})]})]})})]},e.id))})]})}),(0,s.jsx)(z.lG,{open:d,onOpenChange:c,children:(0,s.jsxs)(z.Cf,{className:"sm:max-w-xl",children:[(0,s.jsxs)(z.c7,{children:[(0,s.jsx)(z.L3,{children:null==l?void 0:l.title}),(0,s.jsxs)(z.rr,{children:["Posted by ",null==l?void 0:l.author.email," on ",l&&new Date(l.createdAt).toLocaleDateString()]})]}),(0,s.jsxs)("div",{className:"mt-4",children:[(0,s.jsxs)("div",{className:"mb-2",children:[(0,s.jsx)("span",{className:"text-sm text-gray-500",children:"Target Audience:"})," ",l&&N(l.targetRoles)]}),(0,s.jsx)("p",{className:"text-sm leading-6 text-gray-700",children:null==l?void 0:l.content})]})]})}),(0,s.jsx)(z.lG,{open:u,onOpenChange:m,children:(0,s.jsxs)(z.Cf,{children:[(0,s.jsxs)(z.c7,{children:[(0,s.jsxs)(z.L3,{className:"flex items-center gap-2",children:[(0,s.jsx)(P.A,{className:"text-red-500 h-5 w-5"}),"Confirm Deletion"]}),(0,s.jsxs)(z.rr,{children:['Are you sure you want to delete the announcement "',null==l?void 0:l.title,'"? This action cannot be undone.']})]}),(0,s.jsxs)(z.Es,{className:"mt-4",children:[(0,s.jsx)(o.$,{variant:"outline",onClick:()=>m(!1),children:"Cancel"}),(0,s.jsx)(o.$,{variant:"destructive",onClick:v,children:"Delete"})]})]})})]})]})}var V=a(95784);function U(){let[e,t]=(0,n.useState)([]),[a,r]=(0,n.useState)(null),[l,i]=(0,n.useState)(!0),[d,o]=(0,n.useState)(null);return(0,n.useEffect)(()=>{(async()=>{try{i(!0);let e=await fetch("/api/announcements");if(!e.ok)throw Error("Failed to fetch announcements");let a=await e.json();t(a),a.length>0&&r(a[0])}catch(e){console.error("Error fetching announcements:",e),o("Failed to load announcements")}finally{i(!1)}})()},[]),(0,s.jsx)("div",{className:"flex flex-col space-y-4",children:l?(0,s.jsx)("div",{className:"flex items-center justify-center h-40",children:(0,s.jsx)("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-gray-900"})}):d?(0,s.jsx)("div",{className:"text-center py-10 text-red-500",children:d}):0===e.length?(0,s.jsx)("div",{className:"text-center py-10 text-gray-500",children:"No announcements available"}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("div",{className:"w-full max-w-md",children:(0,s.jsxs)(V.l6,{onValueChange:t=>{let a=e.find(e=>e.id===t);a&&r(a)},defaultValue:null==a?void 0:a.id,children:[(0,s.jsx)(V.bq,{className:"w-full bg-white text-gray-800 border-gray-300",children:(0,s.jsx)(V.yv,{placeholder:"Select an announcement"})}),(0,s.jsx)(V.gC,{children:e.map(e=>(0,s.jsx)(V.eb,{value:e.id,children:e.title},e.id))})]})}),a&&(0,s.jsxs)(A.Zp,{className:"w-full bg-white",children:[(0,s.jsxs)(A.aR,{className:"bg-white text-gray-800",children:[(0,s.jsx)(A.ZB,{children:a.title}),(0,s.jsxs)("div",{className:"text-sm text-gray-500",children:["Posted by ",a.author.email," on ",new Date(a.createdAt).toLocaleDateString()]})]}),(0,s.jsx)(A.Wu,{children:(0,s.jsx)("div",{className:"prose max-h-[300px] overflow-y-auto pr-2",children:a.content})})]})]})})}function M(e){let{userRole:t=[]}=e,a=Array.isArray(t)?t:[t];return a.some(e=>["admin","entrepreneurship","communication"].includes(e))?(0,s.jsxs)("div",{className:"flex flex-col",children:[(0,s.jsx)("h1",{className:"text-2xl font-bold mb-6",children:"Announcements Management"}),(0,s.jsxs)(r.tU,{defaultValue:"list",children:[(0,s.jsx)("div",{className:"flex justify-between items-center mb-8",children:(0,s.jsxs)(r.j7,{className:"bg-gray-200 border-0",children:[(0,s.jsx)(r.Xi,{value:"list",className:"data-[state=active]:bg-blue-600 data-[state=active]:text-white text-gray-700",children:"All Announcements"}),(0,s.jsx)(r.Xi,{value:"create",className:"data-[state=active]:bg-blue-600 data-[state=active]:text-white text-gray-700",children:"Create Announcement"})]})}),(0,s.jsx)(r.av,{value:"list",children:(0,s.jsx)(L,{userRole:a})}),(0,s.jsx)(r.av,{value:"create",children:(0,s.jsx)(D,{userRole:a})})]})]}):(0,s.jsxs)("div",{className:"flex flex-col",children:[(0,s.jsx)("h1",{className:"text-2xl font-bold mb-6",children:"Announcements"}),(0,s.jsx)(U,{})]})}},82714:(e,t,a)=>{"use strict";a.d(t,{J:()=>o});var s=a(95155),r=a(12115),n=a(72797),l=a(74466),i=a(53999);let d=(0,l.F)("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),o=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)(n.b,{ref:t,className:(0,i.cn)(d(),a),...r})});o.displayName=n.b.displayName},88145:(e,t,a)=>{"use strict";a.d(t,{E:()=>i});var s=a(95155);a(12115);var r=a(74466),n=a(53999);let l=(0,r.F)("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",notification:"border-transparent bg-red-500 text-white hover:bg-red-600 absolute -top-1 -right-1 px-1.5 py-0.5 min-w-[1.25rem] h-5 flex items-center justify-center"},shape:{default:"rounded-full",pill:"rounded-full",square:"rounded-md"},size:{default:"text-xs px-2.5 py-0.5",sm:"text-xs px-2 py-0.25 h-3.5 min-w-[1rem]",lg:"text-sm px-3 py-1",notification:"text-xs px-1.5 py-0.5 h-5 min-w-[1.25rem]"}},defaultVariants:{variant:"default",shape:"default",size:"default"}});function i(e){let{className:t,variant:a,shape:r,size:i,...d}=e;return(0,s.jsx)("div",{className:(0,n.cn)(l({variant:a,shape:r,size:i}),t),...d})}},88482:(e,t,a)=>{"use strict";a.d(t,{BT:()=>o,Wu:()=>c,ZB:()=>d,Zp:()=>l,aR:()=>i});var s=a(95155),r=a(12115),n=a(53999);let l=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("div",{ref:t,className:(0,n.cn)("rounded-lg border bg-card text-card-foreground shadow-sm",a),...r})});l.displayName="Card";let i=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("div",{ref:t,className:(0,n.cn)("flex flex-col space-y-1.5 p-6",a),...r})});i.displayName="CardHeader";let d=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("div",{ref:t,className:(0,n.cn)("text-2xl font-semibold leading-none tracking-tight",a),...r})});d.displayName="CardTitle";let o=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("div",{ref:t,className:(0,n.cn)("text-sm text-muted-foreground",a),...r})});o.displayName="CardDescription";let c=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("div",{ref:t,className:(0,n.cn)("p-6 pt-0",a),...r})});c.displayName="CardContent",r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("div",{ref:t,className:(0,n.cn)("flex items-center p-6 pt-0",a),...r})}).displayName="CardFooter"},88524:(e,t,a)=>{"use strict";a.d(t,{A0:()=>i,BF:()=>d,Hj:()=>o,XI:()=>l,nA:()=>u,nd:()=>c});var s=a(95155),r=a(12115),n=a(53999);let l=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("div",{className:"relative w-full overflow-auto",children:(0,s.jsx)("table",{ref:t,className:(0,n.cn)("w-full caption-bottom text-sm",a),...r})})});l.displayName="Table";let i=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("thead",{ref:t,className:(0,n.cn)("[&_tr]:border-b",a),...r})});i.displayName="TableHeader";let d=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("tbody",{ref:t,className:(0,n.cn)("[&_tr:last-child]:border-0",a),...r})});d.displayName="TableBody",r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("tfoot",{ref:t,className:(0,n.cn)("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",a),...r})}).displayName="TableFooter";let o=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("tr",{ref:t,className:(0,n.cn)("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",a),...r})});o.displayName="TableRow";let c=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("th",{ref:t,className:(0,n.cn)("h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0",a),...r})});c.displayName="TableHead";let u=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("td",{ref:t,className:(0,n.cn)("p-4 align-middle [&:has([role=checkbox])]:pr-0",a),...r})});u.displayName="TableCell",r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("caption",{ref:t,className:(0,n.cn)("mt-4 text-sm text-muted-foreground",a),...r})}).displayName="TableCaption"},89852:(e,t,a)=>{"use strict";a.d(t,{p:()=>l});var s=a(95155),r=a(12115),n=a(53999);let l=r.forwardRef((e,t)=>{let{className:a,type:r,...l}=e;return(0,s.jsx)("input",{type:r,className:(0,n.cn)("flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground 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 md:text-sm",a),ref:t,...l})});l.displayName="Input"},95784:(e,t,a)=>{"use strict";a.d(t,{bq:()=>m,eb:()=>p,gC:()=>h,l6:()=>c,yv:()=>u});var s=a(95155),r=a(12115),n=a(43433),l=a(66474),i=a(47863),d=a(5196),o=a(53999);let c=n.bL;n.YJ;let u=n.WT,m=r.forwardRef((e,t)=>{let{className:a,children:r,...i}=e;return(0,s.jsxs)(n.l9,{ref:t,className:(0,o.cn)("flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-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",a),...i,children:[r,(0,s.jsx)(n.In,{asChild:!0,children:(0,s.jsx)(l.A,{className:"h-4 w-4 opacity-50"})})]})});m.displayName=n.l9.displayName;let f=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)(n.PP,{ref:t,className:(0,o.cn)("flex cursor-default items-center justify-center py-1",a),...r,children:(0,s.jsx)(i.A,{className:"h-4 w-4"})})});f.displayName=n.PP.displayName;let x=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)(n.wn,{ref:t,className:(0,o.cn)("flex cursor-default items-center justify-center py-1",a),...r,children:(0,s.jsx)(l.A,{className:"h-4 w-4"})})});x.displayName=n.wn.displayName;let h=r.forwardRef((e,t)=>{let{className:a,children:r,position:l="popper",...i}=e;return(0,s.jsx)(n.ZL,{children:(0,s.jsxs)(n.UC,{ref:t,className:(0,o.cn)("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","popper"===l&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",a),position:l,...i,children:[(0,s.jsx)(f,{}),(0,s.jsx)(n.LM,{className:(0,o.cn)("p-1","popper"===l&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:r}),(0,s.jsx)(x,{})]})})});h.displayName=n.UC.displayName,r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)(n.JU,{ref:t,className:(0,o.cn)("py-1.5 pl-8 pr-2 text-sm font-semibold",a),...r})}).displayName=n.JU.displayName;let p=r.forwardRef((e,t)=>{let{className:a,children:r,...l}=e;return(0,s.jsxs)(n.q7,{ref:t,className:(0,o.cn)("relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",a),...l,children:[(0,s.jsx)("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,s.jsx)(n.VF,{children:(0,s.jsx)(d.A,{className:"h-4 w-4"})})}),(0,s.jsx)(n.p4,{children:r})]})});p.displayName=n.q7.displayName,r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)(n.wv,{ref:t,className:(0,o.cn)("-mx-1 my-1 h-px bg-muted",a),...r})}).displayName=n.wv.displayName},97168:(e,t,a)=>{"use strict";a.d(t,{$:()=>o,r:()=>d});var s=a(95155),r=a(12115),n=a(99708),l=a(74466),i=a(53999);let d=(0,l.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),o=r.forwardRef((e,t)=>{let{className:a,variant:r,size:l,asChild:o=!1,...c}=e,u=o?n.DX:"button";return(0,s.jsx)(u,{className:(0,i.cn)(d({variant:r,size:l,className:a})),ref:t,...c})});o.displayName="Button"},99474:(e,t,a)=>{"use strict";a.d(t,{T:()=>l});var s=a(95155),r=a(12115),n=a(53999);let l=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("textarea",{className:(0,n.cn)("flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-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 md:text-sm",a),ref:t,...r})});l.displayName="Textarea"},99840:(e,t,a)=>{"use strict";a.d(t,{Cf:()=>m,Es:()=>x,L3:()=>h,ZJ:()=>c,c7:()=>f,lG:()=>d,rr:()=>p,zM:()=>o});var s=a(95155),r=a(12115),n=a(45821),l=a(54416),i=a(53999);let d=n.bL,o=n.l9,c=n.ZL;n.bm;let u=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)(n.hJ,{ref:t,className:(0,i.cn)("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",a),...r})});u.displayName=n.hJ.displayName;let m=r.forwardRef((e,t)=>{let{className:a,children:r,...d}=e;return(0,s.jsxs)(c,{children:[(0,s.jsx)(u,{}),(0,s.jsxs)(n.UC,{ref:t,className:(0,i.cn)("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-white p-6 shadow-lg duration-200 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-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",a),...d,children:[r,(0,s.jsxs)(n.bm,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[(0,s.jsx)(l.A,{className:"h-4 w-4"}),(0,s.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})});m.displayName=n.UC.displayName;let f=e=>{let{className:t,...a}=e;return(0,s.jsx)("div",{className:(0,i.cn)("flex flex-col space-y-1.5 text-center sm:text-left",t),...a})};f.displayName="DialogHeader";let x=e=>{let{className:t,...a}=e;return(0,s.jsx)("div",{className:(0,i.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...a})};x.displayName="DialogFooter";let h=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)(n.hE,{ref:t,className:(0,i.cn)("text-lg font-semibold leading-none tracking-tight",a),...r})});h.displayName=n.hE.displayName;let p=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)(n.VY,{ref:t,className:(0,i.cn)("text-sm text-muted-foreground",a),...r})});p.displayName=n.VY.displayName}},e=>{var t=t=>e(e.s=t);e.O(0,[4277,5685,5652,4159,2468,8441,1684,7358],()=>t(52591)),_N_E=e.O()}]); |