diff --git a/404.html b/404.html index 7477910..8dd009f 100644 --- a/404.html +++ b/404.html @@ -1 +1 @@ -404: This page could not be found

404

This page could not be found.

\ No newline at end of file +404: This page could not be found

404

This page could not be found.

\ No newline at end of file diff --git a/_next/static/chunks/pages/accounts-ccbbc7a22b1047ef.js b/_next/static/chunks/pages/accounts-545ab74404f61c59.js similarity index 59% rename from _next/static/chunks/pages/accounts-ccbbc7a22b1047ef.js rename to _next/static/chunks/pages/accounts-545ab74404f61c59.js index 573ff69..dee3ae8 100644 --- a/_next/static/chunks/pages/accounts-ccbbc7a22b1047ef.js +++ b/_next/static/chunks/pages/accounts-545ab74404f61c59.js @@ -1 +1 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[778],{55553:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return et}});var n=a(4235),r=a(87818),l=a(12987),c=a(67294),s=a(87536),u=a(72370);function o(){return(o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let[t,a]=(0,c.useState)(!1),{register:n,handleSubmit:m,reset:i,formState:{errors:d}}=(0,s.cI)(),p=(0,c.useCallback)(()=>a(!1),[a]),E=(0,c.useCallback)(t=>{e(t),i(),p()},[e,p,i]),y=(0,c.useId)(),{values:{currencyRates:f,preferredDisplayCurrency:x}}=(0,c.useContext)(l.Z);return c.createElement(c.Fragment,null,c.createElement("button",{onClick:()=>a(e=>!e),className:"btn btn-primary space-x-2"},c.createElement(u.RWZ,{className:"inline"}),c.createElement("span",{className:"align-middle"},"Add account")),c.createElement(r.u_,{isOpen:t,onDismiss:p},c.createElement("form",{onSubmit:m(E),className:"rounded bg-indigo-500 p-4 dark:bg-indigo-900"},c.createElement("div",{className:"pb-4"},c.createElement("h2",{className:"text-lg text-gray-700 dark:text-gray-200"},"Add new account"),c.createElement("fieldset",{className:"space-y-2"},c.createElement(r.II,o({placeholder:"Savings, Investments...",label:"Name"},n("name",{required:!0}),{errorMessage:d.name&&"Please provide a name for your account"})),c.createElement("label",{className:"flex flex-col space-y-2"},c.createElement("span",{className:"modal-form-label"},"Account type"),c.createElement("select",o({className:"modal-select"},n("type",{required:!0})),c.createElement("option",{value:"Cash"},"Cash"),c.createElement("option",{value:"Investment"},"Investment"))),c.createElement("label",{htmlFor:y,className:"flex flex-col space-y-2"},c.createElement("span",{className:"modal-form-label"},"Account currency"),c.createElement("select",o({id:y,defaultValue:x,className:"modal-select"},n("currency",{required:!0})),Object.keys(f.usd).map(e=>e.toUpperCase()).map(e=>c.createElement("option",{key:e,value:e},e)))))),c.createElement(r.qO,null,c.createElement(r.zx,{buttonType:"Transparent",onClick:p},"Cancel"),c.createElement(r.zx,{type:"submit"},"Add")))))},i=a(84413),d=a(37555),p=a(36510);let E=(0,c.createContext)({state:{accounts:[],entries:{}},dispatch:e=>{}});function y(){return{accounts:[],entries:{}}}function f(e,t){return(0,p.n)("account_state",x)(e,t)}function x(e,t){switch(t.type){case"RESET":return y();case"LOAD STATE":return{...t.state,accounts:t.state.accounts.sort((e,t)=>e.sortKey-t.sortKey)};case"ADD ACCOUNT":return{...e,accounts:e.accounts.concat(t.account)};case"ADD ENTRY":return e.entries[t.date]={},{...e};case"EDIT ENTRY FOR ACCOUNT":return e.entries[t.key][t.name]=t.value,e.entries=(0,d.CV)(e.entries),{...e};case"DELETE ENTRY":return delete e.entries[t.date],{...e,entries:e.entries};case"SORT ACCOUNTS":return{...e,accounts:e.accounts.map(e=>({...e,sortKey:t.order.find(t=>t.id===e.id)?.sortKey??0})).sort((e,t)=>e.sortKey-t.sortKey)};default:return console.warn(`action type not handled: ${JSON.stringify(t)}`),e}}function g(){return(g=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{dispatch:e}=(0,c.useContext)(E),[t,a]=(0,c.useState)(!1),n=(0,c.useCallback)(()=>a(!1),[a]),{register:l,handleSubmit:u}=(0,s.cI)(),o=u(({date:t})=>{e({type:"ADD ENTRY",date:t}),n()});return c.createElement(c.Fragment,null,c.createElement(r.zx,{buttonType:"Primary",onClick:()=>a(!0)},"Add entry"),c.createElement(r.u_,{isOpen:t,onDismiss:n},c.createElement("form",{onSubmit:o},c.createElement("div",{className:"p-4"},c.createElement("h2",{className:"text-lg text-gray-700 dark:text-gray-400"},"Add new entry on date"),c.createElement(r.II,g({type:"date",className:"m-4"},l("date")))),c.createElement(r.qO,null,c.createElement(r.zx,{buttonType:"Primary",type:"submit"},"Add")))))});b.displayName="AddEntryModal";var N=a(9880),v=a(38572),h=a(38873),k=a(76077),C=a(53667),O=a(74874),T=a(76310),w=a(67398),D=a(50160);function A(){return(A=Object.assign?Object.assign.bind():function(e){for(var t=1;te.x,yAccessor:e=>e.y};var I=()=>{let e=(0,D.Z)(),{state:t}=(0,c.useContext)(E),{values:a}=(0,c.useContext)(l.Z),n=(0,c.useCallback)(e=>Object.keys(t.entries).map(n=>{let r=t.entries[n][e.name],l=void 0===r?void 0:(0,d.fK)(r,a.currencyRates.usd,e.currency,a.preferredDisplayCurrency);return{x:n,y:l}}),[a.currencyRates.usd,a.preferredDisplayCurrency,t.entries]),s=t.accounts.map(e=>({account:e,data:n(e)})),u=(0,c.useCallback)((e,a)=>{let n=s.filter(a).map(e=>e.data);return{name:e,data:Object.keys(t.entries).map((e,t)=>({x:e,y:n.map(e=>e[t].y??0).reduce((e,t)=>e+t,0)}))}},[s,t.entries]),o=["Cash","Investment"].map(e=>u(e,t=>t.account.type===e)).concat([u("Total",()=>!0)]),[m,i]=(0,c.useState)(!0);return c.createElement("div",{className:"py-4"},c.createElement("div",{className:"flex flex-row justify-end bg-transparent"},c.createElement("label",{className:"space-x-4 px-4"},c.createElement("span",{className:"h-full align-middle"},"Show totals"),c.createElement(r.ZD,{checked:m,onChange:e=>i(e.target.checked)}))),c.createElement(v.Z,{height:500,margin:{top:50,bottom:30,right:20,left:70},xScale:{type:"band"},yScale:{type:"linear"},theme:e?h.Z:k.Z},c.createElement(C.Z,{orientation:"bottom",hideAxisLine:!0}),c.createElement(C.Z,{orientation:"left"}),c.createElement(O.Z,{columns:!1,numTicks:4}),m?o.map(e=>c.createElement(T.Z,A({key:e.name,dataKey:e.name,data:e.data},S))):s.map(e=>c.createElement(T.Z,A({key:e.account.id,dataKey:e.account.name,data:e.data},S))),c.createElement(w.Z,{snapTooltipToDatumX:!0,snapTooltipToDatumY:!0,showVerticalCrosshair:!0,showSeriesGlyphs:!0,renderTooltip:({tooltipData:e,colorScale:t})=>{if(e?.nearestDatum&&t)return c.createElement("div",{className:"flex flex-col"},c.createElement("div",{style:{color:t(e.nearestDatum.key)}},e.nearestDatum.key),c.createElement("span",null,S.xAccessor(e.nearestDatum.datum)),c.createElement("span",{className:"text-green-700 dark:text-green-500"},(0,d.xG)(S.yAccessor(e.nearestDatum.datum),a.preferredDisplayCurrency)))}})))},R=a(7145),Z=a.n(R),j=a(28493),_=a(36963),G=a(99272),K=a(49294),F=({id:e,type:t,index:a,move:n,children:r,className:l})=>{let s=(0,c.useRef)(null),[{handlerId:u},o]=(0,G.L)({accept:t,collect:e=>({handlerId:e.getHandlerId()}),hover(e,t){if(!s.current)return;let r=e.index;if(r===a)return;let l=s.current?.getBoundingClientRect(),c=(l.bottom-l.top)/2,u=t.getClientOffset(),o=u.y-l.top;ra&&o>c||(n(r,a),e.index=a)}},[a]),[{isDragging:m},i]=(0,K.c)(()=>({type:t,item:()=>({id:e,index:a}),collect:e=>({isDragging:!!e.isDragging()})}),[a]);return i(o(s)),c.createElement("li",{ref:s,"data-handler-id":u,className:`cursor-move ${m?"opacity-25":""} ${l||""}`},r)},U=function({typeIdentifier:e,items:t,setItems:a,children:n,className:r}){let l=(0,c.useCallback)((e,t)=>{a(a=>Z()(a,{$splice:[[e,1],[t,0,a[e]]]}))},[a]);return c.createElement(j.W,{backend:_.PD},c.createElement("ol",null,t.map((t,a)=>c.createElement(F,{key:t.id,id:t.id,index:a,move:l,type:e,className:r},n(t)))))},P=()=>c.createElement("svg",{className:"h-5 w-5 animate-spin text-black dark:text-white",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},c.createElement("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),c.createElement("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"}));let z=({account:e})=>c.createElement("div",null,e.name);var L=()=>{let{state:{accounts:e},dispatch:t}=(0,c.useContext)(E),[a,n]=(0,c.useState)(!1),[l,s]=(0,c.useState)("NONE"),[o,m]=(0,c.useState)((0,c.useMemo)(()=>e,[e])),i=(0,c.useCallback)(e=>c.createElement(z,{account:e}),[]),d=(0,N.ku)(`${N.ft}/account`,{method:"PUT"}),p=(0,c.useCallback)(async()=>{try{s("SAVING");let e=o.map((e,t)=>({id:e.id,sortKey:t,name:e.name}));await d(e),t({type:"SORT ACCOUNTS",order:e}),s("SAVED"),setTimeout(()=>s("NONE"),1e3)}catch{console.warn("Unable to save order of accounts"),s("NONE")}},[t,o,d]);return c.createElement(c.Fragment,null,c.createElement(r.zx,{onClick:()=>n(!0),className:"btn btn-primary flex items-center gap-x-2"},c.createElement(u.j7b,{className:"inline"}),c.createElement("span",{className:"align-middle"},"Order accounts")),c.createElement(r.u_,{isOpen:a,onDismiss:()=>n(!1)},c.createElement("div",{className:"max-h-screen w-80 max-w-full overflow-y-scroll rounded bg-slate-200 p-4 dark:bg-slate-700"},c.createElement("h2",{className:"modal-header"},"Reorder accounts"),c.createElement(U,{className:"m-4 rounded bg-green-500 p-2",typeIdentifier:"ACCOUNT",items:o,setItems:m},i),c.createElement(r.qO,null,c.createElement(r.zx,{buttonType:"Secondary",onClick:()=>n(!1)},"Close"),c.createElement(r.zx,{onClick:p},"Save order"))),"NONE"!==l&&c.createElement("div",{className:"absolute top-0 left-0 z-10 flex h-full w-full flex-row items-center justify-center bg-black opacity-75"},"SAVING"===l&&c.createElement(P,null),"SAVED"===l&&c.createElement("div",{className:"text-xl font-bold"},"Order saved!"))))},V=a(4076),Y=a(74543),$=({account:e,entry:t,date:a})=>{let{dispatch:n}=(0,c.useContext)(E),r=(0,c.useRef)(null),l=(0,N.ku)(`${N.ft}/account/entry`,{method:"POST"}),s=(0,c.useCallback)(async t=>{let r=(0,d.p3)(t.currentTarget.innerText);r&&(await l({date:a,amount:r,accountId:e.id}),n({type:"EDIT ENTRY FOR ACCOUNT",name:e.name,key:a,value:r}))},[e.id,e.name,a,n,l]),u=(0,d.xG)(t[e.name],e.currency);return c.createElement(c.Fragment,null,c.createElement("td",{key:e.name,contentEditable:!0,suppressContentEditableWarning:!0,ref:r,onBlur:s,className:"table-cell"},u))},B=()=>{let{state:{accounts:e,entries:t}}=(0,c.useContext)(E),a=Object.keys(t).map(a=>H(e,t,a));return c.createElement("div",{className:"account-table"},c.createElement("table",{className:"w-full"},c.createElement(q,{accounts:e}),c.createElement("tbody",null,Object.keys(t).map((n,r)=>c.createElement("tr",{key:n,className:"whitespace-nowrap text-right font-mono odd:bg-gray-300 dark:odd:bg-gray-800"},c.createElement("td",{className:"pr-6 text-center"},n),c.createElement(M,{date:n,index:r,totals:a}),e.map(e=>c.createElement($,{key:e.name,account:e,entry:t[n],date:n})),c.createElement(X,{date:n}))))))};let q=({accounts:e})=>c.createElement("thead",null,c.createElement("tr",{className:"whitespace-nowrap text-right"},c.createElement("th",{className:"pr-6 text-center"},"Date"),c.createElement("th",{className:"px-4 text-green-700 dark:text-green-500"},"Gain"),c.createElement("th",{className:"px-4 text-blue-700 dark:text-blue-500"},"Total"),c.createElement("th",{className:"px-4 text-yellow-700 dark:text-yellow-500"},"Total cash"),c.createElement("th",{className:"px-4 text-purple-700 dark:text-purple-500"},"Total investments"),e.map(e=>c.createElement("th",{key:e.name,className:"px-4"},c.createElement("span",null,e.name))),c.createElement("th",null))),M=({index:e,date:t,totals:a})=>{let{state:{accounts:n,entries:r}}=(0,c.useContext)(E),{values:{preferredDisplayCurrency:s}}=(0,c.useContext)(l.Z),u=0===e?0:a[e]-a[e-1],o=a[e],m=H(n,r,t,e=>"Cash"===e.type),i=H(n,r,t,e=>"Investment"===e.type);return c.createElement(c.Fragment,null,c.createElement("td",{className:`${(0,V.yY)(u)} cell-summary`},(0,d.xG)(u,s),c.createElement(W,{value:u,index:e})),c.createElement("td",{className:"text-blue-700 dark:text-blue-500 cell-summary"},(0,d.xG)(o,s),c.createElement(W,{value:o,index:e})),c.createElement("td",{className:"text-yellow-700 dark:text-yellow-500 cell-summary"},(0,d.xG)(m,s),c.createElement(W,{value:m,index:e})),c.createElement("td",{className:"text-purple-700 dark:text-purple-500 cell-summary"},(0,d.xG)(i,s),c.createElement(W,{value:i,index:e})))},W=({value:e,index:t})=>{let{values:{preferredDisplayCurrency:a,preferredCurrencies:n,currencyRates:r}}=(0,c.useContext)(l.Z);return c.createElement("ol",{style:{top:-t*n.length}},n.map(t=>c.createElement("li",{key:t},(0,d.xG)((0,d.fK)(e,r.usd,a,t),t))))},X=({date:e})=>{let{dispatch:t}=(0,c.useContext)(E);return c.createElement("td",{className:"pl-4"},c.createElement(Y.Z,{onClick:()=>t({type:"DELETE ENTRY",date:e})}))};function H(e,t,a,n=()=>!0){let{values:{currencyRates:r,preferredDisplayCurrency:s}}=(0,c.useContext)(l.Z);return e.filter(n).map(e=>(0,d.fK)(t[a][e.name]??0,r.usd,e.currency,s)).reduce((e,t)=>e+t,0)}var J=a(88100);let Q=(0,c.memo)(()=>{let[e,t]=(0,c.useReducer)(f,(0,p.v)("account_state",y())),a=(0,N.h_)(`${N.ft}/account`,{method:"GET"});(0,c.useEffect)(()=>{if(!a.loading&&a.data){let e=a.data;t({type:"LOAD STATE",state:{accounts:e,entries:function(e){let t={};for(let a of e)for(let e of a.entries){let n=(0,i.p)(e.date);n in t||(t[n]={}),t[n][a.name]=e.amount}return Object.keys(t).sort().reduce((e,a)=>(e[a]=t[a],e),{})}(e)}})}},[a.loading]);let n=(0,N.ku)(`${N.ft}/account`,{method:"POST"}),r=(0,c.useCallback)(async e=>{await n(e),t({type:"ADD ACCOUNT",account:e})},[n]);return a.loading?c.createElement("div",null,"Loading data"):c.createElement(E.Provider,{value:{state:e,dispatch:t}},c.createElement(B,null),c.createElement("div",{className:"flex flex-row justify-between px-4"},c.createElement(m,{addAccount:r}),c.createElement(L,null),c.createElement(b,null)),c.createElement(I,null))});Q.displayName="AccountOverview";var ee=(0,J.u3)(Q,{onRedirecting:()=>c.createElement("div",null,"Redirecting you to the login page")}),et=()=>c.createElement(c.Fragment,null,c.createElement(n.Z,{title:"Accounts"}),c.createElement(ee,null))},74543:function(e,t,a){"use strict";a.d(t,{Z:function(){return l}});var n=a(67294),r=a(72370);function l({onClick:e}){return n.createElement("button",{onClick:e,className:"flex focus:outline-none"},n.createElement(r.BFV,{size:24,className:"text-red-700 dark:text-red-500"}))}},4235:function(e,t,a){"use strict";var n=a(9008),r=a.n(n),l=a(67294);t.Z=({title:e})=>{let t=`${e} | Finance`;return l.createElement(r(),null,l.createElement("title",null,t))}},4076:function(e,t,a){"use strict";function n(e){return e>0?l.positiveColor:e<0?l.negativeColor:""}function r(e){return e>0?l.positiveBackground:e<0?l.positiveBackground:""}a.d(t,{yY:function(){return n},yZ:function(){return r}});let l={positiveColor:"text-green-700 dark:text-green-500",negativeColor:"text-red-700 dark:text-red-500",positiveBackground:"bg-green-400 dark:bg-green-700"}},37555:function(e,t,a){"use strict";a.d(t,{CV:function(){return o},fK:function(){return c},p3:function(){return r},sL:function(){return u},xG:function(){return l}});var n=a(67294);function r(e){return Number.parseFloat(e.toString().replace(/[^.\d]/g,""))}function l(e,t,a){if(!e||Number.isNaN(e))return"0";let n=t=>e.toLocaleString("en-US",{style:"currency",currency:t,currencyDisplay:"symbol",...a});try{return n(t??"USD")}catch(a){if(a instanceof RangeError&&a.message.startsWith("Invalid currency code")&&t)return n("USD").replace("USD",t);return e.toString()}}function c(e,t,a,n){return e*s(t,a,n)}function s(e,t,a){let n=t?.toLowerCase(),r=a?.toLowerCase();return n&&r&&n!==r?"usd"===n?"GBp"===a?100*e.gbp:r in e?e[r]:1:"usd"!==r?s(e,t,"usd")*s(e,"usd",a):"GBp"===t?1/(100*e.gbp):n in e?1/e[n]:1:1}function u(e,t,a){return(0,n.useCallback)(n=>n*s(a,e,t),[e,a,t])}function o(e){return Object.keys(e).sort().reduce((t,a)=>(t[a]=e[a],t),{})}Intl.NumberFormat(void 0,{style:"currency",currency:"DKK",currencyDisplay:"code"})},84413:function(e,t,a){"use strict";function n(e){let t=e.getFullYear(),a=""+(e.getMonth()+1),n=""+e.getDate();return a.length<2&&(a="0"+a),n.length<2&&(n="0"+n),[t,a,n].join("-")}a.d(t,{p:function(){return n}})},86076:function(e,t,a){(window.__NEXT_P=window.__NEXT_P||[]).push(["/accounts",function(){return a(55553)}])}},function(e){e.O(0,[774,536,47,888,179],function(){return e(e.s=86076)}),_N_E=e.O()}]); \ No newline at end of file +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[778],{55553:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return ea}});var n=a(4235),r=a(87818),l=a(12987),c=a(67294),s=a(87536),u=a(72370);function o(){return(o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let[t,a]=(0,c.useState)(!1),{register:n,handleSubmit:m,reset:i,formState:{errors:d}}=(0,s.cI)(),p=(0,c.useCallback)(()=>a(!1),[a]),E=(0,c.useCallback)(t=>{e(t),i(),p()},[e,p,i]),y=(0,c.useId)(),{values:{currencyRates:f,preferredDisplayCurrency:x}}=(0,c.useContext)(l.Z);return c.createElement(c.Fragment,null,c.createElement("button",{onClick:()=>a(e=>!e),className:"btn btn-primary space-x-2"},c.createElement(u.RWZ,{className:"inline"}),c.createElement("span",{className:"align-middle"},"Add account")),c.createElement(r.u_,{isOpen:t,onDismiss:p},c.createElement("form",{onSubmit:m(E),className:"rounded bg-indigo-500 p-4 dark:bg-indigo-900"},c.createElement("div",{className:"pb-4"},c.createElement("h2",{className:"text-lg text-gray-700 dark:text-gray-200"},"Add new account"),c.createElement("fieldset",{className:"space-y-2"},c.createElement(r.II,o({placeholder:"Savings, Investments...",label:"Name"},n("name",{required:!0}),{errorMessage:d.name&&"Please provide a name for your account"})),c.createElement("label",{className:"flex flex-col space-y-2"},c.createElement("span",{className:"modal-form-label"},"Account type"),c.createElement("select",o({className:"modal-select"},n("type",{required:!0})),c.createElement("option",{value:"Cash"},"Cash"),c.createElement("option",{value:"Investment"},"Investment"))),c.createElement("label",{htmlFor:y,className:"flex flex-col space-y-2"},c.createElement("span",{className:"modal-form-label"},"Account currency"),c.createElement("select",o({id:y,defaultValue:x,className:"modal-select"},n("currency",{required:!0})),Object.keys(f.usd).map(e=>e.toUpperCase()).map(e=>c.createElement("option",{key:e,value:e},e)))))),c.createElement(r.qO,null,c.createElement(r.zx,{buttonType:"Transparent",onClick:p},"Cancel"),c.createElement(r.zx,{type:"submit"},"Add")))))},i=a(84413),d=a(37555),p=a(36510);let E=(0,c.createContext)({state:{accounts:[],entries:{}},dispatch:e=>{}});function y(){return{accounts:[],entries:{}}}function f(e,t){return(0,p.n)("account_state",x)(e,t)}function x(e,t){switch(t.type){case"RESET":return y();case"LOAD STATE":return{...t.state,accounts:t.state.accounts.sort((e,t)=>e.sortKey-t.sortKey)};case"ADD ACCOUNT":return{...e,accounts:e.accounts.concat(t.account)};case"ADD ENTRY":return e.entries[t.date]={},{...e};case"EDIT ENTRY FOR ACCOUNT":return e.entries[t.key][t.name]=t.value,e.entries=(0,d.CV)(e.entries),{...e};case"DELETE ENTRY":return delete e.entries[t.date],{...e,entries:e.entries};case"SORT ACCOUNTS":return{...e,accounts:e.accounts.map(e=>({...e,sortKey:t.order.find(t=>t.id===e.id)?.sortKey??0})).sort((e,t)=>e.sortKey-t.sortKey)};default:return console.warn(`action type not handled: ${JSON.stringify(t)}`),e}}function g(){return(g=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{dispatch:e}=(0,c.useContext)(E),[t,a]=(0,c.useState)(!1),n=(0,c.useCallback)(()=>a(!1),[a]),{register:l,handleSubmit:u}=(0,s.cI)(),o=u(({date:t})=>{e({type:"ADD ENTRY",date:t}),n()});return c.createElement(c.Fragment,null,c.createElement(r.zx,{buttonType:"Primary",onClick:()=>a(!0)},"Add entry"),c.createElement(r.u_,{isOpen:t,onDismiss:n},c.createElement("form",{onSubmit:o},c.createElement("div",{className:"p-4"},c.createElement("h2",{className:"text-lg text-gray-700 dark:text-gray-400"},"Add new entry on date"),c.createElement(r.II,g({type:"date",className:"m-4"},l("date")))),c.createElement(r.qO,null,c.createElement(r.zx,{buttonType:"Primary",type:"submit"},"Add")))))});b.displayName="AddEntryModal";var N=a(9880),v=a(38572),h=a(38873),k=a(76077),C=a(53667),O=a(74874),T=a(76310),w=a(67398),D=a(50160);function A(){return(A=Object.assign?Object.assign.bind():function(e){for(var t=1;te.x,yAccessor:e=>e.y};var I=()=>{let e=(0,D.Z)(),{state:t}=(0,c.useContext)(E),{values:a}=(0,c.useContext)(l.Z),n=(0,c.useCallback)(e=>Object.keys(t.entries).map(n=>{let r=t.entries[n][e.name],l=void 0===r?void 0:(0,d.fK)(r,a.currencyRates.usd,e.currency,a.preferredDisplayCurrency);return{x:n,y:l}}),[a.currencyRates.usd,a.preferredDisplayCurrency,t.entries]),s=t.accounts.map(e=>({account:e,data:n(e)})),u=(0,c.useCallback)((e,a)=>{let n=s.filter(a).map(e=>e.data);return{name:e,data:Object.keys(t.entries).map((e,t)=>({x:e,y:n.map(e=>e[t].y??0).reduce((e,t)=>e+t,0)}))}},[s,t.entries]),o=["Cash","Investment"].map(e=>u(e,t=>t.account.type===e)).concat([u("Total",()=>!0)]),[m,i]=(0,c.useState)(!0);return c.createElement("div",{className:"py-4"},c.createElement("div",{className:"flex flex-row justify-end bg-transparent"},c.createElement("label",{className:"space-x-4 px-4"},c.createElement("span",{className:"h-full align-middle"},"Show totals"),c.createElement(r.ZD,{checked:m,onChange:e=>i(e.target.checked)}))),c.createElement(v.Z,{height:500,margin:{top:50,bottom:30,right:20,left:70},xScale:{type:"band"},yScale:{type:"linear"},theme:e?h.Z:k.Z},c.createElement(C.Z,{orientation:"bottom",hideAxisLine:!0}),c.createElement(C.Z,{orientation:"left"}),c.createElement(O.Z,{columns:!1,numTicks:4}),m?o.map(e=>c.createElement(T.Z,A({key:e.name,dataKey:e.name,data:e.data},S))):s.map(e=>c.createElement(T.Z,A({key:e.account.id,dataKey:e.account.name,data:e.data},S))),c.createElement(w.Z,{snapTooltipToDatumX:!0,snapTooltipToDatumY:!0,showVerticalCrosshair:!0,showSeriesGlyphs:!0,renderTooltip:({tooltipData:e,colorScale:t})=>{if(e?.nearestDatum&&t)return c.createElement("div",{className:"flex flex-col"},c.createElement("div",{style:{color:t(e.nearestDatum.key)}},e.nearestDatum.key),c.createElement("span",null,S.xAccessor(e.nearestDatum.datum)),c.createElement("span",{className:"text-green-700 dark:text-green-500"},(0,d.xG)(S.yAccessor(e.nearestDatum.datum),a.preferredDisplayCurrency)))}})))},R=a(7145),Z=a.n(R),j=a(28493),_=a(36963),F=a(99272),G=a(49294),K=({id:e,type:t,index:a,move:n,children:r,className:l})=>{let s=(0,c.useRef)(null),[{handlerId:u},o]=(0,F.L)({accept:t,collect:e=>({handlerId:e.getHandlerId()}),hover(e,t){if(!s.current)return;let r=e.index;if(r===a)return;let l=s.current?.getBoundingClientRect(),c=(l.bottom-l.top)/2,u=t.getClientOffset(),o=u.y-l.top;ra&&o>c||(n(r,a),e.index=a)}},[a]),[{isDragging:m},i]=(0,G.c)(()=>({type:t,item:()=>({id:e,index:a}),collect:e=>({isDragging:!!e.isDragging()})}),[a]);return i(o(s)),c.createElement("li",{ref:s,"data-handler-id":u,className:`cursor-move ${m?"opacity-25":""} ${l||""}`},r)},U=function({typeIdentifier:e,items:t,setItems:a,children:n,className:r}){let l=(0,c.useCallback)((e,t)=>{a(a=>Z()(a,{$splice:[[e,1],[t,0,a[e]]]}))},[a]);return c.createElement(j.W,{backend:_.PD},c.createElement("ol",null,t.map((t,a)=>c.createElement(K,{key:t.id,id:t.id,index:a,move:l,type:e,className:r},n(t)))))},P=()=>c.createElement("svg",{className:"h-5 w-5 animate-spin text-black dark:text-white",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},c.createElement("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),c.createElement("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"}));let z=({account:e})=>c.createElement("div",null,e.name);var L=()=>{let{state:{accounts:e},dispatch:t}=(0,c.useContext)(E),[a,n]=(0,c.useState)(!1),[l,s]=(0,c.useState)("NONE"),[o,m]=(0,c.useState)((0,c.useMemo)(()=>e,[e])),i=(0,c.useCallback)(e=>c.createElement(z,{account:e}),[]),d=(0,N.ku)(`${N.ft}/account`,{method:"PUT"}),p=(0,c.useCallback)(async()=>{try{s("SAVING");let e=o.map((e,t)=>({id:e.id,sortKey:t,name:e.name}));await d(e),t({type:"SORT ACCOUNTS",order:e}),s("SAVED"),setTimeout(()=>s("NONE"),1e3)}catch{console.warn("Unable to save order of accounts"),s("NONE")}},[t,o,d]);return c.createElement(c.Fragment,null,c.createElement(r.zx,{onClick:()=>n(!0),className:"btn btn-primary flex items-center gap-x-2"},c.createElement(u.j7b,{className:"inline"}),c.createElement("span",{className:"align-middle"},"Order accounts")),c.createElement(r.u_,{isOpen:a,onDismiss:()=>n(!1)},c.createElement("div",{className:"max-h-screen w-80 max-w-full overflow-y-scroll rounded bg-slate-200 p-4 dark:bg-slate-700"},c.createElement("h2",{className:"modal-header"},"Reorder accounts"),c.createElement(U,{className:"m-4 rounded bg-green-500 p-2",typeIdentifier:"ACCOUNT",items:o,setItems:m},i),c.createElement(r.qO,null,c.createElement(r.zx,{buttonType:"Secondary",onClick:()=>n(!1)},"Close"),c.createElement(r.zx,{onClick:p},"Save order"))),"NONE"!==l&&c.createElement("div",{className:"absolute top-0 left-0 z-10 flex h-full w-full flex-row items-center justify-center bg-black opacity-75"},"SAVING"===l&&c.createElement(P,null),"SAVED"===l&&c.createElement("div",{className:"text-xl font-bold"},"Order saved!"))))},V=a(4076),Y=a(74543),$=({account:e,entry:t,date:a})=>{let{dispatch:n}=(0,c.useContext)(E),r=(0,c.useRef)(null),l=(0,N.ku)(`${N.ft}/account/entry`,{method:"POST"}),s=(0,c.useCallback)(async t=>{let r=(0,d.p3)(t.currentTarget.innerText);r&&(await l({date:a,amount:r,accountId:e.id}),n({type:"EDIT ENTRY FOR ACCOUNT",name:e.name,key:a,value:r}))},[e.id,e.name,a,n,l]),u=(0,d.xG)(t[e.name],e.currency);return c.createElement(c.Fragment,null,c.createElement("td",{key:e.name,contentEditable:!0,suppressContentEditableWarning:!0,ref:r,onBlur:s,className:"table-cell"},u))},B=()=>{let{state:{accounts:e}}=(0,c.useContext)(E);return c.createElement("div",{className:"account-table"},c.createElement("table",{className:"w-full"},c.createElement("thead",null,c.createElement(q,{accounts:e})),c.createElement("tbody",null,c.createElement(M,null)),c.createElement("tfoot",null,c.createElement(q,{accounts:e}))))};let q=({accounts:e})=>c.createElement(c.Fragment,null,c.createElement("tr",{className:"whitespace-nowrap text-right"},c.createElement("th",{className:"pr-6 text-center"},"Date"),c.createElement("th",{className:"px-4 text-green-700 dark:text-green-500"},"Gain"),c.createElement("th",{className:"px-4 text-blue-700 dark:text-blue-500"},"Total"),c.createElement("th",{className:"px-4 text-yellow-700 dark:text-yellow-500"},"Total cash"),c.createElement("th",{className:"px-4 text-purple-700 dark:text-purple-500"},"Total investments"),e.map(e=>c.createElement("th",{key:e.name,className:"px-4"},c.createElement("span",null,e.name))),c.createElement("th",null))),M=()=>{let{state:{accounts:e,entries:t}}=(0,c.useContext)(E),a=Object.keys(t).map(a=>J(e,t,a));return c.createElement(c.Fragment,null,Object.keys(t).map((n,r)=>c.createElement("tr",{key:n,style:{height:26},className:"whitespace-nowrap text-right font-mono odd:bg-gray-300 dark:odd:bg-gray-800"},c.createElement("td",{className:"pr-6 text-center"},n),c.createElement(W,{date:n,index:r,totals:a}),e.map(e=>c.createElement($,{key:e.name,account:e,entry:t[n],date:n})),c.createElement(H,{date:n}))))},W=({index:e,date:t,totals:a})=>{let{state:{accounts:n,entries:r}}=(0,c.useContext)(E),{values:{preferredDisplayCurrency:s}}=(0,c.useContext)(l.Z),u=0===e?0:a[e]-a[e-1],o=a[e],m=J(n,r,t,e=>"Cash"===e.type),i=J(n,r,t,e=>"Investment"===e.type);return c.createElement(c.Fragment,null,c.createElement("td",{className:`${(0,V.yY)(u)} cell-summary`},(0,d.xG)(u,s),c.createElement(X,{value:u,index:e})),c.createElement("td",{className:"text-blue-700 dark:text-blue-500 cell-summary"},(0,d.xG)(o,s),c.createElement(X,{value:o,index:e})),c.createElement("td",{className:"text-yellow-700 dark:text-yellow-500 cell-summary"},(0,d.xG)(m,s),c.createElement(X,{value:m,index:e})),c.createElement("td",{className:"text-purple-700 dark:text-purple-500 cell-summary"},(0,d.xG)(i,s),c.createElement(X,{value:i,index:e})))},X=({value:e,index:t})=>{let{values:{preferredDisplayCurrency:a,preferredCurrencies:n,currencyRates:r}}=(0,c.useContext)(l.Z);return c.createElement("ol",{style:{top:-t*n.length}},n.map(t=>c.createElement("li",{key:t},(0,d.xG)((0,d.fK)(e,r.usd,a,t),t))))},H=({date:e})=>{let{dispatch:t}=(0,c.useContext)(E);return c.createElement("td",{className:"pl-4"},c.createElement(Y.Z,{onClick:()=>t({type:"DELETE ENTRY",date:e})}))};function J(e,t,a,n=()=>!0){let{values:{currencyRates:r,preferredDisplayCurrency:s}}=(0,c.useContext)(l.Z);return e.filter(n).map(e=>(0,d.fK)(t[a][e.name]??0,r.usd,e.currency,s)).reduce((e,t)=>e+t,0)}var Q=a(88100);let ee=(0,c.memo)(()=>{let[e,t]=(0,c.useReducer)(f,(0,p.v)("account_state",y())),a=(0,N.h_)(`${N.ft}/account`,{method:"GET"});(0,c.useEffect)(()=>{if(!a.loading&&a.data){let e=a.data;t({type:"LOAD STATE",state:{accounts:e,entries:function(e){let t={};for(let a of e)for(let e of a.entries){let n=(0,i.p)(e.date);n in t||(t[n]={}),t[n][a.name]=e.amount}return Object.keys(t).sort().reduce((e,a)=>(e[a]=t[a],e),{})}(e)}})}},[a.loading]);let n=(0,N.ku)(`${N.ft}/account`,{method:"POST"}),r=(0,c.useCallback)(async e=>{await n(e),t({type:"ADD ACCOUNT",account:e})},[n]);return a.loading?c.createElement("div",null,"Loading data"):c.createElement(E.Provider,{value:{state:e,dispatch:t}},c.createElement(B,null),c.createElement("div",{className:"flex flex-row justify-between px-4"},c.createElement(m,{addAccount:r}),c.createElement(L,null),c.createElement(b,null)),c.createElement(I,null))});ee.displayName="AccountOverview";var et=(0,Q.u3)(ee,{onRedirecting:()=>c.createElement("div",null,"Redirecting you to the login page")}),ea=()=>c.createElement(c.Fragment,null,c.createElement(n.Z,{title:"Accounts"}),c.createElement(et,null))},74543:function(e,t,a){"use strict";a.d(t,{Z:function(){return l}});var n=a(67294),r=a(72370);function l({onClick:e}){return n.createElement("button",{onClick:e,className:"flex focus:outline-none"},n.createElement(r.BFV,{size:24,className:"text-red-700 dark:text-red-500"}))}},4235:function(e,t,a){"use strict";var n=a(9008),r=a.n(n),l=a(67294);t.Z=({title:e})=>{let t=`${e} | Finance`;return l.createElement(r(),null,l.createElement("title",null,t))}},4076:function(e,t,a){"use strict";function n(e){return e>0?l.positiveColor:e<0?l.negativeColor:""}function r(e){return e>0?l.positiveBackground:e<0?l.positiveBackground:""}a.d(t,{yY:function(){return n},yZ:function(){return r}});let l={positiveColor:"text-green-700 dark:text-green-500",negativeColor:"text-red-700 dark:text-red-500",positiveBackground:"bg-green-400 dark:bg-green-700"}},37555:function(e,t,a){"use strict";a.d(t,{CV:function(){return o},fK:function(){return c},p3:function(){return r},sL:function(){return u},xG:function(){return l}});var n=a(67294);function r(e){return Number.parseFloat(e.toString().replace(/[^.\d]/g,""))}function l(e,t,a){if(!e||Number.isNaN(e))return"0";let n=t=>e.toLocaleString("en-US",{style:"currency",currency:t,currencyDisplay:"symbol",...a});try{return n(t??"USD")}catch(a){if(a instanceof RangeError&&a.message.startsWith("Invalid currency code")&&t)return n("USD").replace("USD",t);return e.toString()}}function c(e,t,a,n){return e*s(t,a,n)}function s(e,t,a){let n=t?.toLowerCase(),r=a?.toLowerCase();return n&&r&&n!==r?"usd"===n?"GBp"===a?100*e.gbp:r in e?e[r]:1:"usd"!==r?s(e,t,"usd")*s(e,"usd",a):"GBp"===t?1/(100*e.gbp):n in e?1/e[n]:1:1}function u(e,t,a){return(0,n.useCallback)(n=>n*s(a,e,t),[e,a,t])}function o(e){return Object.keys(e).sort().reduce((t,a)=>(t[a]=e[a],t),{})}Intl.NumberFormat(void 0,{style:"currency",currency:"DKK",currencyDisplay:"code"})},84413:function(e,t,a){"use strict";function n(e){let t=e.getFullYear(),a=""+(e.getMonth()+1),n=""+e.getDate();return a.length<2&&(a="0"+a),n.length<2&&(n="0"+n),[t,a,n].join("-")}a.d(t,{p:function(){return n}})},86076:function(e,t,a){(window.__NEXT_P=window.__NEXT_P||[]).push(["/accounts",function(){return a(55553)}])}},function(e){e.O(0,[774,536,47,888,179],function(){return e(e.s=86076)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/_next/static/chunks/webpack-aac5f1bb8ecc728f.js b/_next/static/chunks/webpack-aac5f1bb8ecc728f.js deleted file mode 100644 index 8a8cbae..0000000 --- a/_next/static/chunks/webpack-aac5f1bb8ecc728f.js +++ /dev/null @@ -1 +0,0 @@ -!function(){"use strict";var t,e,n,r,o,u,i,c,f,a={},l={};function s(t){var e=l[t];if(void 0!==e)return e.exports;var n=l[t]={exports:{}},r=!0;try{a[t].call(n.exports,n,n.exports,s),r=!1}finally{r&&delete l[t]}return n.exports}s.m=a,t=[],s.O=function(e,n,r,o){if(n){o=o||0;for(var u=t.length;u>0&&t[u-1][2]>o;u--)t[u]=t[u-1];t[u]=[n,r,o];return}for(var i=1/0,u=0;u=o&&Object.keys(s.O).every(function(t){return s.O[t](n[f])})?n.splice(f--,1):(c=!1,o0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[n,r,o];return}for(var i=1/0,u=0;u=o&&Object.keys(s.O).every(function(e){return s.O[e](n[f])})?n.splice(f--,1):(c=!1,o:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1rem*var(--tw-space-x-reverse))}.settings-list .currency-list{display:flex;width:100%}.settings-list .currency-list span{color:var(--secondary-color)}.account-table{height:100%;overflow-x:scroll;padding-bottom:1rem;position:relative}@media (min-width:768px){.account-table{padding-left:1rem;padding-right:1rem}}.account-table .table-cell{cursor:pointer;padding-right:1rem;text-align:right}.account-table .cell-summary{cursor:context-menu;padding:0 1rem;position:relative}.account-table .cell-summary ol{background:#000;border-radius:.25rem;left:100%;padding:.5rem 1rem;position:absolute;top:0;visibility:hidden;z-index:1}.account-table .cell-summary:hover ol{visibility:visible}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.left-0{left:0}.right-0{right:0}.top-0{top:0}.top-full{top:100%}.z-10{z-index:10}.z-50{z-index:50}.order-last{order:9999}.col-span-2{grid-column:span 2/span 2}.m-4{margin:1rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-8{margin-left:2rem;margin-right:2rem}.ml-4{margin-left:1rem}.mt-2{margin-top:.5rem}.mt-8{margin-top:2rem}.block{display:block}.inline{display:inline}.flex{display:flex}.table{display:table}.table-cell{display:table-cell}.grid{display:grid}.hidden{display:none}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-full{height:100%}.h-screen{height:100vh}.max-h-10{max-height:2.5rem}.max-h-screen{max-height:100vh}.min-h-screen{min-height:100vh}.w-20{width:5rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-80{width:20rem}.w-96{width:24rem}.w-full{width:100%}.w-screen{width:100vw}.max-w-2xl{max-width:42rem}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-prose{max-width:65ch}.max-w-screen-lg{max-width:1024px}.grow{flex-grow:1}.border-separate{border-collapse:initial}.border-spacing-0{--tw-border-spacing-x:0px;--tw-border-spacing-y:0px;border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y)}@-webkit-keyframes spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.animate-spin{-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite}.cursor-move{cursor:move}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-evenly{justify-content:space-evenly}.gap-x-2{-webkit-column-gap:.5rem;column-gap:.5rem}.gap-x-8{-webkit-column-gap:2rem;column-gap:2rem}.gap-y-4{row-gap:1rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1rem*var(--tw-space-x-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-x-scroll{overflow-x:scroll}.overflow-y-scroll{overflow-y:scroll}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-md{border-radius:.375rem}.rounded-sm{border-radius:.125rem}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity))}.bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity))}.bg-blue-400{--tw-bg-opacity:1;background-color:rgb(96 165 250/var(--tw-bg-opacity))}.bg-blue-900{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity))}.bg-emerald-900{--tw-bg-opacity:1;background-color:rgb(6 78 59/var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.bg-green-200{--tw-bg-opacity:1;background-color:rgb(187 247 208/var(--tw-bg-opacity))}.bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity))}.bg-green-900{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity))}.bg-indigo-100{--tw-bg-opacity:1;background-color:rgb(224 231 255/var(--tw-bg-opacity))}.bg-indigo-500{--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity))}.bg-indigo-900{--tw-bg-opacity:1;background-color:rgb(49 46 129/var(--tw-bg-opacity))}.bg-red-200{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}.bg-sky-300{--tw-bg-opacity:1;background-color:rgb(125 211 252/var(--tw-bg-opacity))}.bg-slate-200{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.bg-transparent{background-color:initial}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-yellow-900{--tw-bg-opacity:1;background-color:rgb(113 63 18/var(--tw-bg-opacity))}.bg-zinc-100{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity))}.bg-opacity-50{--tw-bg-opacity:0.5}.p-0{padding:0}.p-2{padding:.5rem}.p-4{padding:1rem}.p-8{padding:2rem}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-4{padding-bottom:1rem;padding-top:1rem}.pb-2{padding-bottom:.5rem}.pb-4{padding-bottom:1rem}.pb-8{padding-bottom:2rem}.pl-12{padding-left:3rem}.pl-4{padding-left:1rem}.pl-8{padding-left:2rem}.pr-3{padding-right:.75rem}.pr-4{padding-right:1rem}.pr-6{padding-right:1.5rem}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.font-bold{font-weight:700}.font-extralight{font-weight:200}.font-light{font-weight:300}.font-normal{font-weight:400}.uppercase{text-transform:uppercase}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity))}.text-cyan-700{--tw-text-opacity:1;color:rgb(14 116 144/var(--tw-text-opacity))}.text-fuchsia-700{--tw-text-opacity:1;color:rgb(162 28 175/var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity))}.text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity))}.text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity))}.text-orange-800{--tw-text-opacity:1;color:rgb(154 52 18/var(--tw-text-opacity))}.text-purple-700{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity))}.text-purple-800{--tw-text-opacity:1;color:rgb(107 33 168/var(--tw-text-opacity))}.text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity))}.text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity))}.text-teal-800{--tw-text-opacity:1;color:rgb(17 94 89/var(--tw-text-opacity))}.text-yellow-700{--tw-text-opacity:1;color:rgb(161 98 7/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.opacity-25{opacity:.25}.opacity-75{opacity:.75}.shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.ring-red-800{--tw-ring-opacity:1;--tw-ring-color:rgb(153 27 27/var(--tw-ring-opacity))}.filter{-webkit-filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.modal-form-label{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity));font-size:.875rem;font-weight:500;line-height:1.25rem}:is(.dark .modal-form-label){--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}.modal-select{--tw-bg-opacity:1;--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);padding:.5rem 1rem}.modal-select:focus{--tw-border-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);border-color:rgb(129 140 248/var(--tw-border-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid #0000;outline-offset:2px}:is(.dark .modal-select){--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity));color:rgb(243 244 246/var(--tw-text-opacity))}.modal-header{font-size:1.5rem;line-height:2rem}tr.tax-row:nth-child(odd){--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}:is(.dark tr.tax-row:nth-child(odd)){--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}tr.tax-row td{padding-left:1rem;padding-right:1rem;text-align:right;white-space:nowrap}tr.tax-row td:first-child{text-align:left}thead.tax-header th{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity));font-weight:700;padding-left:1rem;padding-right:1rem;white-space:nowrap}:is(.dark thead.tax-header th){--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}td.\!currency,td.currency,th.\!currency,th.currency{padding-left:.5rem;padding-right:.5rem;text-align:right}input.budget{--tw-bg-opacity:1;--tw-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);background-color:rgb(241 245 249/var(--tw-bg-opacity));border-radius:.25rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);padding:.5rem}:is(.dark input.budget){--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}input.add-item{flex-grow:1;max-width:20rem;width:6rem}input.edit-item{border-radius:.25rem;width:100%}label.edit-item>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}label.edit-item span{font-size:.875rem;line-height:1.25rem}.center{align-items:center;display:flex;justify-content:center}.btn{--tw-text-opacity:1;border-radius:.25rem;color:rgb(243 244 246/var(--tw-text-opacity));outline:2px solid #0000;outline-offset:2px;padding:.5rem 1rem}.btn:disabled{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity));color:rgb(107 114 128/var(--tw-text-opacity));cursor:not-allowed}:is(.dark .btn:disabled){--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity));color:rgb(156 163 175/var(--tw-text-opacity))}.btn-primary{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity));color:rgb(243 244 246/var(--tw-text-opacity))}.btn-primary:hover{--tw-bg-opacity:1;background-color:rgb(129 140 248/var(--tw-bg-opacity))}:is(.dark .btn-primary){--tw-bg-opacity:1;background-color:rgb(55 48 163/var(--tw-bg-opacity))}:is(.dark .btn-primary:hover){--tw-bg-opacity:1;background-color:rgb(49 46 129/var(--tw-bg-opacity))}.btn-secondary{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(199 210 254/var(--tw-bg-opacity));color:rgb(55 48 163/var(--tw-text-opacity))}.btn-secondary:hover{--tw-bg-opacity:1;background-color:rgb(224 231 255/var(--tw-bg-opacity))}:is(.dark .btn-secondary){--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity));color:rgb(238 242 255/var(--tw-text-opacity))}:is(.dark .btn-secondary:hover){--tw-bg-opacity:1;background-color:rgb(129 140 248/var(--tw-bg-opacity))}.btn-success{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(132 204 22/var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.btn-success:hover{--tw-bg-opacity:1;background-color:rgb(163 230 53/var(--tw-bg-opacity))}:is(.dark .btn-success){--tw-bg-opacity:1;background-color:rgb(101 163 13/var(--tw-bg-opacity))}:is(.dark .btn-success:hover){--tw-bg-opacity:1;background-color:rgb(77 124 15/var(--tw-bg-opacity))}.btn-warning{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(251 191 36/var(--tw-bg-opacity));color:rgb(17 24 39/var(--tw-text-opacity))}.btn-warning:hover{--tw-bg-opacity:1;background-color:rgb(252 211 77/var(--tw-bg-opacity))}:is(.dark .btn-warning){--tw-bg-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity))}:is(.dark .btn-warning:hover){--tw-bg-opacity:1;background-color:rgb(180 83 9/var(--tw-bg-opacity))}.btn-danger{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.btn-danger:hover{--tw-bg-opacity:1;background-color:rgb(248 113 113/var(--tw-bg-opacity))}:is(.dark .btn-danger){--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity))}:is(.dark .btn-danger:hover){--tw-bg-opacity:1;background-color:rgb(153 27 27/var(--tw-bg-opacity))}.btn-transparent{background-color:rgb(255 255 255/var(--tw-bg-opacity));border-color:rgb(209 213 219/var(--tw-border-opacity));border-width:1px;color:rgb(107 114 128/var(--tw-text-opacity))}.btn-transparent,:is(.dark .btn-transparent){--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1}:is(.dark .btn-transparent){background-color:rgb(0 0 0/var(--tw-bg-opacity));border-color:rgb(55 65 81/var(--tw-border-opacity));color:rgb(209 213 219/var(--tw-text-opacity))}.btn-link{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity));text-decoration-line:underline}.btn-link:hover,:is(.dark .btn-link){--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity))}:is(.dark .btn-link:hover){--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}.input-label{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity));display:block;font-size:.875rem;font-weight:500;line-height:1.25rem}:is(.dark .input-label){--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}.switch{display:inline-block;height:34px;position:relative;width:4rem}.switch input{height:0;opacity:0;width:0}.switch .slider{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity));border-radius:9999px;position:absolute;transition-duration:.3s}:is(.dark .switch .slider){--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}.switch .slider{bottom:0;cursor:pointer;left:0;right:0;top:0}.switch .slider:before{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:9999px;position:absolute;transition-duration:.3s}:is(.dark .switch .slider):before{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}.switch .slider:before{bottom:4px;content:"";height:26px;left:4px;width:26px}.switch input:checked+.slider{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity))}:is(.dark .switch input:checked+.slider){--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity))}.switch input:focus+.slider{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);--tw-shadow-color:#3b82f6;--tw-shadow:var(--tw-shadow-colored);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:is(.dark .switch input:focus+.slider){--tw-shadow-color:#111827;--tw-shadow:var(--tw-shadow-colored)}.switch input:checked+.slider:before{--tw-translate-x:1.75rem;-webkit-transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}body{--secondary-color:#9ca3af}input::-webkit-inner-spin-button,input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}#id{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}:is(.dark #id){--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity))}.flex-col-center{align-items:center;display:flex;flex-direction:column;justify-content:center}.odd\:bg-blue-200:nth-child(odd){--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity))}.odd\:bg-gray-200:nth-child(odd){--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.odd\:bg-gray-300:nth-child(odd){--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}.odd\:bg-green-300:nth-child(odd){--tw-bg-opacity:1;background-color:rgb(134 239 172/var(--tw-bg-opacity))}.odd\:bg-red-300:nth-child(odd){--tw-bg-opacity:1;background-color:rgb(252 165 165/var(--tw-bg-opacity))}.odd\:bg-slate-200:nth-child(odd){--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.hover\:cursor-pointer:hover{cursor:pointer}.hover\:text-gray-900:hover{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}.focus\:border-indigo-400:focus{--tw-border-opacity:1;border-color:rgb(129 140 248/var(--tw-border-opacity))}.focus\:outline-none:focus{outline:2px solid #0000;outline-offset:2px}.focus\:ring:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-1:focus,.focus\:ring:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.group:hover .group-hover\:block{display:block}:is(.dark .dark\:bg-black){--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity))}:is(.dark .dark\:bg-blue-300){--tw-bg-opacity:1;background-color:rgb(147 197 253/var(--tw-bg-opacity))}:is(.dark .dark\:bg-blue-900){--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-700){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-800){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-900){--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}:is(.dark .dark\:bg-green-300){--tw-bg-opacity:1;background-color:rgb(134 239 172/var(--tw-bg-opacity))}:is(.dark .dark\:bg-green-900){--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity))}:is(.dark .dark\:bg-indigo-300){--tw-bg-opacity:1;background-color:rgb(165 180 252/var(--tw-bg-opacity))}:is(.dark .dark\:bg-indigo-900){--tw-bg-opacity:1;background-color:rgb(49 46 129/var(--tw-bg-opacity))}:is(.dark .dark\:bg-red-900){--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity))}:is(.dark .dark\:bg-sky-900){--tw-bg-opacity:1;background-color:rgb(12 74 110/var(--tw-bg-opacity))}:is(.dark .dark\:bg-slate-700){--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}:is(.dark .dark\:bg-yellow-300){--tw-bg-opacity:1;background-color:rgb(253 224 71/var(--tw-bg-opacity))}:is(.dark .dark\:bg-zinc-900){--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity))}:is(.dark .dark\:bg-opacity-50){--tw-bg-opacity:0.5}:is(.dark .dark\:text-blue-500){--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}:is(.dark .dark\:text-cyan-600){--tw-text-opacity:1;color:rgb(8 145 178/var(--tw-text-opacity))}:is(.dark .dark\:text-fuchsia-300){--tw-text-opacity:1;color:rgb(240 171 252/var(--tw-text-opacity))}:is(.dark .dark\:text-fuchsia-500){--tw-text-opacity:1;color:rgb(217 70 239/var(--tw-text-opacity))}:is(.dark .dark\:text-fuchsia-600){--tw-text-opacity:1;color:rgb(192 38 211/var(--tw-text-opacity))}:is(.dark .dark\:text-gray-100){--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity))}:is(.dark .dark\:text-gray-200){--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}:is(.dark .dark\:text-gray-300){--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}:is(.dark .dark\:text-gray-400){--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}:is(.dark .dark\:text-green-400){--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity))}:is(.dark .dark\:text-green-500){--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}:is(.dark .dark\:text-orange-400){--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity))}:is(.dark .dark\:text-purple-400){--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity))}:is(.dark .dark\:text-purple-500){--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity))}:is(.dark .dark\:text-red-400){--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity))}:is(.dark .dark\:text-red-500){--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}:is(.dark .dark\:text-red-600){--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}:is(.dark .dark\:text-teal-400){--tw-text-opacity:1;color:rgb(45 212 191/var(--tw-text-opacity))}:is(.dark .dark\:text-white){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .dark\:text-yellow-400){--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity))}:is(.dark .dark\:text-yellow-500){--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity))}:is(.dark .dark\:placeholder-gray-600)::-webkit-input-placeholder{--tw-placeholder-opacity:1;color:rgb(75 85 99/var(--tw-placeholder-opacity))}:is(.dark .dark\:placeholder-gray-600)::placeholder{--tw-placeholder-opacity:1;color:rgb(75 85 99/var(--tw-placeholder-opacity))}:is(.dark .dark\:ring-red-600){--tw-ring-opacity:1;--tw-ring-color:rgb(220 38 38/var(--tw-ring-opacity))}:is(.dark .dark\:odd\:bg-blue-800:nth-child(odd)){--tw-bg-opacity:1;background-color:rgb(30 64 175/var(--tw-bg-opacity))}:is(.dark .dark\:odd\:bg-gray-600:nth-child(odd)){--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}:is(.dark .dark\:odd\:bg-gray-800:nth-child(odd)){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}:is(.dark .dark\:odd\:bg-gray-900:nth-child(odd)){--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}:is(.dark .dark\:odd\:bg-green-700:nth-child(odd)){--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity))}:is(.dark .dark\:odd\:bg-red-700:nth-child(odd)){--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity))}:is(.dark .dark\:odd\:bg-slate-800:nth-child(odd)){--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity))}:is(.dark .dark\:hover\:text-gray-400:hover){--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}@media (min-width:640px){.sm\:inline{display:inline}.sm\:grid{display:grid}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:gap-6{gap:1.5rem}.sm\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(0px*var(--tw-space-y-reverse));margin-top:calc(0px*(1 - var(--tw-space-y-reverse)))}}@media (min-width:768px){.md\:flex{display:flex}.md\:hidden{display:none}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1.5rem*var(--tw-space-x-reverse))}.md\:px-0{padding-left:0;padding-right:0}.md\:px-4{padding-left:1rem;padding-right:1rem}.md\:pl-8{padding-left:2rem}}@media (min-width:1024px){.lg\:m-0{margin:0}.lg\:w-full{width:100%}.lg\:overflow-x-auto{overflow-x:auto}.lg\:text-left{text-align:left}} \ No newline at end of file diff --git a/_next/static/css/63205d8156d0bb08.css b/_next/static/css/63205d8156d0bb08.css new file mode 100644 index 0000000..e5a23ef --- /dev/null +++ b/_next/static/css/63205d8156d0bb08.css @@ -0,0 +1 @@ +/*! tailwindcss v3.3.3 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}html{-webkit-text-size-adjust:100%;-webkit-font-feature-settings:normal;font-feature-settings:normal;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{-webkit-font-feature-settings:inherit;font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,fieldset,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}::-webkit-backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.text-page h2,.text-page h3{--tw-text-opacity:1;color:rgb(6 78 59/var(--tw-text-opacity))}:is(.dark .text-page h2),:is(.dark .text-page h3){--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity))}.text-page h2,.text-page h3{padding-top:1rem}.text-page h2{font-size:1.5rem;line-height:2rem;text-align:center}.text-page h3{font-size:1.25rem;line-height:1.75rem}.text-page p{max-width:65ch;padding-bottom:.5rem;padding-top:.5rem;text-align:justify}.text-page ul li a{--tw-text-opacity:1;color:rgb(30 58 138/var(--tw-text-opacity));text-decoration-line:underline}:is(.dark .text-page ul li a){--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}.settings-list{-webkit-column-gap:3rem;column-gap:3rem;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));row-gap:1rem}.settings-list input.preferred-currency{border-radius:.25rem}.settings-list .currency-list>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1rem*var(--tw-space-x-reverse))}.settings-list .currency-list{display:flex;width:100%}.settings-list .currency-list span{color:var(--secondary-color)}.account-table{overflow-x:scroll;overflow-y:hidden;padding-bottom:1rem;position:relative}.account-table tfoot,.account-table thead{background:#000;position:-webkit-sticky;position:sticky;top:0;z-index:1}@media (min-width:768px){.account-table{padding-left:1rem;padding-right:1rem}}.account-table .table-cell{cursor:pointer;padding-right:1rem;text-align:right}.account-table .cell-summary{cursor:context-menu;padding:0 1rem;position:relative}.account-table .cell-summary ol{background:#000;border-radius:.25rem;left:100%;padding:.5rem 1rem;position:absolute;top:0;visibility:hidden;z-index:1}.account-table .cell-summary:hover ol{visibility:visible}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.left-0{left:0}.right-0{right:0}.top-0{top:0}.top-full{top:100%}.z-10{z-index:10}.z-50{z-index:50}.order-last{order:9999}.col-span-2{grid-column:span 2/span 2}.m-4{margin:1rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-8{margin-left:2rem;margin-right:2rem}.ml-4{margin-left:1rem}.mt-2{margin-top:.5rem}.mt-8{margin-top:2rem}.block{display:block}.inline{display:inline}.flex{display:flex}.table{display:table}.table-cell{display:table-cell}.grid{display:grid}.hidden{display:none}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-full{height:100%}.h-screen{height:100vh}.max-h-10{max-height:2.5rem}.max-h-screen{max-height:100vh}.min-h-screen{min-height:100vh}.w-20{width:5rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-80{width:20rem}.w-96{width:24rem}.w-full{width:100%}.w-screen{width:100vw}.max-w-2xl{max-width:42rem}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-prose{max-width:65ch}.max-w-screen-lg{max-width:1024px}.grow{flex-grow:1}.border-separate{border-collapse:initial}.border-spacing-0{--tw-border-spacing-x:0px;--tw-border-spacing-y:0px;border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y)}@-webkit-keyframes spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.animate-spin{-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite}.cursor-move{cursor:move}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-evenly{justify-content:space-evenly}.gap-x-2{-webkit-column-gap:.5rem;column-gap:.5rem}.gap-x-8{-webkit-column-gap:2rem;column-gap:2rem}.gap-y-4{row-gap:1rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1rem*var(--tw-space-x-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-x-scroll{overflow-x:scroll}.overflow-y-scroll{overflow-y:scroll}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-md{border-radius:.375rem}.rounded-sm{border-radius:.125rem}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity))}.bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity))}.bg-blue-400{--tw-bg-opacity:1;background-color:rgb(96 165 250/var(--tw-bg-opacity))}.bg-blue-900{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity))}.bg-emerald-900{--tw-bg-opacity:1;background-color:rgb(6 78 59/var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.bg-green-200{--tw-bg-opacity:1;background-color:rgb(187 247 208/var(--tw-bg-opacity))}.bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity))}.bg-green-900{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity))}.bg-indigo-100{--tw-bg-opacity:1;background-color:rgb(224 231 255/var(--tw-bg-opacity))}.bg-indigo-500{--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity))}.bg-indigo-900{--tw-bg-opacity:1;background-color:rgb(49 46 129/var(--tw-bg-opacity))}.bg-red-200{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}.bg-sky-300{--tw-bg-opacity:1;background-color:rgb(125 211 252/var(--tw-bg-opacity))}.bg-slate-200{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.bg-transparent{background-color:initial}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-yellow-900{--tw-bg-opacity:1;background-color:rgb(113 63 18/var(--tw-bg-opacity))}.bg-zinc-100{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity))}.bg-opacity-50{--tw-bg-opacity:0.5}.p-0{padding:0}.p-2{padding:.5rem}.p-4{padding:1rem}.p-8{padding:2rem}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-4{padding-bottom:1rem;padding-top:1rem}.pb-2{padding-bottom:.5rem}.pb-4{padding-bottom:1rem}.pb-8{padding-bottom:2rem}.pl-12{padding-left:3rem}.pl-4{padding-left:1rem}.pl-8{padding-left:2rem}.pr-3{padding-right:.75rem}.pr-4{padding-right:1rem}.pr-6{padding-right:1.5rem}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.font-bold{font-weight:700}.font-extralight{font-weight:200}.font-light{font-weight:300}.font-normal{font-weight:400}.uppercase{text-transform:uppercase}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity))}.text-cyan-700{--tw-text-opacity:1;color:rgb(14 116 144/var(--tw-text-opacity))}.text-fuchsia-700{--tw-text-opacity:1;color:rgb(162 28 175/var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity))}.text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity))}.text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity))}.text-orange-800{--tw-text-opacity:1;color:rgb(154 52 18/var(--tw-text-opacity))}.text-purple-700{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity))}.text-purple-800{--tw-text-opacity:1;color:rgb(107 33 168/var(--tw-text-opacity))}.text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity))}.text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity))}.text-teal-800{--tw-text-opacity:1;color:rgb(17 94 89/var(--tw-text-opacity))}.text-yellow-700{--tw-text-opacity:1;color:rgb(161 98 7/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.opacity-25{opacity:.25}.opacity-75{opacity:.75}.shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.ring-red-800{--tw-ring-opacity:1;--tw-ring-color:rgb(153 27 27/var(--tw-ring-opacity))}.filter{-webkit-filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.modal-form-label{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity));font-size:.875rem;font-weight:500;line-height:1.25rem}:is(.dark .modal-form-label){--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}.modal-select{--tw-bg-opacity:1;--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);padding:.5rem 1rem}.modal-select:focus{--tw-border-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);border-color:rgb(129 140 248/var(--tw-border-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid #0000;outline-offset:2px}:is(.dark .modal-select){--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity));color:rgb(243 244 246/var(--tw-text-opacity))}.modal-header{font-size:1.5rem;line-height:2rem}tr.tax-row:nth-child(odd){--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}:is(.dark tr.tax-row:nth-child(odd)){--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}tr.tax-row td{padding-left:1rem;padding-right:1rem;text-align:right;white-space:nowrap}tr.tax-row td:first-child{text-align:left}thead.tax-header th{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity));font-weight:700;padding-left:1rem;padding-right:1rem;white-space:nowrap}:is(.dark thead.tax-header th){--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}td.\!currency,td.currency,th.\!currency,th.currency{padding-left:.5rem;padding-right:.5rem;text-align:right}input.budget{--tw-bg-opacity:1;--tw-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);background-color:rgb(241 245 249/var(--tw-bg-opacity));border-radius:.25rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);padding:.5rem}:is(.dark input.budget){--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}input.add-item{flex-grow:1;max-width:20rem;width:6rem}input.edit-item{border-radius:.25rem;width:100%}label.edit-item>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}label.edit-item span{font-size:.875rem;line-height:1.25rem}.center{align-items:center;display:flex;justify-content:center}.btn{--tw-text-opacity:1;border-radius:.25rem;color:rgb(243 244 246/var(--tw-text-opacity));outline:2px solid #0000;outline-offset:2px;padding:.5rem 1rem}.btn:disabled{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity));color:rgb(107 114 128/var(--tw-text-opacity));cursor:not-allowed}:is(.dark .btn:disabled){--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity));color:rgb(156 163 175/var(--tw-text-opacity))}.btn-primary{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity));color:rgb(243 244 246/var(--tw-text-opacity))}.btn-primary:hover{--tw-bg-opacity:1;background-color:rgb(129 140 248/var(--tw-bg-opacity))}:is(.dark .btn-primary){--tw-bg-opacity:1;background-color:rgb(55 48 163/var(--tw-bg-opacity))}:is(.dark .btn-primary:hover){--tw-bg-opacity:1;background-color:rgb(49 46 129/var(--tw-bg-opacity))}.btn-secondary{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(199 210 254/var(--tw-bg-opacity));color:rgb(55 48 163/var(--tw-text-opacity))}.btn-secondary:hover{--tw-bg-opacity:1;background-color:rgb(224 231 255/var(--tw-bg-opacity))}:is(.dark .btn-secondary){--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity));color:rgb(238 242 255/var(--tw-text-opacity))}:is(.dark .btn-secondary:hover){--tw-bg-opacity:1;background-color:rgb(129 140 248/var(--tw-bg-opacity))}.btn-success{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(132 204 22/var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.btn-success:hover{--tw-bg-opacity:1;background-color:rgb(163 230 53/var(--tw-bg-opacity))}:is(.dark .btn-success){--tw-bg-opacity:1;background-color:rgb(101 163 13/var(--tw-bg-opacity))}:is(.dark .btn-success:hover){--tw-bg-opacity:1;background-color:rgb(77 124 15/var(--tw-bg-opacity))}.btn-warning{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(251 191 36/var(--tw-bg-opacity));color:rgb(17 24 39/var(--tw-text-opacity))}.btn-warning:hover{--tw-bg-opacity:1;background-color:rgb(252 211 77/var(--tw-bg-opacity))}:is(.dark .btn-warning){--tw-bg-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity))}:is(.dark .btn-warning:hover){--tw-bg-opacity:1;background-color:rgb(180 83 9/var(--tw-bg-opacity))}.btn-danger{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.btn-danger:hover{--tw-bg-opacity:1;background-color:rgb(248 113 113/var(--tw-bg-opacity))}:is(.dark .btn-danger){--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity))}:is(.dark .btn-danger:hover){--tw-bg-opacity:1;background-color:rgb(153 27 27/var(--tw-bg-opacity))}.btn-transparent{background-color:rgb(255 255 255/var(--tw-bg-opacity));border-color:rgb(209 213 219/var(--tw-border-opacity));border-width:1px;color:rgb(107 114 128/var(--tw-text-opacity))}.btn-transparent,:is(.dark .btn-transparent){--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1}:is(.dark .btn-transparent){background-color:rgb(0 0 0/var(--tw-bg-opacity));border-color:rgb(55 65 81/var(--tw-border-opacity));color:rgb(209 213 219/var(--tw-text-opacity))}.btn-link{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity));text-decoration-line:underline}.btn-link:hover,:is(.dark .btn-link){--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity))}:is(.dark .btn-link:hover){--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}.input-label{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity));display:block;font-size:.875rem;font-weight:500;line-height:1.25rem}:is(.dark .input-label){--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}.switch{display:inline-block;height:34px;position:relative;width:4rem}.switch input{height:0;opacity:0;width:0}.switch .slider{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity));border-radius:9999px;position:absolute;transition-duration:.3s}:is(.dark .switch .slider){--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}.switch .slider{bottom:0;cursor:pointer;left:0;right:0;top:0}.switch .slider:before{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:9999px;position:absolute;transition-duration:.3s}:is(.dark .switch .slider):before{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}.switch .slider:before{bottom:4px;content:"";height:26px;left:4px;width:26px}.switch input:checked+.slider{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity))}:is(.dark .switch input:checked+.slider){--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity))}.switch input:focus+.slider{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);--tw-shadow-color:#3b82f6;--tw-shadow:var(--tw-shadow-colored);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:is(.dark .switch input:focus+.slider){--tw-shadow-color:#111827;--tw-shadow:var(--tw-shadow-colored)}.switch input:checked+.slider:before{--tw-translate-x:1.75rem;-webkit-transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}body{--secondary-color:#9ca3af}input::-webkit-inner-spin-button,input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}#id{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}:is(.dark #id){--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity))}.flex-col-center{align-items:center;display:flex;flex-direction:column;justify-content:center}.odd\:bg-blue-200:nth-child(odd){--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity))}.odd\:bg-gray-200:nth-child(odd){--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.odd\:bg-gray-300:nth-child(odd){--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}.odd\:bg-green-300:nth-child(odd){--tw-bg-opacity:1;background-color:rgb(134 239 172/var(--tw-bg-opacity))}.odd\:bg-red-300:nth-child(odd){--tw-bg-opacity:1;background-color:rgb(252 165 165/var(--tw-bg-opacity))}.odd\:bg-slate-200:nth-child(odd){--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.hover\:cursor-pointer:hover{cursor:pointer}.hover\:text-gray-900:hover{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}.focus\:border-indigo-400:focus{--tw-border-opacity:1;border-color:rgb(129 140 248/var(--tw-border-opacity))}.focus\:outline-none:focus{outline:2px solid #0000;outline-offset:2px}.focus\:ring:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-1:focus,.focus\:ring:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.group:hover .group-hover\:block{display:block}:is(.dark .dark\:bg-black){--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity))}:is(.dark .dark\:bg-blue-300){--tw-bg-opacity:1;background-color:rgb(147 197 253/var(--tw-bg-opacity))}:is(.dark .dark\:bg-blue-900){--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-700){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-800){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-900){--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}:is(.dark .dark\:bg-green-300){--tw-bg-opacity:1;background-color:rgb(134 239 172/var(--tw-bg-opacity))}:is(.dark .dark\:bg-green-900){--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity))}:is(.dark .dark\:bg-indigo-300){--tw-bg-opacity:1;background-color:rgb(165 180 252/var(--tw-bg-opacity))}:is(.dark .dark\:bg-indigo-900){--tw-bg-opacity:1;background-color:rgb(49 46 129/var(--tw-bg-opacity))}:is(.dark .dark\:bg-red-900){--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity))}:is(.dark .dark\:bg-sky-900){--tw-bg-opacity:1;background-color:rgb(12 74 110/var(--tw-bg-opacity))}:is(.dark .dark\:bg-slate-700){--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}:is(.dark .dark\:bg-yellow-300){--tw-bg-opacity:1;background-color:rgb(253 224 71/var(--tw-bg-opacity))}:is(.dark .dark\:bg-zinc-900){--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity))}:is(.dark .dark\:bg-opacity-50){--tw-bg-opacity:0.5}:is(.dark .dark\:text-blue-500){--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}:is(.dark .dark\:text-cyan-600){--tw-text-opacity:1;color:rgb(8 145 178/var(--tw-text-opacity))}:is(.dark .dark\:text-fuchsia-300){--tw-text-opacity:1;color:rgb(240 171 252/var(--tw-text-opacity))}:is(.dark .dark\:text-fuchsia-500){--tw-text-opacity:1;color:rgb(217 70 239/var(--tw-text-opacity))}:is(.dark .dark\:text-fuchsia-600){--tw-text-opacity:1;color:rgb(192 38 211/var(--tw-text-opacity))}:is(.dark .dark\:text-gray-100){--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity))}:is(.dark .dark\:text-gray-200){--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}:is(.dark .dark\:text-gray-300){--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}:is(.dark .dark\:text-gray-400){--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}:is(.dark .dark\:text-green-400){--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity))}:is(.dark .dark\:text-green-500){--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}:is(.dark .dark\:text-orange-400){--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity))}:is(.dark .dark\:text-purple-400){--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity))}:is(.dark .dark\:text-purple-500){--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity))}:is(.dark .dark\:text-red-400){--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity))}:is(.dark .dark\:text-red-500){--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}:is(.dark .dark\:text-red-600){--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}:is(.dark .dark\:text-teal-400){--tw-text-opacity:1;color:rgb(45 212 191/var(--tw-text-opacity))}:is(.dark .dark\:text-white){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .dark\:text-yellow-400){--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity))}:is(.dark .dark\:text-yellow-500){--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity))}:is(.dark .dark\:placeholder-gray-600)::-webkit-input-placeholder{--tw-placeholder-opacity:1;color:rgb(75 85 99/var(--tw-placeholder-opacity))}:is(.dark .dark\:placeholder-gray-600)::placeholder{--tw-placeholder-opacity:1;color:rgb(75 85 99/var(--tw-placeholder-opacity))}:is(.dark .dark\:ring-red-600){--tw-ring-opacity:1;--tw-ring-color:rgb(220 38 38/var(--tw-ring-opacity))}:is(.dark .dark\:odd\:bg-blue-800:nth-child(odd)){--tw-bg-opacity:1;background-color:rgb(30 64 175/var(--tw-bg-opacity))}:is(.dark .dark\:odd\:bg-gray-600:nth-child(odd)){--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}:is(.dark .dark\:odd\:bg-gray-800:nth-child(odd)){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}:is(.dark .dark\:odd\:bg-gray-900:nth-child(odd)){--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}:is(.dark .dark\:odd\:bg-green-700:nth-child(odd)){--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity))}:is(.dark .dark\:odd\:bg-red-700:nth-child(odd)){--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity))}:is(.dark .dark\:odd\:bg-slate-800:nth-child(odd)){--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity))}:is(.dark .dark\:hover\:text-gray-400:hover){--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}@media (min-width:640px){.sm\:inline{display:inline}.sm\:grid{display:grid}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:gap-6{gap:1.5rem}.sm\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(0px*var(--tw-space-y-reverse));margin-top:calc(0px*(1 - var(--tw-space-y-reverse)))}}@media (min-width:768px){.md\:flex{display:flex}.md\:hidden{display:none}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1.5rem*var(--tw-space-x-reverse))}.md\:px-0{padding-left:0;padding-right:0}.md\:px-4{padding-left:1rem;padding-right:1rem}.md\:pl-8{padding-left:2rem}}@media (min-width:1024px){.lg\:m-0{margin:0}.lg\:w-full{width:100%}.lg\:overflow-x-auto{overflow-x:auto}.lg\:text-left{text-align:left}} \ No newline at end of file diff --git a/_next/static/GGIrfCwyq6z4ZgyIrhmAS/_buildManifest.js b/_next/static/oUP6QmqiEmSqWmSmpgSBN/_buildManifest.js similarity index 92% rename from _next/static/GGIrfCwyq6z4ZgyIrhmAS/_buildManifest.js rename to _next/static/oUP6QmqiEmSqWmSmpgSBN/_buildManifest.js index 9646b3d..1ed1322 100644 --- a/_next/static/GGIrfCwyq6z4ZgyIrhmAS/_buildManifest.js +++ b/_next/static/oUP6QmqiEmSqWmSmpgSBN/_buildManifest.js @@ -1 +1 @@ -self.__BUILD_MANIFEST=function(s,e){return{__rewrites:{beforeFiles:[],afterFiles:[],fallback:[]},"/":["static/chunks/pages/index-bf0b9d17ee3c2672.js"],"/_error":["static/chunks/pages/_error-46720a424c9e5130.js"],"/accounts":[s,"static/chunks/47-bcc9503ff56aa30c.js","static/chunks/pages/accounts-ccbbc7a22b1047ef.js"],"/budget":[s,"static/chunks/pages/budget-0c71fdac064f3c3d.js"],"/interest":[s,e,"static/chunks/pages/interest-159728d0b03e121b.js"],"/privacy":["static/chunks/pages/privacy-c8a616817be3acb9.js"],"/stocks":[s,"static/chunks/pages/stocks-c61dcec4a048305b.js"],"/tax":[e,"static/chunks/pages/tax-bafd1a50669f3383.js"],sortedPages:["/","/_app","/_error","/accounts","/budget","/interest","/privacy","/stocks","/tax"]}}("static/chunks/536-8ac306611378b526.js","static/chunks/333-92652b64f157807a.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB(); \ No newline at end of file +self.__BUILD_MANIFEST=function(s,e){return{__rewrites:{beforeFiles:[],afterFiles:[],fallback:[]},"/":["static/chunks/pages/index-bf0b9d17ee3c2672.js"],"/_error":["static/chunks/pages/_error-46720a424c9e5130.js"],"/accounts":[s,"static/chunks/47-bcc9503ff56aa30c.js","static/chunks/pages/accounts-545ab74404f61c59.js"],"/budget":[s,"static/chunks/pages/budget-0c71fdac064f3c3d.js"],"/interest":[s,e,"static/chunks/pages/interest-159728d0b03e121b.js"],"/privacy":["static/chunks/pages/privacy-c8a616817be3acb9.js"],"/stocks":[s,"static/chunks/pages/stocks-c61dcec4a048305b.js"],"/tax":[e,"static/chunks/pages/tax-bafd1a50669f3383.js"],sortedPages:["/","/_app","/_error","/accounts","/budget","/interest","/privacy","/stocks","/tax"]}}("static/chunks/536-8ac306611378b526.js","static/chunks/333-92652b64f157807a.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB(); \ No newline at end of file diff --git a/_next/static/GGIrfCwyq6z4ZgyIrhmAS/_ssgManifest.js b/_next/static/oUP6QmqiEmSqWmSmpgSBN/_ssgManifest.js similarity index 100% rename from _next/static/GGIrfCwyq6z4ZgyIrhmAS/_ssgManifest.js rename to _next/static/oUP6QmqiEmSqWmSmpgSBN/_ssgManifest.js diff --git a/accounts.html b/accounts.html index 4d5b746..acf6aaf 100644 --- a/accounts.html +++ b/accounts.html @@ -1 +1 @@ -Accounts | Finance \ No newline at end of file +Accounts | Finance \ No newline at end of file diff --git a/budget.html b/budget.html index d218b1a..a3afa01 100644 --- a/budget.html +++ b/budget.html @@ -1 +1 @@ -Budget | Finance \ No newline at end of file +Budget | Finance \ No newline at end of file diff --git a/index.html b/index.html index b57d402..47464d9 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -Finance Tracker | Finance

Tools to help with your finances

This page is a collection of difference tools to help track finances and help with different standard calculations that people come across. These has primarely been made for my own use, and are shared here to expand my own development skills, and for whoever else are interested in using these.

Features

  • Overview of your money across accounts
  • Track your stock portfolio, with live price updates
  • A rolling interest calculator, to help savings calculations over time
  • Calculate post-tax income across different countries with different rates and systems
  • Simple budget app, with options like setting a certain percentage for savings
\ No newline at end of file +Finance Tracker | Finance

Tools to help with your finances

This page is a collection of difference tools to help track finances and help with different standard calculations that people come across. These has primarely been made for my own use, and are shared here to expand my own development skills, and for whoever else are interested in using these.

Features

  • Overview of your money across accounts
  • Track your stock portfolio, with live price updates
  • A rolling interest calculator, to help savings calculations over time
  • Calculate post-tax income across different countries with different rates and systems
  • Simple budget app, with options like setting a certain percentage for savings
\ No newline at end of file diff --git a/interest.html b/interest.html index 6ae5396..9361d77 100644 --- a/interest.html +++ b/interest.html @@ -1 +1 @@ -Interest calculator | Finance

Compound interest calculator

\ No newline at end of file +Interest calculator | Finance

Compound interest calculator

\ No newline at end of file diff --git a/privacy.html b/privacy.html index 5182c99..c1ce5a6 100644 --- a/privacy.html +++ b/privacy.html @@ -1 +1 @@ -Privacy | Finance

Privacy

Some functionality on this page sends and stores data server side. All of this data is connected to the currently logged in account, and therefore NOT anonymized. Everything sent over the wire is encrypted (TLS) and stored on encrypted disks. However, as this is just a hobby project at the moment, and while I have no plans to (nor never will have) ever share/sell any data, I take no responsibility for stolen or lost data. Use at your own risk.

In regards to cookies, only strictly necessary cookies and other data are stored on the client side. This is limited to your authentication cookie (currently only support for Github), and use of local storage to cache any data you enter on this page.

\ No newline at end of file +Privacy | Finance

Privacy

Some functionality on this page sends and stores data server side. All of this data is connected to the currently logged in account, and therefore NOT anonymized. Everything sent over the wire is encrypted (TLS) and stored on encrypted disks. However, as this is just a hobby project at the moment, and while I have no plans to (nor never will have) ever share/sell any data, I take no responsibility for stolen or lost data. Use at your own risk.

In regards to cookies, only strictly necessary cookies and other data are stored on the client side. This is limited to your authentication cookie (currently only support for Github), and use of local storage to cache any data you enter on this page.

\ No newline at end of file diff --git a/stocks.html b/stocks.html index 0f99f83..d8b90e6 100644 --- a/stocks.html +++ b/stocks.html @@ -1 +1 @@ -Stocks | Finance \ No newline at end of file +Stocks | Finance \ No newline at end of file diff --git a/tax.html b/tax.html index c592c6e..5b88dda 100644 --- a/tax.html +++ b/tax.html @@ -1 +1 @@ -Tax calculator | Finance

Guide to tax calculator

This calculator is used to give estimations for what a salary would translate to in another country, and on how much tax you will have pay for a given income in that country. It is designed to allow you to easily compare across countries. This should in no way be used for actual tax forms.

Currently only a limited number of countries and their tax systems are available. I plan to extend this in the future to support more countries and possible add a way to add your own, and provide better inside where the tax percentages is gather from (government website in the individual countries).

\ No newline at end of file +Tax calculator | Finance

Guide to tax calculator

This calculator is used to give estimations for what a salary would translate to in another country, and on how much tax you will have pay for a given income in that country. It is designed to allow you to easily compare across countries. This should in no way be used for actual tax forms.

Currently only a limited number of countries and their tax systems are available. I plan to extend this in the future to support more countries and possible add a way to add your own, and provide better inside where the tax percentages is gather from (government website in the individual countries).

\ No newline at end of file