function FinanceFormView({kind:s,items:a,onSelect:i,selectedId:t}){const n=s.formTabs||null,c=s.formSections||[],l=s.flowSteps||null,[m,r]=React.useState(0);function d(e,o){return n?n[o]==="Business profile"?["identity","address","bank","sig"].includes(e.id):n[o]==="Invoice defaults"?["invdefaults"].includes(e.id):n[o]==="Expense categories"?["cats"].includes(e.id):!0:!0}return React.createElement("div",{className:"view view-financeForm"},n&&React.createElement("div",{className:"fin-form-tabs"},n.map((e,o)=>React.createElement("button",{key:e,className:`fin-form-tab ${o===m?"on":""}`,onClick:()=>r(o)},e))),l&&React.createElement("div",{className:"fin-flow"},l.map((e,o)=>React.createElement(React.Fragment,{key:e.id},React.createElement("div",{className:`fin-flow-step ${o===0?"st-on":"st-idle"}`},React.createElement("span",{className:"fin-flow-idx mono"},o+1),React.createElement("div",null,React.createElement("div",{className:"fin-flow-label"},e.label),React.createElement("div",{className:"fin-flow-hint mono"},e.hint))),o<l.length-1&&React.createElement("span",{className:"fin-flow-line"})))),React.createElement("div",{className:"fin-form-grid"},c.filter(e=>d(e,m)).map(e=>React.createElement("div",{key:e.id,className:"fin-form-section"},React.createElement("div",{className:"fin-form-section-label mono"},e.label),e.kind==="line-items"&&React.createElement(FormLineItems,{items:e.items}),e.kind==="totals"&&React.createElement(FormTotals,{net:e.net,vat:e.vat,gross:e.gross}),e.kind==="chip-list"&&React.createElement(FormChipList,{items:e.items}),!e.kind&&React.createElement("div",{className:"fin-form-fields"},(e.fields||[]).map(o=>React.createElement(FormField,{key:o.key,field:o})))))))}function FormField({field:s}){const a=s;if(a.kind==="button")return React.createElement("button",{className:"btn btn-secondary fin-form-btn"},React.createElement(MIcon,{name:"add",size:14}),a.value);const i=`ff-${a.key}`,t={id:i,defaultValue:a.value||"",className:`fin-form-input ${a.mono?"mono":""}`,style:a.width?{width:a.width}:null,placeholder:a.placeholder||""};return React.createElement("label",{className:`fin-form-field ${a.required?"req":""}`,htmlFor:i},React.createElement("span",{className:"fin-form-label"},a.label,a.requiresConfirm&&React.createElement("span",{className:"fin-form-warn mono"}," \xB7 high-impact")),React.createElement("div",{className:"fin-form-control"},a.kind==="textarea"&&React.createElement("textarea",{rows:3,...t}),a.kind==="select"&&React.createElement("select",{...t},(a.options||[]).map(n=>React.createElement("option",{key:n,value:n},n))),a.kind==="client-picker"&&React.createElement("select",{...t},(window.FIN?.CLIENTS||[]).map(n=>React.createElement("option",{key:n.id,value:n.id},n.name," \xB7 ",n.email))),a.kind==="upload"&&React.createElement("div",{className:"fin-form-upload"},React.createElement(MIcon,{name:"upload_file",size:16}),React.createElement("span",null,"Upload PNG")),(a.kind==="text"||a.kind==="date"||a.kind==="number"||a.kind==="percent")&&React.createElement(React.Fragment,null,React.createElement("input",{type:"text",...t}),a.suffix&&React.createElement("span",{className:"fin-form-suffix mono"},a.suffix),a.kind==="percent"&&React.createElement("span",{className:"fin-form-suffix mono"},"%"))))}function FormLineItems({items:s}){return React.createElement("div",{className:"fin-li-table"},React.createElement("div",{className:"fin-li-head mono"},React.createElement("span",null,"#"),React.createElement("span",null,"Description"),React.createElement("span",{className:"right"},"Qty"),React.createElement("span",{className:"right"},"Unit \u20AC"),React.createElement("span",{className:"right"},"VAT %"),React.createElement("span",{className:"right"},"Total \u20AC"),React.createElement("span",null)),(s||[]).map((a,i)=>React.createElement("div",{key:i,className:"fin-li-row"},React.createElement("span",{className:"mono ink-faint"},i+1),React.createElement("input",{type:"text",defaultValue:a.description,className:"fin-li-input"}),React.createElement("input",{type:"text",defaultValue:a.quantity,className:"fin-li-input mono right"}),React.createElement("input",{type:"text",defaultValue:a.unit_price,className:"fin-li-input mono right"}),React.createElement("input",{type:"text",defaultValue:a.tax_rate,className:"fin-li-input mono right"}),React.createElement("span",{className:"mono right"},"\u20AC ",a.total),React.createElement("button",{className:"fin-li-x",title:"Remove"},React.createElement(MIcon,{name:"close",size:14})))),React.createElement("button",{className:"fin-li-add"},React.createElement(MIcon,{name:"add",size:14}),"Add line item"))}function FormTotals({net:s,vat:a,gross:i}){return React.createElement("div",{className:"fin-totals"},React.createElement("div",{className:"fin-totals-row"},React.createElement("span",{className:"mono ink-faint"},"Net"),React.createElement("span",{className:"mono"},"\u20AC ",s)),React.createElement("div",{className:"fin-totals-row"},React.createElement("span",{className:"mono ink-faint"},"VAT 19%"),React.createElement("span",{className:"mono"},"\u20AC ",a)),React.createElement("div",{className:"fin-totals-row fin-totals-gross"},React.createElement("span",{className:"mono"},"Gross"),React.createElement("span",{className:"mono"},"\u20AC ",i)))}function FormChipList({items:s}){return React.createElement("div",{className:"fin-chips"},(s||[]).map((a,i)=>React.createElement("span",{key:i,className:"fin-chip"},React.createElement("span",null,a),React.createElement("button",{className:"fin-chip-x"},React.createElement(MIcon,{name:"close",size:12})))),React.createElement("button",{className:"fin-chip-add"},React.createElement(MIcon,{name:"add",size:12}),"Add category"))}function FinanceEurView({kind:s}){const a=s.rows||[],i=s.totals||{},t=Math.max(...a.map(n=>parseFloat(String(n.revenue).replace(/\./g,"").replace(",","."))||0));return React.createElement("div",{className:"view view-financeEur"},React.createElement("div",{className:"fin-eur-head"},React.createElement("div",{className:"fin-eur-year mono"},"Fiscal year \xB7 ",s.year),React.createElement("div",{className:"fin-eur-tools"},React.createElement("button",{className:"btn btn-ghost"},React.createElement(MIcon,{name:"chevron_left",size:14}),s.year-1),React.createElement("button",{className:"btn btn-ghost"},s.year+1,React.createElement(MIcon,{name:"chevron_right",size:14})),React.createElement("button",{className:"btn btn-secondary"},React.createElement(MIcon,{name:"download",size:14}),"Download CSV"))),React.createElement("div",{className:"fin-eur-grid"},React.createElement("div",{className:"fin-eur-row fin-eur-row-head mono"},React.createElement("span",null,"Month"),React.createElement("span",{className:"right"},"Revenue"),React.createElement("span",{className:"right"},"Expenses"),React.createElement("span",{className:"right"},"Profit"),React.createElement("span",{className:"fin-eur-bar-label"},"Trend")),a.map(n=>{const c=parseFloat(String(n.revenue).replace(/\./g,"").replace(",","."))||0,l=t?Math.round(c/t*100):0;return React.createElement("div",{key:n.month,className:"fin-eur-row"},React.createElement("span",null,n.month),React.createElement("span",{className:"mono right"},n.revenue==="\u2014"?"\u2014":"\u20AC "+n.revenue),React.createElement("span",{className:"mono right"},n.expenses==="\u2014"?"\u2014":"\u20AC "+n.expenses),React.createElement("span",{className:`mono right ${n.profit==="\u2014"?"ink-faint":""}`},n.profit==="\u2014"?"\u2014":"\u20AC "+n.profit),React.createElement("span",{className:"fin-eur-bar"},React.createElement("span",{className:"fin-eur-bar-fill",style:{width:l+"%"}})))}),React.createElement("div",{className:"fin-eur-row fin-eur-row-totals mono"},React.createElement("span",null,"YTD"),React.createElement("span",{className:"right"},"\u20AC ",i.revenue),React.createElement("span",{className:"right"},"\u20AC ",i.expenses),React.createElement("span",{className:"right"},"\u20AC ",i.profit),React.createElement("span",{className:"fin-eur-bar"}))))}function FinanceCreditsView({kind:s}){const a=s.balance||{},i=s.topups||[];return React.createElement("div",{className:"view view-financeCredits"},React.createElement("div",{className:"fin-credits-hero"},React.createElement("div",{className:"fin-credits-label mono"},"Credit balance"),React.createElement("div",{className:"fin-credits-eur"},"\u20AC ",a.eur),React.createElement("div",{className:"fin-credits-sub mono"},a.credits," credits remaining \xB7 ",a.rate),React.createElement("div",{className:"fin-credits-actions"},React.createElement("button",{className:"btn btn-primary"},React.createElement(MIcon,{name:"add",size:14}),"Top up credits"),React.createElement("button",{className:"btn btn-ghost"},React.createElement(MIcon,{name:"open_in_new",size:14}),"Open public /pricing"))),React.createElement("div",{className:"fin-credits-list"},React.createElement("div",{className:"fin-credits-list-head mono"},"Recent top-ups"),React.createElement("div",{className:"fin-credits-table"},React.createElement("div",{className:"fin-credits-row fin-credits-row-head mono"},React.createElement("span",null,"Date"),React.createElement("span",null,"Pack"),React.createElement("span",{className:"right"},"Amount \u20AC"),React.createElement("span",null,"Method")),i.map(t=>React.createElement("div",{key:t.id,className:"fin-credits-row"},React.createElement("span",{className:"mono"},t.date),React.createElement("span",null,t.pack),React.createElement("span",{className:"mono right"},"\u20AC ",t.amount),React.createElement("span",{className:"mono ink-soft"},t.method),React.createElement(ScopeBadge,{item:t,kind:s}))))))}window.VIEWS.financeForm=FinanceFormView,window.VIEWS.financeEur=FinanceEurView,window.VIEWS.financeCredits=FinanceCreditsView,window.VIEW_OPTIONS.push({value:"financeForm",label:"Form",icon:"edit_note"},{value:"financeEur",label:"E\xDCR",icon:"analytics"},{value:"financeCredits",label:"Credits",icon:"token"});
