trade-safety 0.2.0 → 0.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/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/repositories/TradeSafetyRepository.d.ts +60 -60
- package/dist/repositories/TradeSafetyRepository.d.ts.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),l=require("framer-motion"),c=require("react-i18next"),v=require("react"),h=require("next/link"),b=require("@aioia/core"),r=require("zod");function y(a){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(a){for(const n in a)if(n!=="default"){const i=Object.getOwnPropertyDescriptor(a,n);Object.defineProperty(t,n,i.get?i:{enumerable:!0,get:()=>a[n]})}}return t.default=a,Object.freeze(t)}const s=y(v);function j({title:a,titleId:t,...n},i){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true","data-slot":"icon",ref:i,"aria-labelledby":t},n),a?s.createElement("title",{id:t},a):null,s.createElement("path",{fillRule:"evenodd",d:"M4.804 21.644A6.707 6.707 0 0 0 6 21.75a6.721 6.721 0 0 0 3.583-1.029c.774.182 1.584.279 2.417.279 5.322 0 9.75-3.97 9.75-9 0-5.03-4.428-9-9.75-9s-9.75 3.97-9.75 9c0 2.409 1.025 4.587 2.674 6.192.232.226.277.428.254.543a3.73 3.73 0 0 1-.814 1.686.75.75 0 0 0 .44 1.223ZM8.25 10.875a1.125 1.125 0 1 0 0 2.25 1.125 1.125 0 0 0 0-2.25ZM10.875 12a1.125 1.125 0 1 1 2.25 0 1.125 1.125 0 0 1-2.25 0Zm4.875-1.125a1.125 1.125 0 1 0 0 2.25 1.125 1.125 0 0 0 0-2.25Z",clipRule:"evenodd"}))}const w=s.forwardRef(j);function k({title:a,titleId:t,...n},i){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true","data-slot":"icon",ref:i,"aria-labelledby":t},n),a?s.createElement("title",{id:t},a):null,s.createElement("path",{fillRule:"evenodd",d:"M8.603 3.799A4.49 4.49 0 0 1 12 2.25c1.357 0 2.573.6 3.397 1.549a4.49 4.49 0 0 1 3.498 1.307 4.491 4.491 0 0 1 1.307 3.497A4.49 4.49 0 0 1 21.75 12a4.49 4.49 0 0 1-1.549 3.397 4.491 4.491 0 0 1-1.307 3.497 4.491 4.491 0 0 1-3.497 1.307A4.49 4.49 0 0 1 12 21.75a4.49 4.49 0 0 1-3.397-1.549 4.49 4.49 0 0 1-3.498-1.306 4.491 4.491 0 0 1-1.307-3.498A4.49 4.49 0 0 1 2.25 12c0-1.357.6-2.573 1.549-3.397a4.49 4.49 0 0 1 1.307-3.497 4.49 4.49 0 0 1 3.497-1.307Zm7.007 6.387a.75.75 0 1 0-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 0 0-1.06 1.06l2.25 2.25a.75.75 0 0 0 1.14-.094l3.75-5.25Z",clipRule:"evenodd"}))}const A=s.forwardRef(k);function S({title:a,titleId:t,...n},i){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true","data-slot":"icon",ref:i,"aria-labelledby":t},n),a?s.createElement("title",{id:t},a):null,s.createElement("path",{fillRule:"evenodd",d:"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm13.36-1.814a.75.75 0 1 0-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 0 0-1.06 1.06l2.25 2.25a.75.75 0 0 0 1.14-.094l3.75-5.25Z",clipRule:"evenodd"}))}const N=s.forwardRef(S);function R({title:a,titleId:t,...n},i){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true","data-slot":"icon",ref:i,"aria-labelledby":t},n),a?s.createElement("title",{id:t},a):null,s.createElement("path",{fillRule:"evenodd",d:"M7.502 6h7.128A3.375 3.375 0 0 1 18 9.375v9.375a3 3 0 0 0 3-3V6.108c0-1.505-1.125-2.811-2.664-2.94a48.972 48.972 0 0 0-.673-.05A3 3 0 0 0 15 1.5h-1.5a3 3 0 0 0-2.663 1.618c-.225.015-.45.032-.673.05C8.662 3.295 7.554 4.542 7.502 6ZM13.5 3A1.5 1.5 0 0 0 12 4.5h4.5A1.5 1.5 0 0 0 15 3h-1.5Z",clipRule:"evenodd"}),s.createElement("path",{fillRule:"evenodd",d:"M3 9.375C3 8.339 3.84 7.5 4.875 7.5h9.75c1.036 0 1.875.84 1.875 1.875v11.25c0 1.035-.84 1.875-1.875 1.875h-9.75A1.875 1.875 0 0 1 3 20.625V9.375Zm9.586 4.594a.75.75 0 0 0-1.172-.938l-2.476 3.096-.908-.907a.75.75 0 0 0-1.06 1.06l1.5 1.5a.75.75 0 0 0 1.116-.062l3-3.75Z",clipRule:"evenodd"}))}const T=s.forwardRef(R);function I({title:a,titleId:t,...n},i){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true","data-slot":"icon",ref:i,"aria-labelledby":t},n),a?s.createElement("title",{id:t},a):null,s.createElement("path",{d:"M10.464 8.746c.227-.18.497-.311.786-.394v2.795a2.252 2.252 0 0 1-.786-.393c-.394-.313-.546-.681-.546-1.004 0-.323.152-.691.546-1.004ZM12.75 15.662v-2.824c.347.085.664.228.921.421.427.32.579.686.579.991 0 .305-.152.671-.579.991a2.534 2.534 0 0 1-.921.42Z"}),s.createElement("path",{fillRule:"evenodd",d:"M12 2.25c-5.385 0-9.75 4.365-9.75 9.75s4.365 9.75 9.75 9.75 9.75-4.365 9.75-9.75S17.385 2.25 12 2.25ZM12.75 6a.75.75 0 0 0-1.5 0v.816a3.836 3.836 0 0 0-1.72.756c-.712.566-1.112 1.35-1.112 2.178 0 .829.4 1.612 1.113 2.178.502.4 1.102.647 1.719.756v2.978a2.536 2.536 0 0 1-.921-.421l-.879-.66a.75.75 0 0 0-.9 1.2l.879.66c.533.4 1.169.645 1.821.75V18a.75.75 0 0 0 1.5 0v-.81a4.124 4.124 0 0 0 1.821-.749c.745-.559 1.179-1.344 1.179-2.191 0-.847-.434-1.632-1.179-2.191a4.122 4.122 0 0 0-1.821-.75V8.354c.29.082.559.213.786.393l.415.33a.75.75 0 0 0 .933-1.175l-.415-.33a3.836 3.836 0 0 0-1.719-.755V6Z",clipRule:"evenodd"}))}const z=s.forwardRef(I);function C({title:a,titleId:t,...n},i){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true","data-slot":"icon",ref:i,"aria-labelledby":t},n),a?s.createElement("title",{id:t},a):null,s.createElement("path",{fillRule:"evenodd",d:"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12ZM12 8.25a.75.75 0 0 1 .75.75v3.75a.75.75 0 0 1-1.5 0V9a.75.75 0 0 1 .75-.75Zm0 8.25a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z",clipRule:"evenodd"}))}const D=s.forwardRef(C);function E({title:a,titleId:t,...n},i){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true","data-slot":"icon",ref:i,"aria-labelledby":t},n),a?s.createElement("title",{id:t},a):null,s.createElement("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003ZM12 8.25a.75.75 0 0 1 .75.75v3.75a.75.75 0 0 1-1.5 0V9a.75.75 0 0 1 .75-.75Zm0 8.25a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z",clipRule:"evenodd"}))}const p=s.forwardRef(E);function P({title:a,titleId:t,...n},i){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true","data-slot":"icon",ref:i,"aria-labelledby":t},n),a?s.createElement("title",{id:t},a):null,s.createElement("path",{d:"m11.645 20.91-.007-.003-.022-.012a15.247 15.247 0 0 1-.383-.218 25.18 25.18 0 0 1-4.244-3.17C4.688 15.36 2.25 12.174 2.25 8.25 2.25 5.322 4.714 3 7.688 3A5.5 5.5 0 0 1 12 5.052 5.5 5.5 0 0 1 16.313 3c2.973 0 5.437 2.322 5.437 5.25 0 3.925-2.438 7.111-4.739 9.256a25.175 25.175 0 0 1-4.244 3.17 15.247 15.247 0 0 1-.383.219l-.022.012-.007.004-.003.001a.752.752 0 0 1-.704 0l-.003-.001Z"}))}const _=s.forwardRef(P);function M({title:a,titleId:t,...n},i){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true","data-slot":"icon",ref:i,"aria-labelledby":t},n),a?s.createElement("title",{id:t},a):null,s.createElement("path",{fillRule:"evenodd",d:"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm8.706-1.442c1.146-.573 2.437.463 2.126 1.706l-.709 2.836.042-.02a.75.75 0 0 1 .67 1.34l-.04.022c-1.147.573-2.438-.463-2.127-1.706l.71-2.836-.042.02a.75.75 0 1 1-.671-1.34l.041-.022ZM12 9a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z",clipRule:"evenodd"}))}const O=s.forwardRef(M);function L({title:a,titleId:t,...n},i){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true","data-slot":"icon",ref:i,"aria-labelledby":t},n),a?s.createElement("title",{id:t},a):null,s.createElement("path",{fillRule:"evenodd",d:"M9 2.25a.75.75 0 0 1 .75.75v1.506a49.384 49.384 0 0 1 5.343.371.75.75 0 1 1-.186 1.489c-.66-.083-1.323-.151-1.99-.206a18.67 18.67 0 0 1-2.97 6.323c.318.384.65.753 1 1.107a.75.75 0 0 1-1.07 1.052A18.902 18.902 0 0 1 9 13.687a18.823 18.823 0 0 1-5.656 4.482.75.75 0 0 1-.688-1.333 17.323 17.323 0 0 0 5.396-4.353A18.72 18.72 0 0 1 5.89 8.598a.75.75 0 0 1 1.388-.568A17.21 17.21 0 0 0 9 11.224a17.168 17.168 0 0 0 2.391-5.165 48.04 48.04 0 0 0-8.298.307.75.75 0 0 1-.186-1.489 49.159 49.159 0 0 1 5.343-.371V3A.75.75 0 0 1 9 2.25ZM15.75 9a.75.75 0 0 1 .68.433l5.25 11.25a.75.75 0 1 1-1.36.634l-1.198-2.567h-6.744l-1.198 2.567a.75.75 0 0 1-1.36-.634l5.25-11.25A.75.75 0 0 1 15.75 9Zm-2.672 8.25h5.344l-2.672-5.726-2.672 5.726Z",clipRule:"evenodd"}))}const Z=s.forwardRef(L);function B({title:a,titleId:t,...n},i){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true","data-slot":"icon",ref:i,"aria-labelledby":t},n),a?s.createElement("title",{id:t},a):null,s.createElement("path",{d:"M12 .75a8.25 8.25 0 0 0-4.135 15.39c.686.398 1.115 1.008 1.134 1.623a.75.75 0 0 0 .577.706c.352.083.71.148 1.074.195.323.041.6-.218.6-.544v-4.661a6.714 6.714 0 0 1-.937-.171.75.75 0 1 1 .374-1.453 5.261 5.261 0 0 0 2.626 0 .75.75 0 1 1 .374 1.452 6.712 6.712 0 0 1-.937.172v4.66c0 .327.277.586.6.545.364-.047.722-.112 1.074-.195a.75.75 0 0 0 .577-.706c.02-.615.448-1.225 1.134-1.623A8.25 8.25 0 0 0 12 .75Z"}),s.createElement("path",{fillRule:"evenodd",d:"M9.013 19.9a.75.75 0 0 1 .877-.597 11.319 11.319 0 0 0 4.22 0 .75.75 0 1 1 .28 1.473 12.819 12.819 0 0 1-4.78 0 .75.75 0 0 1-.597-.876ZM9.754 22.344a.75.75 0 0 1 .824-.668 13.682 13.682 0 0 0 2.844 0 .75.75 0 1 1 .156 1.492 15.156 15.156 0 0 1-3.156 0 .75.75 0 0 1-.668-.824Z",clipRule:"evenodd"}))}const $=s.forwardRef(B);function H({title:a,titleId:t,...n},i){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true","data-slot":"icon",ref:i,"aria-labelledby":t},n),a?s.createElement("title",{id:t},a):null,s.createElement("path",{fillRule:"evenodd",d:"M11.484 2.17a.75.75 0 0 1 1.032 0 11.209 11.209 0 0 0 7.877 3.08.75.75 0 0 1 .722.515 12.74 12.74 0 0 1 .635 3.985c0 5.942-4.064 10.933-9.563 12.348a.749.749 0 0 1-.374 0C6.314 20.683 2.25 15.692 2.25 9.75c0-1.39.223-2.73.635-3.985a.75.75 0 0 1 .722-.516l.143.001c2.996 0 5.718-1.17 7.734-3.08ZM12 8.25a.75.75 0 0 1 .75.75v3.75a.75.75 0 0 1-1.5 0V9a.75.75 0 0 1 .75-.75ZM12 15a.75.75 0 0 0-.75.75v.008c0 .414.336.75.75.75h.008a.75.75 0 0 0 .75-.75v-.008a.75.75 0 0 0-.75-.75H12Z",clipRule:"evenodd"}))}const x=s.forwardRef(H);function q({title:a,titleId:t,...n},i){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true","data-slot":"icon",ref:i,"aria-labelledby":t},n),a?s.createElement("title",{id:t},a):null,s.createElement("path",{fillRule:"evenodd",d:"M7.5 6a4.5 4.5 0 1 1 9 0 4.5 4.5 0 0 1-9 0ZM3.751 20.105a8.25 8.25 0 0 1 16.498 0 .75.75 0 0 1-.437.695A18.683 18.683 0 0 1 12 22.5c-2.786 0-5.433-.608-7.812-1.7a.75.75 0 0 1-.437-.695Z",clipRule:"evenodd"}))}const K=s.forwardRef(q);function f(a){var t,n,i="";if(typeof a=="string"||typeof a=="number")i+=a;else if(typeof a=="object")if(Array.isArray(a)){var o=a.length;for(t=0;t<o;t++)a[t]&&(n=f(a[t]))&&(i&&(i+=" "),i+=n)}else for(n in a)a[n]&&(i&&(i+=" "),i+=n);return i}function m(){for(var a,t,n=0,i="",o=arguments.length;n<o;n++)(a=arguments[n])&&(t=f(a))&&(i&&(i+=" "),i+=t);return i}const U={error:"bg-error/10 border-error/30",warning:"bg-warning/10 border-warning/30",success:"bg-success/10 border-success/30"},F={error:"text-error",warning:"text-warning",success:"text-success"},V={high:D,medium:p,low:O};function u({signal:a,variant:t="error"}){const{t:n}=c.useTranslation(),i=V[a.severity];return e.jsx("div",{className:m("card border-2 backdrop-blur-sm",U[t]),children:e.jsx("div",{className:"card-body",children:e.jsxs("div",{className:"flex items-start gap-4",children:[e.jsx(i,{className:m("size-8 mt-1 shrink-0",F[t])}),e.jsxs("div",{className:"flex-1",children:[e.jsx("h4",{className:"card-title text-xl",children:a.title}),e.jsx("p",{className:"mt-2 text-neutral-content",children:a.description}),e.jsxs("div",{className:"mt-4 rounded-lg bg-base-100/50 p-4",children:[e.jsxs("p",{className:"mb-2 text-sm font-semibold",children:["💡 ",n("page.tradeSafety.result.whatToDo")]}),e.jsx("p",{className:"text-sm",children:a.what_to_do})]})]})]})})})}function W({cautions:a}){const{t}=c.useTranslation();return a.length===0?null:e.jsxs("section",{children:[e.jsxs("h3",{className:"mb-6 flex items-center gap-3 text-3xl font-bold",children:[e.jsx(p,{className:"size-10 text-warning"}),t("page.tradeSafety.result.cautions")]}),e.jsx("div",{className:"space-y-4",children:a.map((n,i)=>e.jsx(l.motion.div,{initial:{x:-50,opacity:0},animate:{x:0,opacity:1},transition:{delay:i*.1},whileHover:{scale:1.02,x:10},children:e.jsx(u,{signal:n,variant:"warning"})},i))})]})}function J(){const{t:a,i18n:t}=c.useTranslation(),n=t.language;return e.jsx("section",{className:"hero min-h-[30vh] rounded-3xl bg-primary text-primary-content",children:e.jsx("div",{className:"hero-content text-center",children:e.jsxs("div",{children:[e.jsx(w,{className:"mx-auto mb-6 size-20"}),e.jsx("h3",{className:"mb-4 text-4xl font-bold",children:a("page.tradeSafety.result.companionCta.title")}),e.jsx("p",{className:"mb-8 max-w-2xl text-xl",children:a("page.tradeSafety.result.companionCta.description")}),e.jsx(h,{href:`/${n}/companions`,children:e.jsx(l.motion.button,{whileHover:{scale:1.1},whileTap:{scale:.95},className:"btn btn-lg bg-base-100 text-primary hover:bg-base-200",children:a("page.tradeSafety.result.companionCta.button")})})]})})})}function G({advice:a}){const{t}=c.useTranslation();return e.jsx(l.motion.section,{whileHover:{scale:1.02},className:"card bg-secondary text-secondary-content shadow-xl",children:e.jsxs("div",{className:"card-body",children:[e.jsxs("div",{className:"mb-6 flex items-center gap-4",children:[e.jsx("div",{className:"avatar placeholder",children:e.jsx("div",{className:"w-16 rounded-full bg-primary text-primary-content",children:e.jsx(K,{className:"size-8"})})}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-2xl font-bold",children:t("page.tradeSafety.result.expertAdvice")}),e.jsx("p",{className:"opacity-80",children:t("page.tradeSafety.result.expertName")})]})]}),e.jsx("div",{className:"prose max-w-none",children:e.jsx("p",{className:"whitespace-pre-wrap text-lg",children:a})})]})})}function Q({data:a}){const{t,i18n:n}=c.useTranslation();return a?e.jsxs("section",{children:[e.jsxs("h3",{className:"mb-6 flex items-center gap-3 text-3xl font-bold",children:[e.jsx(z,{className:"size-10 text-secondary"}),t("page.tradeSafety.result.priceAnalysis")]}),e.jsx("div",{className:"card bg-base-200 shadow-xl",children:e.jsxs("div",{className:"card-body",children:[e.jsxs("div",{className:"grid grid-cols-1 gap-6 md:grid-cols-2",children:[a.market_price_range&&e.jsxs("div",{children:[e.jsx("h4",{className:"mb-2 text-lg font-semibold",children:t("page.tradeSafety.result.marketPrice")}),e.jsx("p",{className:"text-2xl font-bold",children:a.market_price_range})]}),a.offered_price&&e.jsxs("div",{children:[e.jsx("h4",{className:"mb-2 text-lg font-semibold",children:t("page.tradeSafety.result.offeredPrice")}),e.jsx("p",{className:"text-2xl font-bold text-primary",children:new Intl.NumberFormat(n.language,{style:"currency",currency:a.currency||"USD"}).format(a.offered_price)})]})]}),e.jsxs("div",{className:"mt-6 rounded-lg bg-base-100 p-4",children:[e.jsx("h4",{className:"mb-2 text-lg font-semibold",children:t("page.tradeSafety.result.priceAssessment")}),e.jsx("p",{className:"text-neutral-content",children:a.price_assessment})]}),a.warnings.length>0&&e.jsxs("div",{className:"mt-4",children:[e.jsxs("h4",{className:"mb-2 flex items-center gap-2 text-lg font-semibold text-warning",children:[e.jsx(p,{className:"size-6"}),t("page.tradeSafety.result.priceWarnings")]}),e.jsx("ul",{className:"list-inside list-disc space-y-1",children:a.warnings.map((i,o)=>e.jsx("li",{className:"text-neutral-content",children:i},o))})]})]})})]}):null}function X({recommendation:a,emotionalSupport:t}){const{t:n}=c.useTranslation();return e.jsxs("section",{children:[e.jsxs("h3",{className:"mb-6 flex items-center gap-3 text-3xl font-bold",children:[e.jsx($,{className:"size-10 text-warning"}),n("page.tradeSafety.result.recommendation")]}),e.jsx("div",{className:"card bg-base-200 shadow-xl",children:e.jsxs("div",{className:"card-body",children:[e.jsx("div",{className:"prose max-w-none",children:e.jsx("p",{className:"whitespace-pre-wrap text-lg text-neutral-content",children:a})}),e.jsx("div",{className:"divider"}),e.jsx("div",{className:"rounded-lg bg-base-100 p-4",children:e.jsxs("p",{className:"flex items-center gap-2 text-lg font-medium",children:[e.jsx(_,{className:"size-6 text-info"})," ",t]})})]})})]})}function Y(a){return a>=70?{level:"high",color:"error",Icon:x}:a>=40?{level:"medium",color:"warning",Icon:p}:{level:"low",color:"success",Icon:A}}function ee({score:a}){const{t}=c.useTranslation(),n=Y(a),{Icon:i}=n,o={error:"text-error",warning:"text-warning",success:"text-success"};return e.jsx("div",{className:"hero min-h-[40vh] rounded-3xl bg-base-200",children:e.jsx("div",{className:"hero-content text-center",children:e.jsxs("div",{children:[e.jsx("div",{className:"mb-4",children:e.jsx(i,{className:m("size-32",o[n.color])})}),e.jsx("h2",{className:"mb-4 text-5xl font-bold",children:t(`page.tradeSafety.result.riskLevel.${n.level}.title`)}),e.jsx("div",{className:"mx-auto w-64",children:e.jsx("div",{className:m("radial-progress",o[n.color]),style:{"--value":a,"--size":"12rem","--thickness":"1rem"},role:"progressbar",children:e.jsx("span",{className:"text-5xl font-bold",children:a})})}),e.jsx("p",{className:"mt-6 max-w-lg text-xl text-neutral-content",children:t(`page.tradeSafety.result.riskLevel.${n.level}.message`)})]})})})}function ae({signals:a}){const{t}=c.useTranslation();return a.length===0?null:e.jsxs("section",{children:[e.jsxs("h3",{className:"mb-6 flex items-center gap-3 text-3xl font-bold",children:[e.jsx(x,{className:"size-10 text-error"}),t("page.tradeSafety.result.riskSignals")]}),e.jsx("div",{className:"space-y-4",children:a.map((n,i)=>e.jsx(l.motion.div,{initial:{x:-50,opacity:0},animate:{x:0,opacity:1},transition:{delay:i*.1},whileHover:{scale:1.02,x:10},children:e.jsx(u,{signal:n,variant:"error"})},i))})]})}function te({indicators:a}){const{t}=c.useTranslation();return a.length===0?null:e.jsxs("section",{children:[e.jsxs("h3",{className:"mb-6 flex items-center gap-3 text-3xl font-bold",children:[e.jsx(N,{className:"size-10 text-success"}),t("page.tradeSafety.result.safeIndicators")]}),e.jsx("div",{className:"space-y-4",children:a.map((n,i)=>e.jsx(l.motion.div,{initial:{x:-50,opacity:0},animate:{x:0,opacity:1},transition:{delay:i*.1},whileHover:{scale:1.02,x:10},children:e.jsx(u,{signal:n,variant:"success"})},i))})]})}function ne({items:a}){const{t}=c.useTranslation();return a.length===0?null:e.jsxs("section",{children:[e.jsxs("h3",{className:"mb-6 flex items-center gap-3 text-3xl font-bold",children:[e.jsx(T,{className:"size-10 text-primary"}),t("page.tradeSafety.result.safetyChecklist")]}),e.jsx("div",{className:"card border-2 border-primary/30 bg-base-200",children:e.jsxs("div",{className:"card-body",children:[e.jsx("p",{className:"mb-6 text-lg text-neutral-content",children:t("page.tradeSafety.result.checklistDescription")}),e.jsx("div",{className:"space-y-3",children:a.map((n,i)=>e.jsxs(l.motion.label,{initial:{x:-20,opacity:0},animate:{x:0,opacity:1},transition:{delay:i*.08},className:"flex cursor-pointer items-start gap-3 rounded-lg p-3 hover:bg-base-100/30",children:[e.jsx("input",{type:"checkbox",className:"checkbox-primary checkbox mt-1"}),e.jsx("span",{className:"text-lg",children:n})]},i))})]})})]})}function ie({translation:a,nuance:t}){const{t:n}=c.useTranslation();return!a&&!t?null:e.jsxs("section",{children:[e.jsxs("h3",{className:"mb-6 flex items-center gap-3 text-3xl font-bold",children:[e.jsx(Z,{className:"size-10 text-primary"}),n("page.tradeSafety.result.translation")]}),e.jsx("div",{className:"card bg-base-200 shadow-xl",children:e.jsxs("div",{className:"card-body",children:[a&&e.jsxs("div",{className:"mb-4",children:[e.jsx("h4",{className:"mb-2 text-lg font-semibold",children:n("page.tradeSafety.result.translationTitle")}),e.jsx("p",{className:"whitespace-pre-wrap text-neutral-content",children:a})]}),t&&e.jsxs("div",{children:[e.jsx("h4",{className:"mb-2 text-lg font-semibold",children:n("page.tradeSafety.result.nuanceTitle")}),e.jsx("p",{className:"whitespace-pre-wrap text-neutral-content",children:t})]})]})})]})}const d={initial:{y:40,opacity:0},animate:{y:0,opacity:1,transition:{duration:.6}}},se={animate:{transition:{staggerChildren:.15}}};function re({analysis:a,expertAdvice:t,showCompanionCta:n=!1}){return e.jsxs(l.motion.div,{variants:se,initial:"initial",animate:"animate",className:"mx-auto max-w-5xl space-y-12",children:[e.jsx(l.motion.div,{variants:d,children:e.jsx(ee,{score:a.risk_score})}),(a.translation||a.nuance_explanation)&&e.jsx(l.motion.div,{variants:d,children:e.jsx(ie,{translation:a.translation,nuance:a.nuance_explanation})}),a.risk_signals.length>0&&e.jsx(l.motion.div,{variants:d,children:e.jsx(ae,{signals:a.risk_signals})}),a.cautions.length>0&&e.jsx(l.motion.div,{variants:d,children:e.jsx(W,{cautions:a.cautions})}),a.safe_indicators.length>0&&e.jsx(l.motion.div,{variants:d,children:e.jsx(te,{indicators:a.safe_indicators})}),a.price_analysis&&e.jsx(l.motion.div,{variants:d,children:e.jsx(Q,{data:a.price_analysis})}),a.safety_checklist.length>0&&e.jsx(l.motion.div,{variants:d,children:e.jsx(ne,{items:a.safety_checklist})}),t&&e.jsx(l.motion.div,{variants:d,children:e.jsx(G,{advice:t})}),e.jsx(l.motion.div,{variants:d,children:e.jsx(X,{recommendation:a.recommendation,emotionalSupport:a.emotional_support})}),n&&e.jsx(l.motion.div,{variants:d,children:e.jsx(J,{})})]})}function le({summary:a,checkId:t}){const{t:n,i18n:i}=c.useTranslation(),o=i.language;return e.jsxs("div",{className:"mx-auto max-w-2xl",children:[e.jsx("h1",{className:"mb-8 text-center text-3xl font-bold",children:n("page.tradeSafety.result.title")}),e.jsxs("div",{className:"mb-8 grid grid-cols-1 gap-4 md:grid-cols-3",children:[e.jsx("div",{className:"card bg-error/10",children:e.jsxs("div",{className:"card-body items-center text-center",children:[e.jsx("h3",{className:"text-4xl font-bold text-error",children:a.risk_signals_count}),e.jsx("p",{className:"text-sm",children:n("page.tradeSafety.result.riskSignals")})]})}),e.jsx("div",{className:"card bg-warning/10",children:e.jsxs("div",{className:"card-body items-center text-center",children:[e.jsx("h3",{className:"text-4xl font-bold text-warning",children:a.cautions_count}),e.jsx("p",{className:"text-sm",children:n("page.tradeSafety.result.cautions")})]})}),e.jsx("div",{className:"card bg-success/10",children:e.jsxs("div",{className:"card-body items-center text-center",children:[e.jsx("h3",{className:"text-4xl font-bold text-success",children:a.safe_indicators_count}),e.jsx("p",{className:"text-sm",children:n("page.tradeSafety.result.safeIndicators")})]})})]}),e.jsx("div",{className:"card bg-base-200 shadow-xl",children:e.jsxs("div",{className:"card-body items-center text-center",children:[e.jsx("h2",{className:"card-title text-2xl",children:n("page.tradeSafety.result.signupRequired")}),e.jsx("p",{className:"mb-4 text-neutral-content",children:n("page.tradeSafety.result.signupMessage")}),e.jsx(h,{href:`/${o}/login?callbackUrl=${encodeURIComponent(`/${o}/trade-safety/result/${t}`)}`,className:"btn btn-primary",children:n("login")})]})})]})}const g=r.z.object({category:r.z.enum(["payment","seller","platform","price","content"]),severity:r.z.enum(["high","medium","low"]),title:r.z.string(),description:r.z.string(),what_to_do:r.z.string()}),ce=r.z.object({market_price_range:r.z.string().nullish(),offered_price:r.z.number().nullish(),currency:r.z.string().nullish(),price_assessment:r.z.string(),warnings:r.z.array(r.z.string())}).nullish(),oe=r.z.object({translation:r.z.string().nullish(),nuance_explanation:r.z.string().nullish(),risk_signals:r.z.array(g),cautions:r.z.array(g),safe_indicators:r.z.array(g),price_analysis:ce,safety_checklist:r.z.array(r.z.string()),risk_score:r.z.number(),recommendation:r.z.string(),emotional_support:r.z.string()}),de=r.z.object({risk_signals_count:r.z.number(),cautions_count:r.z.number(),safe_indicators_count:r.z.number()}),me=r.z.object({id:r.z.string(),user_id:r.z.string().nullish(),input_text:r.z.string(),llm_analysis:oe,risk_score:r.z.number(),expert_advice:r.z.string().nullish(),expert_reviewed:r.z.boolean(),expert_reviewed_at:r.z.string().nullish(),expert_reviewed_by:r.z.string().nullish(),created_at:r.z.string(),updated_at:r.z.string()}),pe=r.z.union([me,r.z.object({id:r.z.string(),quick_summary:de,signup_required:r.z.literal(!0)})]);class ue extends b.BaseCrudRepository{constructor(){super(...arguments),this.resource="trade-safety"}getDataSchema(){return pe}}const ge={high:70,medium:40},he={tradeSafety:{hero:{title:"Worried About a Trade?",subtitle:"Trade safety verification for global K-pop fans. AI analyzes language barriers, scam risks, and price fairness in 30 seconds.",placeholder:`Paste trade post text or URL...
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),l=require("framer-motion"),c=require("react-i18next"),v=require("react"),h=require("next/link"),b=require("@aioia/core"),r=require("zod");function y(a){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(a){for(const n in a)if(n!=="default"){const i=Object.getOwnPropertyDescriptor(a,n);Object.defineProperty(t,n,i.get?i:{enumerable:!0,get:()=>a[n]})}}return t.default=a,Object.freeze(t)}const s=y(v);function j({title:a,titleId:t,...n},i){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true","data-slot":"icon",ref:i,"aria-labelledby":t},n),a?s.createElement("title",{id:t},a):null,s.createElement("path",{fillRule:"evenodd",d:"M4.804 21.644A6.707 6.707 0 0 0 6 21.75a6.721 6.721 0 0 0 3.583-1.029c.774.182 1.584.279 2.417.279 5.322 0 9.75-3.97 9.75-9 0-5.03-4.428-9-9.75-9s-9.75 3.97-9.75 9c0 2.409 1.025 4.587 2.674 6.192.232.226.277.428.254.543a3.73 3.73 0 0 1-.814 1.686.75.75 0 0 0 .44 1.223ZM8.25 10.875a1.125 1.125 0 1 0 0 2.25 1.125 1.125 0 0 0 0-2.25ZM10.875 12a1.125 1.125 0 1 1 2.25 0 1.125 1.125 0 0 1-2.25 0Zm4.875-1.125a1.125 1.125 0 1 0 0 2.25 1.125 1.125 0 0 0 0-2.25Z",clipRule:"evenodd"}))}const w=s.forwardRef(j);function k({title:a,titleId:t,...n},i){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true","data-slot":"icon",ref:i,"aria-labelledby":t},n),a?s.createElement("title",{id:t},a):null,s.createElement("path",{fillRule:"evenodd",d:"M8.603 3.799A4.49 4.49 0 0 1 12 2.25c1.357 0 2.573.6 3.397 1.549a4.49 4.49 0 0 1 3.498 1.307 4.491 4.491 0 0 1 1.307 3.497A4.49 4.49 0 0 1 21.75 12a4.49 4.49 0 0 1-1.549 3.397 4.491 4.491 0 0 1-1.307 3.497 4.491 4.491 0 0 1-3.497 1.307A4.49 4.49 0 0 1 12 21.75a4.49 4.49 0 0 1-3.397-1.549 4.49 4.49 0 0 1-3.498-1.306 4.491 4.491 0 0 1-1.307-3.498A4.49 4.49 0 0 1 2.25 12c0-1.357.6-2.573 1.549-3.397a4.49 4.49 0 0 1 1.307-3.497 4.49 4.49 0 0 1 3.497-1.307Zm7.007 6.387a.75.75 0 1 0-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 0 0-1.06 1.06l2.25 2.25a.75.75 0 0 0 1.14-.094l3.75-5.25Z",clipRule:"evenodd"}))}const A=s.forwardRef(k);function S({title:a,titleId:t,...n},i){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true","data-slot":"icon",ref:i,"aria-labelledby":t},n),a?s.createElement("title",{id:t},a):null,s.createElement("path",{fillRule:"evenodd",d:"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm13.36-1.814a.75.75 0 1 0-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 0 0-1.06 1.06l2.25 2.25a.75.75 0 0 0 1.14-.094l3.75-5.25Z",clipRule:"evenodd"}))}const N=s.forwardRef(S);function R({title:a,titleId:t,...n},i){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true","data-slot":"icon",ref:i,"aria-labelledby":t},n),a?s.createElement("title",{id:t},a):null,s.createElement("path",{fillRule:"evenodd",d:"M7.502 6h7.128A3.375 3.375 0 0 1 18 9.375v9.375a3 3 0 0 0 3-3V6.108c0-1.505-1.125-2.811-2.664-2.94a48.972 48.972 0 0 0-.673-.05A3 3 0 0 0 15 1.5h-1.5a3 3 0 0 0-2.663 1.618c-.225.015-.45.032-.673.05C8.662 3.295 7.554 4.542 7.502 6ZM13.5 3A1.5 1.5 0 0 0 12 4.5h4.5A1.5 1.5 0 0 0 15 3h-1.5Z",clipRule:"evenodd"}),s.createElement("path",{fillRule:"evenodd",d:"M3 9.375C3 8.339 3.84 7.5 4.875 7.5h9.75c1.036 0 1.875.84 1.875 1.875v11.25c0 1.035-.84 1.875-1.875 1.875h-9.75A1.875 1.875 0 0 1 3 20.625V9.375Zm9.586 4.594a.75.75 0 0 0-1.172-.938l-2.476 3.096-.908-.907a.75.75 0 0 0-1.06 1.06l1.5 1.5a.75.75 0 0 0 1.116-.062l3-3.75Z",clipRule:"evenodd"}))}const T=s.forwardRef(R);function I({title:a,titleId:t,...n},i){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true","data-slot":"icon",ref:i,"aria-labelledby":t},n),a?s.createElement("title",{id:t},a):null,s.createElement("path",{d:"M10.464 8.746c.227-.18.497-.311.786-.394v2.795a2.252 2.252 0 0 1-.786-.393c-.394-.313-.546-.681-.546-1.004 0-.323.152-.691.546-1.004ZM12.75 15.662v-2.824c.347.085.664.228.921.421.427.32.579.686.579.991 0 .305-.152.671-.579.991a2.534 2.534 0 0 1-.921.42Z"}),s.createElement("path",{fillRule:"evenodd",d:"M12 2.25c-5.385 0-9.75 4.365-9.75 9.75s4.365 9.75 9.75 9.75 9.75-4.365 9.75-9.75S17.385 2.25 12 2.25ZM12.75 6a.75.75 0 0 0-1.5 0v.816a3.836 3.836 0 0 0-1.72.756c-.712.566-1.112 1.35-1.112 2.178 0 .829.4 1.612 1.113 2.178.502.4 1.102.647 1.719.756v2.978a2.536 2.536 0 0 1-.921-.421l-.879-.66a.75.75 0 0 0-.9 1.2l.879.66c.533.4 1.169.645 1.821.75V18a.75.75 0 0 0 1.5 0v-.81a4.124 4.124 0 0 0 1.821-.749c.745-.559 1.179-1.344 1.179-2.191 0-.847-.434-1.632-1.179-2.191a4.122 4.122 0 0 0-1.821-.75V8.354c.29.082.559.213.786.393l.415.33a.75.75 0 0 0 .933-1.175l-.415-.33a3.836 3.836 0 0 0-1.719-.755V6Z",clipRule:"evenodd"}))}const z=s.forwardRef(I);function C({title:a,titleId:t,...n},i){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true","data-slot":"icon",ref:i,"aria-labelledby":t},n),a?s.createElement("title",{id:t},a):null,s.createElement("path",{fillRule:"evenodd",d:"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12ZM12 8.25a.75.75 0 0 1 .75.75v3.75a.75.75 0 0 1-1.5 0V9a.75.75 0 0 1 .75-.75Zm0 8.25a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z",clipRule:"evenodd"}))}const D=s.forwardRef(C);function E({title:a,titleId:t,...n},i){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true","data-slot":"icon",ref:i,"aria-labelledby":t},n),a?s.createElement("title",{id:t},a):null,s.createElement("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003ZM12 8.25a.75.75 0 0 1 .75.75v3.75a.75.75 0 0 1-1.5 0V9a.75.75 0 0 1 .75-.75Zm0 8.25a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z",clipRule:"evenodd"}))}const p=s.forwardRef(E);function P({title:a,titleId:t,...n},i){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true","data-slot":"icon",ref:i,"aria-labelledby":t},n),a?s.createElement("title",{id:t},a):null,s.createElement("path",{d:"m11.645 20.91-.007-.003-.022-.012a15.247 15.247 0 0 1-.383-.218 25.18 25.18 0 0 1-4.244-3.17C4.688 15.36 2.25 12.174 2.25 8.25 2.25 5.322 4.714 3 7.688 3A5.5 5.5 0 0 1 12 5.052 5.5 5.5 0 0 1 16.313 3c2.973 0 5.437 2.322 5.437 5.25 0 3.925-2.438 7.111-4.739 9.256a25.175 25.175 0 0 1-4.244 3.17 15.247 15.247 0 0 1-.383.219l-.022.012-.007.004-.003.001a.752.752 0 0 1-.704 0l-.003-.001Z"}))}const _=s.forwardRef(P);function M({title:a,titleId:t,...n},i){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true","data-slot":"icon",ref:i,"aria-labelledby":t},n),a?s.createElement("title",{id:t},a):null,s.createElement("path",{fillRule:"evenodd",d:"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm8.706-1.442c1.146-.573 2.437.463 2.126 1.706l-.709 2.836.042-.02a.75.75 0 0 1 .67 1.34l-.04.022c-1.147.573-2.438-.463-2.127-1.706l.71-2.836-.042.02a.75.75 0 1 1-.671-1.34l.041-.022ZM12 9a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z",clipRule:"evenodd"}))}const O=s.forwardRef(M);function L({title:a,titleId:t,...n},i){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true","data-slot":"icon",ref:i,"aria-labelledby":t},n),a?s.createElement("title",{id:t},a):null,s.createElement("path",{fillRule:"evenodd",d:"M9 2.25a.75.75 0 0 1 .75.75v1.506a49.384 49.384 0 0 1 5.343.371.75.75 0 1 1-.186 1.489c-.66-.083-1.323-.151-1.99-.206a18.67 18.67 0 0 1-2.97 6.323c.318.384.65.753 1 1.107a.75.75 0 0 1-1.07 1.052A18.902 18.902 0 0 1 9 13.687a18.823 18.823 0 0 1-5.656 4.482.75.75 0 0 1-.688-1.333 17.323 17.323 0 0 0 5.396-4.353A18.72 18.72 0 0 1 5.89 8.598a.75.75 0 0 1 1.388-.568A17.21 17.21 0 0 0 9 11.224a17.168 17.168 0 0 0 2.391-5.165 48.04 48.04 0 0 0-8.298.307.75.75 0 0 1-.186-1.489 49.159 49.159 0 0 1 5.343-.371V3A.75.75 0 0 1 9 2.25ZM15.75 9a.75.75 0 0 1 .68.433l5.25 11.25a.75.75 0 1 1-1.36.634l-1.198-2.567h-6.744l-1.198 2.567a.75.75 0 0 1-1.36-.634l5.25-11.25A.75.75 0 0 1 15.75 9Zm-2.672 8.25h5.344l-2.672-5.726-2.672 5.726Z",clipRule:"evenodd"}))}const Z=s.forwardRef(L);function B({title:a,titleId:t,...n},i){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true","data-slot":"icon",ref:i,"aria-labelledby":t},n),a?s.createElement("title",{id:t},a):null,s.createElement("path",{d:"M12 .75a8.25 8.25 0 0 0-4.135 15.39c.686.398 1.115 1.008 1.134 1.623a.75.75 0 0 0 .577.706c.352.083.71.148 1.074.195.323.041.6-.218.6-.544v-4.661a6.714 6.714 0 0 1-.937-.171.75.75 0 1 1 .374-1.453 5.261 5.261 0 0 0 2.626 0 .75.75 0 1 1 .374 1.452 6.712 6.712 0 0 1-.937.172v4.66c0 .327.277.586.6.545.364-.047.722-.112 1.074-.195a.75.75 0 0 0 .577-.706c.02-.615.448-1.225 1.134-1.623A8.25 8.25 0 0 0 12 .75Z"}),s.createElement("path",{fillRule:"evenodd",d:"M9.013 19.9a.75.75 0 0 1 .877-.597 11.319 11.319 0 0 0 4.22 0 .75.75 0 1 1 .28 1.473 12.819 12.819 0 0 1-4.78 0 .75.75 0 0 1-.597-.876ZM9.754 22.344a.75.75 0 0 1 .824-.668 13.682 13.682 0 0 0 2.844 0 .75.75 0 1 1 .156 1.492 15.156 15.156 0 0 1-3.156 0 .75.75 0 0 1-.668-.824Z",clipRule:"evenodd"}))}const $=s.forwardRef(B);function H({title:a,titleId:t,...n},i){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true","data-slot":"icon",ref:i,"aria-labelledby":t},n),a?s.createElement("title",{id:t},a):null,s.createElement("path",{fillRule:"evenodd",d:"M11.484 2.17a.75.75 0 0 1 1.032 0 11.209 11.209 0 0 0 7.877 3.08.75.75 0 0 1 .722.515 12.74 12.74 0 0 1 .635 3.985c0 5.942-4.064 10.933-9.563 12.348a.749.749 0 0 1-.374 0C6.314 20.683 2.25 15.692 2.25 9.75c0-1.39.223-2.73.635-3.985a.75.75 0 0 1 .722-.516l.143.001c2.996 0 5.718-1.17 7.734-3.08ZM12 8.25a.75.75 0 0 1 .75.75v3.75a.75.75 0 0 1-1.5 0V9a.75.75 0 0 1 .75-.75ZM12 15a.75.75 0 0 0-.75.75v.008c0 .414.336.75.75.75h.008a.75.75 0 0 0 .75-.75v-.008a.75.75 0 0 0-.75-.75H12Z",clipRule:"evenodd"}))}const x=s.forwardRef(H);function q({title:a,titleId:t,...n},i){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true","data-slot":"icon",ref:i,"aria-labelledby":t},n),a?s.createElement("title",{id:t},a):null,s.createElement("path",{fillRule:"evenodd",d:"M7.5 6a4.5 4.5 0 1 1 9 0 4.5 4.5 0 0 1-9 0ZM3.751 20.105a8.25 8.25 0 0 1 16.498 0 .75.75 0 0 1-.437.695A18.683 18.683 0 0 1 12 22.5c-2.786 0-5.433-.608-7.812-1.7a.75.75 0 0 1-.437-.695Z",clipRule:"evenodd"}))}const K=s.forwardRef(q);function f(a){var t,n,i="";if(typeof a=="string"||typeof a=="number")i+=a;else if(typeof a=="object")if(Array.isArray(a)){var o=a.length;for(t=0;t<o;t++)a[t]&&(n=f(a[t]))&&(i&&(i+=" "),i+=n)}else for(n in a)a[n]&&(i&&(i+=" "),i+=n);return i}function m(){for(var a,t,n=0,i="",o=arguments.length;n<o;n++)(a=arguments[n])&&(t=f(a))&&(i&&(i+=" "),i+=t);return i}const U={error:"bg-error/10 border-error/30",warning:"bg-warning/10 border-warning/30",success:"bg-success/10 border-success/30"},F={error:"text-error",warning:"text-warning",success:"text-success"},V={high:D,medium:p,low:O};function u({signal:a,variant:t="error"}){const{t:n}=c.useTranslation(),i=V[a.severity];return e.jsx("div",{className:m("card border-2 backdrop-blur-sm",U[t]),children:e.jsx("div",{className:"card-body",children:e.jsxs("div",{className:"flex items-start gap-4",children:[e.jsx(i,{className:m("size-8 mt-1 shrink-0",F[t])}),e.jsxs("div",{className:"flex-1",children:[e.jsx("h4",{className:"card-title text-xl",children:a.title}),e.jsx("p",{className:"mt-2 text-neutral-content",children:a.description}),e.jsxs("div",{className:"mt-4 rounded-lg bg-base-100/50 p-4",children:[e.jsxs("p",{className:"mb-2 text-sm font-semibold",children:["💡 ",n("page.tradeSafety.result.whatToDo")]}),e.jsx("p",{className:"text-sm",children:a.what_to_do})]})]})]})})})}function W({cautions:a}){const{t}=c.useTranslation();return a.length===0?null:e.jsxs("section",{children:[e.jsxs("h3",{className:"mb-6 flex items-center gap-3 text-3xl font-bold",children:[e.jsx(p,{className:"size-10 text-warning"}),t("page.tradeSafety.result.cautions")]}),e.jsx("div",{className:"space-y-4",children:a.map((n,i)=>e.jsx(l.motion.div,{initial:{x:-50,opacity:0},animate:{x:0,opacity:1},transition:{delay:i*.1},whileHover:{scale:1.02,x:10},children:e.jsx(u,{signal:n,variant:"warning"})},i))})]})}function J(){const{t:a,i18n:t}=c.useTranslation(),n=t.language;return e.jsx("section",{className:"hero min-h-[30vh] rounded-3xl bg-primary text-primary-content",children:e.jsx("div",{className:"hero-content text-center",children:e.jsxs("div",{children:[e.jsx(w,{className:"mx-auto mb-6 size-20"}),e.jsx("h3",{className:"mb-4 text-4xl font-bold",children:a("page.tradeSafety.result.companionCta.title")}),e.jsx("p",{className:"mb-8 max-w-2xl text-xl",children:a("page.tradeSafety.result.companionCta.description")}),e.jsx(h,{href:`/${n}/companions`,children:e.jsx(l.motion.button,{whileHover:{scale:1.1},whileTap:{scale:.95},className:"btn btn-lg bg-base-100 text-primary hover:bg-base-200",children:a("page.tradeSafety.result.companionCta.button")})})]})})})}function G({advice:a}){const{t}=c.useTranslation();return e.jsx(l.motion.section,{whileHover:{scale:1.02},className:"card bg-secondary text-secondary-content shadow-xl",children:e.jsxs("div",{className:"card-body",children:[e.jsxs("div",{className:"mb-6 flex items-center gap-4",children:[e.jsx("div",{className:"avatar placeholder",children:e.jsx("div",{className:"w-16 rounded-full bg-primary text-primary-content",children:e.jsx(K,{className:"size-8"})})}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-2xl font-bold",children:t("page.tradeSafety.result.expertAdvice")}),e.jsx("p",{className:"opacity-80",children:t("page.tradeSafety.result.expertName")})]})]}),e.jsx("div",{className:"prose max-w-none",children:e.jsx("p",{className:"whitespace-pre-wrap text-lg",children:a})})]})})}function Q({data:a}){const{t,i18n:n}=c.useTranslation();return a?e.jsxs("section",{children:[e.jsxs("h3",{className:"mb-6 flex items-center gap-3 text-3xl font-bold",children:[e.jsx(z,{className:"size-10 text-secondary"}),t("page.tradeSafety.result.priceAnalysis")]}),e.jsx("div",{className:"card bg-base-200 shadow-xl",children:e.jsxs("div",{className:"card-body",children:[e.jsxs("div",{className:"grid grid-cols-1 gap-6 md:grid-cols-2",children:[a.market_price_range&&e.jsxs("div",{children:[e.jsx("h4",{className:"mb-2 text-lg font-semibold",children:t("page.tradeSafety.result.marketPrice")}),e.jsx("p",{className:"text-2xl font-bold",children:a.market_price_range})]}),a.offered_price&&e.jsxs("div",{children:[e.jsx("h4",{className:"mb-2 text-lg font-semibold",children:t("page.tradeSafety.result.offeredPrice")}),e.jsx("p",{className:"text-2xl font-bold text-primary",children:new Intl.NumberFormat(n.language,{style:"currency",currency:a.currency||"USD"}).format(a.offered_price)})]})]}),e.jsxs("div",{className:"mt-6 rounded-lg bg-base-100 p-4",children:[e.jsx("h4",{className:"mb-2 text-lg font-semibold",children:t("page.tradeSafety.result.priceAssessment")}),e.jsx("p",{className:"text-neutral-content",children:a.price_assessment})]}),a.warnings.length>0&&e.jsxs("div",{className:"mt-4",children:[e.jsxs("h4",{className:"mb-2 flex items-center gap-2 text-lg font-semibold text-warning",children:[e.jsx(p,{className:"size-6"}),t("page.tradeSafety.result.priceWarnings")]}),e.jsx("ul",{className:"list-inside list-disc space-y-1",children:a.warnings.map((i,o)=>e.jsx("li",{className:"text-neutral-content",children:i},o))})]})]})})]}):null}function X({recommendation:a,emotionalSupport:t}){const{t:n}=c.useTranslation();return e.jsxs("section",{children:[e.jsxs("h3",{className:"mb-6 flex items-center gap-3 text-3xl font-bold",children:[e.jsx($,{className:"size-10 text-warning"}),n("page.tradeSafety.result.recommendation")]}),e.jsx("div",{className:"card bg-base-200 shadow-xl",children:e.jsxs("div",{className:"card-body",children:[e.jsx("div",{className:"prose max-w-none",children:e.jsx("p",{className:"whitespace-pre-wrap text-lg text-neutral-content",children:a})}),e.jsx("div",{className:"divider"}),e.jsx("div",{className:"rounded-lg bg-base-100 p-4",children:e.jsxs("p",{className:"flex items-center gap-2 text-lg font-medium",children:[e.jsx(_,{className:"size-6 text-info"})," ",t]})})]})})]})}function Y(a){return a>=70?{level:"high",color:"error",Icon:x}:a>=40?{level:"medium",color:"warning",Icon:p}:{level:"low",color:"success",Icon:A}}function ee({score:a}){const{t}=c.useTranslation(),n=Y(a),{Icon:i}=n,o={error:"text-error",warning:"text-warning",success:"text-success"};return e.jsx("div",{className:"hero min-h-[40vh] rounded-3xl bg-base-200",children:e.jsx("div",{className:"hero-content text-center",children:e.jsxs("div",{children:[e.jsx("div",{className:"mb-4",children:e.jsx(i,{className:m("size-32",o[n.color])})}),e.jsx("h2",{className:"mb-4 text-5xl font-bold",children:t(`page.tradeSafety.result.riskLevel.${n.level}.title`)}),e.jsx("div",{className:"mx-auto w-64",children:e.jsx("div",{className:m("radial-progress",o[n.color]),style:{"--value":a,"--size":"12rem","--thickness":"1rem"},role:"progressbar",children:e.jsx("span",{className:"text-5xl font-bold",children:a})})}),e.jsx("p",{className:"mt-6 max-w-lg text-xl text-neutral-content",children:t(`page.tradeSafety.result.riskLevel.${n.level}.message`)})]})})})}function ae({signals:a}){const{t}=c.useTranslation();return a.length===0?null:e.jsxs("section",{children:[e.jsxs("h3",{className:"mb-6 flex items-center gap-3 text-3xl font-bold",children:[e.jsx(x,{className:"size-10 text-error"}),t("page.tradeSafety.result.riskSignals")]}),e.jsx("div",{className:"space-y-4",children:a.map((n,i)=>e.jsx(l.motion.div,{initial:{x:-50,opacity:0},animate:{x:0,opacity:1},transition:{delay:i*.1},whileHover:{scale:1.02,x:10},children:e.jsx(u,{signal:n,variant:"error"})},i))})]})}function te({indicators:a}){const{t}=c.useTranslation();return a.length===0?null:e.jsxs("section",{children:[e.jsxs("h3",{className:"mb-6 flex items-center gap-3 text-3xl font-bold",children:[e.jsx(N,{className:"size-10 text-success"}),t("page.tradeSafety.result.safeIndicators")]}),e.jsx("div",{className:"space-y-4",children:a.map((n,i)=>e.jsx(l.motion.div,{initial:{x:-50,opacity:0},animate:{x:0,opacity:1},transition:{delay:i*.1},whileHover:{scale:1.02,x:10},children:e.jsx(u,{signal:n,variant:"success"})},i))})]})}function ne({items:a}){const{t}=c.useTranslation();return a.length===0?null:e.jsxs("section",{children:[e.jsxs("h3",{className:"mb-6 flex items-center gap-3 text-3xl font-bold",children:[e.jsx(T,{className:"size-10 text-primary"}),t("page.tradeSafety.result.safetyChecklist")]}),e.jsx("div",{className:"card border-2 border-primary/30 bg-base-200",children:e.jsxs("div",{className:"card-body",children:[e.jsx("p",{className:"mb-6 text-lg text-neutral-content",children:t("page.tradeSafety.result.checklistDescription")}),e.jsx("div",{className:"space-y-3",children:a.map((n,i)=>e.jsxs(l.motion.label,{initial:{x:-20,opacity:0},animate:{x:0,opacity:1},transition:{delay:i*.08},className:"flex cursor-pointer items-start gap-3 rounded-lg p-3 hover:bg-base-100/30",children:[e.jsx("input",{type:"checkbox",className:"checkbox-primary checkbox mt-1"}),e.jsx("span",{className:"text-lg",children:n})]},i))})]})})]})}function ie({translation:a,nuance:t}){const{t:n}=c.useTranslation();return!a&&!t?null:e.jsxs("section",{children:[e.jsxs("h3",{className:"mb-6 flex items-center gap-3 text-3xl font-bold",children:[e.jsx(Z,{className:"size-10 text-primary"}),n("page.tradeSafety.result.translation")]}),e.jsx("div",{className:"card bg-base-200 shadow-xl",children:e.jsxs("div",{className:"card-body",children:[a&&e.jsxs("div",{className:"mb-4",children:[e.jsx("h4",{className:"mb-2 text-lg font-semibold",children:n("page.tradeSafety.result.translationTitle")}),e.jsx("p",{className:"whitespace-pre-wrap text-neutral-content",children:a})]}),t&&e.jsxs("div",{children:[e.jsx("h4",{className:"mb-2 text-lg font-semibold",children:n("page.tradeSafety.result.nuanceTitle")}),e.jsx("p",{className:"whitespace-pre-wrap text-neutral-content",children:t})]})]})})]})}const d={initial:{y:40,opacity:0},animate:{y:0,opacity:1,transition:{duration:.6}}},se={animate:{transition:{staggerChildren:.15}}};function re({analysis:a,expertAdvice:t,showCompanionCta:n=!1}){return e.jsxs(l.motion.div,{variants:se,initial:"initial",animate:"animate",className:"mx-auto max-w-5xl space-y-12",children:[e.jsx(l.motion.div,{variants:d,children:e.jsx(ee,{score:a.risk_score})}),(a.translation||a.nuance_explanation)&&e.jsx(l.motion.div,{variants:d,children:e.jsx(ie,{translation:a.translation,nuance:a.nuance_explanation})}),a.risk_signals.length>0&&e.jsx(l.motion.div,{variants:d,children:e.jsx(ae,{signals:a.risk_signals})}),a.cautions.length>0&&e.jsx(l.motion.div,{variants:d,children:e.jsx(W,{cautions:a.cautions})}),a.safe_indicators.length>0&&e.jsx(l.motion.div,{variants:d,children:e.jsx(te,{indicators:a.safe_indicators})}),a.price_analysis&&e.jsx(l.motion.div,{variants:d,children:e.jsx(Q,{data:a.price_analysis})}),a.safety_checklist.length>0&&e.jsx(l.motion.div,{variants:d,children:e.jsx(ne,{items:a.safety_checklist})}),t&&e.jsx(l.motion.div,{variants:d,children:e.jsx(G,{advice:t})}),e.jsx(l.motion.div,{variants:d,children:e.jsx(X,{recommendation:a.recommendation,emotionalSupport:a.emotional_support})}),n&&e.jsx(l.motion.div,{variants:d,children:e.jsx(J,{})})]})}function le({summary:a,checkId:t}){const{t:n,i18n:i}=c.useTranslation(),o=i.language;return e.jsxs("div",{className:"mx-auto max-w-2xl",children:[e.jsx("h1",{className:"mb-8 text-center text-3xl font-bold",children:n("page.tradeSafety.result.title")}),e.jsxs("div",{className:"mb-8 grid grid-cols-1 gap-4 md:grid-cols-3",children:[e.jsx("div",{className:"card bg-error/10",children:e.jsxs("div",{className:"card-body items-center text-center",children:[e.jsx("h3",{className:"text-4xl font-bold text-error",children:a.risk_signals_count}),e.jsx("p",{className:"text-sm",children:n("page.tradeSafety.result.riskSignals")})]})}),e.jsx("div",{className:"card bg-warning/10",children:e.jsxs("div",{className:"card-body items-center text-center",children:[e.jsx("h3",{className:"text-4xl font-bold text-warning",children:a.cautions_count}),e.jsx("p",{className:"text-sm",children:n("page.tradeSafety.result.cautions")})]})}),e.jsx("div",{className:"card bg-success/10",children:e.jsxs("div",{className:"card-body items-center text-center",children:[e.jsx("h3",{className:"text-4xl font-bold text-success",children:a.safe_indicators_count}),e.jsx("p",{className:"text-sm",children:n("page.tradeSafety.result.safeIndicators")})]})})]}),e.jsx("div",{className:"card bg-base-200 shadow-xl",children:e.jsxs("div",{className:"card-body items-center text-center",children:[e.jsx("h2",{className:"card-title text-2xl",children:n("page.tradeSafety.result.signupRequired")}),e.jsx("p",{className:"mb-4 text-neutral-content",children:n("page.tradeSafety.result.signupMessage")}),e.jsx(h,{href:`/${o}/login?callbackUrl=${encodeURIComponent(`/${o}/trade-safety/result/${t}`)}`,className:"btn btn-primary",children:n("login")})]})})]})}const g=r.z.object({category:r.z.enum(["payment","seller","platform","price","content"]),severity:r.z.enum(["high","medium","low"]),title:r.z.string(),description:r.z.string(),what_to_do:r.z.string()}),ce=r.z.object({market_price_range:r.z.string().nullish(),offered_price:r.z.number().nullish(),currency:r.z.string().nullish(),price_assessment:r.z.string(),warnings:r.z.array(r.z.string())}),oe=r.z.object({translation:r.z.string().nullish(),nuance_explanation:r.z.string().nullish(),risk_signals:r.z.array(g),cautions:r.z.array(g),safe_indicators:r.z.array(g),price_analysis:ce,safety_checklist:r.z.array(r.z.string()),risk_score:r.z.number(),recommendation:r.z.string(),emotional_support:r.z.string()}),de=r.z.object({risk_signals_count:r.z.number(),cautions_count:r.z.number(),safe_indicators_count:r.z.number()}),me=r.z.object({id:r.z.string(),user_id:r.z.string().nullish(),input_text:r.z.string(),llm_analysis:oe,risk_score:r.z.number(),expert_advice:r.z.string().nullish(),expert_reviewed:r.z.boolean(),expert_reviewed_at:r.z.string().nullish(),expert_reviewed_by:r.z.string().nullish(),created_at:r.z.string(),updated_at:r.z.string()}),pe=r.z.union([me,r.z.object({id:r.z.string(),quick_summary:de,signup_required:r.z.literal(!0)})]);class ue extends b.BaseCrudRepository{constructor(){super(...arguments),this.resource="trade-safety"}getDataSchema(){return pe}}const ge={high:70,medium:40},he={tradeSafety:{hero:{title:"Worried About a Trade?",subtitle:"Trade safety verification for global K-pop fans. AI analyzes language barriers, scam risks, and price fairness in 30 seconds.",placeholder:`Paste trade post text or URL...
|
|
2
2
|
|
|
3
3
|
Example:
|
|
4
4
|
급처분 ㅠㅠ 공구 실패해서 양도해요
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../node_modules/@heroicons/react/24/solid/esm/ChatBubbleOvalLeftEllipsisIcon.js","../node_modules/@heroicons/react/24/solid/esm/CheckBadgeIcon.js","../node_modules/@heroicons/react/24/solid/esm/CheckCircleIcon.js","../node_modules/@heroicons/react/24/solid/esm/ClipboardDocumentCheckIcon.js","../node_modules/@heroicons/react/24/solid/esm/CurrencyDollarIcon.js","../node_modules/@heroicons/react/24/solid/esm/ExclamationCircleIcon.js","../node_modules/@heroicons/react/24/solid/esm/ExclamationTriangleIcon.js","../node_modules/@heroicons/react/24/solid/esm/HeartIcon.js","../node_modules/@heroicons/react/24/solid/esm/InformationCircleIcon.js","../node_modules/@heroicons/react/24/solid/esm/LanguageIcon.js","../node_modules/@heroicons/react/24/solid/esm/LightBulbIcon.js","../node_modules/@heroicons/react/24/solid/esm/ShieldExclamationIcon.js","../node_modules/@heroicons/react/24/solid/esm/UserIcon.js","../node_modules/clsx/dist/clsx.mjs","../src/components/RiskSignalCard.tsx","../src/components/DetailedResult/CautionsSection.tsx","../src/components/DetailedResult/CompanionCtaSection.tsx","../src/components/DetailedResult/ExpertAdviceSection.tsx","../src/components/DetailedResult/PriceAnalysisSection.tsx","../src/components/DetailedResult/RecommendationSection.tsx","../src/components/DetailedResult/RiskScoreHero.tsx","../src/components/DetailedResult/RiskSignalsSection.tsx","../src/components/DetailedResult/SafeIndicatorsSection.tsx","../src/components/DetailedResult/SafetyChecklistSection.tsx","../src/components/DetailedResult/TranslationSection.tsx","../src/components/DetailedResult/index.tsx","../src/components/QuickResultTeaser.tsx","../src/repositories/TradeSafetyRepository.ts","../src/types.ts"],"sourcesContent":["import * as React from \"react\";\nfunction ChatBubbleOvalLeftEllipsisIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M4.804 21.644A6.707 6.707 0 0 0 6 21.75a6.721 6.721 0 0 0 3.583-1.029c.774.182 1.584.279 2.417.279 5.322 0 9.75-3.97 9.75-9 0-5.03-4.428-9-9.75-9s-9.75 3.97-9.75 9c0 2.409 1.025 4.587 2.674 6.192.232.226.277.428.254.543a3.73 3.73 0 0 1-.814 1.686.75.75 0 0 0 .44 1.223ZM8.25 10.875a1.125 1.125 0 1 0 0 2.25 1.125 1.125 0 0 0 0-2.25ZM10.875 12a1.125 1.125 0 1 1 2.25 0 1.125 1.125 0 0 1-2.25 0Zm4.875-1.125a1.125 1.125 0 1 0 0 2.25 1.125 1.125 0 0 0 0-2.25Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ChatBubbleOvalLeftEllipsisIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction CheckBadgeIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M8.603 3.799A4.49 4.49 0 0 1 12 2.25c1.357 0 2.573.6 3.397 1.549a4.49 4.49 0 0 1 3.498 1.307 4.491 4.491 0 0 1 1.307 3.497A4.49 4.49 0 0 1 21.75 12a4.49 4.49 0 0 1-1.549 3.397 4.491 4.491 0 0 1-1.307 3.497 4.491 4.491 0 0 1-3.497 1.307A4.49 4.49 0 0 1 12 21.75a4.49 4.49 0 0 1-3.397-1.549 4.49 4.49 0 0 1-3.498-1.306 4.491 4.491 0 0 1-1.307-3.498A4.49 4.49 0 0 1 2.25 12c0-1.357.6-2.573 1.549-3.397a4.49 4.49 0 0 1 1.307-3.497 4.49 4.49 0 0 1 3.497-1.307Zm7.007 6.387a.75.75 0 1 0-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 0 0-1.06 1.06l2.25 2.25a.75.75 0 0 0 1.14-.094l3.75-5.25Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(CheckBadgeIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction CheckCircleIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm13.36-1.814a.75.75 0 1 0-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 0 0-1.06 1.06l2.25 2.25a.75.75 0 0 0 1.14-.094l3.75-5.25Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(CheckCircleIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction ClipboardDocumentCheckIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M7.502 6h7.128A3.375 3.375 0 0 1 18 9.375v9.375a3 3 0 0 0 3-3V6.108c0-1.505-1.125-2.811-2.664-2.94a48.972 48.972 0 0 0-.673-.05A3 3 0 0 0 15 1.5h-1.5a3 3 0 0 0-2.663 1.618c-.225.015-.45.032-.673.05C8.662 3.295 7.554 4.542 7.502 6ZM13.5 3A1.5 1.5 0 0 0 12 4.5h4.5A1.5 1.5 0 0 0 15 3h-1.5Z\",\n clipRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M3 9.375C3 8.339 3.84 7.5 4.875 7.5h9.75c1.036 0 1.875.84 1.875 1.875v11.25c0 1.035-.84 1.875-1.875 1.875h-9.75A1.875 1.875 0 0 1 3 20.625V9.375Zm9.586 4.594a.75.75 0 0 0-1.172-.938l-2.476 3.096-.908-.907a.75.75 0 0 0-1.06 1.06l1.5 1.5a.75.75 0 0 0 1.116-.062l3-3.75Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ClipboardDocumentCheckIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction CurrencyDollarIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.464 8.746c.227-.18.497-.311.786-.394v2.795a2.252 2.252 0 0 1-.786-.393c-.394-.313-.546-.681-.546-1.004 0-.323.152-.691.546-1.004ZM12.75 15.662v-2.824c.347.085.664.228.921.421.427.32.579.686.579.991 0 .305-.152.671-.579.991a2.534 2.534 0 0 1-.921.42Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M12 2.25c-5.385 0-9.75 4.365-9.75 9.75s4.365 9.75 9.75 9.75 9.75-4.365 9.75-9.75S17.385 2.25 12 2.25ZM12.75 6a.75.75 0 0 0-1.5 0v.816a3.836 3.836 0 0 0-1.72.756c-.712.566-1.112 1.35-1.112 2.178 0 .829.4 1.612 1.113 2.178.502.4 1.102.647 1.719.756v2.978a2.536 2.536 0 0 1-.921-.421l-.879-.66a.75.75 0 0 0-.9 1.2l.879.66c.533.4 1.169.645 1.821.75V18a.75.75 0 0 0 1.5 0v-.81a4.124 4.124 0 0 0 1.821-.749c.745-.559 1.179-1.344 1.179-2.191 0-.847-.434-1.632-1.179-2.191a4.122 4.122 0 0 0-1.821-.75V8.354c.29.082.559.213.786.393l.415.33a.75.75 0 0 0 .933-1.175l-.415-.33a3.836 3.836 0 0 0-1.719-.755V6Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(CurrencyDollarIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction ExclamationCircleIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12ZM12 8.25a.75.75 0 0 1 .75.75v3.75a.75.75 0 0 1-1.5 0V9a.75.75 0 0 1 .75-.75Zm0 8.25a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ExclamationCircleIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction ExclamationTriangleIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003ZM12 8.25a.75.75 0 0 1 .75.75v3.75a.75.75 0 0 1-1.5 0V9a.75.75 0 0 1 .75-.75Zm0 8.25a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ExclamationTriangleIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction HeartIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"m11.645 20.91-.007-.003-.022-.012a15.247 15.247 0 0 1-.383-.218 25.18 25.18 0 0 1-4.244-3.17C4.688 15.36 2.25 12.174 2.25 8.25 2.25 5.322 4.714 3 7.688 3A5.5 5.5 0 0 1 12 5.052 5.5 5.5 0 0 1 16.313 3c2.973 0 5.437 2.322 5.437 5.25 0 3.925-2.438 7.111-4.739 9.256a25.175 25.175 0 0 1-4.244 3.17 15.247 15.247 0 0 1-.383.219l-.022.012-.007.004-.003.001a.752.752 0 0 1-.704 0l-.003-.001Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(HeartIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction InformationCircleIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm8.706-1.442c1.146-.573 2.437.463 2.126 1.706l-.709 2.836.042-.02a.75.75 0 0 1 .67 1.34l-.04.022c-1.147.573-2.438-.463-2.127-1.706l.71-2.836-.042.02a.75.75 0 1 1-.671-1.34l.041-.022ZM12 9a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(InformationCircleIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction LanguageIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M9 2.25a.75.75 0 0 1 .75.75v1.506a49.384 49.384 0 0 1 5.343.371.75.75 0 1 1-.186 1.489c-.66-.083-1.323-.151-1.99-.206a18.67 18.67 0 0 1-2.97 6.323c.318.384.65.753 1 1.107a.75.75 0 0 1-1.07 1.052A18.902 18.902 0 0 1 9 13.687a18.823 18.823 0 0 1-5.656 4.482.75.75 0 0 1-.688-1.333 17.323 17.323 0 0 0 5.396-4.353A18.72 18.72 0 0 1 5.89 8.598a.75.75 0 0 1 1.388-.568A17.21 17.21 0 0 0 9 11.224a17.168 17.168 0 0 0 2.391-5.165 48.04 48.04 0 0 0-8.298.307.75.75 0 0 1-.186-1.489 49.159 49.159 0 0 1 5.343-.371V3A.75.75 0 0 1 9 2.25ZM15.75 9a.75.75 0 0 1 .68.433l5.25 11.25a.75.75 0 1 1-1.36.634l-1.198-2.567h-6.744l-1.198 2.567a.75.75 0 0 1-1.36-.634l5.25-11.25A.75.75 0 0 1 15.75 9Zm-2.672 8.25h5.344l-2.672-5.726-2.672 5.726Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(LanguageIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction LightBulbIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 .75a8.25 8.25 0 0 0-4.135 15.39c.686.398 1.115 1.008 1.134 1.623a.75.75 0 0 0 .577.706c.352.083.71.148 1.074.195.323.041.6-.218.6-.544v-4.661a6.714 6.714 0 0 1-.937-.171.75.75 0 1 1 .374-1.453 5.261 5.261 0 0 0 2.626 0 .75.75 0 1 1 .374 1.452 6.712 6.712 0 0 1-.937.172v4.66c0 .327.277.586.6.545.364-.047.722-.112 1.074-.195a.75.75 0 0 0 .577-.706c.02-.615.448-1.225 1.134-1.623A8.25 8.25 0 0 0 12 .75Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M9.013 19.9a.75.75 0 0 1 .877-.597 11.319 11.319 0 0 0 4.22 0 .75.75 0 1 1 .28 1.473 12.819 12.819 0 0 1-4.78 0 .75.75 0 0 1-.597-.876ZM9.754 22.344a.75.75 0 0 1 .824-.668 13.682 13.682 0 0 0 2.844 0 .75.75 0 1 1 .156 1.492 15.156 15.156 0 0 1-3.156 0 .75.75 0 0 1-.668-.824Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(LightBulbIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction ShieldExclamationIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M11.484 2.17a.75.75 0 0 1 1.032 0 11.209 11.209 0 0 0 7.877 3.08.75.75 0 0 1 .722.515 12.74 12.74 0 0 1 .635 3.985c0 5.942-4.064 10.933-9.563 12.348a.749.749 0 0 1-.374 0C6.314 20.683 2.25 15.692 2.25 9.75c0-1.39.223-2.73.635-3.985a.75.75 0 0 1 .722-.516l.143.001c2.996 0 5.718-1.17 7.734-3.08ZM12 8.25a.75.75 0 0 1 .75.75v3.75a.75.75 0 0 1-1.5 0V9a.75.75 0 0 1 .75-.75ZM12 15a.75.75 0 0 0-.75.75v.008c0 .414.336.75.75.75h.008a.75.75 0 0 0 .75-.75v-.008a.75.75 0 0 0-.75-.75H12Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ShieldExclamationIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction UserIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M7.5 6a4.5 4.5 0 1 1 9 0 4.5 4.5 0 0 1-9 0ZM3.751 20.105a8.25 8.25 0 0 1 16.498 0 .75.75 0 0 1-.437.695A18.683 18.683 0 0 1 12 22.5c-2.786 0-5.433-.608-7.812-1.7a.75.75 0 0 1-.437-.695Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(UserIcon);\nexport default ForwardRef;","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","\"use client\";\n\nimport {\n ExclamationCircleIcon,\n ExclamationTriangleIcon,\n InformationCircleIcon,\n} from \"@heroicons/react/24/solid\";\nimport clsx from \"clsx\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { RiskSignal } from \"../types\";\n\ninterface RiskSignalCardProps {\n signal: RiskSignal;\n variant?: \"error\" | \"warning\" | \"success\";\n}\n\nconst variantStyles = {\n error: \"bg-error/10 border-error/30\",\n warning: \"bg-warning/10 border-warning/30\",\n success: \"bg-success/10 border-success/30\",\n};\n\nconst iconColor = {\n error: \"text-error\",\n warning: \"text-warning\",\n success: \"text-success\",\n};\n\nconst severityIcon = {\n high: ExclamationCircleIcon,\n medium: ExclamationTriangleIcon,\n low: InformationCircleIcon,\n};\n\nexport function RiskSignalCard({\n signal,\n variant = \"error\",\n}: RiskSignalCardProps) {\n const { t } = useTranslation();\n const Icon = severityIcon[signal.severity];\n\n return (\n <div className={clsx(\"card border-2 backdrop-blur-sm\", variantStyles[variant])}>\n <div className=\"card-body\">\n <div className=\"flex items-start gap-4\">\n <Icon className={clsx(\"size-8 mt-1 shrink-0\", iconColor[variant])} />\n\n <div className=\"flex-1\">\n <h4 className=\"card-title text-xl\">{signal.title}</h4>\n <p className=\"mt-2 text-neutral-content\">{signal.description}</p>\n\n {/* What to do */}\n <div className=\"mt-4 rounded-lg bg-base-100/50 p-4\">\n <p className=\"mb-2 text-sm font-semibold\">\n 💡 {t(\"page.tradeSafety.result.whatToDo\")}\n </p>\n <p className=\"text-sm\">{signal.what_to_do}</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { ExclamationTriangleIcon } from \"@heroicons/react/24/solid\";\nimport { motion } from \"framer-motion\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { RiskSignal } from \"../../types\";\nimport { RiskSignalCard } from \"../RiskSignalCard\";\n\ninterface CautionsSectionProps {\n cautions: RiskSignal[];\n}\n\nexport function CautionsSection({ cautions }: CautionsSectionProps) {\n const { t } = useTranslation();\n\n if (cautions.length === 0) return null;\n\n return (\n <section>\n <h3 className=\"mb-6 flex items-center gap-3 text-3xl font-bold\">\n <ExclamationTriangleIcon className=\"size-10 text-warning\" />\n {t(\"page.tradeSafety.result.cautions\")}\n </h3>\n\n <div className=\"space-y-4\">\n {cautions.map((caution, idx) => (\n <motion.div\n key={idx}\n initial={{ x: -50, opacity: 0 }}\n animate={{ x: 0, opacity: 1 }}\n transition={{ delay: idx * 0.1 }}\n whileHover={{ scale: 1.02, x: 10 }}\n >\n <RiskSignalCard signal={caution} variant=\"warning\" />\n </motion.div>\n ))}\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { ChatBubbleOvalLeftEllipsisIcon } from \"@heroicons/react/24/solid\";\nimport { motion } from \"framer-motion\";\nimport Link from \"next/link\";\nimport { useTranslation } from \"react-i18next\";\n\nexport function CompanionCtaSection() {\n const { t, i18n } = useTranslation();\n const lang = i18n.language;\n\n return (\n <section className=\"hero min-h-[30vh] rounded-3xl bg-primary text-primary-content\">\n <div className=\"hero-content text-center\">\n <div>\n <ChatBubbleOvalLeftEllipsisIcon className=\"mx-auto mb-6 size-20\" />\n\n <h3 className=\"mb-4 text-4xl font-bold\">\n {t(\"page.tradeSafety.result.companionCta.title\")}\n </h3>\n\n <p className=\"mb-8 max-w-2xl text-xl\">\n {t(\"page.tradeSafety.result.companionCta.description\")}\n </p>\n\n <Link href={`/${lang}/companions`}>\n <motion.button\n whileHover={{ scale: 1.1 }}\n whileTap={{ scale: 0.95 }}\n className=\"btn btn-lg bg-base-100 text-primary hover:bg-base-200\"\n >\n {t(\"page.tradeSafety.result.companionCta.button\")}\n </motion.button>\n </Link>\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { UserIcon } from \"@heroicons/react/24/solid\";\nimport { motion } from \"framer-motion\";\nimport { useTranslation } from \"react-i18next\";\n\ninterface ExpertAdviceSectionProps {\n advice: string;\n}\n\nexport function ExpertAdviceSection({ advice }: ExpertAdviceSectionProps) {\n const { t } = useTranslation();\n\n return (\n <motion.section\n whileHover={{ scale: 1.02 }}\n className=\"card bg-secondary text-secondary-content shadow-xl\"\n >\n <div className=\"card-body\">\n <div className=\"mb-6 flex items-center gap-4\">\n <div className=\"avatar placeholder\">\n <div className=\"w-16 rounded-full bg-primary text-primary-content\">\n <UserIcon className=\"size-8\" />\n </div>\n </div>\n <div>\n <h3 className=\"text-2xl font-bold\">\n {t(\"page.tradeSafety.result.expertAdvice\")}\n </h3>\n <p className=\"opacity-80\">\n {t(\"page.tradeSafety.result.expertName\")}\n </p>\n </div>\n </div>\n\n <div className=\"prose max-w-none\">\n <p className=\"whitespace-pre-wrap text-lg\">{advice}</p>\n </div>\n </div>\n </motion.section>\n );\n}\n","\"use client\";\n\nimport {\n CurrencyDollarIcon,\n ExclamationTriangleIcon,\n} from \"@heroicons/react/24/solid\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { PriceAnalysis } from \"../../types\";\n\ninterface PriceAnalysisSectionProps {\n data?: PriceAnalysis;\n}\n\nexport function PriceAnalysisSection({ data }: PriceAnalysisSectionProps) {\n const { t, i18n } = useTranslation();\n\n if (!data) return null;\n\n return (\n <section>\n <h3 className=\"mb-6 flex items-center gap-3 text-3xl font-bold\">\n <CurrencyDollarIcon className=\"size-10 text-secondary\" />\n {t(\"page.tradeSafety.result.priceAnalysis\")}\n </h3>\n\n <div className=\"card bg-base-200 shadow-xl\">\n <div className=\"card-body\">\n <div className=\"grid grid-cols-1 gap-6 md:grid-cols-2\">\n {data.market_price_range && (\n <div>\n <h4 className=\"mb-2 text-lg font-semibold\">\n {t(\"page.tradeSafety.result.marketPrice\")}\n </h4>\n <p className=\"text-2xl font-bold\">{data.market_price_range}</p>\n </div>\n )}\n\n {data.offered_price && (\n <div>\n <h4 className=\"mb-2 text-lg font-semibold\">\n {t(\"page.tradeSafety.result.offeredPrice\")}\n </h4>\n <p className=\"text-2xl font-bold text-primary\">\n {new Intl.NumberFormat(i18n.language, {\n style: \"currency\",\n currency: data.currency || \"USD\",\n }).format(data.offered_price)}\n </p>\n </div>\n )}\n </div>\n\n {/* Price Assessment */}\n <div className=\"mt-6 rounded-lg bg-base-100 p-4\">\n <h4 className=\"mb-2 text-lg font-semibold\">\n {t(\"page.tradeSafety.result.priceAssessment\")}\n </h4>\n <p className=\"text-neutral-content\">{data.price_assessment}</p>\n </div>\n\n {/* Warnings */}\n {data.warnings.length > 0 && (\n <div className=\"mt-4\">\n <h4 className=\"mb-2 flex items-center gap-2 text-lg font-semibold text-warning\">\n <ExclamationTriangleIcon className=\"size-6\" />\n {t(\"page.tradeSafety.result.priceWarnings\")}\n </h4>\n <ul className=\"list-inside list-disc space-y-1\">\n {data.warnings.map((warning, index) => (\n <li key={index} className=\"text-neutral-content\">\n {warning}\n </li>\n ))}\n </ul>\n </div>\n )}\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { HeartIcon, LightBulbIcon } from \"@heroicons/react/24/solid\";\nimport { useTranslation } from \"react-i18next\";\n\ninterface RecommendationSectionProps {\n recommendation: string;\n emotionalSupport: string;\n}\n\nexport function RecommendationSection({\n recommendation,\n emotionalSupport,\n}: RecommendationSectionProps) {\n const { t } = useTranslation();\n\n return (\n <section>\n <h3 className=\"mb-6 flex items-center gap-3 text-3xl font-bold\">\n <LightBulbIcon className=\"size-10 text-warning\" />\n {t(\"page.tradeSafety.result.recommendation\")}\n </h3>\n\n <div className=\"card bg-base-200 shadow-xl\">\n <div className=\"card-body\">\n <div className=\"prose max-w-none\">\n <p className=\"whitespace-pre-wrap text-lg text-neutral-content\">\n {recommendation}\n </p>\n </div>\n\n <div className=\"divider\"></div>\n\n <div className=\"rounded-lg bg-base-100 p-4\">\n <p className=\"flex items-center gap-2 text-lg font-medium\">\n <HeartIcon className=\"size-6 text-info\" /> {emotionalSupport}\n </p>\n </div>\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport {\n CheckBadgeIcon,\n ExclamationTriangleIcon,\n ShieldExclamationIcon,\n} from \"@heroicons/react/24/solid\";\nimport clsx from \"clsx\";\nimport { useTranslation } from \"react-i18next\";\n\ninterface RiskScoreHeroProps {\n score: number;\n}\n\ninterface RiskLevel {\n level: \"high\" | \"medium\" | \"low\";\n color: string;\n Icon: React.ComponentType<{ className?: string }>;\n}\n\nfunction getRiskLevel(score: number): RiskLevel {\n if (score >= 70) {\n return { level: \"high\", color: \"error\", Icon: ShieldExclamationIcon };\n }\n if (score >= 40) {\n return { level: \"medium\", color: \"warning\", Icon: ExclamationTriangleIcon };\n }\n return { level: \"low\", color: \"success\", Icon: CheckBadgeIcon };\n}\n\nexport function RiskScoreHero({ score }: RiskScoreHeroProps) {\n const { t } = useTranslation();\n const risk = getRiskLevel(score);\n const { Icon } = risk;\n\n const colorClasses: Record<string, string> = {\n error: \"text-error\",\n warning: \"text-warning\",\n success: \"text-success\",\n };\n\n return (\n <div className=\"hero min-h-[40vh] rounded-3xl bg-base-200\">\n <div className=\"hero-content text-center\">\n <div>\n <div className=\"mb-4\">\n <Icon className={clsx(\"size-32\", colorClasses[risk.color])} />\n </div>\n <h2 className=\"mb-4 text-5xl font-bold\">\n {t(`page.tradeSafety.result.riskLevel.${risk.level}.title`)}\n </h2>\n\n {/* 위험도 게이지 */}\n <div className=\"mx-auto w-64\">\n <div\n className={clsx(\"radial-progress\", colorClasses[risk.color])}\n style={\n {\n \"--value\": score,\n \"--size\": \"12rem\",\n \"--thickness\": \"1rem\",\n } as React.CSSProperties\n }\n role=\"progressbar\"\n >\n <span className=\"text-5xl font-bold\">{score}</span>\n </div>\n </div>\n\n <p className=\"mt-6 max-w-lg text-xl text-neutral-content\">\n {t(`page.tradeSafety.result.riskLevel.${risk.level}.message`)}\n </p>\n </div>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { ShieldExclamationIcon } from \"@heroicons/react/24/solid\";\nimport { motion } from \"framer-motion\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { RiskSignal } from \"../../types\";\nimport { RiskSignalCard } from \"../RiskSignalCard\";\n\ninterface RiskSignalsSectionProps {\n signals: RiskSignal[];\n}\n\nexport function RiskSignalsSection({ signals }: RiskSignalsSectionProps) {\n const { t } = useTranslation();\n\n if (signals.length === 0) return null;\n\n return (\n <section>\n <h3 className=\"mb-6 flex items-center gap-3 text-3xl font-bold\">\n <ShieldExclamationIcon className=\"size-10 text-error\" />\n {t(\"page.tradeSafety.result.riskSignals\")}\n </h3>\n\n <div className=\"space-y-4\">\n {signals.map((signal, idx) => (\n <motion.div\n key={idx}\n initial={{ x: -50, opacity: 0 }}\n animate={{ x: 0, opacity: 1 }}\n transition={{ delay: idx * 0.1 }}\n whileHover={{ scale: 1.02, x: 10 }}\n >\n <RiskSignalCard signal={signal} variant=\"error\" />\n </motion.div>\n ))}\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { CheckCircleIcon } from \"@heroicons/react/24/solid\";\nimport { motion } from \"framer-motion\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { RiskSignal } from \"../../types\";\nimport { RiskSignalCard } from \"../RiskSignalCard\";\n\ninterface SafeIndicatorsSectionProps {\n indicators: RiskSignal[];\n}\n\nexport function SafeIndicatorsSection({\n indicators,\n}: SafeIndicatorsSectionProps) {\n const { t } = useTranslation();\n\n if (indicators.length === 0) return null;\n\n return (\n <section>\n <h3 className=\"mb-6 flex items-center gap-3 text-3xl font-bold\">\n <CheckCircleIcon className=\"size-10 text-success\" />\n {t(\"page.tradeSafety.result.safeIndicators\")}\n </h3>\n\n <div className=\"space-y-4\">\n {indicators.map((indicator, idx) => (\n <motion.div\n key={idx}\n initial={{ x: -50, opacity: 0 }}\n animate={{ x: 0, opacity: 1 }}\n transition={{ delay: idx * 0.1 }}\n whileHover={{ scale: 1.02, x: 10 }}\n >\n <RiskSignalCard signal={indicator} variant=\"success\" />\n </motion.div>\n ))}\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { ClipboardDocumentCheckIcon } from \"@heroicons/react/24/solid\";\nimport { motion } from \"framer-motion\";\nimport { useTranslation } from \"react-i18next\";\n\ninterface SafetyChecklistSectionProps {\n items: string[];\n}\n\nexport function SafetyChecklistSection({ items }: SafetyChecklistSectionProps) {\n const { t } = useTranslation();\n\n if (items.length === 0) return null;\n\n return (\n <section>\n <h3 className=\"mb-6 flex items-center gap-3 text-3xl font-bold\">\n <ClipboardDocumentCheckIcon className=\"size-10 text-primary\" />\n {t(\"page.tradeSafety.result.safetyChecklist\")}\n </h3>\n\n <div className=\"card border-2 border-primary/30 bg-base-200\">\n <div className=\"card-body\">\n <p className=\"mb-6 text-lg text-neutral-content\">\n {t(\"page.tradeSafety.result.checklistDescription\")}\n </p>\n\n <div className=\"space-y-3\">\n {items.map((item, idx) => (\n <motion.label\n key={idx}\n initial={{ x: -20, opacity: 0 }}\n animate={{ x: 0, opacity: 1 }}\n transition={{ delay: idx * 0.08 }}\n className=\"flex cursor-pointer items-start gap-3 rounded-lg p-3 hover:bg-base-100/30\"\n >\n <input\n type=\"checkbox\"\n className=\"checkbox-primary checkbox mt-1\"\n />\n <span className=\"text-lg\">{item}</span>\n </motion.label>\n ))}\n </div>\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { LanguageIcon } from \"@heroicons/react/24/solid\";\nimport { useTranslation } from \"react-i18next\";\n\ninterface TranslationSectionProps {\n translation?: string | null;\n nuance?: string | null;\n}\n\nexport function TranslationSection({\n translation,\n nuance,\n}: TranslationSectionProps) {\n const { t } = useTranslation();\n\n if (!translation && !nuance) return null;\n\n return (\n <section>\n <h3 className=\"mb-6 flex items-center gap-3 text-3xl font-bold\">\n <LanguageIcon className=\"size-10 text-primary\" />\n {t(\"page.tradeSafety.result.translation\")}\n </h3>\n\n <div className=\"card bg-base-200 shadow-xl\">\n <div className=\"card-body\">\n {translation && (\n <div className=\"mb-4\">\n <h4 className=\"mb-2 text-lg font-semibold\">\n {t(\"page.tradeSafety.result.translationTitle\")}\n </h4>\n <p className=\"whitespace-pre-wrap text-neutral-content\">\n {translation}\n </p>\n </div>\n )}\n\n {nuance && (\n <div>\n <h4 className=\"mb-2 text-lg font-semibold\">\n {t(\"page.tradeSafety.result.nuanceTitle\")}\n </h4>\n <p className=\"whitespace-pre-wrap text-neutral-content\">\n {nuance}\n </p>\n </div>\n )}\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { motion, Variants } from \"framer-motion\";\n\nimport { TradeSafetyAnalysis } from \"../../types\";\n\nimport { CautionsSection } from \"./CautionsSection\";\nimport { CompanionCtaSection } from \"./CompanionCtaSection\";\nimport { ExpertAdviceSection } from \"./ExpertAdviceSection\";\nimport { PriceAnalysisSection } from \"./PriceAnalysisSection\";\nimport { RecommendationSection } from \"./RecommendationSection\";\nimport { RiskScoreHero } from \"./RiskScoreHero\";\nimport { RiskSignalsSection } from \"./RiskSignalsSection\";\nimport { SafeIndicatorsSection } from \"./SafeIndicatorsSection\";\nimport { SafetyChecklistSection } from \"./SafetyChecklistSection\";\nimport { TranslationSection } from \"./TranslationSection\";\n\ninterface DetailedResultProps {\n analysis: TradeSafetyAnalysis;\n expertAdvice?: string | null;\n /** Set to true to show AI companion CTA (for external integrations) */\n showCompanionCta?: boolean;\n}\n\nconst fadeInUp: Variants = {\n initial: { y: 40, opacity: 0 },\n animate: {\n y: 0,\n opacity: 1,\n transition: { duration: 0.6 },\n },\n};\n\nconst staggerContainer: Variants = {\n animate: {\n transition: {\n staggerChildren: 0.15,\n },\n },\n};\n\nexport function DetailedResult({\n analysis,\n expertAdvice,\n showCompanionCta = false,\n}: DetailedResultProps) {\n return (\n <motion.div\n variants={staggerContainer}\n initial=\"initial\"\n animate=\"animate\"\n className=\"mx-auto max-w-5xl space-y-12\"\n >\n {/* Hero: 종합 위험도 */}\n <motion.div variants={fadeInUp}>\n <RiskScoreHero score={analysis.risk_score} />\n </motion.div>\n\n {/* 번역 + 뉘앙스 */}\n {(analysis.translation || analysis.nuance_explanation) && (\n <motion.div variants={fadeInUp}>\n <TranslationSection\n translation={analysis.translation}\n nuance={analysis.nuance_explanation}\n />\n </motion.div>\n )}\n\n {/* 위험 신호 */}\n {analysis.risk_signals.length > 0 && (\n <motion.div variants={fadeInUp}>\n <RiskSignalsSection signals={analysis.risk_signals} />\n </motion.div>\n )}\n\n {/* 주의사항 */}\n {analysis.cautions.length > 0 && (\n <motion.div variants={fadeInUp}>\n <CautionsSection cautions={analysis.cautions} />\n </motion.div>\n )}\n\n {/* 안전 요소 */}\n {analysis.safe_indicators.length > 0 && (\n <motion.div variants={fadeInUp}>\n <SafeIndicatorsSection indicators={analysis.safe_indicators} />\n </motion.div>\n )}\n\n {/* 가격 분석 */}\n {analysis.price_analysis && (\n <motion.div variants={fadeInUp}>\n <PriceAnalysisSection data={analysis.price_analysis} />\n </motion.div>\n )}\n\n {/* 체크리스트 */}\n {analysis.safety_checklist.length > 0 && (\n <motion.div variants={fadeInUp}>\n <SafetyChecklistSection items={analysis.safety_checklist} />\n </motion.div>\n )}\n\n {/* 전문가 조언 (있을 경우) */}\n {expertAdvice && (\n <motion.div variants={fadeInUp}>\n <ExpertAdviceSection advice={expertAdvice} />\n </motion.div>\n )}\n\n {/* 종합 추천 */}\n <motion.div variants={fadeInUp}>\n <RecommendationSection\n recommendation={analysis.recommendation}\n emotionalSupport={analysis.emotional_support}\n />\n </motion.div>\n\n {/* AI 동반자 CTA - 외부 통합 시에만 표시 */}\n {showCompanionCta && (\n <motion.div variants={fadeInUp}>\n <CompanionCtaSection />\n </motion.div>\n )}\n </motion.div>\n );\n}\n","\"use client\";\n\nimport Link from \"next/link\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { QuickSummary } from \"../types\";\n\ninterface QuickResultTeaserProps {\n summary: QuickSummary;\n checkId: string;\n}\n\nexport function QuickResultTeaser({\n summary,\n checkId,\n}: QuickResultTeaserProps) {\n const { t, i18n } = useTranslation();\n const lang = i18n.language;\n\n return (\n <div className=\"mx-auto max-w-2xl\">\n <h1 className=\"mb-8 text-center text-3xl font-bold\">\n {t(\"page.tradeSafety.result.title\")}\n </h1>\n\n {/* Quick Summary Cards */}\n <div className=\"mb-8 grid grid-cols-1 gap-4 md:grid-cols-3\">\n <div className=\"card bg-error/10\">\n <div className=\"card-body items-center text-center\">\n <h3 className=\"text-4xl font-bold text-error\">\n {summary.risk_signals_count}\n </h3>\n <p className=\"text-sm\">\n {t(\"page.tradeSafety.result.riskSignals\")}\n </p>\n </div>\n </div>\n <div className=\"card bg-warning/10\">\n <div className=\"card-body items-center text-center\">\n <h3 className=\"text-4xl font-bold text-warning\">\n {summary.cautions_count}\n </h3>\n <p className=\"text-sm\">{t(\"page.tradeSafety.result.cautions\")}</p>\n </div>\n </div>\n <div className=\"card bg-success/10\">\n <div className=\"card-body items-center text-center\">\n <h3 className=\"text-4xl font-bold text-success\">\n {summary.safe_indicators_count}\n </h3>\n <p className=\"text-sm\">\n {t(\"page.tradeSafety.result.safeIndicators\")}\n </p>\n </div>\n </div>\n </div>\n\n {/* Signup Prompt */}\n <div className=\"card bg-base-200 shadow-xl\">\n <div className=\"card-body items-center text-center\">\n <h2 className=\"card-title text-2xl\">\n {t(\"page.tradeSafety.result.signupRequired\")}\n </h2>\n <p className=\"mb-4 text-neutral-content\">\n {t(\"page.tradeSafety.result.signupMessage\")}\n </p>\n <Link\n href={`/${lang}/login?callbackUrl=${encodeURIComponent(`/${lang}/trade-safety/result/${checkId}`)}`}\n className=\"btn btn-primary\"\n >\n {t(\"login\")}\n </Link>\n </div>\n </div>\n </div>\n );\n}\n","import { BaseCrudRepository } from \"@aioia/core\";\nimport { z } from \"zod\";\n\n// Zod schema for nested objects\nconst riskSignalSchema = z.object({\n category: z.enum([\"payment\", \"seller\", \"platform\", \"price\", \"content\"]),\n severity: z.enum([\"high\", \"medium\", \"low\"]),\n title: z.string(),\n description: z.string(),\n what_to_do: z.string(),\n});\n\nconst priceAnalysisSchema = z\n .object({\n market_price_range: z.string().nullish(),\n offered_price: z.number().nullish(),\n currency: z.string().nullish(),\n price_assessment: z.string(),\n warnings: z.array(z.string()),\n })\n .nullish();\n\nconst tradeSafetyAnalysisSchema = z.object({\n translation: z.string().nullish(),\n nuance_explanation: z.string().nullish(),\n risk_signals: z.array(riskSignalSchema),\n cautions: z.array(riskSignalSchema),\n safe_indicators: z.array(riskSignalSchema),\n price_analysis: priceAnalysisSchema,\n safety_checklist: z.array(z.string()),\n risk_score: z.number(),\n recommendation: z.string(),\n emotional_support: z.string(),\n});\n\nconst quickSummarySchema = z.object({\n risk_signals_count: z.number(),\n cautions_count: z.number(),\n safe_indicators_count: z.number(),\n});\n\nconst tradeSafetyCheckResponseSchema = z.object({\n id: z.string(),\n user_id: z.string().nullish(),\n input_text: z.string(),\n llm_analysis: tradeSafetyAnalysisSchema,\n risk_score: z.number(),\n expert_advice: z.string().nullish(),\n expert_reviewed: z.boolean(),\n expert_reviewed_at: z.string().nullish(),\n expert_reviewed_by: z.string().nullish(),\n created_at: z.string(),\n updated_at: z.string(),\n});\n\n// Full response for authenticated users\nexport type TradeSafetyCheckFullResponse = z.infer<\n typeof tradeSafetyCheckResponseSchema\n>;\n\n// Quick response for non-authenticated users\nexport interface QuickCheckRepositoryResponse {\n id: string;\n quick_summary: {\n risk_signals_count: number;\n cautions_count: number;\n safe_indicators_count: number;\n };\n signup_required: true;\n}\n\n// Union type for repository responses\nexport type TradeSafetyCheckRepositoryResponse =\n | TradeSafetyCheckFullResponse\n | QuickCheckRepositoryResponse;\n\n// Union schema for repository responses\nconst tradeSafetyCheckRepositoryResponseSchema = z.union([\n tradeSafetyCheckResponseSchema,\n z.object({\n id: z.string(),\n quick_summary: quickSummarySchema,\n signup_required: z.literal(true),\n }),\n]);\n\nexport class TradeSafetyRepository extends BaseCrudRepository<TradeSafetyCheckRepositoryResponse> {\n readonly resource = \"trade-safety\";\n\n protected getDataSchema() {\n return tradeSafetyCheckRepositoryResponseSchema;\n }\n}\n","export type RiskSeverity = \"high\" | \"medium\" | \"low\";\nexport type RiskCategory =\n | \"payment\"\n | \"seller\"\n | \"platform\"\n | \"price\"\n | \"content\";\n\n/**\n * Risk score thresholds for Trade Safety checks\n * Used consistently across Public and Admin interfaces\n */\nexport const RISK_SCORE_THRESHOLDS = {\n high: 70, // >= 70: High risk (red)\n medium: 40, // >= 40: Medium risk (yellow)\n // < 40: Low risk (green)\n} as const;\n\nexport interface TradeSafetyCheckRequest {\n input_text: string;\n}\n\nexport interface RiskSignal {\n category: RiskCategory;\n severity: RiskSeverity;\n title: string;\n description: string;\n what_to_do: string;\n}\n\nexport interface PriceAnalysis {\n market_price_range?: string | null;\n offered_price?: number | null;\n currency?: string | null;\n price_assessment: string;\n warnings: string[];\n}\n\nexport interface TradeSafetyAnalysis {\n translation?: string | null;\n nuance_explanation?: string | null;\n risk_signals: RiskSignal[];\n cautions: RiskSignal[];\n safe_indicators: RiskSignal[];\n price_analysis?: PriceAnalysis | null;\n safety_checklist: string[];\n risk_score: number;\n recommendation: string;\n emotional_support: string;\n}\n\nexport interface QuickSummary {\n risk_signals_count: number;\n cautions_count: number;\n safe_indicators_count: number;\n}\n\nexport interface TradeSafetyCheckResponse {\n id: string;\n user_id?: string | null;\n input_text: string;\n llm_analysis: TradeSafetyAnalysis;\n risk_score: number;\n expert_advice?: string | null;\n expert_reviewed: boolean;\n expert_reviewed_at?: string | null;\n expert_reviewed_by?: string | null;\n created_at: string;\n updated_at: string;\n}\n\nexport interface QuickCheckResponse {\n id: string;\n quick_summary: QuickSummary;\n signup_required: true;\n}\n\nexport interface TradeSafetyEditFormData {\n expert_advice?: string | null;\n expert_reviewed: boolean;\n}\n"],"names":["ChatBubbleOvalLeftEllipsisIcon","title","titleId","props","svgRef","React","ForwardRef","CheckBadgeIcon","CheckCircleIcon","ClipboardDocumentCheckIcon","CurrencyDollarIcon","ExclamationCircleIcon","ExclamationTriangleIcon","HeartIcon","InformationCircleIcon","LanguageIcon","LightBulbIcon","ShieldExclamationIcon","UserIcon","r","e","f","n","clsx","variantStyles","iconColor","severityIcon","RiskSignalCard","signal","variant","t","useTranslation","Icon","jsx","jsxs","CautionsSection","cautions","caution","idx","motion","CompanionCtaSection","i18n","lang","Link","ExpertAdviceSection","advice","PriceAnalysisSection","data","warning","index","RecommendationSection","recommendation","emotionalSupport","getRiskLevel","score","RiskScoreHero","risk","colorClasses","RiskSignalsSection","signals","SafeIndicatorsSection","indicators","indicator","SafetyChecklistSection","items","item","TranslationSection","translation","nuance","fadeInUp","staggerContainer","DetailedResult","analysis","expertAdvice","showCompanionCta","QuickResultTeaser","summary","checkId","riskSignalSchema","z","priceAnalysisSchema","tradeSafetyAnalysisSchema","quickSummarySchema","tradeSafetyCheckResponseSchema","tradeSafetyCheckRepositoryResponseSchema","TradeSafetyRepository","BaseCrudRepository","RISK_SCORE_THRESHOLDS"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../node_modules/@heroicons/react/24/solid/esm/ChatBubbleOvalLeftEllipsisIcon.js","../node_modules/@heroicons/react/24/solid/esm/CheckBadgeIcon.js","../node_modules/@heroicons/react/24/solid/esm/CheckCircleIcon.js","../node_modules/@heroicons/react/24/solid/esm/ClipboardDocumentCheckIcon.js","../node_modules/@heroicons/react/24/solid/esm/CurrencyDollarIcon.js","../node_modules/@heroicons/react/24/solid/esm/ExclamationCircleIcon.js","../node_modules/@heroicons/react/24/solid/esm/ExclamationTriangleIcon.js","../node_modules/@heroicons/react/24/solid/esm/HeartIcon.js","../node_modules/@heroicons/react/24/solid/esm/InformationCircleIcon.js","../node_modules/@heroicons/react/24/solid/esm/LanguageIcon.js","../node_modules/@heroicons/react/24/solid/esm/LightBulbIcon.js","../node_modules/@heroicons/react/24/solid/esm/ShieldExclamationIcon.js","../node_modules/@heroicons/react/24/solid/esm/UserIcon.js","../node_modules/clsx/dist/clsx.mjs","../src/components/RiskSignalCard.tsx","../src/components/DetailedResult/CautionsSection.tsx","../src/components/DetailedResult/CompanionCtaSection.tsx","../src/components/DetailedResult/ExpertAdviceSection.tsx","../src/components/DetailedResult/PriceAnalysisSection.tsx","../src/components/DetailedResult/RecommendationSection.tsx","../src/components/DetailedResult/RiskScoreHero.tsx","../src/components/DetailedResult/RiskSignalsSection.tsx","../src/components/DetailedResult/SafeIndicatorsSection.tsx","../src/components/DetailedResult/SafetyChecklistSection.tsx","../src/components/DetailedResult/TranslationSection.tsx","../src/components/DetailedResult/index.tsx","../src/components/QuickResultTeaser.tsx","../src/repositories/TradeSafetyRepository.ts","../src/types.ts"],"sourcesContent":["import * as React from \"react\";\nfunction ChatBubbleOvalLeftEllipsisIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M4.804 21.644A6.707 6.707 0 0 0 6 21.75a6.721 6.721 0 0 0 3.583-1.029c.774.182 1.584.279 2.417.279 5.322 0 9.75-3.97 9.75-9 0-5.03-4.428-9-9.75-9s-9.75 3.97-9.75 9c0 2.409 1.025 4.587 2.674 6.192.232.226.277.428.254.543a3.73 3.73 0 0 1-.814 1.686.75.75 0 0 0 .44 1.223ZM8.25 10.875a1.125 1.125 0 1 0 0 2.25 1.125 1.125 0 0 0 0-2.25ZM10.875 12a1.125 1.125 0 1 1 2.25 0 1.125 1.125 0 0 1-2.25 0Zm4.875-1.125a1.125 1.125 0 1 0 0 2.25 1.125 1.125 0 0 0 0-2.25Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ChatBubbleOvalLeftEllipsisIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction CheckBadgeIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M8.603 3.799A4.49 4.49 0 0 1 12 2.25c1.357 0 2.573.6 3.397 1.549a4.49 4.49 0 0 1 3.498 1.307 4.491 4.491 0 0 1 1.307 3.497A4.49 4.49 0 0 1 21.75 12a4.49 4.49 0 0 1-1.549 3.397 4.491 4.491 0 0 1-1.307 3.497 4.491 4.491 0 0 1-3.497 1.307A4.49 4.49 0 0 1 12 21.75a4.49 4.49 0 0 1-3.397-1.549 4.49 4.49 0 0 1-3.498-1.306 4.491 4.491 0 0 1-1.307-3.498A4.49 4.49 0 0 1 2.25 12c0-1.357.6-2.573 1.549-3.397a4.49 4.49 0 0 1 1.307-3.497 4.49 4.49 0 0 1 3.497-1.307Zm7.007 6.387a.75.75 0 1 0-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 0 0-1.06 1.06l2.25 2.25a.75.75 0 0 0 1.14-.094l3.75-5.25Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(CheckBadgeIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction CheckCircleIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm13.36-1.814a.75.75 0 1 0-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 0 0-1.06 1.06l2.25 2.25a.75.75 0 0 0 1.14-.094l3.75-5.25Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(CheckCircleIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction ClipboardDocumentCheckIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M7.502 6h7.128A3.375 3.375 0 0 1 18 9.375v9.375a3 3 0 0 0 3-3V6.108c0-1.505-1.125-2.811-2.664-2.94a48.972 48.972 0 0 0-.673-.05A3 3 0 0 0 15 1.5h-1.5a3 3 0 0 0-2.663 1.618c-.225.015-.45.032-.673.05C8.662 3.295 7.554 4.542 7.502 6ZM13.5 3A1.5 1.5 0 0 0 12 4.5h4.5A1.5 1.5 0 0 0 15 3h-1.5Z\",\n clipRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M3 9.375C3 8.339 3.84 7.5 4.875 7.5h9.75c1.036 0 1.875.84 1.875 1.875v11.25c0 1.035-.84 1.875-1.875 1.875h-9.75A1.875 1.875 0 0 1 3 20.625V9.375Zm9.586 4.594a.75.75 0 0 0-1.172-.938l-2.476 3.096-.908-.907a.75.75 0 0 0-1.06 1.06l1.5 1.5a.75.75 0 0 0 1.116-.062l3-3.75Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ClipboardDocumentCheckIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction CurrencyDollarIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.464 8.746c.227-.18.497-.311.786-.394v2.795a2.252 2.252 0 0 1-.786-.393c-.394-.313-.546-.681-.546-1.004 0-.323.152-.691.546-1.004ZM12.75 15.662v-2.824c.347.085.664.228.921.421.427.32.579.686.579.991 0 .305-.152.671-.579.991a2.534 2.534 0 0 1-.921.42Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M12 2.25c-5.385 0-9.75 4.365-9.75 9.75s4.365 9.75 9.75 9.75 9.75-4.365 9.75-9.75S17.385 2.25 12 2.25ZM12.75 6a.75.75 0 0 0-1.5 0v.816a3.836 3.836 0 0 0-1.72.756c-.712.566-1.112 1.35-1.112 2.178 0 .829.4 1.612 1.113 2.178.502.4 1.102.647 1.719.756v2.978a2.536 2.536 0 0 1-.921-.421l-.879-.66a.75.75 0 0 0-.9 1.2l.879.66c.533.4 1.169.645 1.821.75V18a.75.75 0 0 0 1.5 0v-.81a4.124 4.124 0 0 0 1.821-.749c.745-.559 1.179-1.344 1.179-2.191 0-.847-.434-1.632-1.179-2.191a4.122 4.122 0 0 0-1.821-.75V8.354c.29.082.559.213.786.393l.415.33a.75.75 0 0 0 .933-1.175l-.415-.33a3.836 3.836 0 0 0-1.719-.755V6Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(CurrencyDollarIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction ExclamationCircleIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12ZM12 8.25a.75.75 0 0 1 .75.75v3.75a.75.75 0 0 1-1.5 0V9a.75.75 0 0 1 .75-.75Zm0 8.25a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ExclamationCircleIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction ExclamationTriangleIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003ZM12 8.25a.75.75 0 0 1 .75.75v3.75a.75.75 0 0 1-1.5 0V9a.75.75 0 0 1 .75-.75Zm0 8.25a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ExclamationTriangleIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction HeartIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"m11.645 20.91-.007-.003-.022-.012a15.247 15.247 0 0 1-.383-.218 25.18 25.18 0 0 1-4.244-3.17C4.688 15.36 2.25 12.174 2.25 8.25 2.25 5.322 4.714 3 7.688 3A5.5 5.5 0 0 1 12 5.052 5.5 5.5 0 0 1 16.313 3c2.973 0 5.437 2.322 5.437 5.25 0 3.925-2.438 7.111-4.739 9.256a25.175 25.175 0 0 1-4.244 3.17 15.247 15.247 0 0 1-.383.219l-.022.012-.007.004-.003.001a.752.752 0 0 1-.704 0l-.003-.001Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(HeartIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction InformationCircleIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm8.706-1.442c1.146-.573 2.437.463 2.126 1.706l-.709 2.836.042-.02a.75.75 0 0 1 .67 1.34l-.04.022c-1.147.573-2.438-.463-2.127-1.706l.71-2.836-.042.02a.75.75 0 1 1-.671-1.34l.041-.022ZM12 9a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(InformationCircleIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction LanguageIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M9 2.25a.75.75 0 0 1 .75.75v1.506a49.384 49.384 0 0 1 5.343.371.75.75 0 1 1-.186 1.489c-.66-.083-1.323-.151-1.99-.206a18.67 18.67 0 0 1-2.97 6.323c.318.384.65.753 1 1.107a.75.75 0 0 1-1.07 1.052A18.902 18.902 0 0 1 9 13.687a18.823 18.823 0 0 1-5.656 4.482.75.75 0 0 1-.688-1.333 17.323 17.323 0 0 0 5.396-4.353A18.72 18.72 0 0 1 5.89 8.598a.75.75 0 0 1 1.388-.568A17.21 17.21 0 0 0 9 11.224a17.168 17.168 0 0 0 2.391-5.165 48.04 48.04 0 0 0-8.298.307.75.75 0 0 1-.186-1.489 49.159 49.159 0 0 1 5.343-.371V3A.75.75 0 0 1 9 2.25ZM15.75 9a.75.75 0 0 1 .68.433l5.25 11.25a.75.75 0 1 1-1.36.634l-1.198-2.567h-6.744l-1.198 2.567a.75.75 0 0 1-1.36-.634l5.25-11.25A.75.75 0 0 1 15.75 9Zm-2.672 8.25h5.344l-2.672-5.726-2.672 5.726Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(LanguageIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction LightBulbIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 .75a8.25 8.25 0 0 0-4.135 15.39c.686.398 1.115 1.008 1.134 1.623a.75.75 0 0 0 .577.706c.352.083.71.148 1.074.195.323.041.6-.218.6-.544v-4.661a6.714 6.714 0 0 1-.937-.171.75.75 0 1 1 .374-1.453 5.261 5.261 0 0 0 2.626 0 .75.75 0 1 1 .374 1.452 6.712 6.712 0 0 1-.937.172v4.66c0 .327.277.586.6.545.364-.047.722-.112 1.074-.195a.75.75 0 0 0 .577-.706c.02-.615.448-1.225 1.134-1.623A8.25 8.25 0 0 0 12 .75Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M9.013 19.9a.75.75 0 0 1 .877-.597 11.319 11.319 0 0 0 4.22 0 .75.75 0 1 1 .28 1.473 12.819 12.819 0 0 1-4.78 0 .75.75 0 0 1-.597-.876ZM9.754 22.344a.75.75 0 0 1 .824-.668 13.682 13.682 0 0 0 2.844 0 .75.75 0 1 1 .156 1.492 15.156 15.156 0 0 1-3.156 0 .75.75 0 0 1-.668-.824Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(LightBulbIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction ShieldExclamationIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M11.484 2.17a.75.75 0 0 1 1.032 0 11.209 11.209 0 0 0 7.877 3.08.75.75 0 0 1 .722.515 12.74 12.74 0 0 1 .635 3.985c0 5.942-4.064 10.933-9.563 12.348a.749.749 0 0 1-.374 0C6.314 20.683 2.25 15.692 2.25 9.75c0-1.39.223-2.73.635-3.985a.75.75 0 0 1 .722-.516l.143.001c2.996 0 5.718-1.17 7.734-3.08ZM12 8.25a.75.75 0 0 1 .75.75v3.75a.75.75 0 0 1-1.5 0V9a.75.75 0 0 1 .75-.75ZM12 15a.75.75 0 0 0-.75.75v.008c0 .414.336.75.75.75h.008a.75.75 0 0 0 .75-.75v-.008a.75.75 0 0 0-.75-.75H12Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ShieldExclamationIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction UserIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M7.5 6a4.5 4.5 0 1 1 9 0 4.5 4.5 0 0 1-9 0ZM3.751 20.105a8.25 8.25 0 0 1 16.498 0 .75.75 0 0 1-.437.695A18.683 18.683 0 0 1 12 22.5c-2.786 0-5.433-.608-7.812-1.7a.75.75 0 0 1-.437-.695Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(UserIcon);\nexport default ForwardRef;","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","\"use client\";\n\nimport {\n ExclamationCircleIcon,\n ExclamationTriangleIcon,\n InformationCircleIcon,\n} from \"@heroicons/react/24/solid\";\nimport clsx from \"clsx\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { RiskSignal } from \"../types\";\n\ninterface RiskSignalCardProps {\n signal: RiskSignal;\n variant?: \"error\" | \"warning\" | \"success\";\n}\n\nconst variantStyles = {\n error: \"bg-error/10 border-error/30\",\n warning: \"bg-warning/10 border-warning/30\",\n success: \"bg-success/10 border-success/30\",\n};\n\nconst iconColor = {\n error: \"text-error\",\n warning: \"text-warning\",\n success: \"text-success\",\n};\n\nconst severityIcon = {\n high: ExclamationCircleIcon,\n medium: ExclamationTriangleIcon,\n low: InformationCircleIcon,\n};\n\nexport function RiskSignalCard({\n signal,\n variant = \"error\",\n}: RiskSignalCardProps) {\n const { t } = useTranslation();\n const Icon = severityIcon[signal.severity];\n\n return (\n <div className={clsx(\"card border-2 backdrop-blur-sm\", variantStyles[variant])}>\n <div className=\"card-body\">\n <div className=\"flex items-start gap-4\">\n <Icon className={clsx(\"size-8 mt-1 shrink-0\", iconColor[variant])} />\n\n <div className=\"flex-1\">\n <h4 className=\"card-title text-xl\">{signal.title}</h4>\n <p className=\"mt-2 text-neutral-content\">{signal.description}</p>\n\n {/* What to do */}\n <div className=\"mt-4 rounded-lg bg-base-100/50 p-4\">\n <p className=\"mb-2 text-sm font-semibold\">\n 💡 {t(\"page.tradeSafety.result.whatToDo\")}\n </p>\n <p className=\"text-sm\">{signal.what_to_do}</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { ExclamationTriangleIcon } from \"@heroicons/react/24/solid\";\nimport { motion } from \"framer-motion\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { RiskSignal } from \"../../types\";\nimport { RiskSignalCard } from \"../RiskSignalCard\";\n\ninterface CautionsSectionProps {\n cautions: RiskSignal[];\n}\n\nexport function CautionsSection({ cautions }: CautionsSectionProps) {\n const { t } = useTranslation();\n\n if (cautions.length === 0) return null;\n\n return (\n <section>\n <h3 className=\"mb-6 flex items-center gap-3 text-3xl font-bold\">\n <ExclamationTriangleIcon className=\"size-10 text-warning\" />\n {t(\"page.tradeSafety.result.cautions\")}\n </h3>\n\n <div className=\"space-y-4\">\n {cautions.map((caution, idx) => (\n <motion.div\n key={idx}\n initial={{ x: -50, opacity: 0 }}\n animate={{ x: 0, opacity: 1 }}\n transition={{ delay: idx * 0.1 }}\n whileHover={{ scale: 1.02, x: 10 }}\n >\n <RiskSignalCard signal={caution} variant=\"warning\" />\n </motion.div>\n ))}\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { ChatBubbleOvalLeftEllipsisIcon } from \"@heroicons/react/24/solid\";\nimport { motion } from \"framer-motion\";\nimport Link from \"next/link\";\nimport { useTranslation } from \"react-i18next\";\n\nexport function CompanionCtaSection() {\n const { t, i18n } = useTranslation();\n const lang = i18n.language;\n\n return (\n <section className=\"hero min-h-[30vh] rounded-3xl bg-primary text-primary-content\">\n <div className=\"hero-content text-center\">\n <div>\n <ChatBubbleOvalLeftEllipsisIcon className=\"mx-auto mb-6 size-20\" />\n\n <h3 className=\"mb-4 text-4xl font-bold\">\n {t(\"page.tradeSafety.result.companionCta.title\")}\n </h3>\n\n <p className=\"mb-8 max-w-2xl text-xl\">\n {t(\"page.tradeSafety.result.companionCta.description\")}\n </p>\n\n <Link href={`/${lang}/companions`}>\n <motion.button\n whileHover={{ scale: 1.1 }}\n whileTap={{ scale: 0.95 }}\n className=\"btn btn-lg bg-base-100 text-primary hover:bg-base-200\"\n >\n {t(\"page.tradeSafety.result.companionCta.button\")}\n </motion.button>\n </Link>\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { UserIcon } from \"@heroicons/react/24/solid\";\nimport { motion } from \"framer-motion\";\nimport { useTranslation } from \"react-i18next\";\n\ninterface ExpertAdviceSectionProps {\n advice: string;\n}\n\nexport function ExpertAdviceSection({ advice }: ExpertAdviceSectionProps) {\n const { t } = useTranslation();\n\n return (\n <motion.section\n whileHover={{ scale: 1.02 }}\n className=\"card bg-secondary text-secondary-content shadow-xl\"\n >\n <div className=\"card-body\">\n <div className=\"mb-6 flex items-center gap-4\">\n <div className=\"avatar placeholder\">\n <div className=\"w-16 rounded-full bg-primary text-primary-content\">\n <UserIcon className=\"size-8\" />\n </div>\n </div>\n <div>\n <h3 className=\"text-2xl font-bold\">\n {t(\"page.tradeSafety.result.expertAdvice\")}\n </h3>\n <p className=\"opacity-80\">\n {t(\"page.tradeSafety.result.expertName\")}\n </p>\n </div>\n </div>\n\n <div className=\"prose max-w-none\">\n <p className=\"whitespace-pre-wrap text-lg\">{advice}</p>\n </div>\n </div>\n </motion.section>\n );\n}\n","\"use client\";\n\nimport {\n CurrencyDollarIcon,\n ExclamationTriangleIcon,\n} from \"@heroicons/react/24/solid\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { PriceAnalysis } from \"../../types\";\n\ninterface PriceAnalysisSectionProps {\n data?: PriceAnalysis;\n}\n\nexport function PriceAnalysisSection({ data }: PriceAnalysisSectionProps) {\n const { t, i18n } = useTranslation();\n\n if (!data) return null;\n\n return (\n <section>\n <h3 className=\"mb-6 flex items-center gap-3 text-3xl font-bold\">\n <CurrencyDollarIcon className=\"size-10 text-secondary\" />\n {t(\"page.tradeSafety.result.priceAnalysis\")}\n </h3>\n\n <div className=\"card bg-base-200 shadow-xl\">\n <div className=\"card-body\">\n <div className=\"grid grid-cols-1 gap-6 md:grid-cols-2\">\n {data.market_price_range && (\n <div>\n <h4 className=\"mb-2 text-lg font-semibold\">\n {t(\"page.tradeSafety.result.marketPrice\")}\n </h4>\n <p className=\"text-2xl font-bold\">{data.market_price_range}</p>\n </div>\n )}\n\n {data.offered_price && (\n <div>\n <h4 className=\"mb-2 text-lg font-semibold\">\n {t(\"page.tradeSafety.result.offeredPrice\")}\n </h4>\n <p className=\"text-2xl font-bold text-primary\">\n {new Intl.NumberFormat(i18n.language, {\n style: \"currency\",\n currency: data.currency || \"USD\",\n }).format(data.offered_price)}\n </p>\n </div>\n )}\n </div>\n\n {/* Price Assessment */}\n <div className=\"mt-6 rounded-lg bg-base-100 p-4\">\n <h4 className=\"mb-2 text-lg font-semibold\">\n {t(\"page.tradeSafety.result.priceAssessment\")}\n </h4>\n <p className=\"text-neutral-content\">{data.price_assessment}</p>\n </div>\n\n {/* Warnings */}\n {data.warnings.length > 0 && (\n <div className=\"mt-4\">\n <h4 className=\"mb-2 flex items-center gap-2 text-lg font-semibold text-warning\">\n <ExclamationTriangleIcon className=\"size-6\" />\n {t(\"page.tradeSafety.result.priceWarnings\")}\n </h4>\n <ul className=\"list-inside list-disc space-y-1\">\n {data.warnings.map((warning, index) => (\n <li key={index} className=\"text-neutral-content\">\n {warning}\n </li>\n ))}\n </ul>\n </div>\n )}\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { HeartIcon, LightBulbIcon } from \"@heroicons/react/24/solid\";\nimport { useTranslation } from \"react-i18next\";\n\ninterface RecommendationSectionProps {\n recommendation: string;\n emotionalSupport: string;\n}\n\nexport function RecommendationSection({\n recommendation,\n emotionalSupport,\n}: RecommendationSectionProps) {\n const { t } = useTranslation();\n\n return (\n <section>\n <h3 className=\"mb-6 flex items-center gap-3 text-3xl font-bold\">\n <LightBulbIcon className=\"size-10 text-warning\" />\n {t(\"page.tradeSafety.result.recommendation\")}\n </h3>\n\n <div className=\"card bg-base-200 shadow-xl\">\n <div className=\"card-body\">\n <div className=\"prose max-w-none\">\n <p className=\"whitespace-pre-wrap text-lg text-neutral-content\">\n {recommendation}\n </p>\n </div>\n\n <div className=\"divider\"></div>\n\n <div className=\"rounded-lg bg-base-100 p-4\">\n <p className=\"flex items-center gap-2 text-lg font-medium\">\n <HeartIcon className=\"size-6 text-info\" /> {emotionalSupport}\n </p>\n </div>\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport {\n CheckBadgeIcon,\n ExclamationTriangleIcon,\n ShieldExclamationIcon,\n} from \"@heroicons/react/24/solid\";\nimport clsx from \"clsx\";\nimport { useTranslation } from \"react-i18next\";\n\ninterface RiskScoreHeroProps {\n score: number;\n}\n\ninterface RiskLevel {\n level: \"high\" | \"medium\" | \"low\";\n color: string;\n Icon: React.ComponentType<{ className?: string }>;\n}\n\nfunction getRiskLevel(score: number): RiskLevel {\n if (score >= 70) {\n return { level: \"high\", color: \"error\", Icon: ShieldExclamationIcon };\n }\n if (score >= 40) {\n return { level: \"medium\", color: \"warning\", Icon: ExclamationTriangleIcon };\n }\n return { level: \"low\", color: \"success\", Icon: CheckBadgeIcon };\n}\n\nexport function RiskScoreHero({ score }: RiskScoreHeroProps) {\n const { t } = useTranslation();\n const risk = getRiskLevel(score);\n const { Icon } = risk;\n\n const colorClasses: Record<string, string> = {\n error: \"text-error\",\n warning: \"text-warning\",\n success: \"text-success\",\n };\n\n return (\n <div className=\"hero min-h-[40vh] rounded-3xl bg-base-200\">\n <div className=\"hero-content text-center\">\n <div>\n <div className=\"mb-4\">\n <Icon className={clsx(\"size-32\", colorClasses[risk.color])} />\n </div>\n <h2 className=\"mb-4 text-5xl font-bold\">\n {t(`page.tradeSafety.result.riskLevel.${risk.level}.title`)}\n </h2>\n\n {/* 위험도 게이지 */}\n <div className=\"mx-auto w-64\">\n <div\n className={clsx(\"radial-progress\", colorClasses[risk.color])}\n style={\n {\n \"--value\": score,\n \"--size\": \"12rem\",\n \"--thickness\": \"1rem\",\n } as React.CSSProperties\n }\n role=\"progressbar\"\n >\n <span className=\"text-5xl font-bold\">{score}</span>\n </div>\n </div>\n\n <p className=\"mt-6 max-w-lg text-xl text-neutral-content\">\n {t(`page.tradeSafety.result.riskLevel.${risk.level}.message`)}\n </p>\n </div>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { ShieldExclamationIcon } from \"@heroicons/react/24/solid\";\nimport { motion } from \"framer-motion\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { RiskSignal } from \"../../types\";\nimport { RiskSignalCard } from \"../RiskSignalCard\";\n\ninterface RiskSignalsSectionProps {\n signals: RiskSignal[];\n}\n\nexport function RiskSignalsSection({ signals }: RiskSignalsSectionProps) {\n const { t } = useTranslation();\n\n if (signals.length === 0) return null;\n\n return (\n <section>\n <h3 className=\"mb-6 flex items-center gap-3 text-3xl font-bold\">\n <ShieldExclamationIcon className=\"size-10 text-error\" />\n {t(\"page.tradeSafety.result.riskSignals\")}\n </h3>\n\n <div className=\"space-y-4\">\n {signals.map((signal, idx) => (\n <motion.div\n key={idx}\n initial={{ x: -50, opacity: 0 }}\n animate={{ x: 0, opacity: 1 }}\n transition={{ delay: idx * 0.1 }}\n whileHover={{ scale: 1.02, x: 10 }}\n >\n <RiskSignalCard signal={signal} variant=\"error\" />\n </motion.div>\n ))}\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { CheckCircleIcon } from \"@heroicons/react/24/solid\";\nimport { motion } from \"framer-motion\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { RiskSignal } from \"../../types\";\nimport { RiskSignalCard } from \"../RiskSignalCard\";\n\ninterface SafeIndicatorsSectionProps {\n indicators: RiskSignal[];\n}\n\nexport function SafeIndicatorsSection({\n indicators,\n}: SafeIndicatorsSectionProps) {\n const { t } = useTranslation();\n\n if (indicators.length === 0) return null;\n\n return (\n <section>\n <h3 className=\"mb-6 flex items-center gap-3 text-3xl font-bold\">\n <CheckCircleIcon className=\"size-10 text-success\" />\n {t(\"page.tradeSafety.result.safeIndicators\")}\n </h3>\n\n <div className=\"space-y-4\">\n {indicators.map((indicator, idx) => (\n <motion.div\n key={idx}\n initial={{ x: -50, opacity: 0 }}\n animate={{ x: 0, opacity: 1 }}\n transition={{ delay: idx * 0.1 }}\n whileHover={{ scale: 1.02, x: 10 }}\n >\n <RiskSignalCard signal={indicator} variant=\"success\" />\n </motion.div>\n ))}\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { ClipboardDocumentCheckIcon } from \"@heroicons/react/24/solid\";\nimport { motion } from \"framer-motion\";\nimport { useTranslation } from \"react-i18next\";\n\ninterface SafetyChecklistSectionProps {\n items: string[];\n}\n\nexport function SafetyChecklistSection({ items }: SafetyChecklistSectionProps) {\n const { t } = useTranslation();\n\n if (items.length === 0) return null;\n\n return (\n <section>\n <h3 className=\"mb-6 flex items-center gap-3 text-3xl font-bold\">\n <ClipboardDocumentCheckIcon className=\"size-10 text-primary\" />\n {t(\"page.tradeSafety.result.safetyChecklist\")}\n </h3>\n\n <div className=\"card border-2 border-primary/30 bg-base-200\">\n <div className=\"card-body\">\n <p className=\"mb-6 text-lg text-neutral-content\">\n {t(\"page.tradeSafety.result.checklistDescription\")}\n </p>\n\n <div className=\"space-y-3\">\n {items.map((item, idx) => (\n <motion.label\n key={idx}\n initial={{ x: -20, opacity: 0 }}\n animate={{ x: 0, opacity: 1 }}\n transition={{ delay: idx * 0.08 }}\n className=\"flex cursor-pointer items-start gap-3 rounded-lg p-3 hover:bg-base-100/30\"\n >\n <input\n type=\"checkbox\"\n className=\"checkbox-primary checkbox mt-1\"\n />\n <span className=\"text-lg\">{item}</span>\n </motion.label>\n ))}\n </div>\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { LanguageIcon } from \"@heroicons/react/24/solid\";\nimport { useTranslation } from \"react-i18next\";\n\ninterface TranslationSectionProps {\n translation?: string | null;\n nuance?: string | null;\n}\n\nexport function TranslationSection({\n translation,\n nuance,\n}: TranslationSectionProps) {\n const { t } = useTranslation();\n\n if (!translation && !nuance) return null;\n\n return (\n <section>\n <h3 className=\"mb-6 flex items-center gap-3 text-3xl font-bold\">\n <LanguageIcon className=\"size-10 text-primary\" />\n {t(\"page.tradeSafety.result.translation\")}\n </h3>\n\n <div className=\"card bg-base-200 shadow-xl\">\n <div className=\"card-body\">\n {translation && (\n <div className=\"mb-4\">\n <h4 className=\"mb-2 text-lg font-semibold\">\n {t(\"page.tradeSafety.result.translationTitle\")}\n </h4>\n <p className=\"whitespace-pre-wrap text-neutral-content\">\n {translation}\n </p>\n </div>\n )}\n\n {nuance && (\n <div>\n <h4 className=\"mb-2 text-lg font-semibold\">\n {t(\"page.tradeSafety.result.nuanceTitle\")}\n </h4>\n <p className=\"whitespace-pre-wrap text-neutral-content\">\n {nuance}\n </p>\n </div>\n )}\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { motion, Variants } from \"framer-motion\";\n\nimport { TradeSafetyAnalysis } from \"../../types\";\n\nimport { CautionsSection } from \"./CautionsSection\";\nimport { CompanionCtaSection } from \"./CompanionCtaSection\";\nimport { ExpertAdviceSection } from \"./ExpertAdviceSection\";\nimport { PriceAnalysisSection } from \"./PriceAnalysisSection\";\nimport { RecommendationSection } from \"./RecommendationSection\";\nimport { RiskScoreHero } from \"./RiskScoreHero\";\nimport { RiskSignalsSection } from \"./RiskSignalsSection\";\nimport { SafeIndicatorsSection } from \"./SafeIndicatorsSection\";\nimport { SafetyChecklistSection } from \"./SafetyChecklistSection\";\nimport { TranslationSection } from \"./TranslationSection\";\n\ninterface DetailedResultProps {\n analysis: TradeSafetyAnalysis;\n expertAdvice?: string | null;\n /** Set to true to show AI companion CTA (for external integrations) */\n showCompanionCta?: boolean;\n}\n\nconst fadeInUp: Variants = {\n initial: { y: 40, opacity: 0 },\n animate: {\n y: 0,\n opacity: 1,\n transition: { duration: 0.6 },\n },\n};\n\nconst staggerContainer: Variants = {\n animate: {\n transition: {\n staggerChildren: 0.15,\n },\n },\n};\n\nexport function DetailedResult({\n analysis,\n expertAdvice,\n showCompanionCta = false,\n}: DetailedResultProps) {\n return (\n <motion.div\n variants={staggerContainer}\n initial=\"initial\"\n animate=\"animate\"\n className=\"mx-auto max-w-5xl space-y-12\"\n >\n {/* Hero: 종합 위험도 */}\n <motion.div variants={fadeInUp}>\n <RiskScoreHero score={analysis.risk_score} />\n </motion.div>\n\n {/* 번역 + 뉘앙스 */}\n {(analysis.translation || analysis.nuance_explanation) && (\n <motion.div variants={fadeInUp}>\n <TranslationSection\n translation={analysis.translation}\n nuance={analysis.nuance_explanation}\n />\n </motion.div>\n )}\n\n {/* 위험 신호 */}\n {analysis.risk_signals.length > 0 && (\n <motion.div variants={fadeInUp}>\n <RiskSignalsSection signals={analysis.risk_signals} />\n </motion.div>\n )}\n\n {/* 주의사항 */}\n {analysis.cautions.length > 0 && (\n <motion.div variants={fadeInUp}>\n <CautionsSection cautions={analysis.cautions} />\n </motion.div>\n )}\n\n {/* 안전 요소 */}\n {analysis.safe_indicators.length > 0 && (\n <motion.div variants={fadeInUp}>\n <SafeIndicatorsSection indicators={analysis.safe_indicators} />\n </motion.div>\n )}\n\n {/* 가격 분석 */}\n {analysis.price_analysis && (\n <motion.div variants={fadeInUp}>\n <PriceAnalysisSection data={analysis.price_analysis} />\n </motion.div>\n )}\n\n {/* 체크리스트 */}\n {analysis.safety_checklist.length > 0 && (\n <motion.div variants={fadeInUp}>\n <SafetyChecklistSection items={analysis.safety_checklist} />\n </motion.div>\n )}\n\n {/* 전문가 조언 (있을 경우) */}\n {expertAdvice && (\n <motion.div variants={fadeInUp}>\n <ExpertAdviceSection advice={expertAdvice} />\n </motion.div>\n )}\n\n {/* 종합 추천 */}\n <motion.div variants={fadeInUp}>\n <RecommendationSection\n recommendation={analysis.recommendation}\n emotionalSupport={analysis.emotional_support}\n />\n </motion.div>\n\n {/* AI 동반자 CTA - 외부 통합 시에만 표시 */}\n {showCompanionCta && (\n <motion.div variants={fadeInUp}>\n <CompanionCtaSection />\n </motion.div>\n )}\n </motion.div>\n );\n}\n","\"use client\";\n\nimport Link from \"next/link\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { QuickSummary } from \"../types\";\n\ninterface QuickResultTeaserProps {\n summary: QuickSummary;\n checkId: string;\n}\n\nexport function QuickResultTeaser({\n summary,\n checkId,\n}: QuickResultTeaserProps) {\n const { t, i18n } = useTranslation();\n const lang = i18n.language;\n\n return (\n <div className=\"mx-auto max-w-2xl\">\n <h1 className=\"mb-8 text-center text-3xl font-bold\">\n {t(\"page.tradeSafety.result.title\")}\n </h1>\n\n {/* Quick Summary Cards */}\n <div className=\"mb-8 grid grid-cols-1 gap-4 md:grid-cols-3\">\n <div className=\"card bg-error/10\">\n <div className=\"card-body items-center text-center\">\n <h3 className=\"text-4xl font-bold text-error\">\n {summary.risk_signals_count}\n </h3>\n <p className=\"text-sm\">\n {t(\"page.tradeSafety.result.riskSignals\")}\n </p>\n </div>\n </div>\n <div className=\"card bg-warning/10\">\n <div className=\"card-body items-center text-center\">\n <h3 className=\"text-4xl font-bold text-warning\">\n {summary.cautions_count}\n </h3>\n <p className=\"text-sm\">{t(\"page.tradeSafety.result.cautions\")}</p>\n </div>\n </div>\n <div className=\"card bg-success/10\">\n <div className=\"card-body items-center text-center\">\n <h3 className=\"text-4xl font-bold text-success\">\n {summary.safe_indicators_count}\n </h3>\n <p className=\"text-sm\">\n {t(\"page.tradeSafety.result.safeIndicators\")}\n </p>\n </div>\n </div>\n </div>\n\n {/* Signup Prompt */}\n <div className=\"card bg-base-200 shadow-xl\">\n <div className=\"card-body items-center text-center\">\n <h2 className=\"card-title text-2xl\">\n {t(\"page.tradeSafety.result.signupRequired\")}\n </h2>\n <p className=\"mb-4 text-neutral-content\">\n {t(\"page.tradeSafety.result.signupMessage\")}\n </p>\n <Link\n href={`/${lang}/login?callbackUrl=${encodeURIComponent(`/${lang}/trade-safety/result/${checkId}`)}`}\n className=\"btn btn-primary\"\n >\n {t(\"login\")}\n </Link>\n </div>\n </div>\n </div>\n );\n}\n","import { BaseCrudRepository } from \"@aioia/core\";\nimport { z } from \"zod\";\n\n// Zod schema for nested objects\nconst riskSignalSchema = z.object({\n category: z.enum([\"payment\", \"seller\", \"platform\", \"price\", \"content\"]),\n severity: z.enum([\"high\", \"medium\", \"low\"]),\n title: z.string(),\n description: z.string(),\n what_to_do: z.string(),\n});\n\nconst priceAnalysisSchema = z.object({\n market_price_range: z.string().nullish(),\n offered_price: z.number().nullish(),\n currency: z.string().nullish(),\n price_assessment: z.string(),\n warnings: z.array(z.string()),\n});\n\nconst tradeSafetyAnalysisSchema = z.object({\n translation: z.string().nullish(),\n nuance_explanation: z.string().nullish(),\n risk_signals: z.array(riskSignalSchema),\n cautions: z.array(riskSignalSchema),\n safe_indicators: z.array(riskSignalSchema),\n price_analysis: priceAnalysisSchema,\n safety_checklist: z.array(z.string()),\n risk_score: z.number(),\n recommendation: z.string(),\n emotional_support: z.string(),\n});\n\nconst quickSummarySchema = z.object({\n risk_signals_count: z.number(),\n cautions_count: z.number(),\n safe_indicators_count: z.number(),\n});\n\nconst tradeSafetyCheckResponseSchema = z.object({\n id: z.string(),\n user_id: z.string().nullish(),\n input_text: z.string(),\n llm_analysis: tradeSafetyAnalysisSchema,\n risk_score: z.number(),\n expert_advice: z.string().nullish(),\n expert_reviewed: z.boolean(),\n expert_reviewed_at: z.string().nullish(),\n expert_reviewed_by: z.string().nullish(),\n created_at: z.string(),\n updated_at: z.string(),\n});\n\n// Full response for authenticated users\nexport type TradeSafetyCheckFullResponse = z.infer<\n typeof tradeSafetyCheckResponseSchema\n>;\n\n// Quick response for non-authenticated users\nexport interface QuickCheckRepositoryResponse {\n id: string;\n quick_summary: {\n risk_signals_count: number;\n cautions_count: number;\n safe_indicators_count: number;\n };\n signup_required: true;\n}\n\n// Union type for repository responses\nexport type TradeSafetyCheckRepositoryResponse =\n | TradeSafetyCheckFullResponse\n | QuickCheckRepositoryResponse;\n\n// Union schema for repository responses\nconst tradeSafetyCheckRepositoryResponseSchema = z.union([\n tradeSafetyCheckResponseSchema,\n z.object({\n id: z.string(),\n quick_summary: quickSummarySchema,\n signup_required: z.literal(true),\n }),\n]);\n\nexport class TradeSafetyRepository extends BaseCrudRepository<TradeSafetyCheckRepositoryResponse> {\n readonly resource = \"trade-safety\";\n\n protected getDataSchema() {\n return tradeSafetyCheckRepositoryResponseSchema;\n }\n}\n","export type RiskSeverity = \"high\" | \"medium\" | \"low\";\nexport type RiskCategory =\n | \"payment\"\n | \"seller\"\n | \"platform\"\n | \"price\"\n | \"content\";\n\n/**\n * Risk score thresholds for Trade Safety checks\n * Used consistently across Public and Admin interfaces\n */\nexport const RISK_SCORE_THRESHOLDS = {\n high: 70, // >= 70: High risk (red)\n medium: 40, // >= 40: Medium risk (yellow)\n // < 40: Low risk (green)\n} as const;\n\nexport interface TradeSafetyCheckRequest {\n input_text: string;\n}\n\nexport interface RiskSignal {\n category: RiskCategory;\n severity: RiskSeverity;\n title: string;\n description: string;\n what_to_do: string;\n}\n\nexport interface PriceAnalysis {\n market_price_range?: string | null;\n offered_price?: number | null;\n currency?: string | null;\n price_assessment: string;\n warnings: string[];\n}\n\nexport interface TradeSafetyAnalysis {\n translation?: string | null;\n nuance_explanation?: string | null;\n risk_signals: RiskSignal[];\n cautions: RiskSignal[];\n safe_indicators: RiskSignal[];\n price_analysis: PriceAnalysis;\n safety_checklist: string[];\n risk_score: number;\n recommendation: string;\n emotional_support: string;\n}\n\nexport interface QuickSummary {\n risk_signals_count: number;\n cautions_count: number;\n safe_indicators_count: number;\n}\n\nexport interface TradeSafetyCheckResponse {\n id: string;\n user_id?: string | null;\n input_text: string;\n llm_analysis: TradeSafetyAnalysis;\n risk_score: number;\n expert_advice?: string | null;\n expert_reviewed: boolean;\n expert_reviewed_at?: string | null;\n expert_reviewed_by?: string | null;\n created_at: string;\n updated_at: string;\n}\n\nexport interface QuickCheckResponse {\n id: string;\n quick_summary: QuickSummary;\n signup_required: true;\n}\n\nexport interface TradeSafetyEditFormData {\n expert_advice?: string | null;\n expert_reviewed: boolean;\n}\n"],"names":["ChatBubbleOvalLeftEllipsisIcon","title","titleId","props","svgRef","React","ForwardRef","CheckBadgeIcon","CheckCircleIcon","ClipboardDocumentCheckIcon","CurrencyDollarIcon","ExclamationCircleIcon","ExclamationTriangleIcon","HeartIcon","InformationCircleIcon","LanguageIcon","LightBulbIcon","ShieldExclamationIcon","UserIcon","r","e","f","n","clsx","variantStyles","iconColor","severityIcon","RiskSignalCard","signal","variant","t","useTranslation","Icon","jsx","jsxs","CautionsSection","cautions","caution","idx","motion","CompanionCtaSection","i18n","lang","Link","ExpertAdviceSection","advice","PriceAnalysisSection","data","warning","index","RecommendationSection","recommendation","emotionalSupport","getRiskLevel","score","RiskScoreHero","risk","colorClasses","RiskSignalsSection","signals","SafeIndicatorsSection","indicators","indicator","SafetyChecklistSection","items","item","TranslationSection","translation","nuance","fadeInUp","staggerContainer","DetailedResult","analysis","expertAdvice","showCompanionCta","QuickResultTeaser","summary","checkId","riskSignalSchema","z","priceAnalysisSchema","tradeSafetyAnalysisSchema","quickSummarySchema","tradeSafetyCheckResponseSchema","tradeSafetyCheckRepositoryResponseSchema","TradeSafetyRepository","BaseCrudRepository","RISK_SCORE_THRESHOLDS"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13]}
|
package/dist/index.mjs
CHANGED
|
@@ -680,7 +680,7 @@ const g = l.object({
|
|
|
680
680
|
currency: l.string().nullish(),
|
|
681
681
|
price_assessment: l.string(),
|
|
682
682
|
warnings: l.array(l.string())
|
|
683
|
-
})
|
|
683
|
+
}), re = l.object({
|
|
684
684
|
translation: l.string().nullish(),
|
|
685
685
|
nuance_explanation: l.string().nullish(),
|
|
686
686
|
risk_signals: l.array(g),
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../node_modules/@heroicons/react/24/solid/esm/ChatBubbleOvalLeftEllipsisIcon.js","../node_modules/@heroicons/react/24/solid/esm/CheckBadgeIcon.js","../node_modules/@heroicons/react/24/solid/esm/CheckCircleIcon.js","../node_modules/@heroicons/react/24/solid/esm/ClipboardDocumentCheckIcon.js","../node_modules/@heroicons/react/24/solid/esm/CurrencyDollarIcon.js","../node_modules/@heroicons/react/24/solid/esm/ExclamationCircleIcon.js","../node_modules/@heroicons/react/24/solid/esm/ExclamationTriangleIcon.js","../node_modules/@heroicons/react/24/solid/esm/HeartIcon.js","../node_modules/@heroicons/react/24/solid/esm/InformationCircleIcon.js","../node_modules/@heroicons/react/24/solid/esm/LanguageIcon.js","../node_modules/@heroicons/react/24/solid/esm/LightBulbIcon.js","../node_modules/@heroicons/react/24/solid/esm/ShieldExclamationIcon.js","../node_modules/@heroicons/react/24/solid/esm/UserIcon.js","../node_modules/clsx/dist/clsx.mjs","../src/components/RiskSignalCard.tsx","../src/components/DetailedResult/CautionsSection.tsx","../src/components/DetailedResult/CompanionCtaSection.tsx","../src/components/DetailedResult/ExpertAdviceSection.tsx","../src/components/DetailedResult/PriceAnalysisSection.tsx","../src/components/DetailedResult/RecommendationSection.tsx","../src/components/DetailedResult/RiskScoreHero.tsx","../src/components/DetailedResult/RiskSignalsSection.tsx","../src/components/DetailedResult/SafeIndicatorsSection.tsx","../src/components/DetailedResult/SafetyChecklistSection.tsx","../src/components/DetailedResult/TranslationSection.tsx","../src/components/DetailedResult/index.tsx","../src/components/QuickResultTeaser.tsx","../src/repositories/TradeSafetyRepository.ts","../src/types.ts"],"sourcesContent":["import * as React from \"react\";\nfunction ChatBubbleOvalLeftEllipsisIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M4.804 21.644A6.707 6.707 0 0 0 6 21.75a6.721 6.721 0 0 0 3.583-1.029c.774.182 1.584.279 2.417.279 5.322 0 9.75-3.97 9.75-9 0-5.03-4.428-9-9.75-9s-9.75 3.97-9.75 9c0 2.409 1.025 4.587 2.674 6.192.232.226.277.428.254.543a3.73 3.73 0 0 1-.814 1.686.75.75 0 0 0 .44 1.223ZM8.25 10.875a1.125 1.125 0 1 0 0 2.25 1.125 1.125 0 0 0 0-2.25ZM10.875 12a1.125 1.125 0 1 1 2.25 0 1.125 1.125 0 0 1-2.25 0Zm4.875-1.125a1.125 1.125 0 1 0 0 2.25 1.125 1.125 0 0 0 0-2.25Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ChatBubbleOvalLeftEllipsisIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction CheckBadgeIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M8.603 3.799A4.49 4.49 0 0 1 12 2.25c1.357 0 2.573.6 3.397 1.549a4.49 4.49 0 0 1 3.498 1.307 4.491 4.491 0 0 1 1.307 3.497A4.49 4.49 0 0 1 21.75 12a4.49 4.49 0 0 1-1.549 3.397 4.491 4.491 0 0 1-1.307 3.497 4.491 4.491 0 0 1-3.497 1.307A4.49 4.49 0 0 1 12 21.75a4.49 4.49 0 0 1-3.397-1.549 4.49 4.49 0 0 1-3.498-1.306 4.491 4.491 0 0 1-1.307-3.498A4.49 4.49 0 0 1 2.25 12c0-1.357.6-2.573 1.549-3.397a4.49 4.49 0 0 1 1.307-3.497 4.49 4.49 0 0 1 3.497-1.307Zm7.007 6.387a.75.75 0 1 0-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 0 0-1.06 1.06l2.25 2.25a.75.75 0 0 0 1.14-.094l3.75-5.25Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(CheckBadgeIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction CheckCircleIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm13.36-1.814a.75.75 0 1 0-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 0 0-1.06 1.06l2.25 2.25a.75.75 0 0 0 1.14-.094l3.75-5.25Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(CheckCircleIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction ClipboardDocumentCheckIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M7.502 6h7.128A3.375 3.375 0 0 1 18 9.375v9.375a3 3 0 0 0 3-3V6.108c0-1.505-1.125-2.811-2.664-2.94a48.972 48.972 0 0 0-.673-.05A3 3 0 0 0 15 1.5h-1.5a3 3 0 0 0-2.663 1.618c-.225.015-.45.032-.673.05C8.662 3.295 7.554 4.542 7.502 6ZM13.5 3A1.5 1.5 0 0 0 12 4.5h4.5A1.5 1.5 0 0 0 15 3h-1.5Z\",\n clipRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M3 9.375C3 8.339 3.84 7.5 4.875 7.5h9.75c1.036 0 1.875.84 1.875 1.875v11.25c0 1.035-.84 1.875-1.875 1.875h-9.75A1.875 1.875 0 0 1 3 20.625V9.375Zm9.586 4.594a.75.75 0 0 0-1.172-.938l-2.476 3.096-.908-.907a.75.75 0 0 0-1.06 1.06l1.5 1.5a.75.75 0 0 0 1.116-.062l3-3.75Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ClipboardDocumentCheckIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction CurrencyDollarIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.464 8.746c.227-.18.497-.311.786-.394v2.795a2.252 2.252 0 0 1-.786-.393c-.394-.313-.546-.681-.546-1.004 0-.323.152-.691.546-1.004ZM12.75 15.662v-2.824c.347.085.664.228.921.421.427.32.579.686.579.991 0 .305-.152.671-.579.991a2.534 2.534 0 0 1-.921.42Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M12 2.25c-5.385 0-9.75 4.365-9.75 9.75s4.365 9.75 9.75 9.75 9.75-4.365 9.75-9.75S17.385 2.25 12 2.25ZM12.75 6a.75.75 0 0 0-1.5 0v.816a3.836 3.836 0 0 0-1.72.756c-.712.566-1.112 1.35-1.112 2.178 0 .829.4 1.612 1.113 2.178.502.4 1.102.647 1.719.756v2.978a2.536 2.536 0 0 1-.921-.421l-.879-.66a.75.75 0 0 0-.9 1.2l.879.66c.533.4 1.169.645 1.821.75V18a.75.75 0 0 0 1.5 0v-.81a4.124 4.124 0 0 0 1.821-.749c.745-.559 1.179-1.344 1.179-2.191 0-.847-.434-1.632-1.179-2.191a4.122 4.122 0 0 0-1.821-.75V8.354c.29.082.559.213.786.393l.415.33a.75.75 0 0 0 .933-1.175l-.415-.33a3.836 3.836 0 0 0-1.719-.755V6Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(CurrencyDollarIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction ExclamationCircleIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12ZM12 8.25a.75.75 0 0 1 .75.75v3.75a.75.75 0 0 1-1.5 0V9a.75.75 0 0 1 .75-.75Zm0 8.25a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ExclamationCircleIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction ExclamationTriangleIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003ZM12 8.25a.75.75 0 0 1 .75.75v3.75a.75.75 0 0 1-1.5 0V9a.75.75 0 0 1 .75-.75Zm0 8.25a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ExclamationTriangleIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction HeartIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"m11.645 20.91-.007-.003-.022-.012a15.247 15.247 0 0 1-.383-.218 25.18 25.18 0 0 1-4.244-3.17C4.688 15.36 2.25 12.174 2.25 8.25 2.25 5.322 4.714 3 7.688 3A5.5 5.5 0 0 1 12 5.052 5.5 5.5 0 0 1 16.313 3c2.973 0 5.437 2.322 5.437 5.25 0 3.925-2.438 7.111-4.739 9.256a25.175 25.175 0 0 1-4.244 3.17 15.247 15.247 0 0 1-.383.219l-.022.012-.007.004-.003.001a.752.752 0 0 1-.704 0l-.003-.001Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(HeartIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction InformationCircleIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm8.706-1.442c1.146-.573 2.437.463 2.126 1.706l-.709 2.836.042-.02a.75.75 0 0 1 .67 1.34l-.04.022c-1.147.573-2.438-.463-2.127-1.706l.71-2.836-.042.02a.75.75 0 1 1-.671-1.34l.041-.022ZM12 9a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(InformationCircleIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction LanguageIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M9 2.25a.75.75 0 0 1 .75.75v1.506a49.384 49.384 0 0 1 5.343.371.75.75 0 1 1-.186 1.489c-.66-.083-1.323-.151-1.99-.206a18.67 18.67 0 0 1-2.97 6.323c.318.384.65.753 1 1.107a.75.75 0 0 1-1.07 1.052A18.902 18.902 0 0 1 9 13.687a18.823 18.823 0 0 1-5.656 4.482.75.75 0 0 1-.688-1.333 17.323 17.323 0 0 0 5.396-4.353A18.72 18.72 0 0 1 5.89 8.598a.75.75 0 0 1 1.388-.568A17.21 17.21 0 0 0 9 11.224a17.168 17.168 0 0 0 2.391-5.165 48.04 48.04 0 0 0-8.298.307.75.75 0 0 1-.186-1.489 49.159 49.159 0 0 1 5.343-.371V3A.75.75 0 0 1 9 2.25ZM15.75 9a.75.75 0 0 1 .68.433l5.25 11.25a.75.75 0 1 1-1.36.634l-1.198-2.567h-6.744l-1.198 2.567a.75.75 0 0 1-1.36-.634l5.25-11.25A.75.75 0 0 1 15.75 9Zm-2.672 8.25h5.344l-2.672-5.726-2.672 5.726Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(LanguageIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction LightBulbIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 .75a8.25 8.25 0 0 0-4.135 15.39c.686.398 1.115 1.008 1.134 1.623a.75.75 0 0 0 .577.706c.352.083.71.148 1.074.195.323.041.6-.218.6-.544v-4.661a6.714 6.714 0 0 1-.937-.171.75.75 0 1 1 .374-1.453 5.261 5.261 0 0 0 2.626 0 .75.75 0 1 1 .374 1.452 6.712 6.712 0 0 1-.937.172v4.66c0 .327.277.586.6.545.364-.047.722-.112 1.074-.195a.75.75 0 0 0 .577-.706c.02-.615.448-1.225 1.134-1.623A8.25 8.25 0 0 0 12 .75Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M9.013 19.9a.75.75 0 0 1 .877-.597 11.319 11.319 0 0 0 4.22 0 .75.75 0 1 1 .28 1.473 12.819 12.819 0 0 1-4.78 0 .75.75 0 0 1-.597-.876ZM9.754 22.344a.75.75 0 0 1 .824-.668 13.682 13.682 0 0 0 2.844 0 .75.75 0 1 1 .156 1.492 15.156 15.156 0 0 1-3.156 0 .75.75 0 0 1-.668-.824Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(LightBulbIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction ShieldExclamationIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M11.484 2.17a.75.75 0 0 1 1.032 0 11.209 11.209 0 0 0 7.877 3.08.75.75 0 0 1 .722.515 12.74 12.74 0 0 1 .635 3.985c0 5.942-4.064 10.933-9.563 12.348a.749.749 0 0 1-.374 0C6.314 20.683 2.25 15.692 2.25 9.75c0-1.39.223-2.73.635-3.985a.75.75 0 0 1 .722-.516l.143.001c2.996 0 5.718-1.17 7.734-3.08ZM12 8.25a.75.75 0 0 1 .75.75v3.75a.75.75 0 0 1-1.5 0V9a.75.75 0 0 1 .75-.75ZM12 15a.75.75 0 0 0-.75.75v.008c0 .414.336.75.75.75h.008a.75.75 0 0 0 .75-.75v-.008a.75.75 0 0 0-.75-.75H12Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ShieldExclamationIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction UserIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M7.5 6a4.5 4.5 0 1 1 9 0 4.5 4.5 0 0 1-9 0ZM3.751 20.105a8.25 8.25 0 0 1 16.498 0 .75.75 0 0 1-.437.695A18.683 18.683 0 0 1 12 22.5c-2.786 0-5.433-.608-7.812-1.7a.75.75 0 0 1-.437-.695Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(UserIcon);\nexport default ForwardRef;","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","\"use client\";\n\nimport {\n ExclamationCircleIcon,\n ExclamationTriangleIcon,\n InformationCircleIcon,\n} from \"@heroicons/react/24/solid\";\nimport clsx from \"clsx\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { RiskSignal } from \"../types\";\n\ninterface RiskSignalCardProps {\n signal: RiskSignal;\n variant?: \"error\" | \"warning\" | \"success\";\n}\n\nconst variantStyles = {\n error: \"bg-error/10 border-error/30\",\n warning: \"bg-warning/10 border-warning/30\",\n success: \"bg-success/10 border-success/30\",\n};\n\nconst iconColor = {\n error: \"text-error\",\n warning: \"text-warning\",\n success: \"text-success\",\n};\n\nconst severityIcon = {\n high: ExclamationCircleIcon,\n medium: ExclamationTriangleIcon,\n low: InformationCircleIcon,\n};\n\nexport function RiskSignalCard({\n signal,\n variant = \"error\",\n}: RiskSignalCardProps) {\n const { t } = useTranslation();\n const Icon = severityIcon[signal.severity];\n\n return (\n <div className={clsx(\"card border-2 backdrop-blur-sm\", variantStyles[variant])}>\n <div className=\"card-body\">\n <div className=\"flex items-start gap-4\">\n <Icon className={clsx(\"size-8 mt-1 shrink-0\", iconColor[variant])} />\n\n <div className=\"flex-1\">\n <h4 className=\"card-title text-xl\">{signal.title}</h4>\n <p className=\"mt-2 text-neutral-content\">{signal.description}</p>\n\n {/* What to do */}\n <div className=\"mt-4 rounded-lg bg-base-100/50 p-4\">\n <p className=\"mb-2 text-sm font-semibold\">\n 💡 {t(\"page.tradeSafety.result.whatToDo\")}\n </p>\n <p className=\"text-sm\">{signal.what_to_do}</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { ExclamationTriangleIcon } from \"@heroicons/react/24/solid\";\nimport { motion } from \"framer-motion\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { RiskSignal } from \"../../types\";\nimport { RiskSignalCard } from \"../RiskSignalCard\";\n\ninterface CautionsSectionProps {\n cautions: RiskSignal[];\n}\n\nexport function CautionsSection({ cautions }: CautionsSectionProps) {\n const { t } = useTranslation();\n\n if (cautions.length === 0) return null;\n\n return (\n <section>\n <h3 className=\"mb-6 flex items-center gap-3 text-3xl font-bold\">\n <ExclamationTriangleIcon className=\"size-10 text-warning\" />\n {t(\"page.tradeSafety.result.cautions\")}\n </h3>\n\n <div className=\"space-y-4\">\n {cautions.map((caution, idx) => (\n <motion.div\n key={idx}\n initial={{ x: -50, opacity: 0 }}\n animate={{ x: 0, opacity: 1 }}\n transition={{ delay: idx * 0.1 }}\n whileHover={{ scale: 1.02, x: 10 }}\n >\n <RiskSignalCard signal={caution} variant=\"warning\" />\n </motion.div>\n ))}\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { ChatBubbleOvalLeftEllipsisIcon } from \"@heroicons/react/24/solid\";\nimport { motion } from \"framer-motion\";\nimport Link from \"next/link\";\nimport { useTranslation } from \"react-i18next\";\n\nexport function CompanionCtaSection() {\n const { t, i18n } = useTranslation();\n const lang = i18n.language;\n\n return (\n <section className=\"hero min-h-[30vh] rounded-3xl bg-primary text-primary-content\">\n <div className=\"hero-content text-center\">\n <div>\n <ChatBubbleOvalLeftEllipsisIcon className=\"mx-auto mb-6 size-20\" />\n\n <h3 className=\"mb-4 text-4xl font-bold\">\n {t(\"page.tradeSafety.result.companionCta.title\")}\n </h3>\n\n <p className=\"mb-8 max-w-2xl text-xl\">\n {t(\"page.tradeSafety.result.companionCta.description\")}\n </p>\n\n <Link href={`/${lang}/companions`}>\n <motion.button\n whileHover={{ scale: 1.1 }}\n whileTap={{ scale: 0.95 }}\n className=\"btn btn-lg bg-base-100 text-primary hover:bg-base-200\"\n >\n {t(\"page.tradeSafety.result.companionCta.button\")}\n </motion.button>\n </Link>\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { UserIcon } from \"@heroicons/react/24/solid\";\nimport { motion } from \"framer-motion\";\nimport { useTranslation } from \"react-i18next\";\n\ninterface ExpertAdviceSectionProps {\n advice: string;\n}\n\nexport function ExpertAdviceSection({ advice }: ExpertAdviceSectionProps) {\n const { t } = useTranslation();\n\n return (\n <motion.section\n whileHover={{ scale: 1.02 }}\n className=\"card bg-secondary text-secondary-content shadow-xl\"\n >\n <div className=\"card-body\">\n <div className=\"mb-6 flex items-center gap-4\">\n <div className=\"avatar placeholder\">\n <div className=\"w-16 rounded-full bg-primary text-primary-content\">\n <UserIcon className=\"size-8\" />\n </div>\n </div>\n <div>\n <h3 className=\"text-2xl font-bold\">\n {t(\"page.tradeSafety.result.expertAdvice\")}\n </h3>\n <p className=\"opacity-80\">\n {t(\"page.tradeSafety.result.expertName\")}\n </p>\n </div>\n </div>\n\n <div className=\"prose max-w-none\">\n <p className=\"whitespace-pre-wrap text-lg\">{advice}</p>\n </div>\n </div>\n </motion.section>\n );\n}\n","\"use client\";\n\nimport {\n CurrencyDollarIcon,\n ExclamationTriangleIcon,\n} from \"@heroicons/react/24/solid\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { PriceAnalysis } from \"../../types\";\n\ninterface PriceAnalysisSectionProps {\n data?: PriceAnalysis;\n}\n\nexport function PriceAnalysisSection({ data }: PriceAnalysisSectionProps) {\n const { t, i18n } = useTranslation();\n\n if (!data) return null;\n\n return (\n <section>\n <h3 className=\"mb-6 flex items-center gap-3 text-3xl font-bold\">\n <CurrencyDollarIcon className=\"size-10 text-secondary\" />\n {t(\"page.tradeSafety.result.priceAnalysis\")}\n </h3>\n\n <div className=\"card bg-base-200 shadow-xl\">\n <div className=\"card-body\">\n <div className=\"grid grid-cols-1 gap-6 md:grid-cols-2\">\n {data.market_price_range && (\n <div>\n <h4 className=\"mb-2 text-lg font-semibold\">\n {t(\"page.tradeSafety.result.marketPrice\")}\n </h4>\n <p className=\"text-2xl font-bold\">{data.market_price_range}</p>\n </div>\n )}\n\n {data.offered_price && (\n <div>\n <h4 className=\"mb-2 text-lg font-semibold\">\n {t(\"page.tradeSafety.result.offeredPrice\")}\n </h4>\n <p className=\"text-2xl font-bold text-primary\">\n {new Intl.NumberFormat(i18n.language, {\n style: \"currency\",\n currency: data.currency || \"USD\",\n }).format(data.offered_price)}\n </p>\n </div>\n )}\n </div>\n\n {/* Price Assessment */}\n <div className=\"mt-6 rounded-lg bg-base-100 p-4\">\n <h4 className=\"mb-2 text-lg font-semibold\">\n {t(\"page.tradeSafety.result.priceAssessment\")}\n </h4>\n <p className=\"text-neutral-content\">{data.price_assessment}</p>\n </div>\n\n {/* Warnings */}\n {data.warnings.length > 0 && (\n <div className=\"mt-4\">\n <h4 className=\"mb-2 flex items-center gap-2 text-lg font-semibold text-warning\">\n <ExclamationTriangleIcon className=\"size-6\" />\n {t(\"page.tradeSafety.result.priceWarnings\")}\n </h4>\n <ul className=\"list-inside list-disc space-y-1\">\n {data.warnings.map((warning, index) => (\n <li key={index} className=\"text-neutral-content\">\n {warning}\n </li>\n ))}\n </ul>\n </div>\n )}\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { HeartIcon, LightBulbIcon } from \"@heroicons/react/24/solid\";\nimport { useTranslation } from \"react-i18next\";\n\ninterface RecommendationSectionProps {\n recommendation: string;\n emotionalSupport: string;\n}\n\nexport function RecommendationSection({\n recommendation,\n emotionalSupport,\n}: RecommendationSectionProps) {\n const { t } = useTranslation();\n\n return (\n <section>\n <h3 className=\"mb-6 flex items-center gap-3 text-3xl font-bold\">\n <LightBulbIcon className=\"size-10 text-warning\" />\n {t(\"page.tradeSafety.result.recommendation\")}\n </h3>\n\n <div className=\"card bg-base-200 shadow-xl\">\n <div className=\"card-body\">\n <div className=\"prose max-w-none\">\n <p className=\"whitespace-pre-wrap text-lg text-neutral-content\">\n {recommendation}\n </p>\n </div>\n\n <div className=\"divider\"></div>\n\n <div className=\"rounded-lg bg-base-100 p-4\">\n <p className=\"flex items-center gap-2 text-lg font-medium\">\n <HeartIcon className=\"size-6 text-info\" /> {emotionalSupport}\n </p>\n </div>\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport {\n CheckBadgeIcon,\n ExclamationTriangleIcon,\n ShieldExclamationIcon,\n} from \"@heroicons/react/24/solid\";\nimport clsx from \"clsx\";\nimport { useTranslation } from \"react-i18next\";\n\ninterface RiskScoreHeroProps {\n score: number;\n}\n\ninterface RiskLevel {\n level: \"high\" | \"medium\" | \"low\";\n color: string;\n Icon: React.ComponentType<{ className?: string }>;\n}\n\nfunction getRiskLevel(score: number): RiskLevel {\n if (score >= 70) {\n return { level: \"high\", color: \"error\", Icon: ShieldExclamationIcon };\n }\n if (score >= 40) {\n return { level: \"medium\", color: \"warning\", Icon: ExclamationTriangleIcon };\n }\n return { level: \"low\", color: \"success\", Icon: CheckBadgeIcon };\n}\n\nexport function RiskScoreHero({ score }: RiskScoreHeroProps) {\n const { t } = useTranslation();\n const risk = getRiskLevel(score);\n const { Icon } = risk;\n\n const colorClasses: Record<string, string> = {\n error: \"text-error\",\n warning: \"text-warning\",\n success: \"text-success\",\n };\n\n return (\n <div className=\"hero min-h-[40vh] rounded-3xl bg-base-200\">\n <div className=\"hero-content text-center\">\n <div>\n <div className=\"mb-4\">\n <Icon className={clsx(\"size-32\", colorClasses[risk.color])} />\n </div>\n <h2 className=\"mb-4 text-5xl font-bold\">\n {t(`page.tradeSafety.result.riskLevel.${risk.level}.title`)}\n </h2>\n\n {/* 위험도 게이지 */}\n <div className=\"mx-auto w-64\">\n <div\n className={clsx(\"radial-progress\", colorClasses[risk.color])}\n style={\n {\n \"--value\": score,\n \"--size\": \"12rem\",\n \"--thickness\": \"1rem\",\n } as React.CSSProperties\n }\n role=\"progressbar\"\n >\n <span className=\"text-5xl font-bold\">{score}</span>\n </div>\n </div>\n\n <p className=\"mt-6 max-w-lg text-xl text-neutral-content\">\n {t(`page.tradeSafety.result.riskLevel.${risk.level}.message`)}\n </p>\n </div>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { ShieldExclamationIcon } from \"@heroicons/react/24/solid\";\nimport { motion } from \"framer-motion\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { RiskSignal } from \"../../types\";\nimport { RiskSignalCard } from \"../RiskSignalCard\";\n\ninterface RiskSignalsSectionProps {\n signals: RiskSignal[];\n}\n\nexport function RiskSignalsSection({ signals }: RiskSignalsSectionProps) {\n const { t } = useTranslation();\n\n if (signals.length === 0) return null;\n\n return (\n <section>\n <h3 className=\"mb-6 flex items-center gap-3 text-3xl font-bold\">\n <ShieldExclamationIcon className=\"size-10 text-error\" />\n {t(\"page.tradeSafety.result.riskSignals\")}\n </h3>\n\n <div className=\"space-y-4\">\n {signals.map((signal, idx) => (\n <motion.div\n key={idx}\n initial={{ x: -50, opacity: 0 }}\n animate={{ x: 0, opacity: 1 }}\n transition={{ delay: idx * 0.1 }}\n whileHover={{ scale: 1.02, x: 10 }}\n >\n <RiskSignalCard signal={signal} variant=\"error\" />\n </motion.div>\n ))}\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { CheckCircleIcon } from \"@heroicons/react/24/solid\";\nimport { motion } from \"framer-motion\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { RiskSignal } from \"../../types\";\nimport { RiskSignalCard } from \"../RiskSignalCard\";\n\ninterface SafeIndicatorsSectionProps {\n indicators: RiskSignal[];\n}\n\nexport function SafeIndicatorsSection({\n indicators,\n}: SafeIndicatorsSectionProps) {\n const { t } = useTranslation();\n\n if (indicators.length === 0) return null;\n\n return (\n <section>\n <h3 className=\"mb-6 flex items-center gap-3 text-3xl font-bold\">\n <CheckCircleIcon className=\"size-10 text-success\" />\n {t(\"page.tradeSafety.result.safeIndicators\")}\n </h3>\n\n <div className=\"space-y-4\">\n {indicators.map((indicator, idx) => (\n <motion.div\n key={idx}\n initial={{ x: -50, opacity: 0 }}\n animate={{ x: 0, opacity: 1 }}\n transition={{ delay: idx * 0.1 }}\n whileHover={{ scale: 1.02, x: 10 }}\n >\n <RiskSignalCard signal={indicator} variant=\"success\" />\n </motion.div>\n ))}\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { ClipboardDocumentCheckIcon } from \"@heroicons/react/24/solid\";\nimport { motion } from \"framer-motion\";\nimport { useTranslation } from \"react-i18next\";\n\ninterface SafetyChecklistSectionProps {\n items: string[];\n}\n\nexport function SafetyChecklistSection({ items }: SafetyChecklistSectionProps) {\n const { t } = useTranslation();\n\n if (items.length === 0) return null;\n\n return (\n <section>\n <h3 className=\"mb-6 flex items-center gap-3 text-3xl font-bold\">\n <ClipboardDocumentCheckIcon className=\"size-10 text-primary\" />\n {t(\"page.tradeSafety.result.safetyChecklist\")}\n </h3>\n\n <div className=\"card border-2 border-primary/30 bg-base-200\">\n <div className=\"card-body\">\n <p className=\"mb-6 text-lg text-neutral-content\">\n {t(\"page.tradeSafety.result.checklistDescription\")}\n </p>\n\n <div className=\"space-y-3\">\n {items.map((item, idx) => (\n <motion.label\n key={idx}\n initial={{ x: -20, opacity: 0 }}\n animate={{ x: 0, opacity: 1 }}\n transition={{ delay: idx * 0.08 }}\n className=\"flex cursor-pointer items-start gap-3 rounded-lg p-3 hover:bg-base-100/30\"\n >\n <input\n type=\"checkbox\"\n className=\"checkbox-primary checkbox mt-1\"\n />\n <span className=\"text-lg\">{item}</span>\n </motion.label>\n ))}\n </div>\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { LanguageIcon } from \"@heroicons/react/24/solid\";\nimport { useTranslation } from \"react-i18next\";\n\ninterface TranslationSectionProps {\n translation?: string | null;\n nuance?: string | null;\n}\n\nexport function TranslationSection({\n translation,\n nuance,\n}: TranslationSectionProps) {\n const { t } = useTranslation();\n\n if (!translation && !nuance) return null;\n\n return (\n <section>\n <h3 className=\"mb-6 flex items-center gap-3 text-3xl font-bold\">\n <LanguageIcon className=\"size-10 text-primary\" />\n {t(\"page.tradeSafety.result.translation\")}\n </h3>\n\n <div className=\"card bg-base-200 shadow-xl\">\n <div className=\"card-body\">\n {translation && (\n <div className=\"mb-4\">\n <h4 className=\"mb-2 text-lg font-semibold\">\n {t(\"page.tradeSafety.result.translationTitle\")}\n </h4>\n <p className=\"whitespace-pre-wrap text-neutral-content\">\n {translation}\n </p>\n </div>\n )}\n\n {nuance && (\n <div>\n <h4 className=\"mb-2 text-lg font-semibold\">\n {t(\"page.tradeSafety.result.nuanceTitle\")}\n </h4>\n <p className=\"whitespace-pre-wrap text-neutral-content\">\n {nuance}\n </p>\n </div>\n )}\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { motion, Variants } from \"framer-motion\";\n\nimport { TradeSafetyAnalysis } from \"../../types\";\n\nimport { CautionsSection } from \"./CautionsSection\";\nimport { CompanionCtaSection } from \"./CompanionCtaSection\";\nimport { ExpertAdviceSection } from \"./ExpertAdviceSection\";\nimport { PriceAnalysisSection } from \"./PriceAnalysisSection\";\nimport { RecommendationSection } from \"./RecommendationSection\";\nimport { RiskScoreHero } from \"./RiskScoreHero\";\nimport { RiskSignalsSection } from \"./RiskSignalsSection\";\nimport { SafeIndicatorsSection } from \"./SafeIndicatorsSection\";\nimport { SafetyChecklistSection } from \"./SafetyChecklistSection\";\nimport { TranslationSection } from \"./TranslationSection\";\n\ninterface DetailedResultProps {\n analysis: TradeSafetyAnalysis;\n expertAdvice?: string | null;\n /** Set to true to show AI companion CTA (for external integrations) */\n showCompanionCta?: boolean;\n}\n\nconst fadeInUp: Variants = {\n initial: { y: 40, opacity: 0 },\n animate: {\n y: 0,\n opacity: 1,\n transition: { duration: 0.6 },\n },\n};\n\nconst staggerContainer: Variants = {\n animate: {\n transition: {\n staggerChildren: 0.15,\n },\n },\n};\n\nexport function DetailedResult({\n analysis,\n expertAdvice,\n showCompanionCta = false,\n}: DetailedResultProps) {\n return (\n <motion.div\n variants={staggerContainer}\n initial=\"initial\"\n animate=\"animate\"\n className=\"mx-auto max-w-5xl space-y-12\"\n >\n {/* Hero: 종합 위험도 */}\n <motion.div variants={fadeInUp}>\n <RiskScoreHero score={analysis.risk_score} />\n </motion.div>\n\n {/* 번역 + 뉘앙스 */}\n {(analysis.translation || analysis.nuance_explanation) && (\n <motion.div variants={fadeInUp}>\n <TranslationSection\n translation={analysis.translation}\n nuance={analysis.nuance_explanation}\n />\n </motion.div>\n )}\n\n {/* 위험 신호 */}\n {analysis.risk_signals.length > 0 && (\n <motion.div variants={fadeInUp}>\n <RiskSignalsSection signals={analysis.risk_signals} />\n </motion.div>\n )}\n\n {/* 주의사항 */}\n {analysis.cautions.length > 0 && (\n <motion.div variants={fadeInUp}>\n <CautionsSection cautions={analysis.cautions} />\n </motion.div>\n )}\n\n {/* 안전 요소 */}\n {analysis.safe_indicators.length > 0 && (\n <motion.div variants={fadeInUp}>\n <SafeIndicatorsSection indicators={analysis.safe_indicators} />\n </motion.div>\n )}\n\n {/* 가격 분석 */}\n {analysis.price_analysis && (\n <motion.div variants={fadeInUp}>\n <PriceAnalysisSection data={analysis.price_analysis} />\n </motion.div>\n )}\n\n {/* 체크리스트 */}\n {analysis.safety_checklist.length > 0 && (\n <motion.div variants={fadeInUp}>\n <SafetyChecklistSection items={analysis.safety_checklist} />\n </motion.div>\n )}\n\n {/* 전문가 조언 (있을 경우) */}\n {expertAdvice && (\n <motion.div variants={fadeInUp}>\n <ExpertAdviceSection advice={expertAdvice} />\n </motion.div>\n )}\n\n {/* 종합 추천 */}\n <motion.div variants={fadeInUp}>\n <RecommendationSection\n recommendation={analysis.recommendation}\n emotionalSupport={analysis.emotional_support}\n />\n </motion.div>\n\n {/* AI 동반자 CTA - 외부 통합 시에만 표시 */}\n {showCompanionCta && (\n <motion.div variants={fadeInUp}>\n <CompanionCtaSection />\n </motion.div>\n )}\n </motion.div>\n );\n}\n","\"use client\";\n\nimport Link from \"next/link\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { QuickSummary } from \"../types\";\n\ninterface QuickResultTeaserProps {\n summary: QuickSummary;\n checkId: string;\n}\n\nexport function QuickResultTeaser({\n summary,\n checkId,\n}: QuickResultTeaserProps) {\n const { t, i18n } = useTranslation();\n const lang = i18n.language;\n\n return (\n <div className=\"mx-auto max-w-2xl\">\n <h1 className=\"mb-8 text-center text-3xl font-bold\">\n {t(\"page.tradeSafety.result.title\")}\n </h1>\n\n {/* Quick Summary Cards */}\n <div className=\"mb-8 grid grid-cols-1 gap-4 md:grid-cols-3\">\n <div className=\"card bg-error/10\">\n <div className=\"card-body items-center text-center\">\n <h3 className=\"text-4xl font-bold text-error\">\n {summary.risk_signals_count}\n </h3>\n <p className=\"text-sm\">\n {t(\"page.tradeSafety.result.riskSignals\")}\n </p>\n </div>\n </div>\n <div className=\"card bg-warning/10\">\n <div className=\"card-body items-center text-center\">\n <h3 className=\"text-4xl font-bold text-warning\">\n {summary.cautions_count}\n </h3>\n <p className=\"text-sm\">{t(\"page.tradeSafety.result.cautions\")}</p>\n </div>\n </div>\n <div className=\"card bg-success/10\">\n <div className=\"card-body items-center text-center\">\n <h3 className=\"text-4xl font-bold text-success\">\n {summary.safe_indicators_count}\n </h3>\n <p className=\"text-sm\">\n {t(\"page.tradeSafety.result.safeIndicators\")}\n </p>\n </div>\n </div>\n </div>\n\n {/* Signup Prompt */}\n <div className=\"card bg-base-200 shadow-xl\">\n <div className=\"card-body items-center text-center\">\n <h2 className=\"card-title text-2xl\">\n {t(\"page.tradeSafety.result.signupRequired\")}\n </h2>\n <p className=\"mb-4 text-neutral-content\">\n {t(\"page.tradeSafety.result.signupMessage\")}\n </p>\n <Link\n href={`/${lang}/login?callbackUrl=${encodeURIComponent(`/${lang}/trade-safety/result/${checkId}`)}`}\n className=\"btn btn-primary\"\n >\n {t(\"login\")}\n </Link>\n </div>\n </div>\n </div>\n );\n}\n","import { BaseCrudRepository } from \"@aioia/core\";\nimport { z } from \"zod\";\n\n// Zod schema for nested objects\nconst riskSignalSchema = z.object({\n category: z.enum([\"payment\", \"seller\", \"platform\", \"price\", \"content\"]),\n severity: z.enum([\"high\", \"medium\", \"low\"]),\n title: z.string(),\n description: z.string(),\n what_to_do: z.string(),\n});\n\nconst priceAnalysisSchema = z\n .object({\n market_price_range: z.string().nullish(),\n offered_price: z.number().nullish(),\n currency: z.string().nullish(),\n price_assessment: z.string(),\n warnings: z.array(z.string()),\n })\n .nullish();\n\nconst tradeSafetyAnalysisSchema = z.object({\n translation: z.string().nullish(),\n nuance_explanation: z.string().nullish(),\n risk_signals: z.array(riskSignalSchema),\n cautions: z.array(riskSignalSchema),\n safe_indicators: z.array(riskSignalSchema),\n price_analysis: priceAnalysisSchema,\n safety_checklist: z.array(z.string()),\n risk_score: z.number(),\n recommendation: z.string(),\n emotional_support: z.string(),\n});\n\nconst quickSummarySchema = z.object({\n risk_signals_count: z.number(),\n cautions_count: z.number(),\n safe_indicators_count: z.number(),\n});\n\nconst tradeSafetyCheckResponseSchema = z.object({\n id: z.string(),\n user_id: z.string().nullish(),\n input_text: z.string(),\n llm_analysis: tradeSafetyAnalysisSchema,\n risk_score: z.number(),\n expert_advice: z.string().nullish(),\n expert_reviewed: z.boolean(),\n expert_reviewed_at: z.string().nullish(),\n expert_reviewed_by: z.string().nullish(),\n created_at: z.string(),\n updated_at: z.string(),\n});\n\n// Full response for authenticated users\nexport type TradeSafetyCheckFullResponse = z.infer<\n typeof tradeSafetyCheckResponseSchema\n>;\n\n// Quick response for non-authenticated users\nexport interface QuickCheckRepositoryResponse {\n id: string;\n quick_summary: {\n risk_signals_count: number;\n cautions_count: number;\n safe_indicators_count: number;\n };\n signup_required: true;\n}\n\n// Union type for repository responses\nexport type TradeSafetyCheckRepositoryResponse =\n | TradeSafetyCheckFullResponse\n | QuickCheckRepositoryResponse;\n\n// Union schema for repository responses\nconst tradeSafetyCheckRepositoryResponseSchema = z.union([\n tradeSafetyCheckResponseSchema,\n z.object({\n id: z.string(),\n quick_summary: quickSummarySchema,\n signup_required: z.literal(true),\n }),\n]);\n\nexport class TradeSafetyRepository extends BaseCrudRepository<TradeSafetyCheckRepositoryResponse> {\n readonly resource = \"trade-safety\";\n\n protected getDataSchema() {\n return tradeSafetyCheckRepositoryResponseSchema;\n }\n}\n","export type RiskSeverity = \"high\" | \"medium\" | \"low\";\nexport type RiskCategory =\n | \"payment\"\n | \"seller\"\n | \"platform\"\n | \"price\"\n | \"content\";\n\n/**\n * Risk score thresholds for Trade Safety checks\n * Used consistently across Public and Admin interfaces\n */\nexport const RISK_SCORE_THRESHOLDS = {\n high: 70, // >= 70: High risk (red)\n medium: 40, // >= 40: Medium risk (yellow)\n // < 40: Low risk (green)\n} as const;\n\nexport interface TradeSafetyCheckRequest {\n input_text: string;\n}\n\nexport interface RiskSignal {\n category: RiskCategory;\n severity: RiskSeverity;\n title: string;\n description: string;\n what_to_do: string;\n}\n\nexport interface PriceAnalysis {\n market_price_range?: string | null;\n offered_price?: number | null;\n currency?: string | null;\n price_assessment: string;\n warnings: string[];\n}\n\nexport interface TradeSafetyAnalysis {\n translation?: string | null;\n nuance_explanation?: string | null;\n risk_signals: RiskSignal[];\n cautions: RiskSignal[];\n safe_indicators: RiskSignal[];\n price_analysis?: PriceAnalysis | null;\n safety_checklist: string[];\n risk_score: number;\n recommendation: string;\n emotional_support: string;\n}\n\nexport interface QuickSummary {\n risk_signals_count: number;\n cautions_count: number;\n safe_indicators_count: number;\n}\n\nexport interface TradeSafetyCheckResponse {\n id: string;\n user_id?: string | null;\n input_text: string;\n llm_analysis: TradeSafetyAnalysis;\n risk_score: number;\n expert_advice?: string | null;\n expert_reviewed: boolean;\n expert_reviewed_at?: string | null;\n expert_reviewed_by?: string | null;\n created_at: string;\n updated_at: string;\n}\n\nexport interface QuickCheckResponse {\n id: string;\n quick_summary: QuickSummary;\n signup_required: true;\n}\n\nexport interface TradeSafetyEditFormData {\n expert_advice?: string | null;\n expert_reviewed: boolean;\n}\n"],"names":["ChatBubbleOvalLeftEllipsisIcon","title","titleId","props","svgRef","React","ForwardRef","CheckBadgeIcon","CheckCircleIcon","ClipboardDocumentCheckIcon","CurrencyDollarIcon","ExclamationCircleIcon","ExclamationTriangleIcon","HeartIcon","InformationCircleIcon","LanguageIcon","LightBulbIcon","ShieldExclamationIcon","UserIcon","r","f","o","clsx","variantStyles","iconColor","severityIcon","RiskSignalCard","signal","variant","t","useTranslation","Icon","jsx","jsxs","CautionsSection","cautions","caution","idx","motion","CompanionCtaSection","i18n","lang","Link","ExpertAdviceSection","advice","PriceAnalysisSection","data","warning","index","RecommendationSection","recommendation","emotionalSupport","getRiskLevel","score","RiskScoreHero","risk","colorClasses","RiskSignalsSection","signals","SafeIndicatorsSection","indicators","indicator","SafetyChecklistSection","items","item","TranslationSection","translation","nuance","fadeInUp","staggerContainer","DetailedResult","analysis","expertAdvice","showCompanionCta","QuickResultTeaser","summary","checkId","riskSignalSchema","z","priceAnalysisSchema","tradeSafetyAnalysisSchema","quickSummarySchema","tradeSafetyCheckResponseSchema","tradeSafetyCheckRepositoryResponseSchema","TradeSafetyRepository","BaseCrudRepository","RISK_SCORE_THRESHOLDS"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13]}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../node_modules/@heroicons/react/24/solid/esm/ChatBubbleOvalLeftEllipsisIcon.js","../node_modules/@heroicons/react/24/solid/esm/CheckBadgeIcon.js","../node_modules/@heroicons/react/24/solid/esm/CheckCircleIcon.js","../node_modules/@heroicons/react/24/solid/esm/ClipboardDocumentCheckIcon.js","../node_modules/@heroicons/react/24/solid/esm/CurrencyDollarIcon.js","../node_modules/@heroicons/react/24/solid/esm/ExclamationCircleIcon.js","../node_modules/@heroicons/react/24/solid/esm/ExclamationTriangleIcon.js","../node_modules/@heroicons/react/24/solid/esm/HeartIcon.js","../node_modules/@heroicons/react/24/solid/esm/InformationCircleIcon.js","../node_modules/@heroicons/react/24/solid/esm/LanguageIcon.js","../node_modules/@heroicons/react/24/solid/esm/LightBulbIcon.js","../node_modules/@heroicons/react/24/solid/esm/ShieldExclamationIcon.js","../node_modules/@heroicons/react/24/solid/esm/UserIcon.js","../node_modules/clsx/dist/clsx.mjs","../src/components/RiskSignalCard.tsx","../src/components/DetailedResult/CautionsSection.tsx","../src/components/DetailedResult/CompanionCtaSection.tsx","../src/components/DetailedResult/ExpertAdviceSection.tsx","../src/components/DetailedResult/PriceAnalysisSection.tsx","../src/components/DetailedResult/RecommendationSection.tsx","../src/components/DetailedResult/RiskScoreHero.tsx","../src/components/DetailedResult/RiskSignalsSection.tsx","../src/components/DetailedResult/SafeIndicatorsSection.tsx","../src/components/DetailedResult/SafetyChecklistSection.tsx","../src/components/DetailedResult/TranslationSection.tsx","../src/components/DetailedResult/index.tsx","../src/components/QuickResultTeaser.tsx","../src/repositories/TradeSafetyRepository.ts","../src/types.ts"],"sourcesContent":["import * as React from \"react\";\nfunction ChatBubbleOvalLeftEllipsisIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M4.804 21.644A6.707 6.707 0 0 0 6 21.75a6.721 6.721 0 0 0 3.583-1.029c.774.182 1.584.279 2.417.279 5.322 0 9.75-3.97 9.75-9 0-5.03-4.428-9-9.75-9s-9.75 3.97-9.75 9c0 2.409 1.025 4.587 2.674 6.192.232.226.277.428.254.543a3.73 3.73 0 0 1-.814 1.686.75.75 0 0 0 .44 1.223ZM8.25 10.875a1.125 1.125 0 1 0 0 2.25 1.125 1.125 0 0 0 0-2.25ZM10.875 12a1.125 1.125 0 1 1 2.25 0 1.125 1.125 0 0 1-2.25 0Zm4.875-1.125a1.125 1.125 0 1 0 0 2.25 1.125 1.125 0 0 0 0-2.25Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ChatBubbleOvalLeftEllipsisIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction CheckBadgeIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M8.603 3.799A4.49 4.49 0 0 1 12 2.25c1.357 0 2.573.6 3.397 1.549a4.49 4.49 0 0 1 3.498 1.307 4.491 4.491 0 0 1 1.307 3.497A4.49 4.49 0 0 1 21.75 12a4.49 4.49 0 0 1-1.549 3.397 4.491 4.491 0 0 1-1.307 3.497 4.491 4.491 0 0 1-3.497 1.307A4.49 4.49 0 0 1 12 21.75a4.49 4.49 0 0 1-3.397-1.549 4.49 4.49 0 0 1-3.498-1.306 4.491 4.491 0 0 1-1.307-3.498A4.49 4.49 0 0 1 2.25 12c0-1.357.6-2.573 1.549-3.397a4.49 4.49 0 0 1 1.307-3.497 4.49 4.49 0 0 1 3.497-1.307Zm7.007 6.387a.75.75 0 1 0-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 0 0-1.06 1.06l2.25 2.25a.75.75 0 0 0 1.14-.094l3.75-5.25Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(CheckBadgeIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction CheckCircleIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm13.36-1.814a.75.75 0 1 0-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 0 0-1.06 1.06l2.25 2.25a.75.75 0 0 0 1.14-.094l3.75-5.25Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(CheckCircleIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction ClipboardDocumentCheckIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M7.502 6h7.128A3.375 3.375 0 0 1 18 9.375v9.375a3 3 0 0 0 3-3V6.108c0-1.505-1.125-2.811-2.664-2.94a48.972 48.972 0 0 0-.673-.05A3 3 0 0 0 15 1.5h-1.5a3 3 0 0 0-2.663 1.618c-.225.015-.45.032-.673.05C8.662 3.295 7.554 4.542 7.502 6ZM13.5 3A1.5 1.5 0 0 0 12 4.5h4.5A1.5 1.5 0 0 0 15 3h-1.5Z\",\n clipRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M3 9.375C3 8.339 3.84 7.5 4.875 7.5h9.75c1.036 0 1.875.84 1.875 1.875v11.25c0 1.035-.84 1.875-1.875 1.875h-9.75A1.875 1.875 0 0 1 3 20.625V9.375Zm9.586 4.594a.75.75 0 0 0-1.172-.938l-2.476 3.096-.908-.907a.75.75 0 0 0-1.06 1.06l1.5 1.5a.75.75 0 0 0 1.116-.062l3-3.75Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ClipboardDocumentCheckIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction CurrencyDollarIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.464 8.746c.227-.18.497-.311.786-.394v2.795a2.252 2.252 0 0 1-.786-.393c-.394-.313-.546-.681-.546-1.004 0-.323.152-.691.546-1.004ZM12.75 15.662v-2.824c.347.085.664.228.921.421.427.32.579.686.579.991 0 .305-.152.671-.579.991a2.534 2.534 0 0 1-.921.42Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M12 2.25c-5.385 0-9.75 4.365-9.75 9.75s4.365 9.75 9.75 9.75 9.75-4.365 9.75-9.75S17.385 2.25 12 2.25ZM12.75 6a.75.75 0 0 0-1.5 0v.816a3.836 3.836 0 0 0-1.72.756c-.712.566-1.112 1.35-1.112 2.178 0 .829.4 1.612 1.113 2.178.502.4 1.102.647 1.719.756v2.978a2.536 2.536 0 0 1-.921-.421l-.879-.66a.75.75 0 0 0-.9 1.2l.879.66c.533.4 1.169.645 1.821.75V18a.75.75 0 0 0 1.5 0v-.81a4.124 4.124 0 0 0 1.821-.749c.745-.559 1.179-1.344 1.179-2.191 0-.847-.434-1.632-1.179-2.191a4.122 4.122 0 0 0-1.821-.75V8.354c.29.082.559.213.786.393l.415.33a.75.75 0 0 0 .933-1.175l-.415-.33a3.836 3.836 0 0 0-1.719-.755V6Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(CurrencyDollarIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction ExclamationCircleIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12ZM12 8.25a.75.75 0 0 1 .75.75v3.75a.75.75 0 0 1-1.5 0V9a.75.75 0 0 1 .75-.75Zm0 8.25a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ExclamationCircleIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction ExclamationTriangleIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003ZM12 8.25a.75.75 0 0 1 .75.75v3.75a.75.75 0 0 1-1.5 0V9a.75.75 0 0 1 .75-.75Zm0 8.25a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ExclamationTriangleIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction HeartIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"m11.645 20.91-.007-.003-.022-.012a15.247 15.247 0 0 1-.383-.218 25.18 25.18 0 0 1-4.244-3.17C4.688 15.36 2.25 12.174 2.25 8.25 2.25 5.322 4.714 3 7.688 3A5.5 5.5 0 0 1 12 5.052 5.5 5.5 0 0 1 16.313 3c2.973 0 5.437 2.322 5.437 5.25 0 3.925-2.438 7.111-4.739 9.256a25.175 25.175 0 0 1-4.244 3.17 15.247 15.247 0 0 1-.383.219l-.022.012-.007.004-.003.001a.752.752 0 0 1-.704 0l-.003-.001Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(HeartIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction InformationCircleIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm8.706-1.442c1.146-.573 2.437.463 2.126 1.706l-.709 2.836.042-.02a.75.75 0 0 1 .67 1.34l-.04.022c-1.147.573-2.438-.463-2.127-1.706l.71-2.836-.042.02a.75.75 0 1 1-.671-1.34l.041-.022ZM12 9a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(InformationCircleIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction LanguageIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M9 2.25a.75.75 0 0 1 .75.75v1.506a49.384 49.384 0 0 1 5.343.371.75.75 0 1 1-.186 1.489c-.66-.083-1.323-.151-1.99-.206a18.67 18.67 0 0 1-2.97 6.323c.318.384.65.753 1 1.107a.75.75 0 0 1-1.07 1.052A18.902 18.902 0 0 1 9 13.687a18.823 18.823 0 0 1-5.656 4.482.75.75 0 0 1-.688-1.333 17.323 17.323 0 0 0 5.396-4.353A18.72 18.72 0 0 1 5.89 8.598a.75.75 0 0 1 1.388-.568A17.21 17.21 0 0 0 9 11.224a17.168 17.168 0 0 0 2.391-5.165 48.04 48.04 0 0 0-8.298.307.75.75 0 0 1-.186-1.489 49.159 49.159 0 0 1 5.343-.371V3A.75.75 0 0 1 9 2.25ZM15.75 9a.75.75 0 0 1 .68.433l5.25 11.25a.75.75 0 1 1-1.36.634l-1.198-2.567h-6.744l-1.198 2.567a.75.75 0 0 1-1.36-.634l5.25-11.25A.75.75 0 0 1 15.75 9Zm-2.672 8.25h5.344l-2.672-5.726-2.672 5.726Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(LanguageIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction LightBulbIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 .75a8.25 8.25 0 0 0-4.135 15.39c.686.398 1.115 1.008 1.134 1.623a.75.75 0 0 0 .577.706c.352.083.71.148 1.074.195.323.041.6-.218.6-.544v-4.661a6.714 6.714 0 0 1-.937-.171.75.75 0 1 1 .374-1.453 5.261 5.261 0 0 0 2.626 0 .75.75 0 1 1 .374 1.452 6.712 6.712 0 0 1-.937.172v4.66c0 .327.277.586.6.545.364-.047.722-.112 1.074-.195a.75.75 0 0 0 .577-.706c.02-.615.448-1.225 1.134-1.623A8.25 8.25 0 0 0 12 .75Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M9.013 19.9a.75.75 0 0 1 .877-.597 11.319 11.319 0 0 0 4.22 0 .75.75 0 1 1 .28 1.473 12.819 12.819 0 0 1-4.78 0 .75.75 0 0 1-.597-.876ZM9.754 22.344a.75.75 0 0 1 .824-.668 13.682 13.682 0 0 0 2.844 0 .75.75 0 1 1 .156 1.492 15.156 15.156 0 0 1-3.156 0 .75.75 0 0 1-.668-.824Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(LightBulbIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction ShieldExclamationIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M11.484 2.17a.75.75 0 0 1 1.032 0 11.209 11.209 0 0 0 7.877 3.08.75.75 0 0 1 .722.515 12.74 12.74 0 0 1 .635 3.985c0 5.942-4.064 10.933-9.563 12.348a.749.749 0 0 1-.374 0C6.314 20.683 2.25 15.692 2.25 9.75c0-1.39.223-2.73.635-3.985a.75.75 0 0 1 .722-.516l.143.001c2.996 0 5.718-1.17 7.734-3.08ZM12 8.25a.75.75 0 0 1 .75.75v3.75a.75.75 0 0 1-1.5 0V9a.75.75 0 0 1 .75-.75ZM12 15a.75.75 0 0 0-.75.75v.008c0 .414.336.75.75.75h.008a.75.75 0 0 0 .75-.75v-.008a.75.75 0 0 0-.75-.75H12Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ShieldExclamationIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction UserIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M7.5 6a4.5 4.5 0 1 1 9 0 4.5 4.5 0 0 1-9 0ZM3.751 20.105a8.25 8.25 0 0 1 16.498 0 .75.75 0 0 1-.437.695A18.683 18.683 0 0 1 12 22.5c-2.786 0-5.433-.608-7.812-1.7a.75.75 0 0 1-.437-.695Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(UserIcon);\nexport default ForwardRef;","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","\"use client\";\n\nimport {\n ExclamationCircleIcon,\n ExclamationTriangleIcon,\n InformationCircleIcon,\n} from \"@heroicons/react/24/solid\";\nimport clsx from \"clsx\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { RiskSignal } from \"../types\";\n\ninterface RiskSignalCardProps {\n signal: RiskSignal;\n variant?: \"error\" | \"warning\" | \"success\";\n}\n\nconst variantStyles = {\n error: \"bg-error/10 border-error/30\",\n warning: \"bg-warning/10 border-warning/30\",\n success: \"bg-success/10 border-success/30\",\n};\n\nconst iconColor = {\n error: \"text-error\",\n warning: \"text-warning\",\n success: \"text-success\",\n};\n\nconst severityIcon = {\n high: ExclamationCircleIcon,\n medium: ExclamationTriangleIcon,\n low: InformationCircleIcon,\n};\n\nexport function RiskSignalCard({\n signal,\n variant = \"error\",\n}: RiskSignalCardProps) {\n const { t } = useTranslation();\n const Icon = severityIcon[signal.severity];\n\n return (\n <div className={clsx(\"card border-2 backdrop-blur-sm\", variantStyles[variant])}>\n <div className=\"card-body\">\n <div className=\"flex items-start gap-4\">\n <Icon className={clsx(\"size-8 mt-1 shrink-0\", iconColor[variant])} />\n\n <div className=\"flex-1\">\n <h4 className=\"card-title text-xl\">{signal.title}</h4>\n <p className=\"mt-2 text-neutral-content\">{signal.description}</p>\n\n {/* What to do */}\n <div className=\"mt-4 rounded-lg bg-base-100/50 p-4\">\n <p className=\"mb-2 text-sm font-semibold\">\n 💡 {t(\"page.tradeSafety.result.whatToDo\")}\n </p>\n <p className=\"text-sm\">{signal.what_to_do}</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { ExclamationTriangleIcon } from \"@heroicons/react/24/solid\";\nimport { motion } from \"framer-motion\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { RiskSignal } from \"../../types\";\nimport { RiskSignalCard } from \"../RiskSignalCard\";\n\ninterface CautionsSectionProps {\n cautions: RiskSignal[];\n}\n\nexport function CautionsSection({ cautions }: CautionsSectionProps) {\n const { t } = useTranslation();\n\n if (cautions.length === 0) return null;\n\n return (\n <section>\n <h3 className=\"mb-6 flex items-center gap-3 text-3xl font-bold\">\n <ExclamationTriangleIcon className=\"size-10 text-warning\" />\n {t(\"page.tradeSafety.result.cautions\")}\n </h3>\n\n <div className=\"space-y-4\">\n {cautions.map((caution, idx) => (\n <motion.div\n key={idx}\n initial={{ x: -50, opacity: 0 }}\n animate={{ x: 0, opacity: 1 }}\n transition={{ delay: idx * 0.1 }}\n whileHover={{ scale: 1.02, x: 10 }}\n >\n <RiskSignalCard signal={caution} variant=\"warning\" />\n </motion.div>\n ))}\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { ChatBubbleOvalLeftEllipsisIcon } from \"@heroicons/react/24/solid\";\nimport { motion } from \"framer-motion\";\nimport Link from \"next/link\";\nimport { useTranslation } from \"react-i18next\";\n\nexport function CompanionCtaSection() {\n const { t, i18n } = useTranslation();\n const lang = i18n.language;\n\n return (\n <section className=\"hero min-h-[30vh] rounded-3xl bg-primary text-primary-content\">\n <div className=\"hero-content text-center\">\n <div>\n <ChatBubbleOvalLeftEllipsisIcon className=\"mx-auto mb-6 size-20\" />\n\n <h3 className=\"mb-4 text-4xl font-bold\">\n {t(\"page.tradeSafety.result.companionCta.title\")}\n </h3>\n\n <p className=\"mb-8 max-w-2xl text-xl\">\n {t(\"page.tradeSafety.result.companionCta.description\")}\n </p>\n\n <Link href={`/${lang}/companions`}>\n <motion.button\n whileHover={{ scale: 1.1 }}\n whileTap={{ scale: 0.95 }}\n className=\"btn btn-lg bg-base-100 text-primary hover:bg-base-200\"\n >\n {t(\"page.tradeSafety.result.companionCta.button\")}\n </motion.button>\n </Link>\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { UserIcon } from \"@heroicons/react/24/solid\";\nimport { motion } from \"framer-motion\";\nimport { useTranslation } from \"react-i18next\";\n\ninterface ExpertAdviceSectionProps {\n advice: string;\n}\n\nexport function ExpertAdviceSection({ advice }: ExpertAdviceSectionProps) {\n const { t } = useTranslation();\n\n return (\n <motion.section\n whileHover={{ scale: 1.02 }}\n className=\"card bg-secondary text-secondary-content shadow-xl\"\n >\n <div className=\"card-body\">\n <div className=\"mb-6 flex items-center gap-4\">\n <div className=\"avatar placeholder\">\n <div className=\"w-16 rounded-full bg-primary text-primary-content\">\n <UserIcon className=\"size-8\" />\n </div>\n </div>\n <div>\n <h3 className=\"text-2xl font-bold\">\n {t(\"page.tradeSafety.result.expertAdvice\")}\n </h3>\n <p className=\"opacity-80\">\n {t(\"page.tradeSafety.result.expertName\")}\n </p>\n </div>\n </div>\n\n <div className=\"prose max-w-none\">\n <p className=\"whitespace-pre-wrap text-lg\">{advice}</p>\n </div>\n </div>\n </motion.section>\n );\n}\n","\"use client\";\n\nimport {\n CurrencyDollarIcon,\n ExclamationTriangleIcon,\n} from \"@heroicons/react/24/solid\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { PriceAnalysis } from \"../../types\";\n\ninterface PriceAnalysisSectionProps {\n data?: PriceAnalysis;\n}\n\nexport function PriceAnalysisSection({ data }: PriceAnalysisSectionProps) {\n const { t, i18n } = useTranslation();\n\n if (!data) return null;\n\n return (\n <section>\n <h3 className=\"mb-6 flex items-center gap-3 text-3xl font-bold\">\n <CurrencyDollarIcon className=\"size-10 text-secondary\" />\n {t(\"page.tradeSafety.result.priceAnalysis\")}\n </h3>\n\n <div className=\"card bg-base-200 shadow-xl\">\n <div className=\"card-body\">\n <div className=\"grid grid-cols-1 gap-6 md:grid-cols-2\">\n {data.market_price_range && (\n <div>\n <h4 className=\"mb-2 text-lg font-semibold\">\n {t(\"page.tradeSafety.result.marketPrice\")}\n </h4>\n <p className=\"text-2xl font-bold\">{data.market_price_range}</p>\n </div>\n )}\n\n {data.offered_price && (\n <div>\n <h4 className=\"mb-2 text-lg font-semibold\">\n {t(\"page.tradeSafety.result.offeredPrice\")}\n </h4>\n <p className=\"text-2xl font-bold text-primary\">\n {new Intl.NumberFormat(i18n.language, {\n style: \"currency\",\n currency: data.currency || \"USD\",\n }).format(data.offered_price)}\n </p>\n </div>\n )}\n </div>\n\n {/* Price Assessment */}\n <div className=\"mt-6 rounded-lg bg-base-100 p-4\">\n <h4 className=\"mb-2 text-lg font-semibold\">\n {t(\"page.tradeSafety.result.priceAssessment\")}\n </h4>\n <p className=\"text-neutral-content\">{data.price_assessment}</p>\n </div>\n\n {/* Warnings */}\n {data.warnings.length > 0 && (\n <div className=\"mt-4\">\n <h4 className=\"mb-2 flex items-center gap-2 text-lg font-semibold text-warning\">\n <ExclamationTriangleIcon className=\"size-6\" />\n {t(\"page.tradeSafety.result.priceWarnings\")}\n </h4>\n <ul className=\"list-inside list-disc space-y-1\">\n {data.warnings.map((warning, index) => (\n <li key={index} className=\"text-neutral-content\">\n {warning}\n </li>\n ))}\n </ul>\n </div>\n )}\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { HeartIcon, LightBulbIcon } from \"@heroicons/react/24/solid\";\nimport { useTranslation } from \"react-i18next\";\n\ninterface RecommendationSectionProps {\n recommendation: string;\n emotionalSupport: string;\n}\n\nexport function RecommendationSection({\n recommendation,\n emotionalSupport,\n}: RecommendationSectionProps) {\n const { t } = useTranslation();\n\n return (\n <section>\n <h3 className=\"mb-6 flex items-center gap-3 text-3xl font-bold\">\n <LightBulbIcon className=\"size-10 text-warning\" />\n {t(\"page.tradeSafety.result.recommendation\")}\n </h3>\n\n <div className=\"card bg-base-200 shadow-xl\">\n <div className=\"card-body\">\n <div className=\"prose max-w-none\">\n <p className=\"whitespace-pre-wrap text-lg text-neutral-content\">\n {recommendation}\n </p>\n </div>\n\n <div className=\"divider\"></div>\n\n <div className=\"rounded-lg bg-base-100 p-4\">\n <p className=\"flex items-center gap-2 text-lg font-medium\">\n <HeartIcon className=\"size-6 text-info\" /> {emotionalSupport}\n </p>\n </div>\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport {\n CheckBadgeIcon,\n ExclamationTriangleIcon,\n ShieldExclamationIcon,\n} from \"@heroicons/react/24/solid\";\nimport clsx from \"clsx\";\nimport { useTranslation } from \"react-i18next\";\n\ninterface RiskScoreHeroProps {\n score: number;\n}\n\ninterface RiskLevel {\n level: \"high\" | \"medium\" | \"low\";\n color: string;\n Icon: React.ComponentType<{ className?: string }>;\n}\n\nfunction getRiskLevel(score: number): RiskLevel {\n if (score >= 70) {\n return { level: \"high\", color: \"error\", Icon: ShieldExclamationIcon };\n }\n if (score >= 40) {\n return { level: \"medium\", color: \"warning\", Icon: ExclamationTriangleIcon };\n }\n return { level: \"low\", color: \"success\", Icon: CheckBadgeIcon };\n}\n\nexport function RiskScoreHero({ score }: RiskScoreHeroProps) {\n const { t } = useTranslation();\n const risk = getRiskLevel(score);\n const { Icon } = risk;\n\n const colorClasses: Record<string, string> = {\n error: \"text-error\",\n warning: \"text-warning\",\n success: \"text-success\",\n };\n\n return (\n <div className=\"hero min-h-[40vh] rounded-3xl bg-base-200\">\n <div className=\"hero-content text-center\">\n <div>\n <div className=\"mb-4\">\n <Icon className={clsx(\"size-32\", colorClasses[risk.color])} />\n </div>\n <h2 className=\"mb-4 text-5xl font-bold\">\n {t(`page.tradeSafety.result.riskLevel.${risk.level}.title`)}\n </h2>\n\n {/* 위험도 게이지 */}\n <div className=\"mx-auto w-64\">\n <div\n className={clsx(\"radial-progress\", colorClasses[risk.color])}\n style={\n {\n \"--value\": score,\n \"--size\": \"12rem\",\n \"--thickness\": \"1rem\",\n } as React.CSSProperties\n }\n role=\"progressbar\"\n >\n <span className=\"text-5xl font-bold\">{score}</span>\n </div>\n </div>\n\n <p className=\"mt-6 max-w-lg text-xl text-neutral-content\">\n {t(`page.tradeSafety.result.riskLevel.${risk.level}.message`)}\n </p>\n </div>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { ShieldExclamationIcon } from \"@heroicons/react/24/solid\";\nimport { motion } from \"framer-motion\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { RiskSignal } from \"../../types\";\nimport { RiskSignalCard } from \"../RiskSignalCard\";\n\ninterface RiskSignalsSectionProps {\n signals: RiskSignal[];\n}\n\nexport function RiskSignalsSection({ signals }: RiskSignalsSectionProps) {\n const { t } = useTranslation();\n\n if (signals.length === 0) return null;\n\n return (\n <section>\n <h3 className=\"mb-6 flex items-center gap-3 text-3xl font-bold\">\n <ShieldExclamationIcon className=\"size-10 text-error\" />\n {t(\"page.tradeSafety.result.riskSignals\")}\n </h3>\n\n <div className=\"space-y-4\">\n {signals.map((signal, idx) => (\n <motion.div\n key={idx}\n initial={{ x: -50, opacity: 0 }}\n animate={{ x: 0, opacity: 1 }}\n transition={{ delay: idx * 0.1 }}\n whileHover={{ scale: 1.02, x: 10 }}\n >\n <RiskSignalCard signal={signal} variant=\"error\" />\n </motion.div>\n ))}\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { CheckCircleIcon } from \"@heroicons/react/24/solid\";\nimport { motion } from \"framer-motion\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { RiskSignal } from \"../../types\";\nimport { RiskSignalCard } from \"../RiskSignalCard\";\n\ninterface SafeIndicatorsSectionProps {\n indicators: RiskSignal[];\n}\n\nexport function SafeIndicatorsSection({\n indicators,\n}: SafeIndicatorsSectionProps) {\n const { t } = useTranslation();\n\n if (indicators.length === 0) return null;\n\n return (\n <section>\n <h3 className=\"mb-6 flex items-center gap-3 text-3xl font-bold\">\n <CheckCircleIcon className=\"size-10 text-success\" />\n {t(\"page.tradeSafety.result.safeIndicators\")}\n </h3>\n\n <div className=\"space-y-4\">\n {indicators.map((indicator, idx) => (\n <motion.div\n key={idx}\n initial={{ x: -50, opacity: 0 }}\n animate={{ x: 0, opacity: 1 }}\n transition={{ delay: idx * 0.1 }}\n whileHover={{ scale: 1.02, x: 10 }}\n >\n <RiskSignalCard signal={indicator} variant=\"success\" />\n </motion.div>\n ))}\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { ClipboardDocumentCheckIcon } from \"@heroicons/react/24/solid\";\nimport { motion } from \"framer-motion\";\nimport { useTranslation } from \"react-i18next\";\n\ninterface SafetyChecklistSectionProps {\n items: string[];\n}\n\nexport function SafetyChecklistSection({ items }: SafetyChecklistSectionProps) {\n const { t } = useTranslation();\n\n if (items.length === 0) return null;\n\n return (\n <section>\n <h3 className=\"mb-6 flex items-center gap-3 text-3xl font-bold\">\n <ClipboardDocumentCheckIcon className=\"size-10 text-primary\" />\n {t(\"page.tradeSafety.result.safetyChecklist\")}\n </h3>\n\n <div className=\"card border-2 border-primary/30 bg-base-200\">\n <div className=\"card-body\">\n <p className=\"mb-6 text-lg text-neutral-content\">\n {t(\"page.tradeSafety.result.checklistDescription\")}\n </p>\n\n <div className=\"space-y-3\">\n {items.map((item, idx) => (\n <motion.label\n key={idx}\n initial={{ x: -20, opacity: 0 }}\n animate={{ x: 0, opacity: 1 }}\n transition={{ delay: idx * 0.08 }}\n className=\"flex cursor-pointer items-start gap-3 rounded-lg p-3 hover:bg-base-100/30\"\n >\n <input\n type=\"checkbox\"\n className=\"checkbox-primary checkbox mt-1\"\n />\n <span className=\"text-lg\">{item}</span>\n </motion.label>\n ))}\n </div>\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { LanguageIcon } from \"@heroicons/react/24/solid\";\nimport { useTranslation } from \"react-i18next\";\n\ninterface TranslationSectionProps {\n translation?: string | null;\n nuance?: string | null;\n}\n\nexport function TranslationSection({\n translation,\n nuance,\n}: TranslationSectionProps) {\n const { t } = useTranslation();\n\n if (!translation && !nuance) return null;\n\n return (\n <section>\n <h3 className=\"mb-6 flex items-center gap-3 text-3xl font-bold\">\n <LanguageIcon className=\"size-10 text-primary\" />\n {t(\"page.tradeSafety.result.translation\")}\n </h3>\n\n <div className=\"card bg-base-200 shadow-xl\">\n <div className=\"card-body\">\n {translation && (\n <div className=\"mb-4\">\n <h4 className=\"mb-2 text-lg font-semibold\">\n {t(\"page.tradeSafety.result.translationTitle\")}\n </h4>\n <p className=\"whitespace-pre-wrap text-neutral-content\">\n {translation}\n </p>\n </div>\n )}\n\n {nuance && (\n <div>\n <h4 className=\"mb-2 text-lg font-semibold\">\n {t(\"page.tradeSafety.result.nuanceTitle\")}\n </h4>\n <p className=\"whitespace-pre-wrap text-neutral-content\">\n {nuance}\n </p>\n </div>\n )}\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { motion, Variants } from \"framer-motion\";\n\nimport { TradeSafetyAnalysis } from \"../../types\";\n\nimport { CautionsSection } from \"./CautionsSection\";\nimport { CompanionCtaSection } from \"./CompanionCtaSection\";\nimport { ExpertAdviceSection } from \"./ExpertAdviceSection\";\nimport { PriceAnalysisSection } from \"./PriceAnalysisSection\";\nimport { RecommendationSection } from \"./RecommendationSection\";\nimport { RiskScoreHero } from \"./RiskScoreHero\";\nimport { RiskSignalsSection } from \"./RiskSignalsSection\";\nimport { SafeIndicatorsSection } from \"./SafeIndicatorsSection\";\nimport { SafetyChecklistSection } from \"./SafetyChecklistSection\";\nimport { TranslationSection } from \"./TranslationSection\";\n\ninterface DetailedResultProps {\n analysis: TradeSafetyAnalysis;\n expertAdvice?: string | null;\n /** Set to true to show AI companion CTA (for external integrations) */\n showCompanionCta?: boolean;\n}\n\nconst fadeInUp: Variants = {\n initial: { y: 40, opacity: 0 },\n animate: {\n y: 0,\n opacity: 1,\n transition: { duration: 0.6 },\n },\n};\n\nconst staggerContainer: Variants = {\n animate: {\n transition: {\n staggerChildren: 0.15,\n },\n },\n};\n\nexport function DetailedResult({\n analysis,\n expertAdvice,\n showCompanionCta = false,\n}: DetailedResultProps) {\n return (\n <motion.div\n variants={staggerContainer}\n initial=\"initial\"\n animate=\"animate\"\n className=\"mx-auto max-w-5xl space-y-12\"\n >\n {/* Hero: 종합 위험도 */}\n <motion.div variants={fadeInUp}>\n <RiskScoreHero score={analysis.risk_score} />\n </motion.div>\n\n {/* 번역 + 뉘앙스 */}\n {(analysis.translation || analysis.nuance_explanation) && (\n <motion.div variants={fadeInUp}>\n <TranslationSection\n translation={analysis.translation}\n nuance={analysis.nuance_explanation}\n />\n </motion.div>\n )}\n\n {/* 위험 신호 */}\n {analysis.risk_signals.length > 0 && (\n <motion.div variants={fadeInUp}>\n <RiskSignalsSection signals={analysis.risk_signals} />\n </motion.div>\n )}\n\n {/* 주의사항 */}\n {analysis.cautions.length > 0 && (\n <motion.div variants={fadeInUp}>\n <CautionsSection cautions={analysis.cautions} />\n </motion.div>\n )}\n\n {/* 안전 요소 */}\n {analysis.safe_indicators.length > 0 && (\n <motion.div variants={fadeInUp}>\n <SafeIndicatorsSection indicators={analysis.safe_indicators} />\n </motion.div>\n )}\n\n {/* 가격 분석 */}\n {analysis.price_analysis && (\n <motion.div variants={fadeInUp}>\n <PriceAnalysisSection data={analysis.price_analysis} />\n </motion.div>\n )}\n\n {/* 체크리스트 */}\n {analysis.safety_checklist.length > 0 && (\n <motion.div variants={fadeInUp}>\n <SafetyChecklistSection items={analysis.safety_checklist} />\n </motion.div>\n )}\n\n {/* 전문가 조언 (있을 경우) */}\n {expertAdvice && (\n <motion.div variants={fadeInUp}>\n <ExpertAdviceSection advice={expertAdvice} />\n </motion.div>\n )}\n\n {/* 종합 추천 */}\n <motion.div variants={fadeInUp}>\n <RecommendationSection\n recommendation={analysis.recommendation}\n emotionalSupport={analysis.emotional_support}\n />\n </motion.div>\n\n {/* AI 동반자 CTA - 외부 통합 시에만 표시 */}\n {showCompanionCta && (\n <motion.div variants={fadeInUp}>\n <CompanionCtaSection />\n </motion.div>\n )}\n </motion.div>\n );\n}\n","\"use client\";\n\nimport Link from \"next/link\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { QuickSummary } from \"../types\";\n\ninterface QuickResultTeaserProps {\n summary: QuickSummary;\n checkId: string;\n}\n\nexport function QuickResultTeaser({\n summary,\n checkId,\n}: QuickResultTeaserProps) {\n const { t, i18n } = useTranslation();\n const lang = i18n.language;\n\n return (\n <div className=\"mx-auto max-w-2xl\">\n <h1 className=\"mb-8 text-center text-3xl font-bold\">\n {t(\"page.tradeSafety.result.title\")}\n </h1>\n\n {/* Quick Summary Cards */}\n <div className=\"mb-8 grid grid-cols-1 gap-4 md:grid-cols-3\">\n <div className=\"card bg-error/10\">\n <div className=\"card-body items-center text-center\">\n <h3 className=\"text-4xl font-bold text-error\">\n {summary.risk_signals_count}\n </h3>\n <p className=\"text-sm\">\n {t(\"page.tradeSafety.result.riskSignals\")}\n </p>\n </div>\n </div>\n <div className=\"card bg-warning/10\">\n <div className=\"card-body items-center text-center\">\n <h3 className=\"text-4xl font-bold text-warning\">\n {summary.cautions_count}\n </h3>\n <p className=\"text-sm\">{t(\"page.tradeSafety.result.cautions\")}</p>\n </div>\n </div>\n <div className=\"card bg-success/10\">\n <div className=\"card-body items-center text-center\">\n <h3 className=\"text-4xl font-bold text-success\">\n {summary.safe_indicators_count}\n </h3>\n <p className=\"text-sm\">\n {t(\"page.tradeSafety.result.safeIndicators\")}\n </p>\n </div>\n </div>\n </div>\n\n {/* Signup Prompt */}\n <div className=\"card bg-base-200 shadow-xl\">\n <div className=\"card-body items-center text-center\">\n <h2 className=\"card-title text-2xl\">\n {t(\"page.tradeSafety.result.signupRequired\")}\n </h2>\n <p className=\"mb-4 text-neutral-content\">\n {t(\"page.tradeSafety.result.signupMessage\")}\n </p>\n <Link\n href={`/${lang}/login?callbackUrl=${encodeURIComponent(`/${lang}/trade-safety/result/${checkId}`)}`}\n className=\"btn btn-primary\"\n >\n {t(\"login\")}\n </Link>\n </div>\n </div>\n </div>\n );\n}\n","import { BaseCrudRepository } from \"@aioia/core\";\nimport { z } from \"zod\";\n\n// Zod schema for nested objects\nconst riskSignalSchema = z.object({\n category: z.enum([\"payment\", \"seller\", \"platform\", \"price\", \"content\"]),\n severity: z.enum([\"high\", \"medium\", \"low\"]),\n title: z.string(),\n description: z.string(),\n what_to_do: z.string(),\n});\n\nconst priceAnalysisSchema = z.object({\n market_price_range: z.string().nullish(),\n offered_price: z.number().nullish(),\n currency: z.string().nullish(),\n price_assessment: z.string(),\n warnings: z.array(z.string()),\n});\n\nconst tradeSafetyAnalysisSchema = z.object({\n translation: z.string().nullish(),\n nuance_explanation: z.string().nullish(),\n risk_signals: z.array(riskSignalSchema),\n cautions: z.array(riskSignalSchema),\n safe_indicators: z.array(riskSignalSchema),\n price_analysis: priceAnalysisSchema,\n safety_checklist: z.array(z.string()),\n risk_score: z.number(),\n recommendation: z.string(),\n emotional_support: z.string(),\n});\n\nconst quickSummarySchema = z.object({\n risk_signals_count: z.number(),\n cautions_count: z.number(),\n safe_indicators_count: z.number(),\n});\n\nconst tradeSafetyCheckResponseSchema = z.object({\n id: z.string(),\n user_id: z.string().nullish(),\n input_text: z.string(),\n llm_analysis: tradeSafetyAnalysisSchema,\n risk_score: z.number(),\n expert_advice: z.string().nullish(),\n expert_reviewed: z.boolean(),\n expert_reviewed_at: z.string().nullish(),\n expert_reviewed_by: z.string().nullish(),\n created_at: z.string(),\n updated_at: z.string(),\n});\n\n// Full response for authenticated users\nexport type TradeSafetyCheckFullResponse = z.infer<\n typeof tradeSafetyCheckResponseSchema\n>;\n\n// Quick response for non-authenticated users\nexport interface QuickCheckRepositoryResponse {\n id: string;\n quick_summary: {\n risk_signals_count: number;\n cautions_count: number;\n safe_indicators_count: number;\n };\n signup_required: true;\n}\n\n// Union type for repository responses\nexport type TradeSafetyCheckRepositoryResponse =\n | TradeSafetyCheckFullResponse\n | QuickCheckRepositoryResponse;\n\n// Union schema for repository responses\nconst tradeSafetyCheckRepositoryResponseSchema = z.union([\n tradeSafetyCheckResponseSchema,\n z.object({\n id: z.string(),\n quick_summary: quickSummarySchema,\n signup_required: z.literal(true),\n }),\n]);\n\nexport class TradeSafetyRepository extends BaseCrudRepository<TradeSafetyCheckRepositoryResponse> {\n readonly resource = \"trade-safety\";\n\n protected getDataSchema() {\n return tradeSafetyCheckRepositoryResponseSchema;\n }\n}\n","export type RiskSeverity = \"high\" | \"medium\" | \"low\";\nexport type RiskCategory =\n | \"payment\"\n | \"seller\"\n | \"platform\"\n | \"price\"\n | \"content\";\n\n/**\n * Risk score thresholds for Trade Safety checks\n * Used consistently across Public and Admin interfaces\n */\nexport const RISK_SCORE_THRESHOLDS = {\n high: 70, // >= 70: High risk (red)\n medium: 40, // >= 40: Medium risk (yellow)\n // < 40: Low risk (green)\n} as const;\n\nexport interface TradeSafetyCheckRequest {\n input_text: string;\n}\n\nexport interface RiskSignal {\n category: RiskCategory;\n severity: RiskSeverity;\n title: string;\n description: string;\n what_to_do: string;\n}\n\nexport interface PriceAnalysis {\n market_price_range?: string | null;\n offered_price?: number | null;\n currency?: string | null;\n price_assessment: string;\n warnings: string[];\n}\n\nexport interface TradeSafetyAnalysis {\n translation?: string | null;\n nuance_explanation?: string | null;\n risk_signals: RiskSignal[];\n cautions: RiskSignal[];\n safe_indicators: RiskSignal[];\n price_analysis: PriceAnalysis;\n safety_checklist: string[];\n risk_score: number;\n recommendation: string;\n emotional_support: string;\n}\n\nexport interface QuickSummary {\n risk_signals_count: number;\n cautions_count: number;\n safe_indicators_count: number;\n}\n\nexport interface TradeSafetyCheckResponse {\n id: string;\n user_id?: string | null;\n input_text: string;\n llm_analysis: TradeSafetyAnalysis;\n risk_score: number;\n expert_advice?: string | null;\n expert_reviewed: boolean;\n expert_reviewed_at?: string | null;\n expert_reviewed_by?: string | null;\n created_at: string;\n updated_at: string;\n}\n\nexport interface QuickCheckResponse {\n id: string;\n quick_summary: QuickSummary;\n signup_required: true;\n}\n\nexport interface TradeSafetyEditFormData {\n expert_advice?: string | null;\n expert_reviewed: boolean;\n}\n"],"names":["ChatBubbleOvalLeftEllipsisIcon","title","titleId","props","svgRef","React","ForwardRef","CheckBadgeIcon","CheckCircleIcon","ClipboardDocumentCheckIcon","CurrencyDollarIcon","ExclamationCircleIcon","ExclamationTriangleIcon","HeartIcon","InformationCircleIcon","LanguageIcon","LightBulbIcon","ShieldExclamationIcon","UserIcon","r","f","o","clsx","variantStyles","iconColor","severityIcon","RiskSignalCard","signal","variant","t","useTranslation","Icon","jsx","jsxs","CautionsSection","cautions","caution","idx","motion","CompanionCtaSection","i18n","lang","Link","ExpertAdviceSection","advice","PriceAnalysisSection","data","warning","index","RecommendationSection","recommendation","emotionalSupport","getRiskLevel","score","RiskScoreHero","risk","colorClasses","RiskSignalsSection","signals","SafeIndicatorsSection","indicators","indicator","SafetyChecklistSection","items","item","TranslationSection","translation","nuance","fadeInUp","staggerContainer","DetailedResult","analysis","expertAdvice","showCompanionCta","QuickResultTeaser","summary","checkId","riskSignalSchema","z","priceAnalysisSchema","tradeSafetyAnalysisSchema","quickSummarySchema","tradeSafetyCheckResponseSchema","tradeSafetyCheckRepositoryResponseSchema","TradeSafetyRepository","BaseCrudRepository","RISK_SCORE_THRESHOLDS"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13]}
|
|
@@ -64,7 +64,7 @@ declare const tradeSafetyCheckResponseSchema: z.ZodObject<{
|
|
|
64
64
|
description: string;
|
|
65
65
|
what_to_do: string;
|
|
66
66
|
}>, "many">;
|
|
67
|
-
price_analysis: z.
|
|
67
|
+
price_analysis: z.ZodObject<{
|
|
68
68
|
market_price_range: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
69
69
|
offered_price: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
70
70
|
currency: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
@@ -82,7 +82,7 @@ declare const tradeSafetyCheckResponseSchema: z.ZodObject<{
|
|
|
82
82
|
market_price_range?: string | null | undefined;
|
|
83
83
|
currency?: string | null | undefined;
|
|
84
84
|
offered_price?: number | null | undefined;
|
|
85
|
-
}
|
|
85
|
+
}>;
|
|
86
86
|
safety_checklist: z.ZodArray<z.ZodString, "many">;
|
|
87
87
|
risk_score: z.ZodNumber;
|
|
88
88
|
recommendation: z.ZodString;
|
|
@@ -110,18 +110,18 @@ declare const tradeSafetyCheckResponseSchema: z.ZodObject<{
|
|
|
110
110
|
description: string;
|
|
111
111
|
what_to_do: string;
|
|
112
112
|
}[];
|
|
113
|
-
|
|
114
|
-
risk_score: number;
|
|
115
|
-
emotional_support: string;
|
|
116
|
-
translation?: string | null | undefined;
|
|
117
|
-
nuance_explanation?: string | null | undefined;
|
|
118
|
-
price_analysis?: {
|
|
113
|
+
price_analysis: {
|
|
119
114
|
price_assessment: string;
|
|
120
115
|
warnings: string[];
|
|
121
116
|
market_price_range?: string | null | undefined;
|
|
122
117
|
currency?: string | null | undefined;
|
|
123
118
|
offered_price?: number | null | undefined;
|
|
124
|
-
}
|
|
119
|
+
};
|
|
120
|
+
safety_checklist: string[];
|
|
121
|
+
risk_score: number;
|
|
122
|
+
emotional_support: string;
|
|
123
|
+
translation?: string | null | undefined;
|
|
124
|
+
nuance_explanation?: string | null | undefined;
|
|
125
125
|
}, {
|
|
126
126
|
cautions: {
|
|
127
127
|
title: string;
|
|
@@ -145,18 +145,18 @@ declare const tradeSafetyCheckResponseSchema: z.ZodObject<{
|
|
|
145
145
|
description: string;
|
|
146
146
|
what_to_do: string;
|
|
147
147
|
}[];
|
|
148
|
-
|
|
149
|
-
risk_score: number;
|
|
150
|
-
emotional_support: string;
|
|
151
|
-
translation?: string | null | undefined;
|
|
152
|
-
nuance_explanation?: string | null | undefined;
|
|
153
|
-
price_analysis?: {
|
|
148
|
+
price_analysis: {
|
|
154
149
|
price_assessment: string;
|
|
155
150
|
warnings: string[];
|
|
156
151
|
market_price_range?: string | null | undefined;
|
|
157
152
|
currency?: string | null | undefined;
|
|
158
153
|
offered_price?: number | null | undefined;
|
|
159
|
-
}
|
|
154
|
+
};
|
|
155
|
+
safety_checklist: string[];
|
|
156
|
+
risk_score: number;
|
|
157
|
+
emotional_support: string;
|
|
158
|
+
translation?: string | null | undefined;
|
|
159
|
+
nuance_explanation?: string | null | undefined;
|
|
160
160
|
}>;
|
|
161
161
|
risk_score: z.ZodNumber;
|
|
162
162
|
expert_advice: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
@@ -192,18 +192,18 @@ declare const tradeSafetyCheckResponseSchema: z.ZodObject<{
|
|
|
192
192
|
description: string;
|
|
193
193
|
what_to_do: string;
|
|
194
194
|
}[];
|
|
195
|
-
|
|
196
|
-
risk_score: number;
|
|
197
|
-
emotional_support: string;
|
|
198
|
-
translation?: string | null | undefined;
|
|
199
|
-
nuance_explanation?: string | null | undefined;
|
|
200
|
-
price_analysis?: {
|
|
195
|
+
price_analysis: {
|
|
201
196
|
price_assessment: string;
|
|
202
197
|
warnings: string[];
|
|
203
198
|
market_price_range?: string | null | undefined;
|
|
204
199
|
currency?: string | null | undefined;
|
|
205
200
|
offered_price?: number | null | undefined;
|
|
206
|
-
}
|
|
201
|
+
};
|
|
202
|
+
safety_checklist: string[];
|
|
203
|
+
risk_score: number;
|
|
204
|
+
emotional_support: string;
|
|
205
|
+
translation?: string | null | undefined;
|
|
206
|
+
nuance_explanation?: string | null | undefined;
|
|
207
207
|
};
|
|
208
208
|
expert_reviewed: boolean;
|
|
209
209
|
created_at: string;
|
|
@@ -239,18 +239,18 @@ declare const tradeSafetyCheckResponseSchema: z.ZodObject<{
|
|
|
239
239
|
description: string;
|
|
240
240
|
what_to_do: string;
|
|
241
241
|
}[];
|
|
242
|
-
|
|
243
|
-
risk_score: number;
|
|
244
|
-
emotional_support: string;
|
|
245
|
-
translation?: string | null | undefined;
|
|
246
|
-
nuance_explanation?: string | null | undefined;
|
|
247
|
-
price_analysis?: {
|
|
242
|
+
price_analysis: {
|
|
248
243
|
price_assessment: string;
|
|
249
244
|
warnings: string[];
|
|
250
245
|
market_price_range?: string | null | undefined;
|
|
251
246
|
currency?: string | null | undefined;
|
|
252
247
|
offered_price?: number | null | undefined;
|
|
253
|
-
}
|
|
248
|
+
};
|
|
249
|
+
safety_checklist: string[];
|
|
250
|
+
risk_score: number;
|
|
251
|
+
emotional_support: string;
|
|
252
|
+
translation?: string | null | undefined;
|
|
253
|
+
nuance_explanation?: string | null | undefined;
|
|
254
254
|
};
|
|
255
255
|
expert_reviewed: boolean;
|
|
256
256
|
created_at: string;
|
|
@@ -337,7 +337,7 @@ export declare class TradeSafetyRepository extends BaseCrudRepository<TradeSafet
|
|
|
337
337
|
description: string;
|
|
338
338
|
what_to_do: string;
|
|
339
339
|
}>, "many">;
|
|
340
|
-
price_analysis: z.
|
|
340
|
+
price_analysis: z.ZodObject<{
|
|
341
341
|
market_price_range: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
342
342
|
offered_price: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
343
343
|
currency: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
@@ -355,7 +355,7 @@ export declare class TradeSafetyRepository extends BaseCrudRepository<TradeSafet
|
|
|
355
355
|
market_price_range?: string | null | undefined;
|
|
356
356
|
currency?: string | null | undefined;
|
|
357
357
|
offered_price?: number | null | undefined;
|
|
358
|
-
}
|
|
358
|
+
}>;
|
|
359
359
|
safety_checklist: z.ZodArray<z.ZodString, "many">;
|
|
360
360
|
risk_score: z.ZodNumber;
|
|
361
361
|
recommendation: z.ZodString;
|
|
@@ -383,18 +383,18 @@ export declare class TradeSafetyRepository extends BaseCrudRepository<TradeSafet
|
|
|
383
383
|
description: string;
|
|
384
384
|
what_to_do: string;
|
|
385
385
|
}[];
|
|
386
|
-
|
|
387
|
-
risk_score: number;
|
|
388
|
-
emotional_support: string;
|
|
389
|
-
translation?: string | null | undefined;
|
|
390
|
-
nuance_explanation?: string | null | undefined;
|
|
391
|
-
price_analysis?: {
|
|
386
|
+
price_analysis: {
|
|
392
387
|
price_assessment: string;
|
|
393
388
|
warnings: string[];
|
|
394
389
|
market_price_range?: string | null | undefined;
|
|
395
390
|
currency?: string | null | undefined;
|
|
396
391
|
offered_price?: number | null | undefined;
|
|
397
|
-
}
|
|
392
|
+
};
|
|
393
|
+
safety_checklist: string[];
|
|
394
|
+
risk_score: number;
|
|
395
|
+
emotional_support: string;
|
|
396
|
+
translation?: string | null | undefined;
|
|
397
|
+
nuance_explanation?: string | null | undefined;
|
|
398
398
|
}, {
|
|
399
399
|
cautions: {
|
|
400
400
|
title: string;
|
|
@@ -418,18 +418,18 @@ export declare class TradeSafetyRepository extends BaseCrudRepository<TradeSafet
|
|
|
418
418
|
description: string;
|
|
419
419
|
what_to_do: string;
|
|
420
420
|
}[];
|
|
421
|
-
|
|
422
|
-
risk_score: number;
|
|
423
|
-
emotional_support: string;
|
|
424
|
-
translation?: string | null | undefined;
|
|
425
|
-
nuance_explanation?: string | null | undefined;
|
|
426
|
-
price_analysis?: {
|
|
421
|
+
price_analysis: {
|
|
427
422
|
price_assessment: string;
|
|
428
423
|
warnings: string[];
|
|
429
424
|
market_price_range?: string | null | undefined;
|
|
430
425
|
currency?: string | null | undefined;
|
|
431
426
|
offered_price?: number | null | undefined;
|
|
432
|
-
}
|
|
427
|
+
};
|
|
428
|
+
safety_checklist: string[];
|
|
429
|
+
risk_score: number;
|
|
430
|
+
emotional_support: string;
|
|
431
|
+
translation?: string | null | undefined;
|
|
432
|
+
nuance_explanation?: string | null | undefined;
|
|
433
433
|
}>;
|
|
434
434
|
risk_score: z.ZodNumber;
|
|
435
435
|
expert_advice: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
@@ -465,18 +465,18 @@ export declare class TradeSafetyRepository extends BaseCrudRepository<TradeSafet
|
|
|
465
465
|
description: string;
|
|
466
466
|
what_to_do: string;
|
|
467
467
|
}[];
|
|
468
|
-
|
|
469
|
-
risk_score: number;
|
|
470
|
-
emotional_support: string;
|
|
471
|
-
translation?: string | null | undefined;
|
|
472
|
-
nuance_explanation?: string | null | undefined;
|
|
473
|
-
price_analysis?: {
|
|
468
|
+
price_analysis: {
|
|
474
469
|
price_assessment: string;
|
|
475
470
|
warnings: string[];
|
|
476
471
|
market_price_range?: string | null | undefined;
|
|
477
472
|
currency?: string | null | undefined;
|
|
478
473
|
offered_price?: number | null | undefined;
|
|
479
|
-
}
|
|
474
|
+
};
|
|
475
|
+
safety_checklist: string[];
|
|
476
|
+
risk_score: number;
|
|
477
|
+
emotional_support: string;
|
|
478
|
+
translation?: string | null | undefined;
|
|
479
|
+
nuance_explanation?: string | null | undefined;
|
|
480
480
|
};
|
|
481
481
|
expert_reviewed: boolean;
|
|
482
482
|
created_at: string;
|
|
@@ -512,18 +512,18 @@ export declare class TradeSafetyRepository extends BaseCrudRepository<TradeSafet
|
|
|
512
512
|
description: string;
|
|
513
513
|
what_to_do: string;
|
|
514
514
|
}[];
|
|
515
|
-
|
|
516
|
-
risk_score: number;
|
|
517
|
-
emotional_support: string;
|
|
518
|
-
translation?: string | null | undefined;
|
|
519
|
-
nuance_explanation?: string | null | undefined;
|
|
520
|
-
price_analysis?: {
|
|
515
|
+
price_analysis: {
|
|
521
516
|
price_assessment: string;
|
|
522
517
|
warnings: string[];
|
|
523
518
|
market_price_range?: string | null | undefined;
|
|
524
519
|
currency?: string | null | undefined;
|
|
525
520
|
offered_price?: number | null | undefined;
|
|
526
|
-
}
|
|
521
|
+
};
|
|
522
|
+
safety_checklist: string[];
|
|
523
|
+
risk_score: number;
|
|
524
|
+
emotional_support: string;
|
|
525
|
+
translation?: string | null | undefined;
|
|
526
|
+
nuance_explanation?: string | null | undefined;
|
|
527
527
|
};
|
|
528
528
|
expert_reviewed: boolean;
|
|
529
529
|
created_at: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TradeSafetyRepository.d.ts","sourceRoot":"","sources":["../../src/repositories/TradeSafetyRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"TradeSafetyRepository.d.ts","sourceRoot":"","sources":["../../src/repositories/TradeSafetyRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAsCxB,QAAA,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYlC,CAAC;AAGH,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAChD,OAAO,8BAA8B,CACtC,CAAC;AAGF,MAAM,WAAW,4BAA4B;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE;QACb,kBAAkB,EAAE,MAAM,CAAC;QAC3B,cAAc,EAAE,MAAM,CAAC;QACvB,qBAAqB,EAAE,MAAM,CAAC;KAC/B,CAAC;IACF,eAAe,EAAE,IAAI,CAAC;CACvB;AAGD,MAAM,MAAM,kCAAkC,GAC1C,4BAA4B,GAC5B,4BAA4B,CAAC;AAYjC,qBAAa,qBAAsB,SAAQ,kBAAkB,CAAC,kCAAkC,CAAC;IAC/F,QAAQ,CAAC,QAAQ,kBAAkB;IAEnC,SAAS,CAAC,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGxB"}
|
package/dist/types.d.ts
CHANGED
|
@@ -31,7 +31,7 @@ export interface TradeSafetyAnalysis {
|
|
|
31
31
|
risk_signals: RiskSignal[];
|
|
32
32
|
cautions: RiskSignal[];
|
|
33
33
|
safe_indicators: RiskSignal[];
|
|
34
|
-
price_analysis
|
|
34
|
+
price_analysis: PriceAnalysis;
|
|
35
35
|
safety_checklist: string[];
|
|
36
36
|
risk_score: number;
|
|
37
37
|
recommendation: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AACrD,MAAM,MAAM,YAAY,GACpB,SAAS,GACT,QAAQ,GACR,UAAU,GACV,OAAO,GACP,SAAS,CAAC;AAEd;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;CAIxB,CAAC;AAEX,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,eAAe,EAAE,UAAU,EAAE,CAAC;IAC9B,cAAc,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AACrD,MAAM,MAAM,YAAY,GACpB,SAAS,GACT,QAAQ,GACR,UAAU,GACV,OAAO,GACP,SAAS,CAAC;AAEd;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;CAIxB,CAAC;AAEX,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,eAAe,EAAE,UAAU,EAAE,CAAC;IAC9B,cAAc,EAAE,aAAa,CAAC;IAC9B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,mBAAmB,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,eAAe,EAAE,OAAO,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,YAAY,CAAC;IAC5B,eAAe,EAAE,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,eAAe,EAAE,OAAO,CAAC;CAC1B"}
|