1import{j as a}from"./jsx-runtime.u17CrQMm.js";import{r as o}from"./index.uFOh2Gdi.js";import{d as M,g as D,c as $}from"./currencies.DWJvZczP.js";import{I}from"./InvoiceSelect.hvrwXG0W.js";import{i as A}from"./locale.BskNvxf4.js";function f(i){return Math.round(i*100)/100}function j(i,c){const e=f(i),r=f(c),n=f(e-r),l=e>0?f(n/e*100):0;return{originalPrice:e,finalPrice:r,discountPct:l,savedAmount:n,savedPct:l}}function y(i){return Number.isFinite(i)&&i>0}function O(i){return Number.isFinite(i)?i<0?{status:"error",code:"discountNegative"}:i>=100?{status:"error",code:"discountTooHigh"}:null:{status:"idle"}}function W(i,c){if(!y(i))return{status:"idle"};const e=O(c);if(e)return e;const r=i*(1-c/100);return{status:"success",result:j(i,r)}}function K(i,c){return!y(i)||!y(c)?{status:"idle"}:c>i?{status:"error",code:"finalHigherThanOriginal"}:{status:"success",result:j(i,c)}}function B(i,c){if(!y(i))return{status:"idle"};const e=O(c);if(e)return e;const r=i/(1-c/100);return{status:"success",result:j(r,i)}}function v(i){const c=i.trim().replace(",",".");if(!c)return null;const e=Number(c);return Number.isFinite(e)?e:null}const H={"discCalc.tabsLabel":"Discount calculator modes","discCalc.mode.finalPrice":"Sale price","discCalc.mode.discountPct":"What discount?","discCalc.mode.originalPrice":"Original price","discCalc.originalPrice":"Original price","discCalc.finalPrice":"Final price","discCalc.discountPct":"Discount (%)","discCalc.currency":"Currency","discCalc.currencyHint":"Display only","discCalc.currencySearch":"Search currencyâ¦","discCalc.results":"Result","discCalc.emptyHint":"Enter values on the left to see the calculation.","discCalc.rowOriginal":"Original price","discCalc.rowFinal":"Final price","discCalc.rowDiscount":"Discount","discCalc.mainResult.finalPrice":"Final price","discCalc.mainResult.discountPct":"Discount","discCalc.mainResult.originalPrice":"Original price","discCalc.savedLine":"You save {amount} ({pct}%)","discCalc.discountIs":"Discount is {pct}%","discCalc.barFinal":"Final price","discCalc.barSaved":"You save","discCalc.error.discountTooHigh":"Discount cannot be 100% or more (max 99.99%)","discCalc.error.discountNegative":"Discount cannot be negative","discCalc.error.finalHigherThanOriginal":"Final price cannot be higher than the original price","discCalc.tooltip.originalPrice":"Full price before any discount or promo code is applied.","discCalc.tooltip.finalPrice":"What you pay at checkout after the discount.","discCalc.tooltip.discountPct":"Percent taken off the original price (0 to 99.99).","discCalc.tooltip.currency":"Display currency for amounts. Calculations are not converted between rates."},Y={"discCalc.tabsLabel":"Tryby kalkulatora rabatu","discCalc.mode.finalPrice":"Cena po rabacie","discCalc.mode.discountPct":"Jaki rabat?","discCalc.mode.originalPrice":"Cena oryginalna","discCalc.originalPrice":"Cena oryginalna","discCalc.finalPrice":"Cena koÅcowa","discCalc.discountPct":"Rabat (%)","discCalc.currency":"Waluta","discCalc.currencyHint":"Tylko wyÅwietlanie","discCalc.currencySearch":"Szukaj walutyâ¦","discCalc.results":"Wynik","discCalc.emptyHint":"Wpisz wartoÅci po lewej, aby zobaczyÄ obliczenie.","discCalc.rowOriginal":"Cena oryginalna","discCalc.rowFinal":"Cena koÅcowa","discCalc.rowDiscount":"Rabat","discCalc.mainResult.finalPrice":"Cena koÅcowa","discCalc.mainResult.discountPct":"Rabat","discCalc.mainResult.originalPrice":"Cena oryginalna","discCalc.savedLine":"OszczÄdzasz {amount} ({pct}%)","discCalc.discountIs":"Rabat wynosi {pct}%","discCalc.barFinal":"Cena koÅcowa","discCalc.barSaved":"OszczÄdnoÅÄ","discCalc.error.discountTooHigh":"Rabat nie może wynosiÄ 100% lub wiÄcej (max 99,99%)","discCalc.error.discountNegative":"Rabat nie może byÄ ujemny","discCalc.error.finalHigherThanOriginal":"Cena koÅcowa nie może byÄ wyższa od ceny oryginalnej","discCalc.tooltip.originalPrice":"PeÅna cena przed rabatem lub kodem promocyjnym.","discCalc.tooltip.finalPrice":"Kwota do zapÅaty po rabacie.","discCalc.tooltip.discountPct":"Procent odjÄty od ceny oryginalnej (0 do 99,99).","discCalc.tooltip.currency":"Waluta wyÅwietlania kwot. Kalkulator nie przelicza kursów."},q={"discCalc.tabsLabel":"Rabattrechner-Modi","discCalc.mode.finalPrice":"Preis nach Rabatt","discCalc.mode.discountPct":"Welcher Rabatt?","discCalc.mode.originalPrice":"Originalpreis","discCalc.originalPrice":"Originalpreis","discCalc.finalPrice":"Endpreis","discCalc.discountPct":"Rabatt (%)","discCalc.currency":"Währung","discCalc.currencyHint":"Nur Anzeige","discCalc.currencySearch":"Währung suchenâ¦","discCalc.results":"Ergebnis","discCalc.emptyHint":"Werte links eingeben, um die Berechnung zu sehen.","discCalc.rowOriginal":"Originalpreis","discCalc.rowFinal":"Endpreis","discCalc.rowDiscount":"Rabatt","discCalc.mainResult.finalPrice":"Endpreis","discCalc.mainResult.discountPct":"Rabatt","discCalc.mainResult.originalPrice":"Originalpreis","discCalc.savedLine":"Sie sparen {amount} ({pct}%)","discCalc.discountIs":"Rabatt beträgt {pct}%","discCalc.barFinal":"Endpreis","discCalc.barSaved":"Ersparnis","discCalc.error.discountTooHigh":"Rabatt darf nicht 100 % oder mehr betragen (max. 99,99 %)","discCalc.error.discountNegative":"Rabatt darf nicht negativ sein","discCalc.error.finalHigherThanOriginal":"Endpreis darf nicht höher als der Originalpreis sein","discCalc.tooltip.originalPrice":"Voller Preis vor Rabatt oder Gutsc
1heincode.","discCalc.tooltip.finalPrice":"Betrag an der Kasse nach dem Rabatt.","discCalc.tooltip.discountPct":"Prozent vom Originalpreis (0 bis 99,99).","discCalc.tooltip.currency":"Anzeigewährung. Keine Wechselkursumrechnung."},V={"discCalc.tabsLabel":"Modes du calculateur de remise","discCalc.mode.finalPrice":"Prix soldé","discCalc.mode.discountPct":"Quelle remise ?","discCalc.mode.originalPrice":"Prix d'origine","discCalc.originalPrice":"Prix d'origine","discCalc.finalPrice":"Prix final","discCalc.discountPct":"Remise (%)","discCalc.currency":"Devise","discCalc.currencyHint":"Affichage uniquement","discCalc.currencySearch":"Rechercher une deviseâ¦","discCalc.results":"Résultat","discCalc.emptyHint":"Saisissez les valeurs à gauche pour voir le calcul.","discCalc.rowOriginal":"Prix d'origine","discCalc.rowFinal":"Prix final","discCalc.rowDiscount":"Remise","discCalc.mainResult.finalPrice":"Prix final","discCalc.mainResult.discountPct":"Remise","discCalc.mainResult.originalPrice":"Prix d'origine","discCalc.savedLine":"Vous économisez {amount} ({pct}%)","discCalc.discountIs":"La remise est de {pct}%","discCalc.barFinal":"Prix final","discCalc.barSaved":"Ãconomie","discCalc.error.discountTooHigh":"La remise ne peut pas être de 100 % ou plus (max 99,99 %)","discCalc.error.discountNegative":"La remise ne peut pas être négative","discCalc.error.finalHigherThanOriginal":"Le prix final ne peut pas dépasser le prix d'origine","discCalc.tooltip.originalPrice":"Prix complet avant remise ou code promo.","discCalc.tooltip.finalPrice":"Montant payé en caisse après remise.","discCalc.tooltip.discountPct":"Pourcent retiré du prix d'origine (0 à 99,99).","discCalc.tooltip.currency":"Devise d'affichage. Pas de conversion de taux."},Q={"discCalc.tabsLabel":"Modos de la calculadora de descuento","discCalc.mode.finalPrice":"Precio con descuento","discCalc.mode.discountPct":"¿Qué descuento?","discCalc.mode.originalPrice":"Precio original","discCalc.originalPrice":"Precio original","discCalc.finalPrice":"Precio final","discCalc.discountPct":"Descuento (%)","discCalc.currency":"Moneda","discCalc.currencyHint":"Solo visualización","discCalc.currencySearch":"Buscar monedaâ¦","discCalc.results":"Resultado","discCalc.emptyHint":"Introduce valores a la izquierda para ver el cálculo.","discCalc.rowOriginal":"Precio original","discCalc.rowFinal":"Precio final","discCalc.rowDiscount":"Descuento","discCalc.mainResult.finalPrice":"Precio final","discCalc.mainResult.discountPct":"Descuento","discCalc.mainResult.originalPrice":"Precio original","discCalc.savedLine":"Ahorras {amount} ({pct}%)","discCalc.discountIs":"El descuento es del {pct}%","discCalc.barFinal":"Precio final","discCalc.barSaved":"Ahorro","discCalc.error.discountTooHigh":"El descuento no puede ser del 100 % o más (máx. 99,99 %)","discCalc.error.discountNegative":"El descuento no puede ser negativo","discCalc.error.finalHigherThanOriginal":"El precio final no puede ser mayor que el precio original","discCalc.tooltip.originalPrice":"Precio completo antes del descuento o código promo.","discCalc.tooltip.finalPrice":"Importe pagado en caja tras el descuento.","discCalc.tooltip.discountPct":"Porcentaje restado del precio original (0 a 99,99).","discCalc.tooltip.currency":"Moneda de visualización. Sin conversión de tipos."},G={en:H,pl:Y,de:q,fr:V,es:Q};function J(i){return A(i)?G[i]:H}function U(i){const c=o.useMemo(()=>J(i),[i]),e=o.useCallback(r=>c[r]??r,[c]);return{uiLocale:i,tr:e}}const _=[{id:"finalPrice",labelKey:"discCalc.mode.finalPrice"},{id:"discountPct",labelKey:"discCalc.mode.discountPct"},{id:"originalPrice",labelKey:"discCalc.mode.originalPrice"}],X={discountTooHigh:"discCalc.error.discountTooHigh",discountNegative:"discCalc.error.discountNegative",finalHigherThanOriginal:"discCalc.error.finalHigherThanOriginal"};function p(i,c,e){return`${new Intl.NumberFormat(c==="pl"?"pl-PL":c,{minimumFractionDigits:2,maximumFractionDigits:2}).format(i)} ${e}`.trim()}function x(i,c){return new Intl.NumberFormat(c==="pl"?"pl-PL":c,{minimumFractionDigits:0,maximumFractionDigits:2}).format(i)}function Z(i,c,e,r){const n=v(c),l=v(e),t=v(r);return i==="finalPrice"?n===null||t===null?{status:"idle"}:W(n,t):i==="discountPct"?n===null||l===null?{status:"idle"}:K(n,l):l===null||t===null?{status:"idle"}:B(l,t)}function ii(i,c,e,r){return i==="finalPrice"?p(c.finalPrice,e,r):i==="discountPct"?`${x(c.discountPct,e)}%`:p(c.originalPrice,e,r)}function ci(i){return i==="finalPrice"?"discCalc.mainResult.finalPrice":i==="discountPct"?"discCalc.mainResult.discountPct":"discCalc.mainResult.originalPrice"}function ai(i,c){return D(i,c)??D("PLN",c)}function N({htmlFor:i,label:c,tooltip:e}){return a.jsxs("label",{className:"field-label",htmlFor:i,children:[a.jsx("span",{children:c}),a.jsxs("span",{className:"tooltip-wrapper",children:[a.jsx("span",{className:"tooltip-icon","aria-hidden":"true",children:"i"}),a.jsx("span",{className:"tooltip-text",style:{display:"none"},children:e})]})]})}function h({id:i,label:c,tooltip:e,value:r,onChange:n,symbol:l,placeholder:t="0.00"}){return a.jsxs("div",{className:"field-group disc-field",children:[a.jsx(N,{htmlFor:i,label:c,tooltip:e}),a.jsxs("div",{className:"disc-affix-row",children:[a.jsx("input",{id:i,className:"field-input",type:"number",inputMode:"decimal",step:"0.01",min:"0",value:r,onChange:u=>n(u.target.value),placeholder:t}),a.jsx("span",{className:"disc-affix-tag",children:l})]})]})}function S({id:i,label:c,tooltip:e,value:r,onChange:n}){return a.jsxs("div",{className:"field-group disc-field",children:[a.jsx(N,{htmlFor:i,label:c,tooltip:e}),a.jsxs("div",{className:"disc-affix-row",children:[a.jsx("input",{id:i,className:"field-input",type:"number",inputMode:"decimal",step:"0.01",min:"0",max:"99.99",value:r,onChange:l=>n(l.target.value),placeholder:"0"}),a.jsx("span",{className:"disc-affix-tag",children:"%"})]})]})}function ei({id:i,label:c,tooltip:e,selectedCode:r,searchPlaceholder:n,onChange:l}){const t=o.useMemo(()=>
1$.map(({code:u,symbol:m})=>({value:u,label:`${u} (${m})`})),[]);return a.jsxs("div",{className:"field-group disc-field disc-field-currency",children:[a.jsx(N,{htmlFor:i,label:c,tooltip:e}),a.jsx(I,{id:i,value:r,options:t,onChange:l,searchable:!0,searchPlaceholder:n,className:"disc-currency-select"})]})}function b({label:i,value:c,accent:e}){return a.jsxs("div",{className:"disc-summary-cell",children:[a.jsx("span",{className:"disc-summary-label",children:i}),a.jsx("span",{className:`disc-summary-value${e?" is-accent":""}`,children:c})]})}function oi({locale:i="en"}){const{tr:c}=U(i),[e,r]=o.useState("finalPrice"),[n,l]=o.useState(""),[t,u]=o.useState(""),[m,w]=o.useState(""),[R,L]=o.useState(()=>M(i)),F=o.useMemo(()=>ai(R,i),[R,i]),g=o.useMemo(()=>Z(e,n,t,m),[e,n,t,m]),s=g.status==="success"?g.result:null,d=F.symbol,P="-",z=s&&s.originalPrice>0?s.finalPrice/s.originalPrice*100:0,k=s&&s.originalPrice>0?s.savedAmount/s.originalPrice*100:0,T=s?c("discCalc.savedLine").replace("{amount}",p(s.savedAmount,i,d)).replace("{pct}",x(s.savedPct,i)):"";return a.jsx("div",{className:"disc-root",children:a.jsxs("div",{className:"disc-layout",children:[a.jsxs("div",{className:"disc-left",children:[a.jsx("div",{className:"disc-tabs",role:"tablist","aria-label":c("discCalc.tabsLabel"),children:_.map(({id:C,labelKey:E})=>a.jsx("button",{type:"button",role:"tab",id:`disc-tab-${C}`,"aria-selected":e===C,"aria-controls":`disc-panel-${C}`,className:`disc-tab${e===C?" is-active":""}`,onClick:()=>r(C),children:c(E)},C))}),a.jsxs("div",{className:"disc-input-grid",role:"tabpanel","aria-labelledby":`disc-tab-${e}`,children:[e==="finalPrice"&&a.jsxs(a.Fragment,{children:[a.jsx(h,{id:"disc-original",label:c("discCalc.originalPrice"),tooltip:c("discCalc.tooltip.originalPrice"),value:n,onChange:l,symbol:d}),a.jsx(S,{id:"disc-discount",label:c("discCalc.discountPct"),tooltip:c("discCalc.tooltip.discountPct"),value:m,onChange:w})]}),e==="discountPct"&&a.jsxs(a.Fragment,{children:[a.jsx(h,{id:"disc-original",label:c("discCalc.originalPrice"),tooltip:c("discCalc.tooltip.originalPrice"),value:n,onChange:l,symbol:d}),a.jsx(h,{id:"disc-final",label:c("discCalc.finalPrice"),tooltip:c("discCalc.tooltip.finalPrice"),value:t,onChange:u,symbol:d})]}),e==="originalPrice"&&a.jsxs(a.Fragment,{children:[a.jsx(h,{id:"disc-final-mode3",label:c("discCalc.finalPrice"),tooltip:c("discCalc.tooltip.finalPrice"),value:t,onChange:u,symbol:d}),a.jsx(S,{id:"disc-discount-mode3",label:c("discCalc.discountPct"),tooltip:c("discCalc.tooltip.discountPct"),value:m,onChange:w})]}),a.jsx(ei,{id:"disc-currency",label:c("discCalc.currency"),tooltip:c("discCalc.tooltip.currency"),selectedCode:F.code,searchPlaceholder:c("discCalc.currencySearch"),onChange:L})]}),g.status==="error"&&a.jsx("p",{className:"calc-warn disc-warn",role:"alert",children:c(X[g.code])}),a.jsxs("div",{className:"disc-summary-grid","aria-live":"polite",children:[a.jsx(b,{label:c("discCalc.rowOriginal"),value:s?p(s.originalPrice,i,d):P}),a.jsx(b,{label:c("discCalc.rowFinal"),value:s?p(s.finalPrice,i,d):P}),a.jsx(b,{label:c("discCalc.rowDiscount"),value:s?`${x(s.discountPct,i)}%`:P}),a.jsx(b,{label:c("discCalc.barSaved"),value:s?p(s.savedAmount,i,d):P,accent:!!s})]}),a.jsxs("div",{className:"disc-bar-block","aria-hidden":!s,children:[a.jsxs("div",{className:"disc-bar-track",children:[a.jsx("div",{className:"disc-bar-final",style:{width:`${z}%`}}),a.jsx("div",{className:"disc-bar-saved",style:{width:`${k}%`}})]}),a.jsxs("div",{className:"disc-bar-legend",children:[a.jsxs("span",{className:"disc-bar-legend-item",children:[a.jsx("span",{className:"disc-bar-dot disc-bar-dot--final"}),c("discCalc.barFinal")]}),a.jsxs("span",{className:"disc-bar-legend-item",children:[a.jsx("span",{className:"disc-bar-dot disc-bar-dot--saved"}),c("discCalc.barSaved")]})]})]})]}),a.jsx("aside",{className:"disc-hero-panel","aria-live":"polite",children:a.jsxs("div",{className:`disc-hero-card${s?"":" is-empty"}`,children:[a.jsx("p",{className:"disc-hero-label",children:c(ci(e))}),s?a.jsxs(a.Fragment,{children:[a.jsx("p",{className:"disc-hero-value",children:ii(e,s,i,d)}),a.jsx("p",{className:"disc-saved-badge",children:T})]}):a.jsx("p",{className:"disc-hero-placeholder",children:c("discCalc.emptyHint")})]})})]})})}export{oi as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.