PageSourceSearch

https://www.kinnso.ai/build/assets/IndexPage-NEFxlMPg.js

js kinnso.ai collected 2026-10-05 12:08:39 UTC 6,150 bytes, 1 lines download raw bytes

1import{d as V,u as A,r as F,o as B,j as d,k as e,l as n,q as c,p as a,t as o,i,F as I,x as L,a7 as u,y as g,v as y,X as b,$ as S}from"./vue-vendor-BajbYnZd.js";import{_ as z}from"./AppEmptyState.vue_vue_type_script_setup_true_lang-bT4MbhKM.js";import{_ as N}from"./index-BvGfA0ui.js";import{u as T,aK as x,l as U,i as $,k,Z as E,b3 as Q,r as h,L as _}from"./app-DwOHsFuL.js";import{_ as R,a as D,b as M,c as K,d as P}from"./NumberFieldInput.vue_vue_type_script_setup_true_lang-DAMyX0C2.js";import{t as X,a as Z,b as G}from"./ecommerce-DrccwqcA.js";import{T as H}from"./trash-2-Bfl0oyyq.js";import"./_commonjsHelpers-DsqdWQfm.js";import"./lodash-vendor-CgOBijZN.js";import"./swiper-vendor-yQEe4ke0.js";import"./minus-CFkUuuTv.js";import"./plus-lXcwj0eQ.js";import"./clamp-jFYhBC76.js";import"./useLocale-DZ08lCFV.js";const J={class:"wrapper py-8 lg:py-16"},O={class:"flex flex-col-reverse lg:grid lg:grid-cols-3 gap-4 md:gap-8"},W={class:"lg:col-span-2 order-2 lg:order-1"},Y={class:"flex items-center gap-2 mb-4 md:mb-6"},ee={class:"text-base md:text-lg font-semibold"},te={key:0,class:"contents"},se={key:1,class:"contents"},ae={class:"relative z-10 flex gap-3 md:gap-4 pointer-events-none"},oe={class:"pointer-events-auto cursor-pointer"},ne=["src","alt"],re={class:"flex-1 min-w-0 space-y-2"},le={class:"flex justify-between"},ce={class:"flex flex-col gap-3 md:flex-row md:items-center md:justify-between"},ie={class:"flex items-center justify-between md:justify-start gap-3"},de={class:"pointer-events-auto"},ue={class:"flex items-center justify-between md:gap-4"},me={class:"text-right pointer-events-auto cursor-pointer"},fe={class:"pointer-events-auto"},pe={class:"lg:sticky lg:top-20"},ve={class:"text-base md:text-lg font-semibold mb-3 md:mb-4"},_e={class:"space-y-2 md:space-y-3 mb-4 md:mb-6"},he={class:"flex justify-between text-sm md:text-base"},ge={class:"flex justify-between text-base md:text-lg font-bold"},ye={class:"pt-3 border-t border-gray-200"},be={class:"flex justify-between text-sm md:text-base mb-2"},xe={class:"text-blue-600 font-medium"},$e={class:"text-xs text-gray-500 text-center mt-2 md:mt-3"},Te=V({__name:"IndexPage",props:{cart:{},currency:{}},setup(r){const{t:m}=A(),f=T(),l=F(!1);function w(){l.value=!0,G({currency:r.currency,value:r.cart.total,items:r.cart.items.map(t=>({item_id:t.slug,item_name:t.name,price:t.price,quantity:t.quantity}))}),setTimeout(()=>{h.post(f("app.cart.checkout"),{},{onFinish:()=>{l.value=!1}})},4e3)}const q=Q(C,300);function C(t,p){l.value=!0,h.post(f("app.cart.update"),{id:t,quantity:p},{onFinish:()=>{l.value=!1},onSuccess:()=>{_.success(m("flash.update.success"))},onError:()=>{_.error(m("flash.update.error"))}})}function j(t){l.value=!0,h.delete(f("app.cart.remove",{id:t.id}),{onSuccess:()=>{Z({currency:t.currency,value:t.price*t.quantity,items:[{item_id:t.slug,item_name:t.name,price:t.price,quantity:t.quantity}]}),_.success(m("flash.cart.remove.success"))},onError:()=>{_.error(m("flash.cart.remove.error"))},onFinish:()=>{l.value=!1}})}return B(()=>{r.cart.items.length>0&&X({currency:r.currency,value:r.cart.total,items:r.cart.items.map(t=>({item_id:t.slug,item_name:t.name,price:t.price,quantity:t.quantity}))})}),(t,p)=>(i(),d("div",J,[e("div",O,[e("div",W,[n(a(k),null,{default:c(()=>[n(a(x),null,{default:c(()=>[e("div",Y,[e("span",ee,o(t.$t("cart.title",[r.cart.items.length])),1)]),r.cart.items.length===0?(i(),d("div",te,[n(z,{message:t.$t("cart.empty"),variant:"confused",class:"pb-10"},null,8,["message"])])):(i(),d("div",se,[(i(!0),d(I,null,L(r.cart.items,s=>(i(),d("div",{key:s.slug,class:u(["border rounded-lg p-3 md:px-4 mb-4 last:mb-0 transition-all duration-300 relative",[s.isActive?"hover:shadow-md":"opacity-60 bg-muted"]])},[n(a(U),{class:"absolute inset-0 z-0",href:a(f)("app.deals.show",{slug:s.slug}),"aria-label":"查看商品詳情"},null,8,["href"]),e("div",ae,[e("div",oe,[e("img",{src:s.image,alt:s.name,class:u(["w-16 h-16 md:w-20 md:h-20 rounded-lg object-cover shrink-0",{grayscale:!s.isActive}])},null,10,ne)]),e("div",re,[e("div",le,[e("h3",{class:u(["font-semibold text-sm md:text-lg mb-1 md:mb-2 line-clamp-2 pointer-events-auto cursor-pointer",{"text-muted-foreground":!s.isActive}])},o(s.name),3),s.isActive?b("",!0):(i(),g(N,{key:0,variant:"destructive",class:"h-6"},{default:c(()=>[y(o(t.$t("status.restocking")),1)]),_:1}))]),e("div",ce,[e("div",ie,[e("span",{class:u(["text-xs md:text-sm whitespace-nowrap pointer-events-auto cursor-pointer",{"text-muted-foreground":!s.isActive}])}
1,o(t.$t("common.quantity"))+": ",3),e("div",de,[n(a(R),{modelValue:s.quantity,"onUpdate:modelValue":[v=>s.quantity=v,v=>a(q)(s.id,v)],min:1,max:s.maxQuantity,disabled:l.value||!s.isActive},{default:c(()=>[n(a(D),null,{default:c(()=>[n(a(M)),n(a(K)),n(a(P))]),_:1})]),_:1},8,["modelValue","onUpdate:modelValue","max","disabled"])])]),e("div",ue,[e("div",me,[e("div",{class:u(["text-lg md:text-xl font-bold",[s.isActive?"text-green-600":"text-muted-foreground"]])},o(s.currency)+"$ "+o((s.price*s.quantity).toLocaleString()),3)]),e("div",fe,[n(a($),{variant:"ghost",size:"icon",type:"button",disabled:l.value,onClick:v=>j(s)},{default:c(()=>[n(a(H),{class:"h-4 w-4 text-error"})]),_:1},8,["disabled","onClick"])])])])])])],2))),128))]))]),_:1})]),_:1})]),e("form",{class:"lg:col-span-1 order-1 lg:order-2",onSubmit:S(w,["prevent"])},[e("div",pe,[n(a(k),null,{default:c(()=>[n(a(x),null,{default:c(()=>[e("h3",ve,o(t.$t("cart.order_summary")),1),e("div",_e,[e("div",he,[e("span",null,o(t.$t("payment.subtotal")),1),e("span",null,"$ "+o(r.cart.subtotal),1)]),p[0]||(p[0]=e("hr",{class:"border-gray-200"},null,-1)),e("div",ge,[e("span",null,o(t.$t("common.total")),1),e("span",null,"$ "+o(r.cart.total),1)]),e("div",ye,[e("div",be,[e("span",null,o(t.$t("payment.method")),1),e("span",xe,o(t.$t("payment.card")),1)])])]),n(a($),{disabled:r.cart.items.length===0||l.value,type:"submit",class:"w-full font-semibold py-3"},{default:c(()=>[l.value?(i(),g(a(E),{key:0,class:"animate-spin mr-2"})):b("",!0),y(" "+o(t.$t("cart.checkout")),1)]),_:1},8,["disabled"]),e("p",$e,o(t.$t("cart.checkout_desc")),1)]),_:1})]),_:1})])],32)])]))}});export{Te 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.