@roastcodes/ttdash 6.2.0 → 6.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/AnomalyDetection-BdGl1xvC.js +1 -0
- package/dist/assets/{AutoImportModal-C8gA0_mL.js → AutoImportModal-bokip1Pn.js} +3 -3
- package/dist/assets/CacheROI-IyVKLGZu.js +1 -0
- package/dist/assets/ChartCard-CBUnItl-.js +2 -0
- package/dist/assets/ChartLegend-B64cJdDI.js +1 -0
- package/dist/assets/CorrelationAnalysis-Dnd0YUCO.js +1 -0
- package/dist/assets/CostByModelOverTime-C10Hr2xR.js +1 -0
- package/dist/assets/CostByWeekday-X20qjGNA.js +1 -0
- package/dist/assets/CostForecast-C--EIZ4B.js +1 -0
- package/dist/assets/CumulativeCost-D9v6GDcr.js +1 -0
- package/dist/assets/CustomTooltip-CBVU1pyK.js +1 -0
- package/dist/assets/DistributionAnalysis-Cdly0pAu.js +1 -0
- package/dist/assets/DrillDownModal-BXf7B9B8.js +1 -0
- package/dist/assets/HelpPanel-HNxQElT5.js +1 -0
- package/dist/assets/InfoButton-CTgLGzb9.js +1 -0
- package/dist/assets/InfoHeading-oi90uCR7.js +1 -0
- package/dist/assets/MetricCard-Drluz0b9.js +1 -0
- package/dist/assets/ModelEfficiency-CZ4ZzDtA.js +1 -0
- package/dist/assets/ModelMix-TDHxSk5H.js +1 -0
- package/dist/assets/PeriodComparison-B9WuoaCr.js +1 -0
- package/dist/assets/ProviderEfficiency-DpDIYr_l.js +1 -0
- package/dist/assets/ProviderLimitsSection-CSuisho_.js +1 -0
- package/dist/assets/RecentDays-Cz4Yd_-Q.js +1 -0
- package/dist/assets/RequestCacheHitRateByModel-5bkvg7Hx.js +1 -0
- package/dist/assets/RequestQuality-iUIOJrpr.js +1 -0
- package/dist/assets/RequestsOverTime-D10OssgN.js +1 -0
- package/dist/assets/SettingsModal-D9-T5heB.js +1 -0
- package/dist/assets/TokenEfficiency-CGeyr8Zq.js +1 -0
- package/dist/assets/TokenTypes-BiRBF9VP.js +1 -0
- package/dist/assets/TokensOverTime-DeT3D-aC.js +1 -0
- package/dist/assets/app-settings-C3i52ycx.js +1 -0
- package/dist/assets/button-D--hHeVj.js +1 -0
- package/dist/assets/calculations-GOdNqKo6.js +1 -0
- package/dist/assets/card-h-Z9EWBl.js +1 -0
- package/dist/assets/chart-theme-D5iCFDJg.js +1 -0
- package/dist/assets/constants-jyhBMReu.js +1 -0
- package/dist/assets/dialog-C0AeNKs8.js +1 -0
- package/dist/assets/formatted-value-rO0EpKbc.js +1 -0
- package/dist/assets/formatters-yKppUXb3.js +1 -0
- package/dist/assets/help-content-Bt5KCpWS.js +1 -0
- package/dist/assets/i18n-C88wS2Uy.js +1 -0
- package/dist/assets/index-DjMakAzD.js +3 -0
- package/dist/assets/index-DuoM1Ukq.css +2 -0
- package/dist/assets/model-utils-BIvGAFGz.js +1 -0
- package/dist/assets/motion-vendor-vKc6gXHZ.js +1 -0
- package/dist/assets/provider-limits-5e1fUwPl.js +1 -0
- package/dist/assets/section-header-DbV45zH5.js +1 -0
- package/dist/assets/ui-vendor-BolBXLiD.js +45 -0
- package/dist/assets/useTranslation-BSl7t2D6.js +1 -0
- package/dist/index.html +26 -8
- package/package.json +15 -5
- package/server/report/index.js +13 -11
- package/server.js +281 -56
- package/shared/dashboard-domain.d.ts +12 -0
- package/shared/dashboard-domain.js +79 -0
- package/shared/dashboard-types.d.ts +4 -0
- package/shared/model-colors.d.ts +7 -0
- package/shared/model-colors.js +27 -0
- package/src/locales/de/common.json +50 -5
- package/src/locales/en/common.json +50 -4
- package/dist/assets/CustomTooltip-CdIOw3Ep.js +0 -1
- package/dist/assets/DrillDownModal-d6hcut-I.js +0 -1
- package/dist/assets/button-B26tLVFw.js +0 -1
- package/dist/assets/dialog-CA-ZSHjK.js +0 -1
- package/dist/assets/index-BkGSNAne.css +0 -2
- package/dist/assets/index-CMtAn7c8.js +0 -4
- package/dist/assets/motion-vendor-BXI2L__C.js +0 -1
- package/dist/assets/ui-vendor-BGjRFQGY.js +0 -45
- /package/dist/assets/{icons-vendor-z59La6A4.js → icons-vendor-CIvT_-Pb.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e}from"./rolldown-runtime-COnpUsM8.js";import{S as t,w as n,x as r}from"./charts-vendor-CiBqdKXh.js";import{n as i}from"./motion-vendor-vKc6gXHZ.js";var a=(e,t)=>{let n=Array(e.length+t.length);for(let t=0;t<e.length;t++)n[t]=e[t];for(let r=0;r<t.length;r++)n[e.length+r]=t[r];return n},o=(e,t)=>({classGroupId:e,validator:t}),s=(e=new Map,t=null,n)=>({nextPart:e,validators:t,classGroupId:n}),c=`-`,l=[],u=`arbitrary..`,d=e=>{let t=m(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:e=>{if(e.startsWith(`[`)&&e.endsWith(`]`))return p(e);let n=e.split(c);return f(n,+(n[0]===``&&n.length>1),t)},getConflictingClassGroupIds:(e,t)=>{if(t){let t=r[e],i=n[e];return t?i?a(i,t):t:i||l}return n[e]||l}}},f=(e,t,n)=>{if(e.length-t===0)return n.classGroupId;let r=e[t],i=n.nextPart.get(r);if(i){let n=f(e,t+1,i);if(n)return n}let a=n.validators;if(a===null)return;let o=t===0?e.join(c):e.slice(t).join(c),s=a.length;for(let e=0;e<s;e++){let t=a[e];if(t.validator(o))return t.classGroupId}},p=e=>e.slice(1,-1).indexOf(`:`)===-1?void 0:(()=>{let t=e.slice(1,-1),n=t.indexOf(`:`),r=t.slice(0,n);return r?u+r:void 0})(),m=e=>{let{theme:t,classGroups:n}=e;return h(n,t)},h=(e,t)=>{let n=s();for(let r in e){let i=e[r];g(i,n,r,t)}return n},g=(e,t,n,r)=>{let i=e.length;for(let a=0;a<i;a++){let i=e[a];_(i,t,n,r)}},_=(e,t,n,r)=>{if(typeof e==`string`){v(e,t,n);return}if(typeof e==`function`){y(e,t,n,r);return}b(e,t,n,r)},v=(e,t,n)=>{let r=e===``?t:x(t,e);r.classGroupId=n},y=(e,t,n,r)=>{if(S(e)){g(e(r),t,n,r);return}t.validators===null&&(t.validators=[]),t.validators.push(o(n,e))},b=(e,t,n,r)=>{let i=Object.entries(e),a=i.length;for(let e=0;e<a;e++){let[a,o]=i[e];g(o,x(t,a),n,r)}},x=(e,t)=>{let n=e,r=t.split(c),i=r.length;for(let e=0;e<i;e++){let t=r[e],i=n.nextPart.get(t);i||(i=s(),n.nextPart.set(t,i)),n=i}return n},S=e=>`isThemeGetter`in e&&e.isThemeGetter===!0,C=e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let t=0,n=Object.create(null),r=Object.create(null),i=(i,a)=>{n[i]=a,t++,t>e&&(t=0,r=n,n=Object.create(null))};return{get(e){let t=n[e];if(t!==void 0)return t;if((t=r[e])!==void 0)return i(e,t),t},set(e,t){e in n?n[e]=t:i(e,t)}}},w=`!`,T=`:`,ee=[],te=(e,t,n,r,i)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:r,isExternal:i}),E=e=>{let{prefix:t,experimentalParseClassName:n}=e,r=e=>{let t=[],n=0,r=0,i=0,a,o=e.length;for(let s=0;s<o;s++){let o=e[s];if(n===0&&r===0){if(o===T){t.push(e.slice(i,s)),i=s+1;continue}if(o===`/`){a=s;continue}}o===`[`?n++:o===`]`?n--:o===`(`?r++:o===`)`&&r--}let s=t.length===0?e:e.slice(i),c=s,l=!1;s.endsWith(w)?(c=s.slice(0,-1),l=!0):s.startsWith(w)&&(c=s.slice(1),l=!0);let u=a&&a>i?a-i:void 0;return te(t,l,c,u)};if(t){let e=t+T,n=r;r=t=>t.startsWith(e)?n(t.slice(e.length)):te(ee,!1,t,void 0,!0)}if(n){let e=r;r=t=>n({className:t,parseClassName:e})}return r},ne=e=>{let t=new Map;return e.orderSensitiveModifiers.forEach((e,n)=>{t.set(e,1e6+n)}),e=>{let n=[],r=[];for(let i=0;i<e.length;i++){let a=e[i],o=a[0]===`[`,s=t.has(a);o||s?(r.length>0&&(r.sort(),n.push(...r),r=[]),n.push(a)):r.push(a)}return r.length>0&&(r.sort(),n.push(...r)),n}},D=e=>({cache:C(e.cacheSize),parseClassName:E(e),sortModifiers:ne(e),...d(e)}),O=/\s+/,k=(e,t)=>{let{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:i,sortModifiers:a}=t,o=[],s=e.trim().split(O),c=``;for(let e=s.length-1;e>=0;--e){let t=s[e],{isExternal:l,modifiers:u,hasImportantModifier:d,baseClassName:f,maybePostfixModifierPosition:p}=n(t);if(l){c=t+(c.length>0?` `+c:c);continue}let m=!!p,h=r(m?f.substring(0,p):f);if(!h){if(!m){c=t+(c.length>0?` `+c:c);continue}if(h=r(f),!h){c=t+(c.length>0?` `+c:c);continue}m=!1}let g=u.length===0?``:u.length===1?u[0]:a(u).join(`:`),_=d?g+w:g,v=_+h;if(o.indexOf(v)>-1)continue;o.push(v);let y=i(h,m);for(let e=0;e<y.length;++e){let t=y[e];o.push(_+t)}c=t+(c.length>0?` `+c:c)}return c},A=(...e)=>{let t=0,n,r,i=``;for(;t<e.length;)(n=e[t++])&&(r=j(n))&&(i&&(i+=` `),i+=r);return i},j=e=>{if(typeof e==`string`)return e;let t,n=``;for(let r=0;r<e.length;r++)e[r]&&(t=j(e[r]))&&(n&&(n+=` `),n+=t);return n},M=(e,...t)=>{let n,r,i,a,o=o=>(n=D(t.reduce((e,t)=>t(e),e())),r=n.cache.get,i=n.cache.set,a=s,s(o)),s=e=>{let t=r(e);if(t)return t;let a=k(e,n);return i(e,a),a};return a=o,(...e)=>a(A(...e))},N=[],P=e=>{let t=t=>t[e]||N;return t.isThemeGetter=!0,t},re=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,ie=/^\((?:(\w[\w-]*):)?(.+)\)$/i,ae=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,oe=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,F=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,I=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,L=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,se=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,R=e=>ae.test(e),z=e=>!!e&&!Number.isNaN(Number(e)),B=e=>!!e&&Number.isInteger(Number(e)),ce=e=>e.endsWith(`%`)&&z(e.slice(0,-1)),V=e=>oe.test(e),le=()=>!0,H=e=>F.test(e)&&!I.test(e),U=()=>!1,W=e=>L.test(e),G=e=>se.test(e),ue=e=>!K(e)&&!J(e),de=e=>X(e,Ee,U),K=e=>re.test(e),q=e=>X(e,De,H),fe=e=>X(e,Oe,z),pe=e=>X(e,Ae,le),me=e=>X(e,ke,U),he=e=>X(e,we,U),ge=e=>X(e,Te,G),_e=e=>X(e,je,W),J=e=>ie.test(e),Y=e=>Z(e,De),ve=e=>Z(e,ke),ye=e=>Z(e,we),be=e=>Z(e,Ee),xe=e=>Z(e,Te),Se=e=>Z(e,je,!0),Ce=e=>Z(e,Ae,!0),X=(e,t,n)=>{let r=re.exec(e);return r?r[1]?t(r[1]):n(r[2]):!1},Z=(e,t,n=!1)=>{let r=ie.exec(e);return r?r[1]?t(r[1]):n:!1},we=e=>e===`position`||e===`percentage`,Te=e=>e===`image`||e===`url`,Ee=e=>e===`length`||e===`size`||e===`bg-size`,De=e=>e===`length`,Oe=e=>e===`number`,ke=e=>e===`family-name`,Ae=e=>e===`number`||e===`weight`,je=e=>e===`shadow`,Me=M(()=>{let e=P(`color`),t=P(`font`),n=P(`text`),r=P(`font-weight`),i=P(`tracking`),a=P(`leading`),o=P(`breakpoint`),s=P(`container`),c=P(`spacing`),l=P(`radius`),u=P(`shadow`),d=P(`inset-shadow`),f=P(`text-shadow`),p=P(`drop-shadow`),m=P(`blur`),h=P(`perspective`),g=P(`aspect`),_=P(`ease`),v=P(`animate`),y=()=>[`auto`,`avoid`,`all`,`avoid-page`,`page`,`left`,`right`,`column`],b=()=>[`center`,`top`,`bottom`,`left`,`right`,`top-left`,`left-top`,`top-right`,`right-top`,`bottom-right`,`right-bottom`,`bottom-left`,`left-bottom`],x=()=>[...b(),J,K],S=()=>[`auto`,`hidden`,`clip`,`visible`,`scroll`],C=()=>[`auto`,`contain`,`none`],w=()=>[J,K,c],T=()=>[R,`full`,`auto`,...w()],ee=()=>[B,`none`,`subgrid`,J,K],te=()=>[`auto`,{span:[`full`,B,J,K]},B,J,K],E=()=>[B,`auto`,J,K],ne=()=>[`auto`,`min`,`max`,`fr`,J,K],D=()=>[`start`,`end`,`center`,`between`,`around`,`evenly`,`stretch`,`baseline`,`center-safe`,`end-safe`],O=()=>[`start`,`end`,`center`,`stretch`,`center-safe`,`end-safe`],k=()=>[`auto`,...w()],A=()=>[R,`auto`,`full`,`dvw`,`dvh`,`lvw`,`lvh`,`svw`,`svh`,`min`,`max`,`fit`,...w()],j=()=>[R,`screen`,`full`,`dvw`,`lvw`,`svw`,`min`,`max`,`fit`,...w()],M=()=>[R,`screen`,`full`,`lh`,`dvh`,`lvh`,`svh`,`min`,`max`,`fit`,...w()],N=()=>[e,J,K],re=()=>[...b(),ye,he,{position:[J,K]}],ie=()=>[`no-repeat`,{repeat:[``,`x`,`y`,`space`,`round`]}],ae=()=>[`auto`,`cover`,`contain`,be,de,{size:[J,K]}],oe=()=>[ce,Y,q],F=()=>[``,`none`,`full`,l,J,K],I=()=>[``,z,Y,q],L=()=>[`solid`,`dashed`,`dotted`,`double`],se=()=>[`normal`,`multiply`,`screen`,`overlay`,`darken`,`lighten`,`color-dodge`,`color-burn`,`hard-light`,`soft-light`,`difference`,`exclusion`,`hue`,`saturation`,`color`,`luminosity`],H=()=>[z,ce,ye,he],U=()=>[``,`none`,m,J,K],W=()=>[`none`,z,J,K],G=()=>[`none`,z,J,K],X=()=>[z,J,K],Z=()=>[R,`full`,...w()];return{cacheSize:500,theme:{animate:[`spin`,`ping`,`pulse`,`bounce`],aspect:[`video`],blur:[V],breakpoint:[V],color:[le],container:[V],"drop-shadow":[V],ease:[`in`,`out`,`in-out`],font:[ue],"font-weight":[`thin`,`extralight`,`light`,`normal`,`medium`,`semibold`,`bold`,`extrabold`,`black`],"inset-shadow":[V],leading:[`none`,`tight`,`snug`,`normal`,`relaxed`,`loose`],perspective:[`dramatic`,`near`,`normal`,`midrange`,`distant`,`none`],radius:[V],shadow:[V],spacing:[`px`,z],text:[V],"text-shadow":[V],tracking:[`tighter`,`tight`,`normal`,`wide`,`wider`,`widest`]},classGroups:{aspect:[{aspect:[`auto`,`square`,R,K,J,g]}],container:[`container`],columns:[{columns:[z,K,J,s]}],"break-after":[{"break-after":y()}],"break-before":[{"break-before":y()}],"break-inside":[{"break-inside":[`auto`,`avoid`,`avoid-page`,`avoid-column`]}],"box-decoration":[{"box-decoration":[`slice`,`clone`]}],box:[{box:[`border`,`content`]}],display:[`block`,`inline-block`,`inline`,`flex`,`inline-flex`,`table`,`inline-table`,`table-caption`,`table-cell`,`table-column`,`table-column-group`,`table-footer-group`,`table-header-group`,`table-row-group`,`table-row`,`flow-root`,`grid`,`inline-grid`,`contents`,`list-item`,`hidden`],sr:[`sr-only`,`not-sr-only`],float:[{float:[`right`,`left`,`none`,`start`,`end`]}],clear:[{clear:[`left`,`right`,`both`,`none`,`start`,`end`]}],isolation:[`isolate`,`isolation-auto`],"object-fit":[{object:[`contain`,`cover`,`fill`,`none`,`scale-down`]}],"object-position":[{object:x()}],overflow:[{overflow:S()}],"overflow-x":[{"overflow-x":S()}],"overflow-y":[{"overflow-y":S()}],overscroll:[{overscroll:C()}],"overscroll-x":[{"overscroll-x":C()}],"overscroll-y":[{"overscroll-y":C()}],position:[`static`,`fixed`,`absolute`,`relative`,`sticky`],inset:[{inset:T()}],"inset-x":[{"inset-x":T()}],"inset-y":[{"inset-y":T()}],start:[{"inset-s":T(),start:T()}],end:[{"inset-e":T(),end:T()}],"inset-bs":[{"inset-bs":T()}],"inset-be":[{"inset-be":T()}],top:[{top:T()}],right:[{right:T()}],bottom:[{bottom:T()}],left:[{left:T()}],visibility:[`visible`,`invisible`,`collapse`],z:[{z:[B,`auto`,J,K]}],basis:[{basis:[R,`full`,`auto`,s,...w()]}],"flex-direction":[{flex:[`row`,`row-reverse`,`col`,`col-reverse`]}],"flex-wrap":[{flex:[`nowrap`,`wrap`,`wrap-reverse`]}],flex:[{flex:[z,R,`auto`,`initial`,`none`,K]}],grow:[{grow:[``,z,J,K]}],shrink:[{shrink:[``,z,J,K]}],order:[{order:[B,`first`,`last`,`none`,J,K]}],"grid-cols":[{"grid-cols":ee()}],"col-start-end":[{col:te()}],"col-start":[{"col-start":E()}],"col-end":[{"col-end":E()}],"grid-rows":[{"grid-rows":ee()}],"row-start-end":[{row:te()}],"row-start":[{"row-start":E()}],"row-end":[{"row-end":E()}],"grid-flow":[{"grid-flow":[`row`,`col`,`dense`,`row-dense`,`col-dense`]}],"auto-cols":[{"auto-cols":ne()}],"auto-rows":[{"auto-rows":ne()}],gap:[{gap:w()}],"gap-x":[{"gap-x":w()}],"gap-y":[{"gap-y":w()}],"justify-content":[{justify:[...D(),`normal`]}],"justify-items":[{"justify-items":[...O(),`normal`]}],"justify-self":[{"justify-self":[`auto`,...O()]}],"align-content":[{content:[`normal`,...D()]}],"align-items":[{items:[...O(),{baseline:[``,`last`]}]}],"align-self":[{self:[`auto`,...O(),{baseline:[``,`last`]}]}],"place-content":[{"place-content":D()}],"place-items":[{"place-items":[...O(),`baseline`]}],"place-self":[{"place-self":[`auto`,...O()]}],p:[{p:w()}],px:[{px:w()}],py:[{py:w()}],ps:[{ps:w()}],pe:[{pe:w()}],pbs:[{pbs:w()}],pbe:[{pbe:w()}],pt:[{pt:w()}],pr:[{pr:w()}],pb:[{pb:w()}],pl:[{pl:w()}],m:[{m:k()}],mx:[{mx:k()}],my:[{my:k()}],ms:[{ms:k()}],me:[{me:k()}],mbs:[{mbs:k()}],mbe:[{mbe:k()}],mt:[{mt:k()}],mr:[{mr:k()}],mb:[{mb:k()}],ml:[{ml:k()}],"space-x":[{"space-x":w()}],"space-x-reverse":[`space-x-reverse`],"space-y":[{"space-y":w()}],"space-y-reverse":[`space-y-reverse`],size:[{size:A()}],"inline-size":[{inline:[`auto`,...j()]}],"min-inline-size":[{"min-inline":[`auto`,...j()]}],"max-inline-size":[{"max-inline":[`none`,...j()]}],"block-size":[{block:[`auto`,...M()]}],"min-block-size":[{"min-block":[`auto`,...M()]}],"max-block-size":[{"max-block":[`none`,...M()]}],w:[{w:[s,`screen`,...A()]}],"min-w":[{"min-w":[s,`screen`,`none`,...A()]}],"max-w":[{"max-w":[s,`screen`,`none`,`prose`,{screen:[o]},...A()]}],h:[{h:[`screen`,`lh`,...A()]}],"min-h":[{"min-h":[`screen`,`lh`,`none`,...A()]}],"max-h":[{"max-h":[`screen`,`lh`,...A()]}],"font-size":[{text:[`base`,n,Y,q]}],"font-smoothing":[`antialiased`,`subpixel-antialiased`],"font-style":[`italic`,`not-italic`],"font-weight":[{font:[r,Ce,pe]}],"font-stretch":[{"font-stretch":[`ultra-condensed`,`extra-condensed`,`condensed`,`semi-condensed`,`normal`,`semi-expanded`,`expanded`,`extra-expanded`,`ultra-expanded`,ce,K]}],"font-family":[{font:[ve,me,t]}],"font-features":[{"font-features":[K]}],"fvn-normal":[`normal-nums`],"fvn-ordinal":[`ordinal`],"fvn-slashed-zero":[`slashed-zero`],"fvn-figure":[`lining-nums`,`oldstyle-nums`],"fvn-spacing":[`proportional-nums`,`tabular-nums`],"fvn-fraction":[`diagonal-fractions`,`stacked-fractions`],tracking:[{tracking:[i,J,K]}],"line-clamp":[{"line-clamp":[z,`none`,J,fe]}],leading:[{leading:[a,...w()]}],"list-image":[{"list-image":[`none`,J,K]}],"list-style-position":[{list:[`inside`,`outside`]}],"list-style-type":[{list:[`disc`,`decimal`,`none`,J,K]}],"text-alignment":[{text:[`left`,`center`,`right`,`justify`,`start`,`end`]}],"placeholder-color":[{placeholder:N()}],"text-color":[{text:N()}],"text-decoration":[`underline`,`overline`,`line-through`,`no-underline`],"text-decoration-style":[{decoration:[...L(),`wavy`]}],"text-decoration-thickness":[{decoration:[z,`from-font`,`auto`,J,q]}],"text-decoration-color":[{decoration:N()}],"underline-offset":[{"underline-offset":[z,`auto`,J,K]}],"text-transform":[`uppercase`,`lowercase`,`capitalize`,`normal-case`],"text-overflow":[`truncate`,`text-ellipsis`,`text-clip`],"text-wrap":[{text:[`wrap`,`nowrap`,`balance`,`pretty`]}],indent:[{indent:w()}],"vertical-align":[{align:[`baseline`,`top`,`middle`,`bottom`,`text-top`,`text-bottom`,`sub`,`super`,J,K]}],whitespace:[{whitespace:[`normal`,`nowrap`,`pre`,`pre-line`,`pre-wrap`,`break-spaces`]}],break:[{break:[`normal`,`words`,`all`,`keep`]}],wrap:[{wrap:[`break-word`,`anywhere`,`normal`]}],hyphens:[{hyphens:[`none`,`manual`,`auto`]}],content:[{content:[`none`,J,K]}],"bg-attachment":[{bg:[`fixed`,`local`,`scroll`]}],"bg-clip":[{"bg-clip":[`border`,`padding`,`content`,`text`]}],"bg-origin":[{"bg-origin":[`border`,`padding`,`content`]}],"bg-position":[{bg:re()}],"bg-repeat":[{bg:ie()}],"bg-size":[{bg:ae()}],"bg-image":[{bg:[`none`,{linear:[{to:[`t`,`tr`,`r`,`br`,`b`,`bl`,`l`,`tl`]},B,J,K],radial:[``,J,K],conic:[B,J,K]},xe,ge]}],"bg-color":[{bg:N()}],"gradient-from-pos":[{from:oe()}],"gradient-via-pos":[{via:oe()}],"gradient-to-pos":[{to:oe()}],"gradient-from":[{from:N()}],"gradient-via":[{via:N()}],"gradient-to":[{to:N()}],rounded:[{rounded:F()}],"rounded-s":[{"rounded-s":F()}],"rounded-e":[{"rounded-e":F()}],"rounded-t":[{"rounded-t":F()}],"rounded-r":[{"rounded-r":F()}],"rounded-b":[{"rounded-b":F()}],"rounded-l":[{"rounded-l":F()}],"rounded-ss":[{"rounded-ss":F()}],"rounded-se":[{"rounded-se":F()}],"rounded-ee":[{"rounded-ee":F()}],"rounded-es":[{"rounded-es":F()}],"rounded-tl":[{"rounded-tl":F()}],"rounded-tr":[{"rounded-tr":F()}],"rounded-br":[{"rounded-br":F()}],"rounded-bl":[{"rounded-bl":F()}],"border-w":[{border:I()}],"border-w-x":[{"border-x":I()}],"border-w-y":[{"border-y":I()}],"border-w-s":[{"border-s":I()}],"border-w-e":[{"border-e":I()}],"border-w-bs":[{"border-bs":I()}],"border-w-be":[{"border-be":I()}],"border-w-t":[{"border-t":I()}],"border-w-r":[{"border-r":I()}],"border-w-b":[{"border-b":I()}],"border-w-l":[{"border-l":I()}],"divide-x":[{"divide-x":I()}],"divide-x-reverse":[`divide-x-reverse`],"divide-y":[{"divide-y":I()}],"divide-y-reverse":[`divide-y-reverse`],"border-style":[{border:[...L(),`hidden`,`none`]}],"divide-style":[{divide:[...L(),`hidden`,`none`]}],"border-color":[{border:N()}],"border-color-x":[{"border-x":N()}],"border-color-y":[{"border-y":N()}],"border-color-s":[{"border-s":N()}],"border-color-e":[{"border-e":N()}],"border-color-bs":[{"border-bs":N()}],"border-color-be":[{"border-be":N()}],"border-color-t":[{"border-t":N()}],"border-color-r":[{"border-r":N()}],"border-color-b":[{"border-b":N()}],"border-color-l":[{"border-l":N()}],"divide-color":[{divide:N()}],"outline-style":[{outline:[...L(),`none`,`hidden`]}],"outline-offset":[{"outline-offset":[z,J,K]}],"outline-w":[{outline:[``,z,Y,q]}],"outline-color":[{outline:N()}],shadow:[{shadow:[``,`none`,u,Se,_e]}],"shadow-color":[{shadow:N()}],"inset-shadow":[{"inset-shadow":[`none`,d,Se,_e]}],"inset-shadow-color":[{"inset-shadow":N()}],"ring-w":[{ring:I()}],"ring-w-inset":[`ring-inset`],"ring-color":[{ring:N()}],"ring-offset-w":[{"ring-offset":[z,q]}],"ring-offset-color":[{"ring-offset":N()}],"inset-ring-w":[{"inset-ring":I()}],"inset-ring-color":[{"inset-ring":N()}],"text-shadow":[{"text-shadow":[`none`,f,Se,_e]}],"text-shadow-color":[{"text-shadow":N()}],opacity:[{opacity:[z,J,K]}],"mix-blend":[{"mix-blend":[...se(),`plus-darker`,`plus-lighter`]}],"bg-blend":[{"bg-blend":se()}],"mask-clip":[{"mask-clip":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]},`mask-no-clip`],"mask-composite":[{mask:[`add`,`subtract`,`intersect`,`exclude`]}],"mask-image-linear-pos":[{"mask-linear":[z]}],"mask-image-linear-from-pos":[{"mask-linear-from":H()}],"mask-image-linear-to-pos":[{"mask-linear-to":H()}],"mask-image-linear-from-color":[{"mask-linear-from":N()}],"mask-image-linear-to-color":[{"mask-linear-to":N()}],"mask-image-t-from-pos":[{"mask-t-from":H()}],"mask-image-t-to-pos":[{"mask-t-to":H()}],"mask-image-t-from-color":[{"mask-t-from":N()}],"mask-image-t-to-color":[{"mask-t-to":N()}],"mask-image-r-from-pos":[{"mask-r-from":H()}],"mask-image-r-to-pos":[{"mask-r-to":H()}],"mask-image-r-from-color":[{"mask-r-from":N()}],"mask-image-r-to-color":[{"mask-r-to":N()}],"mask-image-b-from-pos":[{"mask-b-from":H()}],"mask-image-b-to-pos":[{"mask-b-to":H()}],"mask-image-b-from-color":[{"mask-b-from":N()}],"mask-image-b-to-color":[{"mask-b-to":N()}],"mask-image-l-from-pos":[{"mask-l-from":H()}],"mask-image-l-to-pos":[{"mask-l-to":H()}],"mask-image-l-from-color":[{"mask-l-from":N()}],"mask-image-l-to-color":[{"mask-l-to":N()}],"mask-image-x-from-pos":[{"mask-x-from":H()}],"mask-image-x-to-pos":[{"mask-x-to":H()}],"mask-image-x-from-color":[{"mask-x-from":N()}],"mask-image-x-to-color":[{"mask-x-to":N()}],"mask-image-y-from-pos":[{"mask-y-from":H()}],"mask-image-y-to-pos":[{"mask-y-to":H()}],"mask-image-y-from-color":[{"mask-y-from":N()}],"mask-image-y-to-color":[{"mask-y-to":N()}],"mask-image-radial":[{"mask-radial":[J,K]}],"mask-image-radial-from-pos":[{"mask-radial-from":H()}],"mask-image-radial-to-pos":[{"mask-radial-to":H()}],"mask-image-radial-from-color":[{"mask-radial-from":N()}],"mask-image-radial-to-color":[{"mask-radial-to":N()}],"mask-image-radial-shape":[{"mask-radial":[`circle`,`ellipse`]}],"mask-image-radial-size":[{"mask-radial":[{closest:[`side`,`corner`],farthest:[`side`,`corner`]}]}],"mask-image-radial-pos":[{"mask-radial-at":b()}],"mask-image-conic-pos":[{"mask-conic":[z]}],"mask-image-conic-from-pos":[{"mask-conic-from":H()}],"mask-image-conic-to-pos":[{"mask-conic-to":H()}],"mask-image-conic-from-color":[{"mask-conic-from":N()}],"mask-image-conic-to-color":[{"mask-conic-to":N()}],"mask-mode":[{mask:[`alpha`,`luminance`,`match`]}],"mask-origin":[{"mask-origin":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]}],"mask-position":[{mask:re()}],"mask-repeat":[{mask:ie()}],"mask-size":[{mask:ae()}],"mask-type":[{"mask-type":[`alpha`,`luminance`]}],"mask-image":[{mask:[`none`,J,K]}],filter:[{filter:[``,`none`,J,K]}],blur:[{blur:U()}],brightness:[{brightness:[z,J,K]}],contrast:[{contrast:[z,J,K]}],"drop-shadow":[{"drop-shadow":[``,`none`,p,Se,_e]}],"drop-shadow-color":[{"drop-shadow":N()}],grayscale:[{grayscale:[``,z,J,K]}],"hue-rotate":[{"hue-rotate":[z,J,K]}],invert:[{invert:[``,z,J,K]}],saturate:[{saturate:[z,J,K]}],sepia:[{sepia:[``,z,J,K]}],"backdrop-filter":[{"backdrop-filter":[``,`none`,J,K]}],"backdrop-blur":[{"backdrop-blur":U()}],"backdrop-brightness":[{"backdrop-brightness":[z,J,K]}],"backdrop-contrast":[{"backdrop-contrast":[z,J,K]}],"backdrop-grayscale":[{"backdrop-grayscale":[``,z,J,K]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[z,J,K]}],"backdrop-invert":[{"backdrop-invert":[``,z,J,K]}],"backdrop-opacity":[{"backdrop-opacity":[z,J,K]}],"backdrop-saturate":[{"backdrop-saturate":[z,J,K]}],"backdrop-sepia":[{"backdrop-sepia":[``,z,J,K]}],"border-collapse":[{border:[`collapse`,`separate`]}],"border-spacing":[{"border-spacing":w()}],"border-spacing-x":[{"border-spacing-x":w()}],"border-spacing-y":[{"border-spacing-y":w()}],"table-layout":[{table:[`auto`,`fixed`]}],caption:[{caption:[`top`,`bottom`]}],transition:[{transition:[``,`all`,`colors`,`opacity`,`shadow`,`transform`,`none`,J,K]}],"transition-behavior":[{transition:[`normal`,`discrete`]}],duration:[{duration:[z,`initial`,J,K]}],ease:[{ease:[`linear`,`initial`,_,J,K]}],delay:[{delay:[z,J,K]}],animate:[{animate:[`none`,v,J,K]}],backface:[{backface:[`hidden`,`visible`]}],perspective:[{perspective:[h,J,K]}],"perspective-origin":[{"perspective-origin":x()}],rotate:[{rotate:W()}],"rotate-x":[{"rotate-x":W()}],"rotate-y":[{"rotate-y":W()}],"rotate-z":[{"rotate-z":W()}],scale:[{scale:G()}],"scale-x":[{"scale-x":G()}],"scale-y":[{"scale-y":G()}],"scale-z":[{"scale-z":G()}],"scale-3d":[`scale-3d`],skew:[{skew:X()}],"skew-x":[{"skew-x":X()}],"skew-y":[{"skew-y":X()}],transform:[{transform:[J,K,``,`none`,`gpu`,`cpu`]}],"transform-origin":[{origin:x()}],"transform-style":[{transform:[`3d`,`flat`]}],translate:[{translate:Z()}],"translate-x":[{"translate-x":Z()}],"translate-y":[{"translate-y":Z()}],"translate-z":[{"translate-z":Z()}],"translate-none":[`translate-none`],accent:[{accent:N()}],appearance:[{appearance:[`none`,`auto`]}],"caret-color":[{caret:N()}],"color-scheme":[{scheme:[`normal`,`dark`,`light`,`light-dark`,`only-dark`,`only-light`]}],cursor:[{cursor:[`auto`,`default`,`pointer`,`wait`,`text`,`move`,`help`,`not-allowed`,`none`,`context-menu`,`progress`,`cell`,`crosshair`,`vertical-text`,`alias`,`copy`,`no-drop`,`grab`,`grabbing`,`all-scroll`,`col-resize`,`row-resize`,`n-resize`,`e-resize`,`s-resize`,`w-resize`,`ne-resize`,`nw-resize`,`se-resize`,`sw-resize`,`ew-resize`,`ns-resize`,`nesw-resize`,`nwse-resize`,`zoom-in`,`zoom-out`,J,K]}],"field-sizing":[{"field-sizing":[`fixed`,`content`]}],"pointer-events":[{"pointer-events":[`auto`,`none`]}],resize:[{resize:[`none`,``,`y`,`x`]}],"scroll-behavior":[{scroll:[`auto`,`smooth`]}],"scroll-m":[{"scroll-m":w()}],"scroll-mx":[{"scroll-mx":w()}],"scroll-my":[{"scroll-my":w()}],"scroll-ms":[{"scroll-ms":w()}],"scroll-me":[{"scroll-me":w()}],"scroll-mbs":[{"scroll-mbs":w()}],"scroll-mbe":[{"scroll-mbe":w()}],"scroll-mt":[{"scroll-mt":w()}],"scroll-mr":[{"scroll-mr":w()}],"scroll-mb":[{"scroll-mb":w()}],"scroll-ml":[{"scroll-ml":w()}],"scroll-p":[{"scroll-p":w()}],"scroll-px":[{"scroll-px":w()}],"scroll-py":[{"scroll-py":w()}],"scroll-ps":[{"scroll-ps":w()}],"scroll-pe":[{"scroll-pe":w()}],"scroll-pbs":[{"scroll-pbs":w()}],"scroll-pbe":[{"scroll-pbe":w()}],"scroll-pt":[{"scroll-pt":w()}],"scroll-pr":[{"scroll-pr":w()}],"scroll-pb":[{"scroll-pb":w()}],"scroll-pl":[{"scroll-pl":w()}],"snap-align":[{snap:[`start`,`end`,`center`,`align-none`]}],"snap-stop":[{snap:[`normal`,`always`]}],"snap-type":[{snap:[`none`,`x`,`y`,`both`]}],"snap-strictness":[{snap:[`mandatory`,`proximity`]}],touch:[{touch:[`auto`,`none`,`manipulation`]}],"touch-x":[{"touch-pan":[`x`,`left`,`right`]}],"touch-y":[{"touch-pan":[`y`,`up`,`down`]}],"touch-pz":[`touch-pinch-zoom`],select:[{select:[`none`,`text`,`all`,`auto`]}],"will-change":[{"will-change":[`auto`,`scroll`,`contents`,`transform`,J,K]}],fill:[{fill:[`none`,...N()]}],"stroke-w":[{stroke:[z,Y,q,fe]}],stroke:[{stroke:[`none`,...N()]}],"forced-color-adjust":[{"forced-color-adjust":[`auto`,`none`]}]},conflictingClassGroups:{overflow:[`overflow-x`,`overflow-y`],overscroll:[`overscroll-x`,`overscroll-y`],inset:[`inset-x`,`inset-y`,`inset-bs`,`inset-be`,`start`,`end`,`top`,`right`,`bottom`,`left`],"inset-x":[`right`,`left`],"inset-y":[`top`,`bottom`],flex:[`basis`,`grow`,`shrink`],gap:[`gap-x`,`gap-y`],p:[`px`,`py`,`ps`,`pe`,`pbs`,`pbe`,`pt`,`pr`,`pb`,`pl`],px:[`pr`,`pl`],py:[`pt`,`pb`],m:[`mx`,`my`,`ms`,`me`,`mbs`,`mbe`,`mt`,`mr`,`mb`,`ml`],mx:[`mr`,`ml`],my:[`mt`,`mb`],size:[`w`,`h`],"font-size":[`leading`],"fvn-normal":[`fvn-ordinal`,`fvn-slashed-zero`,`fvn-figure`,`fvn-spacing`,`fvn-fraction`],"fvn-ordinal":[`fvn-normal`],"fvn-slashed-zero":[`fvn-normal`],"fvn-figure":[`fvn-normal`],"fvn-spacing":[`fvn-normal`],"fvn-fraction":[`fvn-normal`],"line-clamp":[`display`,`overflow`],rounded:[`rounded-s`,`rounded-e`,`rounded-t`,`rounded-r`,`rounded-b`,`rounded-l`,`rounded-ss`,`rounded-se`,`rounded-ee`,`rounded-es`,`rounded-tl`,`rounded-tr`,`rounded-br`,`rounded-bl`],"rounded-s":[`rounded-ss`,`rounded-es`],"rounded-e":[`rounded-se`,`rounded-ee`],"rounded-t":[`rounded-tl`,`rounded-tr`],"rounded-r":[`rounded-tr`,`rounded-br`],"rounded-b":[`rounded-br`,`rounded-bl`],"rounded-l":[`rounded-tl`,`rounded-bl`],"border-spacing":[`border-spacing-x`,`border-spacing-y`],"border-w":[`border-w-x`,`border-w-y`,`border-w-s`,`border-w-e`,`border-w-bs`,`border-w-be`,`border-w-t`,`border-w-r`,`border-w-b`,`border-w-l`],"border-w-x":[`border-w-r`,`border-w-l`],"border-w-y":[`border-w-t`,`border-w-b`],"border-color":[`border-color-x`,`border-color-y`,`border-color-s`,`border-color-e`,`border-color-bs`,`border-color-be`,`border-color-t`,`border-color-r`,`border-color-b`,`border-color-l`],"border-color-x":[`border-color-r`,`border-color-l`],"border-color-y":[`border-color-t`,`border-color-b`],translate:[`translate-x`,`translate-y`,`translate-none`],"translate-none":[`translate`,`translate-x`,`translate-y`,`translate-z`],"scroll-m":[`scroll-mx`,`scroll-my`,`scroll-ms`,`scroll-me`,`scroll-mbs`,`scroll-mbe`,`scroll-mt`,`scroll-mr`,`scroll-mb`,`scroll-ml`],"scroll-mx":[`scroll-mr`,`scroll-ml`],"scroll-my":[`scroll-mt`,`scroll-mb`],"scroll-p":[`scroll-px`,`scroll-py`,`scroll-ps`,`scroll-pe`,`scroll-pbs`,`scroll-pbe`,`scroll-pt`,`scroll-pr`,`scroll-pb`,`scroll-pl`],"scroll-px":[`scroll-pr`,`scroll-pl`],"scroll-py":[`scroll-pt`,`scroll-pb`],touch:[`touch-x`,`touch-y`,`touch-pz`],"touch-x":[`touch`],"touch-y":[`touch`],"touch-pz":[`touch`]},conflictingClassGroupModifiers:{"font-size":[`leading`]},orderSensitiveModifiers:[`*`,`**`,`after`,`backdrop`,`before`,`details-content`,`file`,`first-letter`,`first-line`,`marker`,`placeholder`,`selection`]}});function Ne(...e){return Me(t(e))}function Pe(){return!!i()}function Fe(e,t){return e?``:t}var Q=e(n()),Ie=(e,t,n,r)=>{let i=[n,{code:t,...r||{}}];if(e?.services?.logger?.forward)return e.services.logger.forward(i,`warn`,`react-i18next::`,!0);$(i[0])&&(i[0]=`react-i18next:: ${i[0]}`),e?.services?.logger?.warn?e.services.logger.warn(...i):console?.warn&&console.warn(...i)},Le={},Re=(e,t,n,r)=>{$(n)&&Le[n]||($(n)&&(Le[n]=new Date),Ie(e,t,n,r))},ze=(e,t)=>()=>{if(e.isInitialized)t();else{let n=()=>{setTimeout(()=>{e.off(`initialized`,n)},0),t()};e.on(`initialized`,n)}},Be=(e,t,n)=>{e.loadNamespaces(t,ze(e,n))},Ve=(e,t,n,r)=>{if($(n)&&(n=[n]),e.options.preload&&e.options.preload.indexOf(t)>-1)return Be(e,n,r);n.forEach(t=>{e.options.ns.indexOf(t)<0&&e.options.ns.push(t)}),e.loadLanguages(t,ze(e,r))},He=(e,t,n={})=>!t.languages||!t.languages.length?(Re(t,`NO_LANGUAGES`,`i18n.languages were undefined or empty`,{languages:t.languages}),!0):t.hasLoadedNamespace(e,{lng:n.lng,precheck:(t,r)=>{if(n.bindI18n&&n.bindI18n.indexOf(`languageChanging`)>-1&&t.services.backendConnector.backend&&t.isLanguageChangingTo&&!r(t.isLanguageChangingTo,e))return!1}}),$=e=>typeof e==`string`,Ue=e=>typeof e==`object`&&!!e,We=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,Ge={"&":`&`,"&":`&`,"<":`<`,"<":`<`,">":`>`,">":`>`,"'":`'`,"'":`'`,""":`"`,""":`"`," ":` `," ":` `,"©":`©`,"©":`©`,"®":`®`,"®":`®`,"…":`…`,"…":`…`,"/":`/`,"/":`/`},Ke=e=>Ge[e],qe={bindI18n:`languageChanged`,bindI18nStore:``,transEmptyNodeValue:``,transSupportBasicHtmlNodes:!0,transWrapTextNodes:``,transKeepBasicHtmlNodesFor:[`br`,`strong`,`i`,`p`],useSuspense:!0,unescape:e=>e.replace(We,Ke),transDefaultProps:void 0},Je=(e={})=>{qe={...qe,...e}},Ye=()=>qe,Xe,Ze=e=>{Xe=e},Qe=()=>Xe,$e={type:`3rdParty`,init(e){Je(e.options.react),Ze(e)}},et=(0,Q.createContext)(),tt=class{constructor(){this.usedNamespaces={}}addUsedNamespaces(e){e.forEach(e=>{this.usedNamespaces[e]||(this.usedNamespaces[e]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}},nt=r(),rt={t:(e,t)=>{if($(t))return t;if(Ue(t)&&$(t.defaultValue))return t.defaultValue;if(typeof e==`function`)return``;if(Array.isArray(e)){let t=e[e.length-1];return typeof t==`function`?``:t}return e},ready:!1},it=()=>()=>{},at=(e,t={})=>{let{i18n:n}=t,{i18n:r,defaultNS:i}=(0,Q.useContext)(et)||{},a=n||r||Qe();a&&!a.reportNamespaces&&(a.reportNamespaces=new tt),a||Re(a,`NO_I18NEXT_INSTANCE`,`useTranslation: You will need to pass in an i18next instance by using initReactI18next`);let o=(0,Q.useMemo)(()=>({...Ye(),...a?.options?.react,...t}),[a,t]),{useSuspense:s,keyPrefix:c}=o,l=e||i||a?.options?.defaultNS,u=$(l)?[l]:l||[`translation`],d=(0,Q.useMemo)(()=>u,u);a?.reportNamespaces?.addUsedNamespaces?.(d);let f=(0,Q.useRef)(0),p=(0,Q.useCallback)(e=>{if(!a)return it;let{bindI18n:t,bindI18nStore:n}=o,r=()=>{f.current+=1,e()};return t&&a.on(t,r),n&&a.store.on(n,r),()=>{t&&t.split(` `).forEach(e=>a.off(e,r)),n&&n.split(` `).forEach(e=>a.store.off(e,r))}},[a,o]),m=(0,Q.useRef)(),h=(0,Q.useCallback)(()=>{if(!a)return rt;let e=!!(a.isInitialized||a.initializedStoreOnce)&&d.every(e=>He(e,a,o)),n=t.lng||a.language,r=f.current,i=m.current;if(i&&i.ready===e&&i.lng===n&&i.keyPrefix===c&&i.revision===r)return i;let s={t:a.getFixedT(n,o.nsMode===`fallback`?d:d[0],c),ready:e,lng:n,keyPrefix:c,revision:r};return m.current=s,s},[a,d,c,o,t.lng]),[g,_]=(0,Q.useState)(0),{t:v,ready:y}=(0,nt.useSyncExternalStore)(p,h,h);(0,Q.useEffect)(()=>{if(a&&!y&&!s){let e=()=>_(e=>e+1);t.lng?Ve(a,t.lng,d,e):Be(a,d,e)}},[a,t.lng,d,y,s,g]);let b=a||{},x=(0,Q.useRef)(null),S=(0,Q.useRef)(),C=e=>{let t=Object.getOwnPropertyDescriptors(e);t.__original&&delete t.__original;let n=Object.create(Object.getPrototypeOf(e),t);if(!Object.prototype.hasOwnProperty.call(n,`__original`))try{Object.defineProperty(n,`__original`,{value:e,writable:!1,enumerable:!1,configurable:!1})}catch{}return n},w=(0,Q.useMemo)(()=>{let e=b,t=e?.language,n=e;e&&(x.current&&x.current.__original===e&&S.current===t?n=x.current:(n=C(e),x.current=n,S.current=t));let r=!y&&!s?(...e)=>(Re(a,`USE_T_BEFORE_READY`,`useTranslation: t was called before ready. When using useSuspense: false, make sure to check the ready flag before using t.`),v(...e)):v,i=[r,n,y];return i.t=r,i.i18n=n,i.ready=y,i},[v,b,y,b.resolvedLanguage,b.language,b.languages]);if(a&&s&&!y)throw new Promise(e=>{let n=()=>e();t.lng?Ve(a,t.lng,d,n):Be(a,d,n)});return w};export{Ne as a,Pe as i,$e as n,Fe as r,at as t};
|
package/dist/index.html
CHANGED
|
@@ -8,17 +8,35 @@
|
|
|
8
8
|
<link rel="icon" type="image/png" sizes="256x256" href="/favicon.png" />
|
|
9
9
|
<link rel="shortcut icon" href="/favicon.png" />
|
|
10
10
|
<link rel="apple-touch-icon" href="/favicon.png" />
|
|
11
|
-
<script type="module" crossorigin src="/assets/index-
|
|
11
|
+
<script type="module" crossorigin src="/assets/index-DjMakAzD.js"></script>
|
|
12
12
|
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-COnpUsM8.js">
|
|
13
13
|
<link rel="modulepreload" crossorigin href="/assets/charts-vendor-CiBqdKXh.js">
|
|
14
14
|
<link rel="modulepreload" crossorigin href="/assets/react-vendor-0R1rd57Z.js">
|
|
15
|
-
<link rel="modulepreload" crossorigin href="/assets/motion-vendor-
|
|
16
|
-
<link rel="modulepreload" crossorigin href="/assets/ui-vendor-
|
|
17
|
-
<link rel="modulepreload" crossorigin href="/assets/
|
|
18
|
-
<link rel="modulepreload" crossorigin href="/assets/
|
|
19
|
-
<link rel="modulepreload" crossorigin href="/assets/
|
|
20
|
-
<link rel="modulepreload" crossorigin href="/assets/
|
|
21
|
-
<link rel="
|
|
15
|
+
<link rel="modulepreload" crossorigin href="/assets/motion-vendor-vKc6gXHZ.js">
|
|
16
|
+
<link rel="modulepreload" crossorigin href="/assets/ui-vendor-BolBXLiD.js">
|
|
17
|
+
<link rel="modulepreload" crossorigin href="/assets/useTranslation-BSl7t2D6.js">
|
|
18
|
+
<link rel="modulepreload" crossorigin href="/assets/button-D--hHeVj.js">
|
|
19
|
+
<link rel="modulepreload" crossorigin href="/assets/i18n-C88wS2Uy.js">
|
|
20
|
+
<link rel="modulepreload" crossorigin href="/assets/icons-vendor-CIvT_-Pb.js">
|
|
21
|
+
<link rel="modulepreload" crossorigin href="/assets/model-utils-BIvGAFGz.js">
|
|
22
|
+
<link rel="modulepreload" crossorigin href="/assets/provider-limits-5e1fUwPl.js">
|
|
23
|
+
<link rel="modulepreload" crossorigin href="/assets/app-settings-C3i52ycx.js">
|
|
24
|
+
<link rel="modulepreload" crossorigin href="/assets/formatters-yKppUXb3.js">
|
|
25
|
+
<link rel="modulepreload" crossorigin href="/assets/InfoButton-CTgLGzb9.js">
|
|
26
|
+
<link rel="modulepreload" crossorigin href="/assets/card-h-Z9EWBl.js">
|
|
27
|
+
<link rel="modulepreload" crossorigin href="/assets/MetricCard-Drluz0b9.js">
|
|
28
|
+
<link rel="modulepreload" crossorigin href="/assets/dialog-C0AeNKs8.js">
|
|
29
|
+
<link rel="modulepreload" crossorigin href="/assets/ChartCard-CBUnItl-.js">
|
|
30
|
+
<link rel="modulepreload" crossorigin href="/assets/ChartLegend-B64cJdDI.js">
|
|
31
|
+
<link rel="modulepreload" crossorigin href="/assets/CustomTooltip-CBVU1pyK.js">
|
|
32
|
+
<link rel="modulepreload" crossorigin href="/assets/chart-theme-D5iCFDJg.js">
|
|
33
|
+
<link rel="modulepreload" crossorigin href="/assets/InfoHeading-oi90uCR7.js">
|
|
34
|
+
<link rel="modulepreload" crossorigin href="/assets/formatted-value-rO0EpKbc.js">
|
|
35
|
+
<link rel="modulepreload" crossorigin href="/assets/section-header-DbV45zH5.js">
|
|
36
|
+
<link rel="modulepreload" crossorigin href="/assets/calculations-GOdNqKo6.js">
|
|
37
|
+
<link rel="modulepreload" crossorigin href="/assets/constants-jyhBMReu.js">
|
|
38
|
+
<link rel="modulepreload" crossorigin href="/assets/help-content-Bt5KCpWS.js">
|
|
39
|
+
<link rel="stylesheet" crossorigin href="/assets/index-DuoM1Ukq.css">
|
|
22
40
|
</head>
|
|
23
41
|
<body>
|
|
24
42
|
<div id="root"></div>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@roastcodes/ttdash",
|
|
3
|
-
"version": "6.2.
|
|
3
|
+
"version": "6.2.1",
|
|
4
4
|
"description": "Local-first dashboard and CLI for toktrack usage data",
|
|
5
5
|
"main": "server.js",
|
|
6
6
|
"repository": {
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
"format": "prettier . --write",
|
|
22
22
|
"format:check": "prettier . --check",
|
|
23
23
|
"lint": "eslint .",
|
|
24
|
+
"lint:docstrings": "eslint src server.js usage-normalizer.js shared --ext .ts,.tsx,.js,.d.ts",
|
|
24
25
|
"lint:fix": "eslint . --fix",
|
|
25
26
|
"preview": "vite preview",
|
|
26
27
|
"start": "node server.js",
|
|
@@ -34,10 +35,10 @@
|
|
|
34
35
|
"test:all": "npm run test:unit && npm run test:e2e",
|
|
35
36
|
"docs:screenshots": "node scripts/capture-readme-screenshots.js",
|
|
36
37
|
"pack:dry-run": "npm pack --dry-run",
|
|
37
|
-
"verify": "npm run format:check && npm run lint && tsc --noEmit && npm run test:unit && npm run build:app && npm run verify:package",
|
|
38
|
+
"verify": "npm run format:check && npm run lint && npm run lint:docstrings && tsc --noEmit && npm run test:unit && npm run build:app && npm run verify:package",
|
|
38
39
|
"verify:package": "node scripts/verify-package.js",
|
|
39
40
|
"verify:registry-install": "node scripts/verify-registry-install.js",
|
|
40
|
-
"verify:release": "npm run format:check && npm run lint && tsc --noEmit && npm run test:unit:coverage && npm run build:app && npm run verify:package",
|
|
41
|
+
"verify:release": "npm run format:check && npm run lint && npm run lint:docstrings && tsc --noEmit && npm run test:unit:coverage && npm run build:app && npm run verify:package",
|
|
41
42
|
"prepare": "npm run build:app"
|
|
42
43
|
},
|
|
43
44
|
"files": [
|
|
@@ -87,26 +88,35 @@
|
|
|
87
88
|
"cmdk": "^1.1.1",
|
|
88
89
|
"eslint": "^9.39.4",
|
|
89
90
|
"eslint-config-prettier": "^10.1.8",
|
|
91
|
+
"eslint-import-resolver-typescript": "^4.4.4",
|
|
92
|
+
"eslint-plugin-import-x": "^4.16.2",
|
|
93
|
+
"eslint-plugin-jest-dom": "^5.5.0",
|
|
94
|
+
"eslint-plugin-jsdoc": "^62.9.0",
|
|
95
|
+
"eslint-plugin-jsx-a11y": "^6.10.2",
|
|
96
|
+
"eslint-plugin-playwright": "^2.10.1",
|
|
97
|
+
"eslint-plugin-react": "^7.37.5",
|
|
90
98
|
"eslint-plugin-react-hooks": "^7.0.1",
|
|
99
|
+
"eslint-plugin-testing-library": "^7.16.2",
|
|
91
100
|
"framer-motion": "^12.6.5",
|
|
92
101
|
"globals": "^17.5.0",
|
|
93
102
|
"jsdom": "^29.0.2",
|
|
94
103
|
"lucide-react": "^1.7.0",
|
|
95
104
|
"prettier": "^3.8.2",
|
|
105
|
+
"prettier-plugin-tailwindcss": "^0.7.2",
|
|
96
106
|
"react": "^19.2.4",
|
|
97
107
|
"react-dom": "^19.2.4",
|
|
98
108
|
"recharts": "^3.8.1",
|
|
99
109
|
"tailwind-merge": "^3.0.2",
|
|
100
110
|
"tailwindcss": "^4.1.3",
|
|
101
111
|
"typescript": "^6.0.2",
|
|
102
|
-
"typescript-eslint": "^8.58.
|
|
112
|
+
"typescript-eslint": "^8.58.2",
|
|
103
113
|
"vite": "^8.0.8",
|
|
104
114
|
"vitest": "^4.1.3"
|
|
105
115
|
},
|
|
106
116
|
"dependencies": {
|
|
107
117
|
"cross-spawn": "^7.0.6",
|
|
108
118
|
"i18next": "^26.0.3",
|
|
109
|
-
"react-i18next": "^17.0.
|
|
119
|
+
"react-i18next": "^17.0.3",
|
|
110
120
|
"react-is": "^19.2.4"
|
|
111
121
|
}
|
|
112
122
|
}
|
package/server/report/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const
|
|
1
|
+
const fsPromises = require('fs/promises');
|
|
2
2
|
const os = require('os');
|
|
3
3
|
const path = require('path');
|
|
4
4
|
const { spawn } = require('child_process');
|
|
@@ -14,8 +14,8 @@ function ensureTypstInstalled() {
|
|
|
14
14
|
});
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
function writeTextFile(filePath, content) {
|
|
18
|
-
|
|
17
|
+
async function writeTextFile(filePath, content) {
|
|
18
|
+
await fsPromises.writeFile(filePath, content, 'utf8');
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
function compileTypst(workingDir, typPath, pdfPath) {
|
|
@@ -387,29 +387,31 @@ async function generatePdfReport(allDailyData, options = {}) {
|
|
|
387
387
|
throw new Error('No data available for the report.');
|
|
388
388
|
}
|
|
389
389
|
|
|
390
|
-
const tempDir =
|
|
390
|
+
const tempDir = await fsPromises.mkdtemp(path.join(os.tmpdir(), 'ttdash-report-'));
|
|
391
391
|
const typPath = path.join(tempDir, 'report.typ');
|
|
392
392
|
const pdfPath = path.join(tempDir, 'report.pdf');
|
|
393
393
|
const jsonPath = path.join(tempDir, 'report.json');
|
|
394
394
|
|
|
395
395
|
try {
|
|
396
|
-
writeTextFile(typPath, buildTemplate());
|
|
397
|
-
writeTextFile(jsonPath, JSON.stringify(reportData, null, 2));
|
|
396
|
+
await writeTextFile(typPath, buildTemplate());
|
|
397
|
+
await writeTextFile(jsonPath, JSON.stringify(reportData, null, 2));
|
|
398
398
|
|
|
399
399
|
const charts = createChartAssets(reportData);
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
400
|
+
await Promise.all(
|
|
401
|
+
Object.entries(charts).map(([filename, content]) =>
|
|
402
|
+
writeTextFile(path.join(tempDir, filename), content),
|
|
403
|
+
),
|
|
404
|
+
);
|
|
403
405
|
|
|
404
406
|
await compileTypst(tempDir, typPath, pdfPath);
|
|
405
407
|
|
|
406
408
|
return {
|
|
407
|
-
buffer:
|
|
409
|
+
buffer: await fsPromises.readFile(pdfPath),
|
|
408
410
|
filename: `ttdash-report-${new Date().toISOString().slice(0, 10)}.pdf`,
|
|
409
411
|
reportData,
|
|
410
412
|
};
|
|
411
413
|
} finally {
|
|
412
|
-
|
|
414
|
+
await fsPromises.rm(tempDir, { recursive: true, force: true });
|
|
413
415
|
}
|
|
414
416
|
}
|
|
415
417
|
|