Files
kaiser-natron/dist/assets/ProductCard-Cxy5I4vQ.js

1 line
2.8 KiB
JavaScript

import{C as e,G as t,O as n,c as r,j as i,l as a,lt as o,m as s,o as c,p as l,s as u,st as d,u as f}from"./runtime-core.esm-bundler-BD0e4RlP.js";import{t as p}from"./Icon-BCRRMV3J.js";import{t as m}from"./i18n-CJQl3WLC.js";import{t as h}from"./Badge-DcvgVKep.js";import{t as g}from"./Button-DkdaDkuf.js";var _=[`src`,`alt`],v={class:`flex flex-col gap-3 p-6`},y={class:`flex flex-col gap-1`},b={key:0,class:`text-sm text-muted tracking-label`},x={class:`mt-auto flex items-center justify-between gap-3 pt-2`},S={class:`font-display text-2xl font-normal text-brand`},C={key:0,class:`text-xs font-semibold tracking-label uppercase text-danger`},w={__name:`ProductCard`,props:{title:{type:String,required:!0},size:{type:String,default:``},price:{type:[String,Number],required:!0},currency:{type:String,default:``},image:{type:String,required:!0},imageAlt:{type:String,default:``},badge:{type:String,default:``},badgeVariant:{type:String,default:`accent`,validator:e=>[`neutral`,`brand`,`accent`,`subtle`,`success`,`warning`,`danger`].includes(e)},tone:{type:String,default:`paper`,validator:e=>[`paper`,`cream`].includes(e)},inStock:{type:Boolean,default:!0},href:{type:String,default:``}},emits:[`add`],setup(w){let T=w,{t:E}=m(),D={paper:{surface:`bg-paper`,media:`bg-cream`,border:`border-line`},cream:{surface:`bg-cream`,media:`bg-paper`,border:`border-line`}},O=c(()=>D[T.tone]),k=c(()=>typeof T.price==`number`?`${T.currency} ${T.price.toFixed(2).replace(`.`,`,`)}`:`${T.currency} ${T.price}`);return(c,m)=>(e(),f(`article`,{class:d([`group flex flex-col overflow-hidden rounded-md border transition-all duration-base ease-out`,O.value.surface,O.value.border,`hover:-translate-y-1 hover:shadow-md hover:border-brand-soft`])},[(e(),r(n(w.href?`a`:`div`),{href:w.href||null,class:d([`relative block aspect-[4/5] overflow-hidden`,O.value.media])},{default:i(()=>[w.badge?(e(),r(h,{key:0,variant:w.badgeVariant,class:`absolute top-4 left-4 z-[1]`},{default:i(()=>[l(o(w.badge),1)]),_:1},8,[`variant`])):a(``,!0),u(`img`,{src:w.image,alt:w.imageAlt||w.title,loading:`lazy`,decoding:`async`,class:`absolute inset-0 w-full h-full object-contain p-8 transition-transform duration-slow ease-out group-hover:scale-105`},null,8,_)]),_:1},8,[`href`,`class`])),u(`div`,v,[u(`div`,y,[(e(),r(n(w.href?`a`:`h3`),{href:w.href||null,class:d([`font-display text-xl font-normal leading-tight text-ink`,w.href?`hover:text-brand transition-colors duration-base`:``])},{default:i(()=>[l(o(w.title),1)]),_:1},8,[`href`,`class`])),w.size?(e(),f(`p`,b,o(w.size),1)):a(``,!0)]),u(`div`,x,[u(`span`,S,o(k.value),1),w.inStock?a(``,!0):(e(),f(`span`,C,o(t(E)(`ds.product.outOfStock`)),1))]),s(g,{variant:`primary`,size:`md`,block:``,disabled:!w.inStock,onClick:m[0]||=e=>c.$emit(`add`)},{before:i(()=>[s(p,{name:`plus`,size:16})]),default:i(()=>[l(` `+o(t(E)(`ds.buttons.addToCart`)),1)]),_:1},8,[`disabled`])])],2))}};export{w as t};