trade-safety 1.1.0 β 1.1.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/components/DetailedResult/RiskScoreHero.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +30 -30
- package/dist/index.mjs.map +1 -1
- package/package.json +14 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RiskScoreHero.d.ts","sourceRoot":"","sources":["../../../src/components/DetailedResult/RiskScoreHero.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RiskScoreHero.d.ts","sourceRoot":"","sources":["../../../src/components/DetailedResult/RiskScoreHero.tsx"],"names":[],"mappings":"AAYA,UAAU,kBAAkB;IAC1B,KAAK,EAAE,MAAM,CAAC;CACf;AAkBD,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,EAAE,kBAAkB,+BA8C1D"}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),i=require("framer-motion"),o=require("react-i18next");require("i18next");require("i18next-resources-to-backend");const c=require("./locale.js"),b=require("react"),f=require("next/link"),j=require("@aioia/core"),l=require("zod");function w(t){const s=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const r in t)if(r!=="default"){const a=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(s,r,a.get?a:{enumerable:!0,get:()=>t[r]})}}return s.default=t,Object.freeze(s)}const n=w(b);function N({title:t,titleId:s,...r},a){return n.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:a,"aria-labelledby":s},r),t?n.createElement("title",{id:s},t):null,n.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 y=n.forwardRef(N);function R({title:t,titleId:s,...r},a){return n.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:a,"aria-labelledby":s},r),t?n.createElement("title",{id:s},t):null,n.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 _=n.forwardRef(R);function S({title:t,titleId:s,...r},a){return n.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:a,"aria-labelledby":s},r),t?n.createElement("title",{id:s},t):null,n.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 E=n.forwardRef(S);function z({title:t,titleId:s,...r},a){return n.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:a,"aria-labelledby":s},r),t?n.createElement("title",{id:s},t):null,n.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"}),n.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=n.forwardRef(z);function A({title:t,titleId:s,...r},a){return n.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:a,"aria-labelledby":s},r),t?n.createElement("title",{id:s},t):null,n.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"}),n.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 k=n.forwardRef(A);function C({title:t,titleId:s,...r},a){return n.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:a,"aria-labelledby":s},r),t?n.createElement("title",{id:s},t):null,n.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 Z=n.forwardRef(C);function M({title:t,titleId:s,...r},a){return n.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:a,"aria-labelledby":s},r),t?n.createElement("title",{id:s},t):null,n.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 u=n.forwardRef(M);function F({title:t,titleId:s,...r},a){return n.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:a,"aria-labelledby":s},r),t?n.createElement("title",{id:s},t):null,n.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 D=n.forwardRef(F);function O({title:t,titleId:s,...r},a){return n.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:a,"aria-labelledby":s},r),t?n.createElement("title",{id:s},t):null,n.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 $=n.forwardRef(O);function B({title:t,titleId:s,...r},a){return n.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:a,"aria-labelledby":s},r),t?n.createElement("title",{id:s},t):null,n.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 I=n.forwardRef(B);function q({title:t,titleId:s,...r},a){return n.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:a,"aria-labelledby":s},r),t?n.createElement("title",{id:s},t):null,n.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"}),n.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 H=n.forwardRef(q);function Y({title:t,titleId:s,...r},a){return n.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:a,"aria-labelledby":s},r),t?n.createElement("title",{id:s},t):null,n.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 p=n.forwardRef(Y);function L({title:t,titleId:s,...r},a){return n.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:a,"aria-labelledby":s},r),t?n.createElement("title",{id:s},t):null,n.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 V=n.forwardRef(L);function v(t){var s,r,a="";if(typeof t=="string"||typeof t=="number")a+=t;else if(typeof t=="object")if(Array.isArray(t)){var d=t.length;for(s=0;s<d;s++)t[s]&&(r=v(t[s]))&&(a&&(a+=" "),a+=r)}else for(r in t)t[r]&&(a&&(a+=" "),a+=r);return a}function x(){for(var t,s,r=0,a="",d=arguments.length;r<d;r++)(t=arguments[r])&&(s=v(t))&&(a&&(a+=" "),a+=s);return a}const P={error:"bg-error/10 border-error/30",warning:"bg-warning/10 border-warning/30",success:"bg-success/10 border-success/30"},U={error:"text-error",warning:"text-warning",success:"text-success"},K={high:Z,medium:u,low:$};function h({signal:t,variant:s="error"}){const{t:r}=o.useTranslation(c.TRADE_SAFETY_NS),a=K[t.severity];return e.jsx("div",{className:x("card border-2 backdrop-blur-sm",P[s]),children:e.jsx("div",{className:"card-body",children:e.jsxs("div",{className:"flex items-start gap-4",children:[e.jsx(a,{className:x("mt-1 size-8 shrink-0",U[s])}),e.jsxs("div",{className:"flex-1",children:[e.jsx("h4",{className:"card-title text-xl",children:t.title}),e.jsx("p",{className:"mt-2 text-neutral-content",children:t.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:["π‘ ",r("result.whatToDo")]}),e.jsx("p",{className:"text-sm",children:t.what_to_do})]})]})]})})})}function Q({cautions:t}){const{t:s}=o.useTranslation(c.TRADE_SAFETY_NS);return t.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(u,{className:"size-10 text-warning"}),s("result.cautions")]}),e.jsx("div",{className:"space-y-4",children:t.map((r,a)=>e.jsx(i.motion.div,{initial:{x:-50,opacity:0},animate:{x:0,opacity:1},transition:{delay:a*.1},whileHover:{scale:1.02,x:10},children:e.jsx(h,{signal:r,variant:"warning"})},a))})]})}function W(){const{t,i18n:s}=o.useTranslation(c.TRADE_SAFETY_NS),r=s.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(y,{className:"mx-auto mb-6 size-20"}),e.jsx("h3",{className:"mb-4 text-4xl font-bold",children:t("result.companionCta.title")}),e.jsx("p",{className:"mb-8 max-w-2xl text-xl",children:t("result.companionCta.description")}),e.jsx(f,{href:`/${r}/companions`,children:e.jsx(i.motion.button,{whileHover:{scale:1.1},whileTap:{scale:.95},className:"btn btn-lg bg-base-100 text-primary hover:bg-base-200",children:t("result.companionCta.button")})})]})})})}function G({advice:t}){const{t:s}=o.useTranslation(c.TRADE_SAFETY_NS);return e.jsx(i.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(V,{className:"size-8"})})}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-2xl font-bold",children:s("result.expertAdvice")}),e.jsx("p",{className:"opacity-80",children:s("result.expertName")})]})]}),e.jsx("div",{className:"prose max-w-none",children:e.jsx("p",{className:"whitespace-pre-wrap text-lg",children:t})})]})})}function J({data:t}){const{t:s,i18n:r}=o.useTranslation(c.TRADE_SAFETY_NS);return t?e.jsxs("section",{children:[e.jsxs("h3",{className:"mb-6 flex items-center gap-3 text-3xl font-bold",children:[e.jsx(k,{className:"size-10 text-secondary"}),s("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:[t.market_price_range&&e.jsxs("div",{children:[e.jsx("h4",{className:"mb-2 text-lg font-semibold",children:s("result.marketPrice")}),e.jsx("p",{className:"text-2xl font-bold",children:t.market_price_range})]}),t.offered_price&&e.jsxs("div",{children:[e.jsx("h4",{className:"mb-2 text-lg font-semibold",children:s("result.offeredPrice")}),e.jsx("p",{className:"text-2xl font-bold text-primary",children:new Intl.NumberFormat(r.language,{style:"currency",currency:t.currency||"USD"}).format(t.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:s("result.priceAssessment")}),e.jsx("p",{className:"text-neutral-content",children:t.price_assessment})]}),t.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(u,{className:"size-6"}),s("result.priceWarnings")]}),e.jsx("ul",{className:"list-inside list-disc space-y-1",children:t.warnings.map((a,d)=>e.jsx("li",{className:"text-neutral-content",children:a},d))})]})]})})]}):null}function X({recommendation:t,emotionalSupport:s}){const{t:r}=o.useTranslation(c.TRADE_SAFETY_NS);return e.jsxs("section",{children:[e.jsxs("h3",{className:"mb-6 flex items-center gap-3 text-3xl font-bold",children:[e.jsx(H,{className:"size-10 text-warning"}),r("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:t})}),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(D,{className:"size-6 text-info"})," ",s]})})]})})]})}function ee(t){return t>=70?{level:"high",color:"error",Icon:p}:t>=40?{level:"medium",color:"warning",Icon:u}:{level:"low",color:"success",Icon:_}}function te({score:t}){const{t:s}=o.useTranslation(),r=ee(t),{Icon:a}=r,d={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(a,{className:x("size-32",d[r.color])})}),e.jsx("h2",{className:"mb-4 text-5xl font-bold",children:s(`page.tradeSafety.result.riskLevel.${r.level}.title`)}),e.jsx("div",{className:"mx-auto w-64",children:e.jsx("div",{className:x("radial-progress",d[r.color]),style:{"--value":t,"--size":"12rem","--thickness":"1rem"},role:"progressbar",children:e.jsx("span",{className:"text-5xl font-bold",children:t})})}),e.jsx("p",{className:"mt-6 max-w-lg text-xl text-neutral-content",children:s(`page.tradeSafety.result.riskLevel.${r.level}.message`)})]})})})}function se({signals:t}){const{t:s}=o.useTranslation(c.TRADE_SAFETY_NS);return t.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-error"}),s("result.riskSignals")]}),e.jsx("div",{className:"space-y-4",children:t.map((r,a)=>e.jsx(i.motion.div,{initial:{x:-50,opacity:0},animate:{x:0,opacity:1},transition:{delay:a*.1},whileHover:{scale:1.02,x:10},children:e.jsx(h,{signal:r,variant:"error"})},a))})]})}function re({indicators:t}){const{t:s}=o.useTranslation(c.TRADE_SAFETY_NS);return t.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(E,{className:"size-10 text-success"}),s("result.safeIndicators")]}),e.jsx("div",{className:"space-y-4",children:t.map((r,a)=>e.jsx(i.motion.div,{initial:{x:-50,opacity:0},animate:{x:0,opacity:1},transition:{delay:a*.1},whileHover:{scale:1.02,x:10},children:e.jsx(h,{signal:r,variant:"success"})},a))})]})}function ae({items:t}){const{t:s}=o.useTranslation(c.TRADE_SAFETY_NS);return t.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"}),s("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:s("result.checklistDescription")}),e.jsx("div",{className:"space-y-3",children:t.map((r,a)=>e.jsxs(i.motion.label,{initial:{x:-20,opacity:0},animate:{x:0,opacity:1},transition:{delay:a*.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:r})]},a))})]})})]})}function ne({translation:t,nuance:s}){const{t:r}=o.useTranslation(c.TRADE_SAFETY_NS);return!t&&!s?null:e.jsxs("section",{children:[e.jsxs("h3",{className:"mb-6 flex items-center gap-3 text-3xl font-bold",children:[e.jsx(I,{className:"size-10 text-primary"}),r("result.translation")]}),e.jsx("div",{className:"card bg-base-200 shadow-xl",children:e.jsxs("div",{className:"card-body",children:[t&&e.jsxs("div",{className:"mb-4",children:[e.jsx("h4",{className:"mb-2 text-lg font-semibold",children:r("result.translationTitle")}),e.jsx("p",{className:"whitespace-pre-wrap text-neutral-content",children:t})]}),s&&e.jsxs("div",{children:[e.jsx("h4",{className:"mb-2 text-lg font-semibold",children:r("result.nuanceTitle")}),e.jsx("p",{className:"whitespace-pre-wrap text-neutral-content",children:s})]})]})})]})}const m={initial:{y:40,opacity:0},animate:{y:0,opacity:1,transition:{duration:.6}}},le={animate:{transition:{staggerChildren:.15}}};function ie({analysis:t,expertAdvice:s,showCompanionCta:r=!1}){return e.jsxs(i.motion.div,{variants:le,initial:"initial",animate:"animate",className:"mx-auto max-w-5xl space-y-12",children:[e.jsx(i.motion.div,{variants:m,children:e.jsx(te,{score:t.risk_score})}),(t.translation||t.nuance_explanation)&&e.jsx(i.motion.div,{variants:m,children:e.jsx(ne,{translation:t.translation,nuance:t.nuance_explanation})}),t.risk_signals.length>0&&e.jsx(i.motion.div,{variants:m,children:e.jsx(se,{signals:t.risk_signals})}),t.cautions.length>0&&e.jsx(i.motion.div,{variants:m,children:e.jsx(Q,{cautions:t.cautions})}),t.safe_indicators.length>0&&e.jsx(i.motion.div,{variants:m,children:e.jsx(re,{indicators:t.safe_indicators})}),t.price_analysis&&e.jsx(i.motion.div,{variants:m,children:e.jsx(J,{data:t.price_analysis})}),t.safety_checklist.length>0&&e.jsx(i.motion.div,{variants:m,children:e.jsx(ae,{items:t.safety_checklist})}),s&&e.jsx(i.motion.div,{variants:m,children:e.jsx(G,{advice:s})}),e.jsx(i.motion.div,{variants:m,children:e.jsx(X,{recommendation:t.recommendation,emotionalSupport:t.emotional_support})}),r&&e.jsx(i.motion.div,{variants:m,children:e.jsx(W,{})})]})}function ce({summary:t,checkId:s}){const{t:r,i18n:a}=o.useTranslation(c.TRADE_SAFETY_NS),d=a.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:r("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:t.risk_signals_count}),e.jsx("p",{className:"text-sm",children:r("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:t.cautions_count}),e.jsx("p",{className:"text-sm",children:r("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:t.safe_indicators_count}),e.jsx("p",{className:"text-sm",children:r("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:r("result.signupRequired")}),e.jsx("p",{className:"mb-4 text-neutral-content",children:r("result.signupMessage")}),e.jsx(f,{href:`/${d}/login?callbackUrl=${encodeURIComponent(`/${d}/trade-safety/result/${s}`)}`,className:"btn btn-primary",children:r("login")})]})})]})}const g=l.z.object({category:l.z.enum(["payment","seller","platform","price","content"]),severity:l.z.enum(["high","medium","low"]),title:l.z.string(),description:l.z.string(),what_to_do:l.z.string()}),oe=l.z.object({market_price_range:l.z.string().nullish(),offered_price:l.z.number().nullish(),currency:l.z.string().nullish(),price_assessment:l.z.string(),warnings:l.z.array(l.z.string())}),de=l.z.object({translation:l.z.string().nullish(),nuance_explanation:l.z.string().nullish(),risk_signals:l.z.array(g),cautions:l.z.array(g),safe_indicators:l.z.array(g),price_analysis:oe,safety_checklist:l.z.array(l.z.string()),risk_score:l.z.number(),recommendation:l.z.string(),emotional_support:l.z.string()}),me=l.z.object({risk_signals_count:l.z.number(),cautions_count:l.z.number(),safe_indicators_count:l.z.number()}),xe=l.z.object({id:l.z.string(),user_id:l.z.string().nullish(),input_text:l.z.string(),llm_analysis:de,risk_score:l.z.number(),expert_advice:l.z.string().nullish(),expert_reviewed:l.z.boolean(),expert_reviewed_at:l.z.string().nullish(),expert_reviewed_by:l.z.string().nullish(),created_at:l.z.string(),updated_at:l.z.string()}),ue=l.z.union([xe,l.z.object({id:l.z.string(),quick_summary:me,signup_required:l.z.literal(!0)})]);class he extends j.BaseCrudRepository{constructor(){super(...arguments),this.resource="trade-safety"}getDataSchema(){return ue}}const ge={high:70,medium:40};exports.TRADE_SAFETY_NS=c.TRADE_SAFETY_NS;exports.tradeSafetyTranslations=c.tradeSafetyTranslations;exports.DetailedResult=ie;exports.QuickResultTeaser=ce;exports.RISK_SCORE_THRESHOLDS=ge;exports.RiskSignalCard=h;exports.TradeSafetyRepository=he;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),i=require("framer-motion"),o=require("react-i18next");require("i18next");require("i18next-resources-to-backend");const c=require("./locale.js"),b=require("react"),f=require("next/link"),j=require("@aioia/core"),l=require("zod");function w(t){const s=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const r in t)if(r!=="default"){const a=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(s,r,a.get?a:{enumerable:!0,get:()=>t[r]})}}return s.default=t,Object.freeze(s)}const n=w(b);function N({title:t,titleId:s,...r},a){return n.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:a,"aria-labelledby":s},r),t?n.createElement("title",{id:s},t):null,n.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 y=n.forwardRef(N);function R({title:t,titleId:s,...r},a){return n.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:a,"aria-labelledby":s},r),t?n.createElement("title",{id:s},t):null,n.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 _=n.forwardRef(R);function S({title:t,titleId:s,...r},a){return n.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:a,"aria-labelledby":s},r),t?n.createElement("title",{id:s},t):null,n.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 E=n.forwardRef(S);function z({title:t,titleId:s,...r},a){return n.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:a,"aria-labelledby":s},r),t?n.createElement("title",{id:s},t):null,n.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"}),n.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=n.forwardRef(z);function A({title:t,titleId:s,...r},a){return n.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:a,"aria-labelledby":s},r),t?n.createElement("title",{id:s},t):null,n.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"}),n.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 k=n.forwardRef(A);function C({title:t,titleId:s,...r},a){return n.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:a,"aria-labelledby":s},r),t?n.createElement("title",{id:s},t):null,n.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 Z=n.forwardRef(C);function M({title:t,titleId:s,...r},a){return n.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:a,"aria-labelledby":s},r),t?n.createElement("title",{id:s},t):null,n.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 u=n.forwardRef(M);function F({title:t,titleId:s,...r},a){return n.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:a,"aria-labelledby":s},r),t?n.createElement("title",{id:s},t):null,n.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 D=n.forwardRef(F);function O({title:t,titleId:s,...r},a){return n.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:a,"aria-labelledby":s},r),t?n.createElement("title",{id:s},t):null,n.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 $=n.forwardRef(O);function B({title:t,titleId:s,...r},a){return n.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:a,"aria-labelledby":s},r),t?n.createElement("title",{id:s},t):null,n.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 I=n.forwardRef(B);function q({title:t,titleId:s,...r},a){return n.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:a,"aria-labelledby":s},r),t?n.createElement("title",{id:s},t):null,n.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"}),n.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 Y=n.forwardRef(q);function H({title:t,titleId:s,...r},a){return n.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:a,"aria-labelledby":s},r),t?n.createElement("title",{id:s},t):null,n.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 p=n.forwardRef(H);function L({title:t,titleId:s,...r},a){return n.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:a,"aria-labelledby":s},r),t?n.createElement("title",{id:s},t):null,n.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 V=n.forwardRef(L);function v(t){var s,r,a="";if(typeof t=="string"||typeof t=="number")a+=t;else if(typeof t=="object")if(Array.isArray(t)){var d=t.length;for(s=0;s<d;s++)t[s]&&(r=v(t[s]))&&(a&&(a+=" "),a+=r)}else for(r in t)t[r]&&(a&&(a+=" "),a+=r);return a}function x(){for(var t,s,r=0,a="",d=arguments.length;r<d;r++)(t=arguments[r])&&(s=v(t))&&(a&&(a+=" "),a+=s);return a}const P={error:"bg-error/10 border-error/30",warning:"bg-warning/10 border-warning/30",success:"bg-success/10 border-success/30"},U={error:"text-error",warning:"text-warning",success:"text-success"},K={high:Z,medium:u,low:$};function h({signal:t,variant:s="error"}){const{t:r}=o.useTranslation(c.TRADE_SAFETY_NS),a=K[t.severity];return e.jsx("div",{className:x("card border-2 backdrop-blur-sm",P[s]),children:e.jsx("div",{className:"card-body",children:e.jsxs("div",{className:"flex items-start gap-4",children:[e.jsx(a,{className:x("mt-1 size-8 shrink-0",U[s])}),e.jsxs("div",{className:"flex-1",children:[e.jsx("h4",{className:"card-title text-xl",children:t.title}),e.jsx("p",{className:"mt-2 text-neutral-content",children:t.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:["π‘ ",r("result.whatToDo")]}),e.jsx("p",{className:"text-sm",children:t.what_to_do})]})]})]})})})}function Q({cautions:t}){const{t:s}=o.useTranslation(c.TRADE_SAFETY_NS);return t.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(u,{className:"size-10 text-warning"}),s("result.cautions")]}),e.jsx("div",{className:"space-y-4",children:t.map((r,a)=>e.jsx(i.motion.div,{initial:{x:-50,opacity:0},animate:{x:0,opacity:1},transition:{delay:a*.1},whileHover:{scale:1.02,x:10},children:e.jsx(h,{signal:r,variant:"warning"})},a))})]})}function W(){const{t,i18n:s}=o.useTranslation(c.TRADE_SAFETY_NS),r=s.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(y,{className:"mx-auto mb-6 size-20"}),e.jsx("h3",{className:"mb-4 text-4xl font-bold",children:t("result.companionCta.title")}),e.jsx("p",{className:"mb-8 max-w-2xl text-xl",children:t("result.companionCta.description")}),e.jsx(f,{href:`/${r}/companions`,children:e.jsx(i.motion.button,{whileHover:{scale:1.1},whileTap:{scale:.95},className:"btn btn-lg bg-base-100 text-primary hover:bg-base-200",children:t("result.companionCta.button")})})]})})})}function G({advice:t}){const{t:s}=o.useTranslation(c.TRADE_SAFETY_NS);return e.jsx(i.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(V,{className:"size-8"})})}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-2xl font-bold",children:s("result.expertAdvice")}),e.jsx("p",{className:"opacity-80",children:s("result.expertName")})]})]}),e.jsx("div",{className:"prose max-w-none",children:e.jsx("p",{className:"whitespace-pre-wrap text-lg",children:t})})]})})}function J({data:t}){const{t:s,i18n:r}=o.useTranslation(c.TRADE_SAFETY_NS);return t?e.jsxs("section",{children:[e.jsxs("h3",{className:"mb-6 flex items-center gap-3 text-3xl font-bold",children:[e.jsx(k,{className:"size-10 text-secondary"}),s("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:[t.market_price_range&&e.jsxs("div",{children:[e.jsx("h4",{className:"mb-2 text-lg font-semibold",children:s("result.marketPrice")}),e.jsx("p",{className:"text-2xl font-bold",children:t.market_price_range})]}),t.offered_price&&e.jsxs("div",{children:[e.jsx("h4",{className:"mb-2 text-lg font-semibold",children:s("result.offeredPrice")}),e.jsx("p",{className:"text-2xl font-bold text-primary",children:new Intl.NumberFormat(r.language,{style:"currency",currency:t.currency||"USD"}).format(t.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:s("result.priceAssessment")}),e.jsx("p",{className:"text-neutral-content",children:t.price_assessment})]}),t.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(u,{className:"size-6"}),s("result.priceWarnings")]}),e.jsx("ul",{className:"list-inside list-disc space-y-1",children:t.warnings.map((a,d)=>e.jsx("li",{className:"text-neutral-content",children:a},d))})]})]})})]}):null}function X({recommendation:t,emotionalSupport:s}){const{t:r}=o.useTranslation(c.TRADE_SAFETY_NS);return e.jsxs("section",{children:[e.jsxs("h3",{className:"mb-6 flex items-center gap-3 text-3xl font-bold",children:[e.jsx(Y,{className:"size-10 text-warning"}),r("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:t})}),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(D,{className:"size-6 text-info"})," ",s]})})]})})]})}function ee(t){return t>=70?{level:"high",color:"error",Icon:p}:t>=40?{level:"medium",color:"warning",Icon:u}:{level:"low",color:"success",Icon:_}}function te({score:t}){const{t:s}=o.useTranslation(c.TRADE_SAFETY_NS),r=ee(t),{Icon:a}=r,d={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(a,{className:x("size-32",d[r.color])})}),e.jsx("h2",{className:"mb-4 text-5xl font-bold",children:s(`result.riskLevel.${r.level}.title`)}),e.jsx("div",{className:"mx-auto w-64",children:e.jsx("div",{className:x("radial-progress",d[r.color]),style:{"--value":t,"--size":"12rem","--thickness":"1rem"},role:"progressbar",children:e.jsx("span",{className:"text-5xl font-bold",children:t})})}),e.jsx("p",{className:"mt-6 max-w-lg text-xl text-neutral-content",children:s(`result.riskLevel.${r.level}.message`)})]})})})}function se({signals:t}){const{t:s}=o.useTranslation(c.TRADE_SAFETY_NS);return t.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-error"}),s("result.riskSignals")]}),e.jsx("div",{className:"space-y-4",children:t.map((r,a)=>e.jsx(i.motion.div,{initial:{x:-50,opacity:0},animate:{x:0,opacity:1},transition:{delay:a*.1},whileHover:{scale:1.02,x:10},children:e.jsx(h,{signal:r,variant:"error"})},a))})]})}function re({indicators:t}){const{t:s}=o.useTranslation(c.TRADE_SAFETY_NS);return t.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(E,{className:"size-10 text-success"}),s("result.safeIndicators")]}),e.jsx("div",{className:"space-y-4",children:t.map((r,a)=>e.jsx(i.motion.div,{initial:{x:-50,opacity:0},animate:{x:0,opacity:1},transition:{delay:a*.1},whileHover:{scale:1.02,x:10},children:e.jsx(h,{signal:r,variant:"success"})},a))})]})}function ae({items:t}){const{t:s}=o.useTranslation(c.TRADE_SAFETY_NS);return t.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"}),s("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:s("result.checklistDescription")}),e.jsx("div",{className:"space-y-3",children:t.map((r,a)=>e.jsxs(i.motion.label,{initial:{x:-20,opacity:0},animate:{x:0,opacity:1},transition:{delay:a*.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:r})]},a))})]})})]})}function ne({translation:t,nuance:s}){const{t:r}=o.useTranslation(c.TRADE_SAFETY_NS);return!t&&!s?null:e.jsxs("section",{children:[e.jsxs("h3",{className:"mb-6 flex items-center gap-3 text-3xl font-bold",children:[e.jsx(I,{className:"size-10 text-primary"}),r("result.translation")]}),e.jsx("div",{className:"card bg-base-200 shadow-xl",children:e.jsxs("div",{className:"card-body",children:[t&&e.jsxs("div",{className:"mb-4",children:[e.jsx("h4",{className:"mb-2 text-lg font-semibold",children:r("result.translationTitle")}),e.jsx("p",{className:"whitespace-pre-wrap text-neutral-content",children:t})]}),s&&e.jsxs("div",{children:[e.jsx("h4",{className:"mb-2 text-lg font-semibold",children:r("result.nuanceTitle")}),e.jsx("p",{className:"whitespace-pre-wrap text-neutral-content",children:s})]})]})})]})}const m={initial:{y:40,opacity:0},animate:{y:0,opacity:1,transition:{duration:.6}}},le={animate:{transition:{staggerChildren:.15}}};function ie({analysis:t,expertAdvice:s,showCompanionCta:r=!1}){return e.jsxs(i.motion.div,{variants:le,initial:"initial",animate:"animate",className:"mx-auto max-w-5xl space-y-12",children:[e.jsx(i.motion.div,{variants:m,children:e.jsx(te,{score:t.risk_score})}),(t.translation||t.nuance_explanation)&&e.jsx(i.motion.div,{variants:m,children:e.jsx(ne,{translation:t.translation,nuance:t.nuance_explanation})}),t.risk_signals.length>0&&e.jsx(i.motion.div,{variants:m,children:e.jsx(se,{signals:t.risk_signals})}),t.cautions.length>0&&e.jsx(i.motion.div,{variants:m,children:e.jsx(Q,{cautions:t.cautions})}),t.safe_indicators.length>0&&e.jsx(i.motion.div,{variants:m,children:e.jsx(re,{indicators:t.safe_indicators})}),t.price_analysis&&e.jsx(i.motion.div,{variants:m,children:e.jsx(J,{data:t.price_analysis})}),t.safety_checklist.length>0&&e.jsx(i.motion.div,{variants:m,children:e.jsx(ae,{items:t.safety_checklist})}),s&&e.jsx(i.motion.div,{variants:m,children:e.jsx(G,{advice:s})}),e.jsx(i.motion.div,{variants:m,children:e.jsx(X,{recommendation:t.recommendation,emotionalSupport:t.emotional_support})}),r&&e.jsx(i.motion.div,{variants:m,children:e.jsx(W,{})})]})}function ce({summary:t,checkId:s}){const{t:r,i18n:a}=o.useTranslation(c.TRADE_SAFETY_NS),d=a.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:r("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:t.risk_signals_count}),e.jsx("p",{className:"text-sm",children:r("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:t.cautions_count}),e.jsx("p",{className:"text-sm",children:r("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:t.safe_indicators_count}),e.jsx("p",{className:"text-sm",children:r("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:r("result.signupRequired")}),e.jsx("p",{className:"mb-4 text-neutral-content",children:r("result.signupMessage")}),e.jsx(f,{href:`/${d}/login?callbackUrl=${encodeURIComponent(`/${d}/trade-safety/result/${s}`)}`,className:"btn btn-primary",children:r("login")})]})})]})}const g=l.z.object({category:l.z.enum(["payment","seller","platform","price","content"]),severity:l.z.enum(["high","medium","low"]),title:l.z.string(),description:l.z.string(),what_to_do:l.z.string()}),oe=l.z.object({market_price_range:l.z.string().nullish(),offered_price:l.z.number().nullish(),currency:l.z.string().nullish(),price_assessment:l.z.string(),warnings:l.z.array(l.z.string())}),de=l.z.object({translation:l.z.string().nullish(),nuance_explanation:l.z.string().nullish(),risk_signals:l.z.array(g),cautions:l.z.array(g),safe_indicators:l.z.array(g),price_analysis:oe,safety_checklist:l.z.array(l.z.string()),risk_score:l.z.number(),recommendation:l.z.string(),emotional_support:l.z.string()}),me=l.z.object({risk_signals_count:l.z.number(),cautions_count:l.z.number(),safe_indicators_count:l.z.number()}),xe=l.z.object({id:l.z.string(),user_id:l.z.string().nullish(),input_text:l.z.string(),llm_analysis:de,risk_score:l.z.number(),expert_advice:l.z.string().nullish(),expert_reviewed:l.z.boolean(),expert_reviewed_at:l.z.string().nullish(),expert_reviewed_by:l.z.string().nullish(),created_at:l.z.string(),updated_at:l.z.string()}),ue=l.z.union([xe,l.z.object({id:l.z.string(),quick_summary:me,signup_required:l.z.literal(!0)})]);class he extends j.BaseCrudRepository{constructor(){super(...arguments),this.resource="trade-safety"}getDataSchema(){return ue}}const ge={high:70,medium:40};exports.TRADE_SAFETY_NS=c.TRADE_SAFETY_NS;exports.tradeSafetyTranslations=c.tradeSafetyTranslations;exports.DetailedResult=ie;exports.QuickResultTeaser=ce;exports.RISK_SCORE_THRESHOLDS=ge;exports.RiskSignalCard=h;exports.TradeSafetyRepository=he;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
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 { TRADE_SAFETY_NS } from \"../i18n\";\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(TRADE_SAFETY_NS);\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(\"mt-1 size-8 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(\"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 { TRADE_SAFETY_NS } from \"../../i18n\";\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(TRADE_SAFETY_NS);\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(\"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\nimport { TRADE_SAFETY_NS } from \"../../i18n\";\n\nexport function CompanionCtaSection() {\n const { t, i18n } = useTranslation(TRADE_SAFETY_NS);\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(\"result.companionCta.title\")}\n </h3>\n\n <p className=\"mb-8 max-w-2xl text-xl\">\n {t(\"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(\"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\nimport { TRADE_SAFETY_NS } from \"../../i18n\";\n\ninterface ExpertAdviceSectionProps {\n advice: string;\n}\n\nexport function ExpertAdviceSection({ advice }: ExpertAdviceSectionProps) {\n const { t } = useTranslation(TRADE_SAFETY_NS);\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\">{t(\"result.expertAdvice\")}</h3>\n <p className=\"opacity-80\">{t(\"result.expertName\")}</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 { TRADE_SAFETY_NS } from \"../../i18n\";\nimport { PriceAnalysis } from \"../../types\";\n\ninterface PriceAnalysisSectionProps {\n data?: PriceAnalysis;\n}\n\nexport function PriceAnalysisSection({ data }: PriceAnalysisSectionProps) {\n const { t, i18n } = useTranslation(TRADE_SAFETY_NS);\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(\"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(\"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(\"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(\"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(\"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\nimport { TRADE_SAFETY_NS } from \"../../i18n\";\n\ninterface RecommendationSectionProps {\n recommendation: string;\n emotionalSupport: string;\n}\n\nexport function RecommendationSection({\n recommendation,\n emotionalSupport,\n}: RecommendationSectionProps) {\n const { t } = useTranslation(TRADE_SAFETY_NS);\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(\"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 { TRADE_SAFETY_NS } from \"../../i18n\";\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(TRADE_SAFETY_NS);\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(\"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 { TRADE_SAFETY_NS } from \"../../i18n\";\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(TRADE_SAFETY_NS);\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(\"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\nimport { TRADE_SAFETY_NS } from \"../../i18n\";\n\ninterface SafetyChecklistSectionProps {\n items: string[];\n}\n\nexport function SafetyChecklistSection({ items }: SafetyChecklistSectionProps) {\n const { t } = useTranslation(TRADE_SAFETY_NS);\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(\"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(\"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\nimport { TRADE_SAFETY_NS } from \"../../i18n\";\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(TRADE_SAFETY_NS);\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(\"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(\"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(\"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 { TRADE_SAFETY_NS } from \"../i18n\";\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(TRADE_SAFETY_NS);\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(\"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\">{t(\"result.riskSignals\")}</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(\"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\">{t(\"result.safeIndicators\")}</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\">{t(\"result.signupRequired\")}</h2>\n <p className=\"mb-4 text-neutral-content\">\n {t(\"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","t","f","n","o","clsx","variantStyles","iconColor","severityIcon","RiskSignalCard","signal","variant","useTranslation","TRADE_SAFETY_NS","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 { TRADE_SAFETY_NS } from \"../i18n\";\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(TRADE_SAFETY_NS);\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(\"mt-1 size-8 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(\"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 { TRADE_SAFETY_NS } from \"../../i18n\";\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(TRADE_SAFETY_NS);\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(\"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\nimport { TRADE_SAFETY_NS } from \"../../i18n\";\n\nexport function CompanionCtaSection() {\n const { t, i18n } = useTranslation(TRADE_SAFETY_NS);\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(\"result.companionCta.title\")}\n </h3>\n\n <p className=\"mb-8 max-w-2xl text-xl\">\n {t(\"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(\"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\nimport { TRADE_SAFETY_NS } from \"../../i18n\";\n\ninterface ExpertAdviceSectionProps {\n advice: string;\n}\n\nexport function ExpertAdviceSection({ advice }: ExpertAdviceSectionProps) {\n const { t } = useTranslation(TRADE_SAFETY_NS);\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\">{t(\"result.expertAdvice\")}</h3>\n <p className=\"opacity-80\">{t(\"result.expertName\")}</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 { TRADE_SAFETY_NS } from \"../../i18n\";\nimport { PriceAnalysis } from \"../../types\";\n\ninterface PriceAnalysisSectionProps {\n data?: PriceAnalysis;\n}\n\nexport function PriceAnalysisSection({ data }: PriceAnalysisSectionProps) {\n const { t, i18n } = useTranslation(TRADE_SAFETY_NS);\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(\"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(\"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(\"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(\"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(\"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\nimport { TRADE_SAFETY_NS } from \"../../i18n\";\n\ninterface RecommendationSectionProps {\n recommendation: string;\n emotionalSupport: string;\n}\n\nexport function RecommendationSection({\n recommendation,\n emotionalSupport,\n}: RecommendationSectionProps) {\n const { t } = useTranslation(TRADE_SAFETY_NS);\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(\"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\nimport { TRADE_SAFETY_NS } from \"../../i18n\";\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(TRADE_SAFETY_NS);\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(`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(`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 { TRADE_SAFETY_NS } from \"../../i18n\";\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(TRADE_SAFETY_NS);\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(\"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 { TRADE_SAFETY_NS } from \"../../i18n\";\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(TRADE_SAFETY_NS);\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(\"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\nimport { TRADE_SAFETY_NS } from \"../../i18n\";\n\ninterface SafetyChecklistSectionProps {\n items: string[];\n}\n\nexport function SafetyChecklistSection({ items }: SafetyChecklistSectionProps) {\n const { t } = useTranslation(TRADE_SAFETY_NS);\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(\"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(\"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\nimport { TRADE_SAFETY_NS } from \"../../i18n\";\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(TRADE_SAFETY_NS);\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(\"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(\"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(\"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 { TRADE_SAFETY_NS } from \"../i18n\";\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(TRADE_SAFETY_NS);\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(\"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\">{t(\"result.riskSignals\")}</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(\"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\">{t(\"result.safeIndicators\")}</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\">{t(\"result.signupRequired\")}</h2>\n <p className=\"mb-4 text-neutral-content\">\n {t(\"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","t","f","n","o","clsx","variantStyles","iconColor","severityIcon","RiskSignalCard","signal","variant","useTranslation","TRADE_SAFETY_NS","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
|
@@ -3,8 +3,8 @@ import { motion as s } from "framer-motion";
|
|
|
3
3
|
import { useTranslation as o } from "react-i18next";
|
|
4
4
|
import "i18next";
|
|
5
5
|
import "i18next-resources-to-backend";
|
|
6
|
-
import { TRADE_SAFETY_NS as
|
|
7
|
-
import { tradeSafetyTranslations as
|
|
6
|
+
import { TRADE_SAFETY_NS as d } from "./locale.mjs";
|
|
7
|
+
import { tradeSafetyTranslations as ke } from "./locale.mjs";
|
|
8
8
|
import * as l from "react";
|
|
9
9
|
import v from "next/link";
|
|
10
10
|
import { BaseCrudRepository as w } from "@aioia/core";
|
|
@@ -74,8 +74,8 @@ function E({
|
|
|
74
74
|
clipRule: "evenodd"
|
|
75
75
|
}));
|
|
76
76
|
}
|
|
77
|
-
const
|
|
78
|
-
function
|
|
77
|
+
const k = /* @__PURE__ */ l.forwardRef(E);
|
|
78
|
+
function C({
|
|
79
79
|
title: e,
|
|
80
80
|
titleId: r,
|
|
81
81
|
...a
|
|
@@ -100,7 +100,7 @@ function k({
|
|
|
100
100
|
clipRule: "evenodd"
|
|
101
101
|
}));
|
|
102
102
|
}
|
|
103
|
-
const
|
|
103
|
+
const S = /* @__PURE__ */ l.forwardRef(C);
|
|
104
104
|
function Z({
|
|
105
105
|
title: e,
|
|
106
106
|
titleId: r,
|
|
@@ -305,13 +305,13 @@ function b(e) {
|
|
|
305
305
|
var r, a, n = "";
|
|
306
306
|
if (typeof e == "string" || typeof e == "number") n += e;
|
|
307
307
|
else if (typeof e == "object") if (Array.isArray(e)) {
|
|
308
|
-
var
|
|
309
|
-
for (r = 0; r <
|
|
308
|
+
var m = e.length;
|
|
309
|
+
for (r = 0; r < m; r++) e[r] && (a = b(e[r])) && (n && (n += " "), n += a);
|
|
310
310
|
} else for (a in e) e[a] && (n && (n += " "), n += a);
|
|
311
311
|
return n;
|
|
312
312
|
}
|
|
313
313
|
function h() {
|
|
314
|
-
for (var e, r, a = 0, n = "",
|
|
314
|
+
for (var e, r, a = 0, n = "", m = arguments.length; a < m; a++) (e = arguments[a]) && (r = b(e)) && (n && (n += " "), n += r);
|
|
315
315
|
return n;
|
|
316
316
|
}
|
|
317
317
|
const q = {
|
|
@@ -331,7 +331,7 @@ function p({
|
|
|
331
331
|
signal: e,
|
|
332
332
|
variant: r = "error"
|
|
333
333
|
}) {
|
|
334
|
-
const { t: a } = o(
|
|
334
|
+
const { t: a } = o(d), n = K[e.severity];
|
|
335
335
|
return /* @__PURE__ */ t("div", { className: h("card border-2 backdrop-blur-sm", q[r]), children: /* @__PURE__ */ t("div", { className: "card-body", children: /* @__PURE__ */ i("div", { className: "flex items-start gap-4", children: [
|
|
336
336
|
/* @__PURE__ */ t(n, { className: h("mt-1 size-8 shrink-0", P[r]) }),
|
|
337
337
|
/* @__PURE__ */ i("div", { className: "flex-1", children: [
|
|
@@ -348,7 +348,7 @@ function p({
|
|
|
348
348
|
] }) }) });
|
|
349
349
|
}
|
|
350
350
|
function Q({ cautions: e }) {
|
|
351
|
-
const { t: r } = o(
|
|
351
|
+
const { t: r } = o(d);
|
|
352
352
|
return e.length === 0 ? null : /* @__PURE__ */ i("section", { children: [
|
|
353
353
|
/* @__PURE__ */ i("h3", { className: "mb-6 flex items-center gap-3 text-3xl font-bold", children: [
|
|
354
354
|
/* @__PURE__ */ t(g, { className: "size-10 text-warning" }),
|
|
@@ -368,7 +368,7 @@ function Q({ cautions: e }) {
|
|
|
368
368
|
] });
|
|
369
369
|
}
|
|
370
370
|
function W() {
|
|
371
|
-
const { t: e, i18n: r } = o(
|
|
371
|
+
const { t: e, i18n: r } = o(d), a = r.language;
|
|
372
372
|
return /* @__PURE__ */ t("section", { className: "hero min-h-[30vh] rounded-3xl bg-primary text-primary-content", children: /* @__PURE__ */ t("div", { className: "hero-content text-center", children: /* @__PURE__ */ i("div", { children: [
|
|
373
373
|
/* @__PURE__ */ t(y, { className: "mx-auto mb-6 size-20" }),
|
|
374
374
|
/* @__PURE__ */ t("h3", { className: "mb-4 text-4xl font-bold", children: e("result.companionCta.title") }),
|
|
@@ -385,7 +385,7 @@ function W() {
|
|
|
385
385
|
] }) }) });
|
|
386
386
|
}
|
|
387
387
|
function Y({ advice: e }) {
|
|
388
|
-
const { t: r } = o(
|
|
388
|
+
const { t: r } = o(d);
|
|
389
389
|
return /* @__PURE__ */ t(
|
|
390
390
|
s.section,
|
|
391
391
|
{
|
|
@@ -405,7 +405,7 @@ function Y({ advice: e }) {
|
|
|
405
405
|
);
|
|
406
406
|
}
|
|
407
407
|
function G({ data: e }) {
|
|
408
|
-
const { t: r, i18n: a } = o(
|
|
408
|
+
const { t: r, i18n: a } = o(d);
|
|
409
409
|
return e ? /* @__PURE__ */ i("section", { children: [
|
|
410
410
|
/* @__PURE__ */ i("h3", { className: "mb-6 flex items-center gap-3 text-3xl font-bold", children: [
|
|
411
411
|
/* @__PURE__ */ t(M, { className: "size-10 text-secondary" }),
|
|
@@ -434,7 +434,7 @@ function G({ data: e }) {
|
|
|
434
434
|
/* @__PURE__ */ t(g, { className: "size-6" }),
|
|
435
435
|
r("result.priceWarnings")
|
|
436
436
|
] }),
|
|
437
|
-
/* @__PURE__ */ t("ul", { className: "list-inside list-disc space-y-1", children: e.warnings.map((n,
|
|
437
|
+
/* @__PURE__ */ t("ul", { className: "list-inside list-disc space-y-1", children: e.warnings.map((n, m) => /* @__PURE__ */ t("li", { className: "text-neutral-content", children: n }, m)) })
|
|
438
438
|
] })
|
|
439
439
|
] }) })
|
|
440
440
|
] }) : null;
|
|
@@ -443,7 +443,7 @@ function J({
|
|
|
443
443
|
recommendation: e,
|
|
444
444
|
emotionalSupport: r
|
|
445
445
|
}) {
|
|
446
|
-
const { t: a } = o(
|
|
446
|
+
const { t: a } = o(d);
|
|
447
447
|
return /* @__PURE__ */ i("section", { children: [
|
|
448
448
|
/* @__PURE__ */ i("h3", { className: "mb-6 flex items-center gap-3 text-3xl font-bold", children: [
|
|
449
449
|
/* @__PURE__ */ t(L, { className: "size-10 text-warning" }),
|
|
@@ -464,18 +464,18 @@ function X(e) {
|
|
|
464
464
|
return e >= 70 ? { level: "high", color: "error", Icon: x } : e >= 40 ? { level: "medium", color: "warning", Icon: g } : { level: "low", color: "success", Icon: _ };
|
|
465
465
|
}
|
|
466
466
|
function ee({ score: e }) {
|
|
467
|
-
const { t: r } = o(), a = X(e), { Icon: n } = a,
|
|
467
|
+
const { t: r } = o(d), a = X(e), { Icon: n } = a, m = {
|
|
468
468
|
error: "text-error",
|
|
469
469
|
warning: "text-warning",
|
|
470
470
|
success: "text-success"
|
|
471
471
|
};
|
|
472
472
|
return /* @__PURE__ */ t("div", { className: "hero min-h-[40vh] rounded-3xl bg-base-200", children: /* @__PURE__ */ t("div", { className: "hero-content text-center", children: /* @__PURE__ */ i("div", { children: [
|
|
473
|
-
/* @__PURE__ */ t("div", { className: "mb-4", children: /* @__PURE__ */ t(n, { className: h("size-32",
|
|
474
|
-
/* @__PURE__ */ t("h2", { className: "mb-4 text-5xl font-bold", children: r(`
|
|
473
|
+
/* @__PURE__ */ t("div", { className: "mb-4", children: /* @__PURE__ */ t(n, { className: h("size-32", m[a.color]) }) }),
|
|
474
|
+
/* @__PURE__ */ t("h2", { className: "mb-4 text-5xl font-bold", children: r(`result.riskLevel.${a.level}.title`) }),
|
|
475
475
|
/* @__PURE__ */ t("div", { className: "mx-auto w-64", children: /* @__PURE__ */ t(
|
|
476
476
|
"div",
|
|
477
477
|
{
|
|
478
|
-
className: h("radial-progress",
|
|
478
|
+
className: h("radial-progress", m[a.color]),
|
|
479
479
|
style: {
|
|
480
480
|
"--value": e,
|
|
481
481
|
"--size": "12rem",
|
|
@@ -485,11 +485,11 @@ function ee({ score: e }) {
|
|
|
485
485
|
children: /* @__PURE__ */ t("span", { className: "text-5xl font-bold", children: e })
|
|
486
486
|
}
|
|
487
487
|
) }),
|
|
488
|
-
/* @__PURE__ */ t("p", { className: "mt-6 max-w-lg text-xl text-neutral-content", children: r(`
|
|
488
|
+
/* @__PURE__ */ t("p", { className: "mt-6 max-w-lg text-xl text-neutral-content", children: r(`result.riskLevel.${a.level}.message`) })
|
|
489
489
|
] }) }) });
|
|
490
490
|
}
|
|
491
491
|
function te({ signals: e }) {
|
|
492
|
-
const { t: r } = o(
|
|
492
|
+
const { t: r } = o(d);
|
|
493
493
|
return e.length === 0 ? null : /* @__PURE__ */ i("section", { children: [
|
|
494
494
|
/* @__PURE__ */ i("h3", { className: "mb-6 flex items-center gap-3 text-3xl font-bold", children: [
|
|
495
495
|
/* @__PURE__ */ t(x, { className: "size-10 text-error" }),
|
|
@@ -511,10 +511,10 @@ function te({ signals: e }) {
|
|
|
511
511
|
function re({
|
|
512
512
|
indicators: e
|
|
513
513
|
}) {
|
|
514
|
-
const { t: r } = o(
|
|
514
|
+
const { t: r } = o(d);
|
|
515
515
|
return e.length === 0 ? null : /* @__PURE__ */ i("section", { children: [
|
|
516
516
|
/* @__PURE__ */ i("h3", { className: "mb-6 flex items-center gap-3 text-3xl font-bold", children: [
|
|
517
|
-
/* @__PURE__ */ t(
|
|
517
|
+
/* @__PURE__ */ t(k, { className: "size-10 text-success" }),
|
|
518
518
|
r("result.safeIndicators")
|
|
519
519
|
] }),
|
|
520
520
|
/* @__PURE__ */ t("div", { className: "space-y-4", children: e.map((a, n) => /* @__PURE__ */ t(
|
|
@@ -531,10 +531,10 @@ function re({
|
|
|
531
531
|
] });
|
|
532
532
|
}
|
|
533
533
|
function ae({ items: e }) {
|
|
534
|
-
const { t: r } = o(
|
|
534
|
+
const { t: r } = o(d);
|
|
535
535
|
return e.length === 0 ? null : /* @__PURE__ */ i("section", { children: [
|
|
536
536
|
/* @__PURE__ */ i("h3", { className: "mb-6 flex items-center gap-3 text-3xl font-bold", children: [
|
|
537
|
-
/* @__PURE__ */ t(
|
|
537
|
+
/* @__PURE__ */ t(S, { className: "size-10 text-primary" }),
|
|
538
538
|
r("result.safetyChecklist")
|
|
539
539
|
] }),
|
|
540
540
|
/* @__PURE__ */ t("div", { className: "card border-2 border-primary/30 bg-base-200", children: /* @__PURE__ */ i("div", { className: "card-body", children: [
|
|
@@ -566,7 +566,7 @@ function ne({
|
|
|
566
566
|
translation: e,
|
|
567
567
|
nuance: r
|
|
568
568
|
}) {
|
|
569
|
-
const { t: a } = o(
|
|
569
|
+
const { t: a } = o(d);
|
|
570
570
|
return !e && !r ? null : /* @__PURE__ */ i("section", { children: [
|
|
571
571
|
/* @__PURE__ */ i("h3", { className: "mb-6 flex items-center gap-3 text-3xl font-bold", children: [
|
|
572
572
|
/* @__PURE__ */ t(T, { className: "size-10 text-primary" }),
|
|
@@ -641,7 +641,7 @@ function Ne({
|
|
|
641
641
|
summary: e,
|
|
642
642
|
checkId: r
|
|
643
643
|
}) {
|
|
644
|
-
const { t: a, i18n: n } = o(
|
|
644
|
+
const { t: a, i18n: n } = o(d), m = n.language;
|
|
645
645
|
return /* @__PURE__ */ i("div", { className: "mx-auto max-w-2xl", children: [
|
|
646
646
|
/* @__PURE__ */ t("h1", { className: "mb-8 text-center text-3xl font-bold", children: a("result.title") }),
|
|
647
647
|
/* @__PURE__ */ i("div", { className: "mb-8 grid grid-cols-1 gap-4 md:grid-cols-3", children: [
|
|
@@ -664,7 +664,7 @@ function Ne({
|
|
|
664
664
|
/* @__PURE__ */ t(
|
|
665
665
|
v,
|
|
666
666
|
{
|
|
667
|
-
href: `/${
|
|
667
|
+
href: `/${m}/login?callbackUrl=${encodeURIComponent(`/${m}/trade-safety/result/${r}`)}`,
|
|
668
668
|
className: "btn btn-primary",
|
|
669
669
|
children: a("login")
|
|
670
670
|
}
|
|
@@ -739,8 +739,8 @@ export {
|
|
|
739
739
|
Ne as QuickResultTeaser,
|
|
740
740
|
Re as RISK_SCORE_THRESHOLDS,
|
|
741
741
|
p as RiskSignalCard,
|
|
742
|
-
|
|
742
|
+
d as TRADE_SAFETY_NS,
|
|
743
743
|
ye as TradeSafetyRepository,
|
|
744
|
-
|
|
744
|
+
ke as tradeSafetyTranslations
|
|
745
745
|
};
|
|
746
746
|
//# sourceMappingURL=index.mjs.map
|
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 { TRADE_SAFETY_NS } from \"../i18n\";\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(TRADE_SAFETY_NS);\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(\"mt-1 size-8 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(\"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 { TRADE_SAFETY_NS } from \"../../i18n\";\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(TRADE_SAFETY_NS);\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(\"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\nimport { TRADE_SAFETY_NS } from \"../../i18n\";\n\nexport function CompanionCtaSection() {\n const { t, i18n } = useTranslation(TRADE_SAFETY_NS);\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(\"result.companionCta.title\")}\n </h3>\n\n <p className=\"mb-8 max-w-2xl text-xl\">\n {t(\"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(\"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\nimport { TRADE_SAFETY_NS } from \"../../i18n\";\n\ninterface ExpertAdviceSectionProps {\n advice: string;\n}\n\nexport function ExpertAdviceSection({ advice }: ExpertAdviceSectionProps) {\n const { t } = useTranslation(TRADE_SAFETY_NS);\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\">{t(\"result.expertAdvice\")}</h3>\n <p className=\"opacity-80\">{t(\"result.expertName\")}</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 { TRADE_SAFETY_NS } from \"../../i18n\";\nimport { PriceAnalysis } from \"../../types\";\n\ninterface PriceAnalysisSectionProps {\n data?: PriceAnalysis;\n}\n\nexport function PriceAnalysisSection({ data }: PriceAnalysisSectionProps) {\n const { t, i18n } = useTranslation(TRADE_SAFETY_NS);\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(\"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(\"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(\"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(\"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(\"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\nimport { TRADE_SAFETY_NS } from \"../../i18n\";\n\ninterface RecommendationSectionProps {\n recommendation: string;\n emotionalSupport: string;\n}\n\nexport function RecommendationSection({\n recommendation,\n emotionalSupport,\n}: RecommendationSectionProps) {\n const { t } = useTranslation(TRADE_SAFETY_NS);\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(\"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 { TRADE_SAFETY_NS } from \"../../i18n\";\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(TRADE_SAFETY_NS);\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(\"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 { TRADE_SAFETY_NS } from \"../../i18n\";\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(TRADE_SAFETY_NS);\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(\"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\nimport { TRADE_SAFETY_NS } from \"../../i18n\";\n\ninterface SafetyChecklistSectionProps {\n items: string[];\n}\n\nexport function SafetyChecklistSection({ items }: SafetyChecklistSectionProps) {\n const { t } = useTranslation(TRADE_SAFETY_NS);\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(\"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(\"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\nimport { TRADE_SAFETY_NS } from \"../../i18n\";\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(TRADE_SAFETY_NS);\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(\"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(\"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(\"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 { TRADE_SAFETY_NS } from \"../i18n\";\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(TRADE_SAFETY_NS);\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(\"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\">{t(\"result.riskSignals\")}</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(\"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\">{t(\"result.safeIndicators\")}</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\">{t(\"result.signupRequired\")}</h2>\n <p className=\"mb-4 text-neutral-content\">\n {t(\"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","t","f","o","clsx","variantStyles","iconColor","severityIcon","RiskSignalCard","signal","variant","useTranslation","TRADE_SAFETY_NS","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 { TRADE_SAFETY_NS } from \"../i18n\";\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(TRADE_SAFETY_NS);\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(\"mt-1 size-8 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(\"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 { TRADE_SAFETY_NS } from \"../../i18n\";\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(TRADE_SAFETY_NS);\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(\"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\nimport { TRADE_SAFETY_NS } from \"../../i18n\";\n\nexport function CompanionCtaSection() {\n const { t, i18n } = useTranslation(TRADE_SAFETY_NS);\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(\"result.companionCta.title\")}\n </h3>\n\n <p className=\"mb-8 max-w-2xl text-xl\">\n {t(\"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(\"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\nimport { TRADE_SAFETY_NS } from \"../../i18n\";\n\ninterface ExpertAdviceSectionProps {\n advice: string;\n}\n\nexport function ExpertAdviceSection({ advice }: ExpertAdviceSectionProps) {\n const { t } = useTranslation(TRADE_SAFETY_NS);\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\">{t(\"result.expertAdvice\")}</h3>\n <p className=\"opacity-80\">{t(\"result.expertName\")}</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 { TRADE_SAFETY_NS } from \"../../i18n\";\nimport { PriceAnalysis } from \"../../types\";\n\ninterface PriceAnalysisSectionProps {\n data?: PriceAnalysis;\n}\n\nexport function PriceAnalysisSection({ data }: PriceAnalysisSectionProps) {\n const { t, i18n } = useTranslation(TRADE_SAFETY_NS);\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(\"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(\"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(\"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(\"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(\"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\nimport { TRADE_SAFETY_NS } from \"../../i18n\";\n\ninterface RecommendationSectionProps {\n recommendation: string;\n emotionalSupport: string;\n}\n\nexport function RecommendationSection({\n recommendation,\n emotionalSupport,\n}: RecommendationSectionProps) {\n const { t } = useTranslation(TRADE_SAFETY_NS);\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(\"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\nimport { TRADE_SAFETY_NS } from \"../../i18n\";\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(TRADE_SAFETY_NS);\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(`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(`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 { TRADE_SAFETY_NS } from \"../../i18n\";\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(TRADE_SAFETY_NS);\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(\"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 { TRADE_SAFETY_NS } from \"../../i18n\";\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(TRADE_SAFETY_NS);\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(\"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\nimport { TRADE_SAFETY_NS } from \"../../i18n\";\n\ninterface SafetyChecklistSectionProps {\n items: string[];\n}\n\nexport function SafetyChecklistSection({ items }: SafetyChecklistSectionProps) {\n const { t } = useTranslation(TRADE_SAFETY_NS);\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(\"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(\"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\nimport { TRADE_SAFETY_NS } from \"../../i18n\";\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(TRADE_SAFETY_NS);\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(\"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(\"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(\"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 { TRADE_SAFETY_NS } from \"../i18n\";\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(TRADE_SAFETY_NS);\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(\"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\">{t(\"result.riskSignals\")}</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(\"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\">{t(\"result.safeIndicators\")}</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\">{t(\"result.signupRequired\")}</h2>\n <p className=\"mb-4 text-neutral-content\">\n {t(\"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","t","f","o","clsx","variantStyles","iconColor","severityIcon","RiskSignalCard","signal","variant","useTranslation","TRADE_SAFETY_NS","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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "trade-safety",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"description": "React components for Trade Safety - K-pop merchandise trade safety analysis",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -34,7 +34,10 @@
|
|
|
34
34
|
"test:watch": "jest --watch",
|
|
35
35
|
"test:coverage": "jest --coverage",
|
|
36
36
|
"format": "prettier --write .",
|
|
37
|
-
"check-format": "prettier --check ."
|
|
37
|
+
"check-format": "prettier --check .",
|
|
38
|
+
"storybook": "storybook dev -p 6006",
|
|
39
|
+
"build-storybook": "storybook build",
|
|
40
|
+
"chromatic": "chromatic"
|
|
38
41
|
},
|
|
39
42
|
"keywords": [
|
|
40
43
|
"kpop",
|
|
@@ -70,8 +73,14 @@
|
|
|
70
73
|
"zod": "^3.23.8"
|
|
71
74
|
},
|
|
72
75
|
"devDependencies": {
|
|
76
|
+
"@chromatic-com/storybook": "^1.9.0",
|
|
73
77
|
"@sentry/nextjs": "^7.113.0",
|
|
74
|
-
"@storybook/
|
|
78
|
+
"@storybook/addon-essentials": "^8.6.14",
|
|
79
|
+
"@storybook/addon-links": "^8.6.14",
|
|
80
|
+
"@storybook/addon-themes": "^8.6.14",
|
|
81
|
+
"@storybook/blocks": "^8.6.14",
|
|
82
|
+
"@storybook/nextjs": "^8.6.14",
|
|
83
|
+
"@storybook/react": "^8.6.14",
|
|
75
84
|
"@tailwindcss/typography": "^0.5.13",
|
|
76
85
|
"@testing-library/jest-dom": "^6.4.3",
|
|
77
86
|
"@testing-library/react": "^15.0.6",
|
|
@@ -83,6 +92,7 @@
|
|
|
83
92
|
"@typescript-eslint/parser": "^6.21.0",
|
|
84
93
|
"@vitejs/plugin-react": "^5.1.1",
|
|
85
94
|
"autoprefixer": "^10",
|
|
95
|
+
"chromatic": "^11.29.0",
|
|
86
96
|
"conventional-changelog-conventionalcommits": "^9.1.0",
|
|
87
97
|
"daisyui": "^4.10.5",
|
|
88
98
|
"eslint": "^8",
|
|
@@ -95,6 +105,7 @@
|
|
|
95
105
|
"prettier": "^3",
|
|
96
106
|
"prettier-plugin-tailwindcss": "^0.5.14",
|
|
97
107
|
"semantic-release": "^24.0.0",
|
|
108
|
+
"storybook": "^8.6.14",
|
|
98
109
|
"tailwindcss": "^3",
|
|
99
110
|
"ts-jest": "^29",
|
|
100
111
|
"typescript": "^5",
|