1import{j as e}from"./vendor-query-DrcMJqi8.js";import{T as de,C as me,A as xe}from"./AppHeader-B6PbgRTF.js";import{F as ue}from"./Footer-BVJQGHpp.js";import{r as l,L as he}from"./vendor-react-DPWYcXQL.js";import{C as R}from"./card-BtUbCmgj.js";import{I as B}from"./input-CHgf43B8.js";import{L as n}from"./label-DMpjeO7P.js";import{S}from"./slider-CmMH_ict.js";import{S as pe}from"./switch-PJP2Mmyb.js";import{T as fe,a as ge,b as F,c as D}from"./tabs-CsWLrKyl.js";import{S as je,a as ye,b as Ne,c as be,d as ve}from"./select-1GmPwoBr.js";import{T as Pe,f as Ce,g as we,h as Se,t as G,H as Te}from"./index-oszI0v4d.js";import{B as I}from"./button-CKn58jl4.js";import{P as ke}from"./plus-Pw-sd_Cz.js";import{C as Me}from"./copy-Cxf_681q.js";import{I as Re}from"./info-BPdQVez0.js";import{R as $e,N as Oe}from"./NextResources-i9BTbWIc.js";import{B as Ae}from"./Breadcrumbs-C7giYw-8.js";import{A as Fe}from"./arrow-left-BfqIzKfd.js";import"./vendor-ui-CjZht1G8.js";import"./vendor-supabase-SRSXtynz.js";import"./message-circle-warning-imtPr3Jy.js";import"./arrow-right-ByU0e3Il.js";import"./trending-up-D3xsZeth.js";import"./chevron-right-D-oDA18b.js";function d({text:i}){return e.jsxs(Ce,{children:[e.jsx(we,{asChild:!0,children:e.jsx("button",{type:"button",className:"inline-flex items-center justify-center ml-1 text-muted-foreground hover:text-foreground transition-colors",children:e.jsx(Re,{className:"h-3.5 w-3.5"})})}),e.jsx(Se,{className:"max-w-xs text-xs leading-relaxed",children:i})]})}function b({value:i,onChange:T,id:x,step:k}){return e.jsxs("div",{className:"relative",children:[e.jsx("span",{className:"absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground text-sm",children:"$"}),e.jsx(B,{id:x,type:"number",min:0,step:k||"0.01",value:i,onChange:h=>T(Number(h.target.value)||0),className:"pl-7"})]})}function L({value:i,onChange:T,suffix:x,min:k,max:h,step:$}){return e.jsxs("div",{className:"relative",children:[e.jsx(B,{type:"number",min:k??0,max:h,step:$||"any",value:i,onChange:M=>T(Number(M.target.value)||0),className:x?"pr-14":""}),x&&e.jsx("span",{className:"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground text-xs",children:x})]})}const De=[{id:"clay",name:"Clay",costPerPiece:1.5},{id:"glaze",name:"Glaze",costPerPiece:.75},{id:"firing",name:"Kiln Firing",costPerPiece:2},{id:"packaging",name:"Packaging",costPerPiece:1}],O={functional:{hoursPerPiece:1.5,label:"Functional Ware",description:"Mugs, bowls, plates, cups â pieces made in batches"},decorative:{hoursPerPiece:4,label:"Decorative / Sculptural",description:"Vases, sculptures, wall art â one-of-a-kind pieces"},custom:{hoursPerPiece:6,label:"Custom Commissions",description:"Made-to-order work with client collaboration"}};function Ie(){const[i,T]=l.useState("functional"),[x,k]=l.useState(25),[h,$]=l.useState(1.5),[M,A]=l.useState(De),[y,U]=l.useState(!0),[c,v]=l.useState({monthlyRent:400,monthlyUtilities:100,monthlyInsurance:50,monthlyToolReplacement:30,monthlyOther:0,piecesPerMonth:30}),[N,V]=l.useState(30),[p,Y]=l.useState({retail:0,wholesale:-40,gallery:50,online:-10}),[f,q]=l.useState(6),[P,K]=l.useState(10),[g,_]=l.useState(1),[j,J]=l.useState(0),[C,Q]=l.useState(50),X=s=>{const a=s;T(a),$(O[a].hoursPerPiece)},Z=()=>{A(s=>[...s,{id:crypto.randomUUID(),name:"",costPerPiece:0}])},ee=s=>{A(a=>a.filter(m=>m.id!==s))},z=(s,a)=>{A(m=>m.map(o=>o.id===s?{...o,...a}:o))},r=l.useMemo(()=>{const s=M.reduce((le,ce)=>le+ce.costPerPiece,0),a=x*h,m=y?c.monthlyRent+c.monthlyUtilities+c.monthlyInsurance+c.monthlyToolReplacement+c.monthlyOther:0,o=y&&c.piecesPerMonth>0?m/c.piecesPerMonth:0,w=s+a+o,ae=1/(1-N/100);let u=w*ae;i==="custom"&&(u*=g,u*=1+j/100);const re={retail:u*(1+p.retail/100),wholesale:u*(1+p.wholesale/100),gallery:u*(1+p.gallery/100),online:u*(1+p.online/100)},H=i==="functional"?u*f*(1-P/100):0,ie=f>0?H/f:0,ne=i==="custom"?u*(C/100):0,oe=u-w;return{materialCost:s,laborCost:a,overheadPerPiece:o,totalOverhead:m,baseCost:w,basePrice:u,channelPrices:re,batchTotal:H,batchPerPiece:ie,depositAmount:ne,profitPerPiece:oe}},[M,x,h,y,c,N,i,g,j,p,f,P,C]),t=s=>`$${s.toFixed(2)}`,[E,W]=l.useState(!1),se=()=>{const s=["CERAMIC WORK PRICING SUMMARY",`Generated ${new Date().toLocaleDateString()}`,"",`Work Type: ${O[i].label}`,"","ââ COST BREAKDOWN ââ",`Materials: ${t(r.materialCost)}`,`Labor (${h} hrs à ${t(x)}/hr): ${t(r.laborCost)}`];return y&&s.push(`Overhead allocation: ${t(r.overheadPerPiece)}`),s.push(`Total Cost: ${t(r.baseCost)}`),s.push(`Profit Margin: ${N}% (${t(r.profitPerPiece)})`),i==="custom"&&g>1&&s.push(`Complexity: ${g.toFixed(1)}Ã`),i==="custom"&&j>0&&s.push(`Rush Fee: ${j}%`),s.push(""),s.push(`ââ SUGGESTED PRICE: ${t(r.basePrice)} ââ`),s.push(""),s.push("ââ BY SALES CHANNEL ââ"),[["retail","Direct / Retail"],["wholesale","Wholesale"],["gallery","Gallery"],["online","Online"]].forEac
1h(([a,m])=>{const o=r.channelPrices[a],w=o-r.baseCost;s.push(`${m}: ${t(o)} (${w>=0?"+":""}${t(w)} profit)`)}),i==="functional"&&(s.push(""),s.push(`Set of ${f} (${P}% off): ${t(r.batchTotal)} (${t(r.batchPerPiece)} each)`)),i==="custom"&&(s.push(""),s.push(`Non-refundable deposit (${C}%): ${t(r.depositAmount)}`)),s.join(` 2`)},te=async()=>{try{await navigator.clipboard.writeText(se()),W(!0),G({title:"Copied to clipboard",description:"Pricing summary copied."}),setTimeout(()=>W(!1),2e3)}catch{G({title:"Copy failed",description:"Please try again.",variant:"destructive"})}};return e.jsx(Pe,{delayDuration:200,children:e.jsxs("section",{children:[e.jsx("h2",{className:"font-serif text-3xl italic text-foreground",children:"Price Your Ceramic Work"}),e.jsxs("div",{className:"mt-4 max-w-2xl space-y-4 text-muted-foreground leading-relaxed",children:[e.jsx("p",{children:"Pricing handmade ceramics is one of the trickiest parts of running a practice. Charge too little and you burn out; charge too much without understanding your costs and you lose sales. This calculator helps you build a price from the ground upâmaterials, labor, overhead, and profitâso every piece you make is worth your time."}),e.jsx("p",{children:"Choose your work type, plug in your real numbers, and explore how different sales channels, batch sizes, and commission terms affect your bottom line."})]}),e.jsx(R,{className:"mt-8 p-6 space-y-4",children:e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs(n,{className:"text-base font-medium flex items-center",children:["What kind of work are you pricing?",e.jsx(d,{text:"Different types of ceramic work have different cost structures. Functional ware benefits from batch efficie
2ncy, decorative work commands higher prices, and commissions include client-facing costs."})]}),e.jsxs(je,{value:i,onValueChange:X,children:[e.jsx(ye,{className:"w-full sm:w-72",children:e.jsx(Ne,{})}),e.jsx(be,{children:Object.entries(O).map(([s,a])=>e.jsx(ve,{value:s,children:a.label},s))})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:O[i].description})]})}),e.jsxs(fe,{defaultValue:"materials",className:"mt-6",children:[e.jsxs(ge,{className:"w-full grid grid-cols-3",children:[e.jsx(F,{value:"materials",children:"Costs"}),e.jsx(F,{value:"overhead",children:"Overhead"}),e.jsx(F,{value:"pricing",children:"Pricing"})]}),e.jsx(D,{value:"materials",children:e.jsxs(R,{className:"p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsxs("h3",{className:"text-lg font-medium text-foreground flex items-center",children:["Materials",e.jsx(d,{text:"Add every material that goes into a single piece. Include clay, glazes, oxides, firing costs, and packaging. Be specificâit's better to overestimate than to leave money on the table."})]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"Cost of materials per piece"})]}),e.jsxs("div",{className:"space-y-3",children:[M.map(s=>e.jsxs("div",{className:"grid grid-cols-[1fr_120px_36px] gap-2 items-end",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(n,{className:"text-xs",children:"Material"}),e.jsx(B,{value:s.name,onChange:a=>z(s.id,{name:a.target.value}),placeholder:"e.g. Porcelain clay"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(n,{className:"text-xs",children:"Cost/piece"}),e.jsx(b,{value:s.costPerPiece,onChange:a=>z(s.id,{costPerPiece:a})})]}),e.jsx(I,{variant:"ghost",size:"icon",className:"text-muted-foreground hover:text-destructive",onClick:()=>ee(s.id),children:e.jsx(de,{className:"h-4 w-4"})})]},s.id)),e.jsxs(I,{variant:"outline",size:"sm",className:"mt-2",onClick:Z,children:[e.jsx(ke,{className:"h-3.5 w-3.5 mr-1"}),"Add Material"]})]}),e.jsxs("div",{className:"flex items-center justify-between text-sm border-t border-border pt-4",children:[e.jsx("span",{className:"text-muted-foreground",children:"Total material cost per piece"}),e.jsx("span",{className:"font-semibold text-foreground",children:t(r.materialCost)})]}),e.jsxs("div",{className:"border-t border-border pt-6 space-y-4",children:[e.jsxs("h3",{className:"text-lg font-medium text-foreground flex items-center",children:["Labor",e.jsx(d,{text:"Your time is your most valuable resource. Include all stages: wedging, throwing/building, trimming, bisque loading, glazing, glaze loading, and quality control. A common range for skilled ceramicists is $20â$50/hr."})]}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs(n,{className:"text-xs flex items-center",children:["Hourly rate",e.jsx(d,{text:"What is your time worth? Consider your experience level and local cost of living. Even if you don't pay yourself a wage yet, pricing with one ensures sustainability."})]}),e.jsx(b,{value:x,onChange:k})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs(n,{className:"text-xs flex items-center",children:["Hours per piece",e.jsx(d,{text:"Total hands-on time from start to finish. For a mug: ~15 min throwing + 10 min trimming + 10 min glazing + handling â 1â1.5 hrs. For sculpture, it could be 5â20+ hrs."})]}),e.jsx(L,{value:h,onChange:$,suffix:"hrs",step:"0.25"})]})]}),e.jsxs("div",{className:"flex items-center justify-between text-sm",children:[e.jsx("span",{className:"text-muted-foreground",children:"Labor cost per piece"}),e.jsx("span",{className:"font-semibold text-foreground",children:t(r.laborCost)})]})]})]})}),e.jsx(D,{value:"overhead",children:e.jsxs(R,{className:"p-6 space-y-6",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{children:[e.jsxs("h3",{className:"text-lg font-medium text-foreground flex items-center",children:["Monthly Overhead",e.jsx(d,{text:"Fixed costs you pay whether you make 1 piece or 100. Spreading these across your monthly output ensures each piece carries its fair share."})]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"Fixed costs allocated across your monthly output"})]}),e.jsx(pe,{checked:y,onCheckedChange:U})]}),y&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(n,{className:"text-xs",children:"Studio Rent"}),e.jsx(b,{value:c.monthlyRent,onChange:s=>v(a=>({...a,monthlyRent:s}))})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(n,{className:"text-xs",children:"Utilities"}),e.jsx(b,{value:c.monthlyUtilities,onChange:s=>v(a=>({...a,monthlyUtilities:s}))})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(n,{className:"text-xs",children:"Insurance"}),e.jsx(b,{value:c.monthlyInsurance,onChange:s=>v(a=>({...a,monthlyInsurance:s}))})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs(n,{className:"text-xs flex items-center",children:["Tool Replacement",e.jsx(d,{text:"Budget for replacing wires, ribs, bats, brushes, and other consumables. Even small tools add up over a year."})]}),e.jsx(b,{value:c.monthlyToolReplacement,onChange:s=>v(a=>({...a,monthlyToolReplacement:s}))})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(n,{className:"text-xs",children:"Other Monthly Costs"}),e.jsx(b,{value:c.monthlyOther,onChange:s=>v(a=>({...a,monthlyOther:s}))})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs(n,{className:"text-xs flex items-center",children:["Pieces Produced / Month",e.jsx(d,{text:"How many finished pieces leave your studio in a typical month? This determines how overhead gets split across your work. Be realisticâinclude seconds and test pieces."})]}),e.jsx(L,{value:c.piecesPerMonth,onChange:s=>v(a=>({...a,piecesPerMonth:s})),min:1})]})]}),e.jsxs("div",{className:"space-y-2 border-t border-border pt-4",children:[e.jsxs("div",{className:"flex items-center justify-between text-sm",children:[e.jsx("span",{className:"text-muted-foreground",children:"Total monthly overhead"}),e.jsx("span",{className:"font-medium text-foreground",children:t(r.totalOverhead)})]}),e.jsxs("div",{className:"flex items-center justify-between text-sm",children:[e.jsx("span",{className:"text-muted-foreground",children:"Overhead per piece"}),e.jsx("span",{className:"font-semibold text-foreground",children:t(r.overheadPerPiece)})]})]})]})]})}),e.jsx(D,{value:"pricing",children:e.jsxs(R,{className:"p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsxs("h3",{className:"text-lg font-medium text-foreground flex items-center",children:["Profit Margin",e.jsx(d,{text:"This is the percentage of the final price that is profit after all costs. 25â40% is typical for handmade ceramics. Higher margins give you room for sales, discounts, and unexpected costs."})]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"Target profit margin on each piece"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(n,{className:"text-xs",children:"Margin"}),e.jsxs("span",{className:"text-sm font-medium text-foreground",children:[N,"%"]})]}),e.jsx(S,{min:0,max:70,step:1,value:[N],onValueChange:([s])=>V(s)}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["At ",N,"% margin, you earn"," ",t(r.profitPerPiece)," profit on a ",t(r.baseCost)," ","cost base"]})]}),e.jsxs("div",{className:"border-t border-border pt-6 space-y-4",children:[e.jsxs("h3",{className:"text-lg font-medium text-foreground flex items-center",children:["Sales Channels",e.jsx(d,{text:"Different channels have different economics. Galleries take 40â50% commission, wholesale buyers expect 40â50% off retail, and online sales have platform fees (3â15%). Adjust each channel's markup/discount relative to your base price."})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Adjust each channel's price relative to your base price"}),e.jsx("div",{className:"grid gap-4 sm:grid-cols-2",children:[["retail","Direct / Retail"],["wholesale","Wholesale"],["gallery","Gallery"],["online","Online / Marketplace"]].map(([s,a])=>e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(n,{className:"text-xs",children:a}),e.jsxs("span",{className:"text-xs font-medium text-muted-foreground",children:[p[s]>=0?"+":"",p[s],"%"]})]}),e.jsx(S,{min:-60,max:100,step:5,value:[p[s]],onValueChange:([m])=>Y(o=>({...o,[s]:m}))}),e.jsx("p",{className:"text-xs text-foreground font-medium",children:t(r.channelPrices[s])})]},s))})]}),i==="functional"&&e.jsxs("div",{className:"border-t border-border pt-6 space-y-4",children:[e.jsxs("h3",{className:"text-lg font-medium text-foreground flex items-center",children:["Batch / Set Pricing",e.jsx(d,{text:"Offering sets (e.g. a set of 4 mugs or 6 bowls) encourages larger purchases. A 10â15% discount per set is commonâyou save time on packaging and selling."})]}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(n,{className:"text-xs",children:"Pieces in set"}),e.jsx(L,{value:f,onChange:q,min:2,max:24})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(n,{className:"text-xs",children:"Set discount"}),e.jsxs("span",{className:"text-xs font-medium text-muted-foreground",children:[P,"%"]})]}),e.jsx(S,{min:0,max:30,step:1,value:[P],onValueChange:([s])=>K(s)})]})]}),e.jsxs("div",{className:"flex items-center justify-between text-sm border-t border-border pt-3",children:[e.jsxs("span",{className:"text-muted-foreground",children:["Set of ",f," price"]}),e.jsxs("span",{className:"font-semibold text-foreground",children:[t(r.batchTotal)," (",t(r.batchPerPiece)," each)"]}
2)]})]}),i==="custom"&&e.jsxs("div",{className:"border-t border-border pt-6 space-y-4",children:[e.jsxs("h3",{className:"text-lg font-medium text-foreground flex items-center",children:["Commission Terms",e.jsx(d,{text:"Custom work has hidden costs: client communication, revisions, and unique problem-solving. A complexity multiplier of 1.5à is common for intricate work. Always charge a non-refundable deposit."})]}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-3",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs(n,{className:"text-xs flex items-center",children:["Complexity",e.jsx(d,{text:"1.0à = standard difficulty. 1.5à = detailed surface work or unusual form. 2.0à = highly complex, multi-part, or large-scale pieces."})]}),e.jsxs("span",{className:"text-xs font-medium text-muted-foreground",children:[g.toFixed(1),"Ã"]})]}),e.jsx(S,{min:1,max:3,step:.1,value:[g],onValueChange:([s])=>_(s)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(n,{className:"text-xs",children:"Rush fee"}),e.jsxs("span",{className:"text-xs font-medium text-muted-foreground",children:[j,"%"]})]}),e.jsx(S,{min:0,max:100,step:5,value:[j],onValueChange:([s])=>J(s)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs(n,{className:"text-xs flex items-center",children:["Deposit",e.jsx(d,{text:"Non-refundable deposit protects you from cancelled orders. 50% is standard; some artists charge 100% for large pieces."})]}),e.jsxs("span",{className:"text-xs font-medium text-muted-foreground",children:[C,"%"]})]}),e.jsx(S,{min:0,max:100,step:5,value:[C],onValueChange:([s])=>Q(s)})]})]}),e.jsxs("div",{className:"flex items-center justify-between text-sm border-t border-border pt-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Deposit amount"}),e.jsx("span",{className:"font-semibold text-foreground",children:t(r.depositAmount)})]})]})]})})]}),e.jsxs(R,{className:"mt-8 p-6",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsx("h3",{className:"text-lg font-medium text-foreground",children:"Price Summary"}),e.jsxs(I,{variant:"outline",size:"sm",onClick:te,className:"gap-1.5",children:[E?e.jsx(me,{className:"h-3.5 w-3.5"}):e.jsx(Me,{className:"h-3.5 w-3.5"}),E?"Copied":"Copy Summary"]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between text-sm",children:[e.jsx("span",{className:"text-muted-foreground",children:"Materials"}),e.jsx("span",{className:"text-foreground",children:t(r.materialCost)})]}),e.jsxs("div",{className:"flex items-center justify-between text-sm",children:[e.jsxs("span",{className:"text-muted-foreground",children:["Labor (",h," hrs à ",t(x),"/hr)"]}),e.jsx("span",{className:"text-foreground",children:t(r.laborCost)})]}),y&&e.jsxs("div",{className:"flex items-center justify-between text-sm",children:[e.jsx("span",{className:"text-muted-foreground",children:"Overhead allocation"}),e.jsx("span",{className:"text-foreground",children:t(r.overheadPerPiece)})]}),e.jsxs("div",{className:"flex items-center justify-between text-sm border-t border-border pt-2",children:[e.jsx("span",{className:"font-medium text-foreground",children:"Total Cost"}),e.jsx("span",{className:"font-medium text-foreground",children:t(r.baseCost)})]}),e.jsxs("div",{className:"flex items-center justify-between text-sm",children:[e.jsxs("span",{className:"text-muted-foreground",children:["+ ",N,"% margin"]}),e.jsx("span",{className:"text-foreground",children:t(r.profitPerPiece)})]}),i==="custom"&&g>1&&e.jsxs("div",{className:"flex items-center justify-between text-sm",children:[e.jsxs("span",{className:"text-muted-foreground",children:["à ",g.toFixed(1)," complexity"]}),e.jsx("span",{className:"text-foreground",children:"applied"})]}),i==="custom"&&j>0&&e.jsxs("div",{className:"flex items-center justify-between text-sm",children:[e.jsxs("span",{className:"text-muted-foreground",children:["+ ",j,"% rush fee"]}),e.jsx("span",{className:"text-foreground",children:"applied"})]})]}),e.jsx("div",{className:"mt-4 pt-4 border-t border-border",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"text-lg font-semibold text-foreground",children:"Suggested Price"}),e.jsx("span",{className:"text-2xl font-bold text-foreground",children:t(r.basePrice)})]})}),e.jsxs("div",{className:"mt-6 pt-4 border-t border-border",children:[e.jsx("h4",{className:"text-sm font-medium text-foreground mb-3",children:"By Sales Channel"}),e.jsx("div",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-4",children:[["retail","Direct / Retail"],["wholesale","Wholesale"],["gallery","Gallery"],["online","Online"]].map(([s,a])=>{const m=r.channelPrices[s],o=m-r.baseCost;return e.jsxs("div",{className:"rounded-md border border-border p-3 space-y-1",children:[e.jsx("p",{className:"text-xs text-muted-foreground",children:a}),e.jsx("p",{className:"text-lg font-bold text-foreground",children:t(m)}),e.jsxs("p",{className:`text-xs font-medium ${o>=0?"text-green-600":"text-destructive"}`,children:[o>=0?"+":"",t(o)," profit"]})]},s)})})]}),i==="functional"&&e.jsx("div",{className:"mt-4 pt-4 border-t border-border",children:e.jsxs("div",{className:"flex items-center justify-between text-sm",children:[e.jsxs("span",{className:"text-muted-foreground",children:["Set of ",f," (",P,"% off)"]}),e.jsxs("span",{className:"font-semibold text-foreground",children:[t(r.batchTotal)," (",t(r.batchPerPiece)," each)"]}
2)]})}),i==="custom"&&e.jsx("div",{className:"mt-4 pt-4 border-t border-border",children:e.jsxs("div",{className:"flex items-center justify-between text-sm",children:[e.jsxs("span",{className:"text-muted-foreground",children:["Non-refundable deposit (",C,"%)"]}),e.jsx("span",{className:"font-semibold text-foreground",children:t(r.depositAmount)})]})})]})]})})}const ls=()=>e.jsxs("div",{className:"flex min-h-screen flex-col bg-background",children:[e.jsxs(Te,{children:[e.jsx("title",{children:"Pottery Pricing Calculator â Price Mugs, Bowls & Commissions | Loam"}),e.jsx("meta",{name:"description",content:"Free calculator to price handmade ceramics. Factor in clay, glaze, firing, labor, overhead, and profit margins for functional ware, sculptures, and commissions."}),e.jsx("link",{rel:"canonical",href:"https://loam.community/resources/work-pricing"}),e.jsx("meta",{property:"og:title",content:"Pottery Pricing Calculator | Loam"}),e.jsx("meta",{property:"og:description",content:"Calculate what to charge for mugs, bowls, sculptures, and custom commissions."}),e.jsx("meta",{property:"og:url",content:"https://loam.community/resources/work-pricing"}),e.jsx("meta",{property:"og:type",content:"article"}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"SoftwareApplication",name:"Pottery Pricing Calculator",applicationCategory:"BusinessApplication",operatingSystem:"Web",url:"https://loam.community/resources/work-pricing",description:"Free calculator to price handmade ceramics. Factor in clay, glaze, firing, labor, overhead, and profit margins for functional ware, sculptures, and commissions.",offers:{"@type":"Offer",price:0,priceCurrency:"USD"},publisher:{"@type":"Organization",name:"Loam",url:"https://loam.community"}})})]}),e.jsx(xe,{}),e.jsx("main",{className:"flex-1",children:e.jsxs("div",{className:"mx-auto max-w-4xl px-6 py-16",children:[e.jsx(Ae,{className:"mb-4",items:[{label:"Resources",to:"/resources"},{label:"Pottery Pricing Calculator"}]}),e.jsxs("div",{className:"mb-8 flex flex-wrap items-center justify-between gap-3",children:[e.jsxs(he,{to:"/resources",className:"inline-flex items-center gap-1.5 text-sm text-muted-foreground hover:text-foreground",children:[e.jsx(Fe,{className:"h-4 w-4"}),"Back to Resources"]}),e.jsx($e,{resourceName:"Pottery Pricing Calculator"})]}),e.jsx(Ie,{}),e.jsx(Oe,{currentHref:"/resources/work-pricing"})]})}),e.jsx(ue,{})]});export{ls 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.