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.
@@ -1 +1 @@
1
- {"version":3,"file":"RiskScoreHero.d.ts","sourceRoot":"","sources":["../../../src/components/DetailedResult/RiskScoreHero.tsx"],"names":[],"mappings":"AAUA,UAAU,kBAAkB;IAC1B,KAAK,EAAE,MAAM,CAAC;CACf;AAkBD,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,EAAE,kBAAkB,+BA8C1D"}
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 m } from "./locale.mjs";
7
- import { tradeSafetyTranslations as Se } from "./locale.mjs";
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 S = /* @__PURE__ */ l.forwardRef(E);
78
- function k({
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 C = /* @__PURE__ */ l.forwardRef(k);
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 d = e.length;
309
- for (r = 0; r < d; r++) e[r] && (a = b(e[r])) && (n && (n += " "), n += a);
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 = "", d = arguments.length; a < d; a++) (e = arguments[a]) && (r = b(e)) && (n && (n += " "), n += r);
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(m), n = K[e.severity];
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(m);
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(m), a = r.language;
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(m);
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(m);
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, d) => /* @__PURE__ */ t("li", { className: "text-neutral-content", children: n }, d)) })
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(m);
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, d = {
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", d[a.color]) }) }),
474
- /* @__PURE__ */ t("h2", { className: "mb-4 text-5xl font-bold", children: r(`page.tradeSafety.result.riskLevel.${a.level}.title`) }),
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", d[a.color]),
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(`page.tradeSafety.result.riskLevel.${a.level}.message`) })
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(m);
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(m);
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(S, { className: "size-10 text-success" }),
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(m);
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(C, { className: "size-10 text-primary" }),
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(m);
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(m), d = n.language;
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: `/${d}/login?callbackUrl=${encodeURIComponent(`/${d}/trade-safety/result/${r}`)}`,
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
- m as TRADE_SAFETY_NS,
742
+ d as TRADE_SAFETY_NS,
743
743
  ye as TradeSafetyRepository,
744
- Se as tradeSafetyTranslations
744
+ ke as tradeSafetyTranslations
745
745
  };
746
746
  //# sourceMappingURL=index.mjs.map
@@ -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":";;;;;;;;;;;AACA,SAASA,EAA+B;AAAA,EACtC,OAAAC;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,GAAGC,GAAQ;AACT,SAAoB,gBAAAC,EAAM,cAAc,OAAO,OAAO,OAAO;AAAA,IAC3D,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,eAAe;AAAA,IACf,aAAa;AAAA,IACb,KAAKD;AAAA,IACL,mBAAmBF;AAAA,EACvB,GAAKC,CAAK,GAAGF,IAAqB,gBAAAI,EAAM,cAAc,SAAS;AAAA,IAC3D,IAAIH;AAAA,EACR,GAAKD,CAAK,IAAI,MAAmB,gBAAAI,EAAM,cAAc,QAAQ;AAAA,IACzD,UAAU;AAAA,IACV,GAAG;AAAA,IACH,UAAU;AAAA,EACd,CAAG,CAAC;AACJ;AACA,MAAMC,IAA2B,gBAAAD,EAAM,WAAWL,CAA8B;ACrBhF,SAASO,EAAe;AAAA,EACtB,OAAAN;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,GAAGC,GAAQ;AACT,SAAoB,gBAAAC,EAAM,cAAc,OAAO,OAAO,OAAO;AAAA,IAC3D,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,eAAe;AAAA,IACf,aAAa;AAAA,IACb,KAAKD;AAAA,IACL,mBAAmBF;AAAA,EACvB,GAAKC,CAAK,GAAGF,IAAqB,gBAAAI,EAAM,cAAc,SAAS;AAAA,IAC3D,IAAIH;AAAA,EACR,GAAKD,CAAK,IAAI,MAAmB,gBAAAI,EAAM,cAAc,QAAQ;AAAA,IACzD,UAAU;AAAA,IACV,GAAG;AAAA,IACH,UAAU;AAAA,EACd,CAAG,CAAC;AACJ;AACA,MAAMC,IAA2B,gBAAAD,EAAM,WAAWE,CAAc;ACrBhE,SAASC,EAAgB;AAAA,EACvB,OAAAP;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,GAAGC,GAAQ;AACT,SAAoB,gBAAAC,EAAM,cAAc,OAAO,OAAO,OAAO;AAAA,IAC3D,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,eAAe;AAAA,IACf,aAAa;AAAA,IACb,KAAKD;AAAA,IACL,mBAAmBF;AAAA,EACvB,GAAKC,CAAK,GAAGF,IAAqB,gBAAAI,EAAM,cAAc,SAAS;AAAA,IAC3D,IAAIH;AAAA,EACR,GAAKD,CAAK,IAAI,MAAmB,gBAAAI,EAAM,cAAc,QAAQ;AAAA,IACzD,UAAU;AAAA,IACV,GAAG;AAAA,IACH,UAAU;AAAA,EACd,CAAG,CAAC;AACJ;AACA,MAAMC,IAA2B,gBAAAD,EAAM,WAAWG,CAAe;ACrBjE,SAASC,EAA2B;AAAA,EAClC,OAAAR;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,GAAGC,GAAQ;AACT,SAAoB,gBAAAC,EAAM,cAAc,OAAO,OAAO,OAAO;AAAA,IAC3D,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,eAAe;AAAA,IACf,aAAa;AAAA,IACb,KAAKD;AAAA,IACL,mBAAmBF;AAAA,EACvB,GAAKC,CAAK,GAAGF,IAAqB,gBAAAI,EAAM,cAAc,SAAS;AAAA,IAC3D,IAAIH;AAAA,EACR,GAAKD,CAAK,IAAI,MAAmB,gBAAAI,EAAM,cAAc,QAAQ;AAAA,IACzD,UAAU;AAAA,IACV,GAAG;AAAA,IACH,UAAU;AAAA,EACd,CAAG,GAAgB,gBAAAA,EAAM,cAAc,QAAQ;AAAA,IAC3C,UAAU;AAAA,IACV,GAAG;AAAA,IACH,UAAU;AAAA,EACd,CAAG,CAAC;AACJ;AACA,MAAMC,IAA2B,gBAAAD,EAAM,WAAWI,CAA0B;ACzB5E,SAASC,EAAmB;AAAA,EAC1B,OAAAT;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,GAAGC,GAAQ;AACT,SAAoB,gBAAAC,EAAM,cAAc,OAAO,OAAO,OAAO;AAAA,IAC3D,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,eAAe;AAAA,IACf,aAAa;AAAA,IACb,KAAKD;AAAA,IACL,mBAAmBF;AAAA,EACvB,GAAKC,CAAK,GAAGF,IAAqB,gBAAAI,EAAM,cAAc,SAAS;AAAA,IAC3D,IAAIH;AAAA,EACR,GAAKD,CAAK,IAAI,MAAmB,gBAAAI,EAAM,cAAc,QAAQ;AAAA,IACzD,GAAG;AAAA,EACP,CAAG,GAAgB,gBAAAA,EAAM,cAAc,QAAQ;AAAA,IAC3C,UAAU;AAAA,IACV,GAAG;AAAA,IACH,UAAU;AAAA,EACd,CAAG,CAAC;AACJ;AACA,MAAMC,IAA2B,gBAAAD,EAAM,WAAWK,CAAkB;ACvBpE,SAASC,EAAsB;AAAA,EAC7B,OAAAV;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,GAAGC,GAAQ;AACT,SAAoB,gBAAAC,EAAM,cAAc,OAAO,OAAO,OAAO;AAAA,IAC3D,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,eAAe;AAAA,IACf,aAAa;AAAA,IACb,KAAKD;AAAA,IACL,mBAAmBF;AAAA,EACvB,GAAKC,CAAK,GAAGF,IAAqB,gBAAAI,EAAM,cAAc,SAAS;AAAA,IAC3D,IAAIH;AAAA,EACR,GAAKD,CAAK,IAAI,MAAmB,gBAAAI,EAAM,cAAc,QAAQ;AAAA,IACzD,UAAU;AAAA,IACV,GAAG;AAAA,IACH,UAAU;AAAA,EACd,CAAG,CAAC;AACJ;AACA,MAAMC,IAA2B,gBAAAD,EAAM,WAAWM,CAAqB;ACrBvE,SAASC,EAAwB;AAAA,EAC/B,OAAAX;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,GAAGC,GAAQ;AACT,SAAoB,gBAAAC,EAAM,cAAc,OAAO,OAAO,OAAO;AAAA,IAC3D,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,eAAe;AAAA,IACf,aAAa;AAAA,IACb,KAAKD;AAAA,IACL,mBAAmBF;AAAA,EACvB,GAAKC,CAAK,GAAGF,IAAqB,gBAAAI,EAAM,cAAc,SAAS;AAAA,IAC3D,IAAIH;AAAA,EACR,GAAKD,CAAK,IAAI,MAAmB,gBAAAI,EAAM,cAAc,QAAQ;AAAA,IACzD,UAAU;AAAA,IACV,GAAG;AAAA,IACH,UAAU;AAAA,EACd,CAAG,CAAC;AACJ;AACA,MAAMC,IAA2B,gBAAAD,EAAM,WAAWO,CAAuB;ACrBzE,SAASC,EAAU;AAAA,EACjB,OAAAZ;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,GAAGC,GAAQ;AACT,SAAoB,gBAAAC,EAAM,cAAc,OAAO,OAAO,OAAO;AAAA,IAC3D,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,eAAe;AAAA,IACf,aAAa;AAAA,IACb,KAAKD;AAAA,IACL,mBAAmBF;AAAA,EACvB,GAAKC,CAAK,GAAGF,IAAqB,gBAAAI,EAAM,cAAc,SAAS;AAAA,IAC3D,IAAIH;AAAA,EACR,GAAKD,CAAK,IAAI,MAAmB,gBAAAI,EAAM,cAAc,QAAQ;AAAA,IACzD,GAAG;AAAA,EACP,CAAG,CAAC;AACJ;AACA,MAAMC,IAA2B,gBAAAD,EAAM,WAAWQ,CAAS;ACnB3D,SAASC,EAAsB;AAAA,EAC7B,OAAAb;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,GAAGC,GAAQ;AACT,SAAoB,gBAAAC,EAAM,cAAc,OAAO,OAAO,OAAO;AAAA,IAC3D,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,eAAe;AAAA,IACf,aAAa;AAAA,IACb,KAAKD;AAAA,IACL,mBAAmBF;AAAA,EACvB,GAAKC,CAAK,GAAGF,IAAqB,gBAAAI,EAAM,cAAc,SAAS;AAAA,IAC3D,IAAIH;AAAA,EACR,GAAKD,CAAK,IAAI,MAAmB,gBAAAI,EAAM,cAAc,QAAQ;AAAA,IACzD,UAAU;AAAA,IACV,GAAG;AAAA,IACH,UAAU;AAAA,EACd,CAAG,CAAC;AACJ;AACA,MAAMC,IAA2B,gBAAAD,EAAM,WAAWS,CAAqB;ACrBvE,SAASC,EAAa;AAAA,EACpB,OAAAd;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,GAAGC,GAAQ;AACT,SAAoB,gBAAAC,EAAM,cAAc,OAAO,OAAO,OAAO;AAAA,IAC3D,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,eAAe;AAAA,IACf,aAAa;AAAA,IACb,KAAKD;AAAA,IACL,mBAAmBF;AAAA,EACvB,GAAKC,CAAK,GAAGF,IAAqB,gBAAAI,EAAM,cAAc,SAAS;AAAA,IAC3D,IAAIH;AAAA,EACR,GAAKD,CAAK,IAAI,MAAmB,gBAAAI,EAAM,cAAc,QAAQ;AAAA,IACzD,UAAU;AAAA,IACV,GAAG;AAAA,IACH,UAAU;AAAA,EACd,CAAG,CAAC;AACJ;AACA,MAAMC,IAA2B,gBAAAD,EAAM,WAAWU,CAAY;ACrB9D,SAASC,EAAc;AAAA,EACrB,OAAAf;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,GAAGC,GAAQ;AACT,SAAoB,gBAAAC,EAAM,cAAc,OAAO,OAAO,OAAO;AAAA,IAC3D,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,eAAe;AAAA,IACf,aAAa;AAAA,IACb,KAAKD;AAAA,IACL,mBAAmBF;AAAA,EACvB,GAAKC,CAAK,GAAGF,IAAqB,gBAAAI,EAAM,cAAc,SAAS;AAAA,IAC3D,IAAIH;AAAA,EACR,GAAKD,CAAK,IAAI,MAAmB,gBAAAI,EAAM,cAAc,QAAQ;AAAA,IACzD,GAAG;AAAA,EACP,CAAG,GAAgB,gBAAAA,EAAM,cAAc,QAAQ;AAAA,IAC3C,UAAU;AAAA,IACV,GAAG;AAAA,IACH,UAAU;AAAA,EACd,CAAG,CAAC;AACJ;AACA,MAAMC,IAA2B,gBAAAD,EAAM,WAAWW,CAAa;ACvB/D,SAASC,EAAsB;AAAA,EAC7B,OAAAhB;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,GAAGC,GAAQ;AACT,SAAoB,gBAAAC,EAAM,cAAc,OAAO,OAAO,OAAO;AAAA,IAC3D,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,eAAe;AAAA,IACf,aAAa;AAAA,IACb,KAAKD;AAAA,IACL,mBAAmBF;AAAA,EACvB,GAAKC,CAAK,GAAGF,IAAqB,gBAAAI,EAAM,cAAc,SAAS;AAAA,IAC3D,IAAIH;AAAA,EACR,GAAKD,CAAK,IAAI,MAAmB,gBAAAI,EAAM,cAAc,QAAQ;AAAA,IACzD,UAAU;AAAA,IACV,GAAG;AAAA,IACH,UAAU;AAAA,EACd,CAAG,CAAC;AACJ;AACA,MAAMC,IAA2B,gBAAAD,EAAM,WAAWY,CAAqB;ACrBvE,SAASC,EAAS;AAAA,EAChB,OAAAjB;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,GAAGC,GAAQ;AACT,SAAoB,gBAAAC,EAAM,cAAc,OAAO,OAAO,OAAO;AAAA,IAC3D,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,eAAe;AAAA,IACf,aAAa;AAAA,IACb,KAAKD;AAAA,IACL,mBAAmBF;AAAA,EACvB,GAAKC,CAAK,GAAGF,IAAqB,gBAAAI,EAAM,cAAc,SAAS;AAAA,IAC3D,IAAIH;AAAA,EACR,GAAKD,CAAK,IAAI,MAAmB,gBAAAI,EAAM,cAAc,QAAQ;AAAA,IACzD,UAAU;AAAA,IACV,GAAG;AAAA,IACH,UAAU;AAAA,EACd,CAAG,CAAC;AACJ;AACA,MAAMC,IAA2B,gBAAAD,EAAM,WAAWa,CAAQ;ACtB1D,SAASC,EAAE,GAAE;AAAC,MAAIC,GAAEC,GAAE,IAAE;AAAG,MAAa,OAAO,KAAjB,YAA8B,OAAO,KAAjB,SAAmB,MAAG;AAAA,WAAoB,OAAO,KAAjB,SAAmB,KAAG,MAAM,QAAQ,CAAC,GAAE;AAAC,QAAIC,IAAE,EAAE;AAAO,SAAIF,IAAE,GAAEA,IAAEE,GAAEF,IAAI,GAAEA,CAAC,MAAIC,IAAEF,EAAE,EAAEC,CAAC,CAAC,OAAK,MAAI,KAAG,MAAK,KAAGC;AAAA,EAAE,MAAM,MAAIA,KAAK,EAAE,GAAEA,CAAC,MAAI,MAAI,KAAG,MAAK,KAAGA;AAAG,SAAO;AAAC;AAAQ,SAASE,IAAM;AAAC,WAAQ,GAAEH,GAAEC,IAAE,GAAE,IAAE,IAAGC,IAAE,UAAU,QAAOD,IAAEC,GAAED,IAAI,EAAC,IAAE,UAAUA,CAAC,OAAKD,IAAED,EAAE,CAAC,OAAK,MAAI,KAAG,MAAK,KAAGC;AAAG,SAAO;AAAC;ACkB/W,MAAMI,IAAgB;AAAA,EACpB,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AACX,GAEMC,IAAY;AAAA,EAChB,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AACX,GAEMC,IAAe;AAAA,EACnB,MAAMf;AAAAA,EACN,QAAQC;AAAAA,EACR,KAAKE;AACP;AAEO,SAASa,EAAe;AAAA,EAC7B,QAAAC;AAAA,EACA,SAAAC,IAAU;AACZ,GAAwB;AACtB,QAAM,EAAE,GAAAT,EAAA,IAAMU,EAAeC,CAAe,GACtCC,IAAON,EAAaE,EAAO,QAAQ;AAEzC,2BACG,OAAA,EAAI,WAAWL,EAAK,kCAAkCC,EAAcK,CAAO,CAAC,GAC3E,UAAA,gBAAAI,EAAC,SAAI,WAAU,aACb,UAAA,gBAAAC,EAAC,OAAA,EAAI,WAAU,0BACb,UAAA;AAAA,IAAA,gBAAAD,EAACD,KAAK,WAAWT,EAAK,wBAAwBE,EAAUI,CAAO,CAAC,GAAG;AAAA,IAEnE,gBAAAK,EAAC,OAAA,EAAI,WAAU,UACb,UAAA;AAAA,MAAA,gBAAAD,EAAC,MAAA,EAAG,WAAU,sBAAsB,UAAAL,EAAO,OAAM;AAAA,MACjD,gBAAAK,EAAC,KAAA,EAAE,WAAU,6BAA6B,YAAO,aAAY;AAAA,MAG7D,gBAAAC,EAAC,OAAA,EAAI,WAAU,sCACb,UAAA;AAAA,QAAA,gBAAAA,EAAC,KAAA,EAAE,WAAU,8BAA6B,UAAA;AAAA,UAAA;AAAA,UACpCd,EAAE,iBAAiB;AAAA,QAAA,GACzB;AAAA,QACA,gBAAAa,EAAC,KAAA,EAAE,WAAU,WAAW,YAAO,WAAA,CAAW;AAAA,MAAA,EAAA,CAC5C;AAAA,IAAA,EAAA,CACF;AAAA,EAAA,EAAA,CACF,GACF,GACF;AAEJ;ACnDO,SAASE,EAAgB,EAAE,UAAAC,KAAkC;AAClE,QAAM,EAAE,GAAAhB,EAAA,IAAMU,EAAeC,CAAe;AAE5C,SAAIK,EAAS,WAAW,IAAU,yBAG/B,WAAA,EACC,UAAA;AAAA,IAAA,gBAAAF,EAAC,MAAA,EAAG,WAAU,mDACZ,UAAA;AAAA,MAAA,gBAAAD,EAACrB,GAAA,EAAwB,WAAU,uBAAA,CAAuB;AAAA,MACzDQ,EAAE,iBAAiB;AAAA,IAAA,GACtB;AAAA,IAEA,gBAAAa,EAAC,SAAI,WAAU,aACZ,YAAS,IAAI,CAACI,GAASC,MACtB,gBAAAL;AAAA,MAACM,EAAO;AAAA,MAAP;AAAA,QAEC,SAAS,EAAE,GAAG,KAAK,SAAS,EAAA;AAAA,QAC5B,SAAS,EAAE,GAAG,GAAG,SAAS,EAAA;AAAA,QAC1B,YAAY,EAAE,OAAOD,IAAM,IAAA;AAAA,QAC3B,YAAY,EAAE,OAAO,MAAM,GAAG,GAAA;AAAA,QAE9B,UAAA,gBAAAL,EAACN,GAAA,EAAe,QAAQU,GAAS,SAAQ,UAAA,CAAU;AAAA,MAAA;AAAA,MAN9CC;AAAA,IAAA,CAQR,EAAA,CACH;AAAA,EAAA,GACF;AAEJ;AChCO,SAASE,IAAsB;AACpC,QAAM,EAAE,GAAApB,GAAG,MAAAqB,MAASX,EAAeC,CAAe,GAC5CW,IAAOD,EAAK;AAElB,SACE,gBAAAR,EAAC,aAAQ,WAAU,iEACjB,4BAAC,OAAA,EAAI,WAAU,4BACb,UAAA,gBAAAC,EAAC,OAAA,EACC,UAAA;AAAA,IAAA,gBAAAD,EAACjC,GAAA,EAA+B,WAAU,uBAAA,CAAuB;AAAA,sBAEhE,MAAA,EAAG,WAAU,2BACX,UAAAoB,EAAE,2BAA2B,GAChC;AAAA,sBAEC,KAAA,EAAE,WAAU,0BACV,UAAAA,EAAE,iCAAiC,GACtC;AAAA,IAEA,gBAAAa,EAACU,GAAA,EAAK,MAAM,IAAID,CAAI,eAClB,UAAA,gBAAAT;AAAA,MAACM,EAAO;AAAA,MAAP;AAAA,QACC,YAAY,EAAE,OAAO,IAAA;AAAA,QACrB,UAAU,EAAE,OAAO,KAAA;AAAA,QACnB,WAAU;AAAA,QAET,YAAE,4BAA4B;AAAA,MAAA;AAAA,IAAA,EACjC,CACF;AAAA,EAAA,EAAA,CACF,GACF,GACF;AAEJ;AC5BO,SAASK,EAAoB,EAAE,QAAAC,KAAoC;AACxE,QAAM,EAAE,GAAAzB,EAAA,IAAMU,EAAeC,CAAe;AAE5C,SACE,gBAAAE;AAAA,IAACM,EAAO;AAAA,IAAP;AAAA,MACC,YAAY,EAAE,OAAO,KAAA;AAAA,MACrB,WAAU;AAAA,MAEV,UAAA,gBAAAL,EAAC,OAAA,EAAI,WAAU,aACb,UAAA;AAAA,QAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,gCACb,UAAA;AAAA,UAAA,gBAAAD,EAAC,OAAA,EAAI,WAAU,sBACb,UAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,qDACb,UAAA,gBAAAA,EAACf,GAAA,EAAS,WAAU,SAAA,CAAS,EAAA,CAC/B,GACF;AAAA,4BACC,OAAA,EACC,UAAA;AAAA,YAAA,gBAAAe,EAAC,MAAA,EAAG,WAAU,sBAAsB,UAAAb,EAAE,qBAAqB,GAAE;AAAA,8BAC5D,KAAA,EAAE,WAAU,cAAc,UAAAA,EAAE,mBAAmB,EAAA,CAAE;AAAA,UAAA,EAAA,CACpD;AAAA,QAAA,GACF;AAAA,QAEA,gBAAAa,EAAC,SAAI,WAAU,oBACb,4BAAC,KAAA,EAAE,WAAU,+BAA+B,UAAAY,EAAA,CAAO,EAAA,CACrD;AAAA,MAAA,EAAA,CACF;AAAA,IAAA;AAAA,EAAA;AAGN;ACxBO,SAASC,EAAqB,EAAE,MAAAC,KAAmC;AACxE,QAAM,EAAE,GAAA3B,GAAG,MAAAqB,MAASX,EAAeC,CAAe;AAElD,SAAKgB,sBAGF,WAAA,EACC,UAAA;AAAA,IAAA,gBAAAb,EAAC,MAAA,EAAG,WAAU,mDACZ,UAAA;AAAA,MAAA,gBAAAD,EAACvB,GAAA,EAAmB,WAAU,yBAAA,CAAyB;AAAA,MACtDU,EAAE,sBAAsB;AAAA,IAAA,GAC3B;AAAA,sBAEC,OAAA,EAAI,WAAU,8BACb,UAAA,gBAAAc,EAAC,OAAA,EAAI,WAAU,aACb,UAAA;AAAA,MAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,yCACZ,UAAA;AAAA,QAAAa,EAAK,wCACH,OAAA,EACC,UAAA;AAAA,UAAA,gBAAAd,EAAC,MAAA,EAAG,WAAU,8BACX,UAAAb,EAAE,oBAAoB,GACzB;AAAA,UACA,gBAAAa,EAAC,KAAA,EAAE,WAAU,sBAAsB,YAAK,mBAAA,CAAmB;AAAA,QAAA,GAC7D;AAAA,QAGDc,EAAK,iBACJ,gBAAAb,EAAC,OAAA,EACC,UAAA;AAAA,UAAA,gBAAAD,EAAC,MAAA,EAAG,WAAU,8BACX,UAAAb,EAAE,qBAAqB,GAC1B;AAAA,UACA,gBAAAa,EAAC,OAAE,WAAU,mCACV,cAAI,KAAK,aAAaQ,EAAK,UAAU;AAAA,YACpC,OAAO;AAAA,YACP,UAAUM,EAAK,YAAY;AAAA,UAAA,CAC5B,EAAE,OAAOA,EAAK,aAAa,EAAA,CAC9B;AAAA,QAAA,EAAA,CACF;AAAA,MAAA,GAEJ;AAAA,MAGA,gBAAAb,EAAC,OAAA,EAAI,WAAU,mCACb,UAAA;AAAA,QAAA,gBAAAD,EAAC,MAAA,EAAG,WAAU,8BACX,UAAAb,EAAE,wBAAwB,GAC7B;AAAA,QACA,gBAAAa,EAAC,KAAA,EAAE,WAAU,wBAAwB,YAAK,iBAAA,CAAiB;AAAA,MAAA,GAC7D;AAAA,MAGCc,EAAK,SAAS,SAAS,KACtB,gBAAAb,EAAC,OAAA,EAAI,WAAU,QACb,UAAA;AAAA,QAAA,gBAAAA,EAAC,MAAA,EAAG,WAAU,mEACZ,UAAA;AAAA,UAAA,gBAAAD,EAACrB,GAAA,EAAwB,WAAU,SAAA,CAAS;AAAA,UAC3CQ,EAAE,sBAAsB;AAAA,QAAA,GAC3B;AAAA,0BACC,MAAA,EAAG,WAAU,mCACX,UAAA2B,EAAK,SAAS,IAAI,CAACC,GAASC,wBAC1B,MAAA,EAAe,WAAU,wBACvB,UAAAD,EAAA,GADMC,CAET,CACD,EAAA,CACH;AAAA,MAAA,EAAA,CACF;AAAA,IAAA,EAAA,CAEJ,EAAA,CACF;AAAA,EAAA,GACF,IA9DgB;AAgEpB;ACtEO,SAASC,EAAsB;AAAA,EACpC,gBAAAC;AAAA,EACA,kBAAAC;AACF,GAA+B;AAC7B,QAAM,EAAE,GAAAhC,EAAA,IAAMU,EAAeC,CAAe;AAE5C,2BACG,WAAA,EACC,UAAA;AAAA,IAAA,gBAAAG,EAAC,MAAA,EAAG,WAAU,mDACZ,UAAA;AAAA,MAAA,gBAAAD,EAACjB,GAAA,EAAc,WAAU,uBAAA,CAAuB;AAAA,MAC/CI,EAAE,uBAAuB;AAAA,IAAA,GAC5B;AAAA,sBAEC,OAAA,EAAI,WAAU,8BACb,UAAA,gBAAAc,EAAC,OAAA,EAAI,WAAU,aACb,UAAA;AAAA,MAAA,gBAAAD,EAAC,OAAA,EAAI,WAAU,oBACb,UAAA,gBAAAA,EAAC,OAAE,WAAU,oDACV,aACH,EAAA,CACF;AAAA,MAEA,gBAAAA,EAAC,OAAA,EAAI,WAAU,UAAA,CAAU;AAAA,wBAExB,OAAA,EAAI,WAAU,8BACb,UAAA,gBAAAC,EAAC,KAAA,EAAE,WAAU,+CACX,UAAA;AAAA,QAAA,gBAAAD,EAACpB,GAAA,EAAU,WAAU,mBAAA,CAAmB;AAAA,QAAE;AAAA,QAAEuC;AAAA,MAAA,EAAA,CAC9C,EAAA,CACF;AAAA,IAAA,EAAA,CACF,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;ACxBA,SAASC,EAAaC,GAA0B;AAC9C,SAAIA,KAAS,KACJ,EAAE,OAAO,QAAQ,OAAO,SAAS,MAAMrC,EAAA,IAE5CqC,KAAS,KACJ,EAAE,OAAO,UAAU,OAAO,WAAW,MAAM1C,EAAA,IAE7C,EAAE,OAAO,OAAO,OAAO,WAAW,MAAML,EAAA;AACjD;AAEO,SAASgD,GAAc,EAAE,OAAAD,KAA6B;AAC3D,QAAM,EAAE,GAAAlC,EAAA,IAAMU,EAAA,GACR0B,IAAOH,EAAaC,CAAK,GACzB,EAAE,MAAAtB,MAASwB,GAEXC,IAAuC;AAAA,IAC3C,OAAO;AAAA,IACP,SAAS;AAAA,IACT,SAAS;AAAA,EAAA;AAGX,SACE,gBAAAxB,EAAC,SAAI,WAAU,6CACb,4BAAC,OAAA,EAAI,WAAU,4BACb,UAAA,gBAAAC,EAAC,OAAA,EACC,UAAA;AAAA,IAAA,gBAAAD,EAAC,OAAA,EAAI,WAAU,QACb,UAAA,gBAAAA,EAACD,GAAA,EAAK,WAAWT,EAAK,WAAWkC,EAAaD,EAAK,KAAK,CAAC,GAAG,GAC9D;AAAA,IACA,gBAAAvB,EAAC,QAAG,WAAU,2BACX,YAAE,qCAAqCuB,EAAK,KAAK,QAAQ,EAAA,CAC5D;AAAA,IAGA,gBAAAvB,EAAC,OAAA,EAAI,WAAU,gBACb,UAAA,gBAAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWV,EAAK,mBAAmBkC,EAAaD,EAAK,KAAK,CAAC;AAAA,QAC3D,OACE;AAAA,UACE,WAAWF;AAAA,UACX,UAAU;AAAA,UACV,eAAe;AAAA,QAAA;AAAA,QAGnB,MAAK;AAAA,QAEL,UAAA,gBAAArB,EAAC,QAAA,EAAK,WAAU,sBAAsB,UAAAqB,EAAA,CAAM;AAAA,MAAA;AAAA,IAAA,GAEhD;AAAA,IAEA,gBAAArB,EAAC,OAAE,WAAU,8CACV,YAAE,qCAAqCuB,EAAK,KAAK,UAAU,EAAA,CAC9D;AAAA,EAAA,EAAA,CACF,GACF,GACF;AAEJ;AC9DO,SAASE,GAAmB,EAAE,SAAAC,KAAoC;AACvE,QAAM,EAAE,GAAAvC,EAAA,IAAMU,EAAeC,CAAe;AAE5C,SAAI4B,EAAQ,WAAW,IAAU,yBAG9B,WAAA,EACC,UAAA;AAAA,IAAA,gBAAAzB,EAAC,MAAA,EAAG,WAAU,mDACZ,UAAA;AAAA,MAAA,gBAAAD,EAAChB,GAAA,EAAsB,WAAU,qBAAA,CAAqB;AAAA,MACrDG,EAAE,oBAAoB;AAAA,IAAA,GACzB;AAAA,IAEA,gBAAAa,EAAC,SAAI,WAAU,aACZ,YAAQ,IAAI,CAACL,GAAQU,MACpB,gBAAAL;AAAA,MAACM,EAAO;AAAA,MAAP;AAAA,QAEC,SAAS,EAAE,GAAG,KAAK,SAAS,EAAA;AAAA,QAC5B,SAAS,EAAE,GAAG,GAAG,SAAS,EAAA;AAAA,QAC1B,YAAY,EAAE,OAAOD,IAAM,IAAA;AAAA,QAC3B,YAAY,EAAE,OAAO,MAAM,GAAG,GAAA;AAAA,QAE9B,UAAA,gBAAAL,EAACN,GAAA,EAAe,QAAAC,GAAgB,SAAQ,QAAA,CAAQ;AAAA,MAAA;AAAA,MAN3CU;AAAA,IAAA,CAQR,EAAA,CACH;AAAA,EAAA,GACF;AAEJ;AC3BO,SAASsB,GAAsB;AAAA,EACpC,YAAAC;AACF,GAA+B;AAC7B,QAAM,EAAE,GAAAzC,EAAA,IAAMU,EAAeC,CAAe;AAE5C,SAAI8B,EAAW,WAAW,IAAU,yBAGjC,WAAA,EACC,UAAA;AAAA,IAAA,gBAAA3B,EAAC,MAAA,EAAG,WAAU,mDACZ,UAAA;AAAA,MAAA,gBAAAD,EAACzB,GAAA,EAAgB,WAAU,uBAAA,CAAuB;AAAA,MACjDY,EAAE,uBAAuB;AAAA,IAAA,GAC5B;AAAA,IAEA,gBAAAa,EAAC,SAAI,WAAU,aACZ,YAAW,IAAI,CAAC6B,GAAWxB,MAC1B,gBAAAL;AAAA,MAACM,EAAO;AAAA,MAAP;AAAA,QAEC,SAAS,EAAE,GAAG,KAAK,SAAS,EAAA;AAAA,QAC5B,SAAS,EAAE,GAAG,GAAG,SAAS,EAAA;AAAA,QAC1B,YAAY,EAAE,OAAOD,IAAM,IAAA;AAAA,QAC3B,YAAY,EAAE,OAAO,MAAM,GAAG,GAAA;AAAA,QAE9B,UAAA,gBAAAL,EAACN,GAAA,EAAe,QAAQmC,GAAW,SAAQ,UAAA,CAAU;AAAA,MAAA;AAAA,MANhDxB;AAAA,IAAA,CAQR,EAAA,CACH;AAAA,EAAA,GACF;AAEJ;AC/BO,SAASyB,GAAuB,EAAE,OAAAC,KAAsC;AAC7E,QAAM,EAAE,GAAA5C,EAAA,IAAMU,EAAeC,CAAe;AAE5C,SAAIiC,EAAM,WAAW,IAAU,yBAG5B,WAAA,EACC,UAAA;AAAA,IAAA,gBAAA9B,EAAC,MAAA,EAAG,WAAU,mDACZ,UAAA;AAAA,MAAA,gBAAAD,EAACxB,GAAA,EAA2B,WAAU,uBAAA,CAAuB;AAAA,MAC5DW,EAAE,wBAAwB;AAAA,IAAA,GAC7B;AAAA,sBAEC,OAAA,EAAI,WAAU,+CACb,UAAA,gBAAAc,EAAC,OAAA,EAAI,WAAU,aACb,UAAA;AAAA,MAAA,gBAAAD,EAAC,KAAA,EAAE,WAAU,qCACV,UAAAb,EAAE,6BAA6B,GAClC;AAAA,MAEA,gBAAAa,EAAC,SAAI,WAAU,aACZ,YAAM,IAAI,CAACgC,GAAM3B,MAChB,gBAAAJ;AAAA,QAACK,EAAO;AAAA,QAAP;AAAA,UAEC,SAAS,EAAE,GAAG,KAAK,SAAS,EAAA;AAAA,UAC5B,SAAS,EAAE,GAAG,GAAG,SAAS,EAAA;AAAA,UAC1B,YAAY,EAAE,OAAOD,IAAM,KAAA;AAAA,UAC3B,WAAU;AAAA,UAEV,UAAA;AAAA,YAAA,gBAAAL;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,WAAU;AAAA,cAAA;AAAA,YAAA;AAAA,YAEZ,gBAAAA,EAAC,QAAA,EAAK,WAAU,WAAW,UAAAgC,EAAA,CAAK;AAAA,UAAA;AAAA,QAAA;AAAA,QAV3B3B;AAAA,MAAA,CAYR,EAAA,CACH;AAAA,IAAA,EAAA,CACF,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;ACvCO,SAAS4B,GAAmB;AAAA,EACjC,aAAAC;AAAA,EACA,QAAAC;AACF,GAA4B;AAC1B,QAAM,EAAE,GAAAhD,EAAA,IAAMU,EAAeC,CAAe;AAE5C,SAAI,CAACoC,KAAe,CAACC,IAAe,yBAGjC,WAAA,EACC,UAAA;AAAA,IAAA,gBAAAlC,EAAC,MAAA,EAAG,WAAU,mDACZ,UAAA;AAAA,MAAA,gBAAAD,EAAClB,GAAA,EAAa,WAAU,uBAAA,CAAuB;AAAA,MAC9CK,EAAE,oBAAoB;AAAA,IAAA,GACzB;AAAA,sBAEC,OAAA,EAAI,WAAU,8BACb,UAAA,gBAAAc,EAAC,OAAA,EAAI,WAAU,aACZ,UAAA;AAAA,MAAAiC,KACC,gBAAAjC,EAAC,OAAA,EAAI,WAAU,QACb,UAAA;AAAA,QAAA,gBAAAD,EAAC,MAAA,EAAG,WAAU,8BACX,UAAAb,EAAE,yBAAyB,GAC9B;AAAA,QACA,gBAAAa,EAAC,KAAA,EAAE,WAAU,4CACV,UAAAkC,EAAA,CACH;AAAA,MAAA,GACF;AAAA,MAGDC,uBACE,OAAA,EACC,UAAA;AAAA,QAAA,gBAAAnC,EAAC,MAAA,EAAG,WAAU,8BACX,UAAAb,EAAE,oBAAoB,GACzB;AAAA,QACA,gBAAAa,EAAC,KAAA,EAAE,WAAU,4CACV,UAAAmC,EAAA,CACH;AAAA,MAAA,EAAA,CACF;AAAA,IAAA,EAAA,CAEJ,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;AC9BA,MAAMC,IAAqB;AAAA,EACzB,SAAS,EAAE,GAAG,IAAI,SAAS,EAAA;AAAA,EAC3B,SAAS;AAAA,IACP,GAAG;AAAA,IACH,SAAS;AAAA,IACT,YAAY,EAAE,UAAU,IAAA;AAAA,EAAI;AAEhC,GAEMC,KAA6B;AAAA,EACjC,SAAS;AAAA,IACP,YAAY;AAAA,MACV,iBAAiB;AAAA,IAAA;AAAA,EACnB;AAEJ;AAEO,SAASC,GAAe;AAAA,EAC7B,UAAAC;AAAA,EACA,cAAAC;AAAA,EACA,kBAAAC,IAAmB;AACrB,GAAwB;AACtB,SACE,gBAAAxC;AAAA,IAACK,EAAO;AAAA,IAAP;AAAA,MACC,UAAU+B;AAAA,MACV,SAAQ;AAAA,MACR,SAAQ;AAAA,MACR,WAAU;AAAA,MAGV,UAAA;AAAA,QAAA,gBAAArC,EAACM,EAAO,KAAP,EAAW,UAAU8B,GACpB,4BAACd,IAAA,EAAc,OAAOiB,EAAS,WAAA,CAAY,EAAA,CAC7C;AAAA,SAGEA,EAAS,eAAeA,EAAS,yCAChCjC,EAAO,KAAP,EAAW,UAAU8B,GACpB,UAAA,gBAAApC;AAAA,UAACiC;AAAA,UAAA;AAAA,YACC,aAAaM,EAAS;AAAA,YACtB,QAAQA,EAAS;AAAA,UAAA;AAAA,QAAA,GAErB;AAAA,QAIDA,EAAS,aAAa,SAAS,uBAC7BjC,EAAO,KAAP,EAAW,UAAU8B,GACpB,UAAA,gBAAApC,EAACyB,IAAA,EAAmB,SAASc,EAAS,cAAc,GACtD;AAAA,QAIDA,EAAS,SAAS,SAAS,uBACzBjC,EAAO,KAAP,EAAW,UAAU8B,GACpB,UAAA,gBAAApC,EAACE,GAAA,EAAgB,UAAUqC,EAAS,UAAU,GAChD;AAAA,QAIDA,EAAS,gBAAgB,SAAS,uBAChCjC,EAAO,KAAP,EAAW,UAAU8B,GACpB,UAAA,gBAAApC,EAAC2B,IAAA,EAAsB,YAAYY,EAAS,iBAAiB,GAC/D;AAAA,QAIDA,EAAS,kBACR,gBAAAvC,EAACM,EAAO,KAAP,EAAW,UAAU8B,GACpB,UAAA,gBAAApC,EAACa,GAAA,EAAqB,MAAM0B,EAAS,gBAAgB,GACvD;AAAA,QAIDA,EAAS,iBAAiB,SAAS,uBACjCjC,EAAO,KAAP,EAAW,UAAU8B,GACpB,UAAA,gBAAApC,EAAC8B,IAAA,EAAuB,OAAOS,EAAS,kBAAkB,GAC5D;AAAA,QAIDC,KACC,gBAAAxC,EAACM,EAAO,KAAP,EAAW,UAAU8B,GACpB,UAAA,gBAAApC,EAACW,GAAA,EAAoB,QAAQ6B,EAAA,CAAc,EAAA,CAC7C;AAAA,QAIF,gBAAAxC,EAACM,EAAO,KAAP,EAAW,UAAU8B,GACpB,UAAA,gBAAApC;AAAA,UAACiB;AAAA,UAAA;AAAA,YACC,gBAAgBsB,EAAS;AAAA,YACzB,kBAAkBA,EAAS;AAAA,UAAA;AAAA,QAAA,GAE/B;AAAA,QAGCE,uBACEnC,EAAO,KAAP,EAAW,UAAU8B,GACpB,UAAA,gBAAApC,EAACO,GAAA,CAAA,CAAoB,EAAA,CACvB;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR;ACjHO,SAASmC,GAAkB;AAAA,EAChC,SAAAC;AAAA,EACA,SAAAC;AACF,GAA2B;AACzB,QAAM,EAAE,GAAAzD,GAAG,MAAAqB,MAASX,EAAeC,CAAe,GAC5CW,IAAOD,EAAK;AAElB,SACE,gBAAAP,EAAC,OAAA,EAAI,WAAU,qBACb,UAAA;AAAA,IAAA,gBAAAD,EAAC,MAAA,EAAG,WAAU,uCACX,UAAAb,EAAE,cAAc,GACnB;AAAA,IAGA,gBAAAc,EAAC,OAAA,EAAI,WAAU,8CACb,UAAA;AAAA,MAAA,gBAAAD,EAAC,SAAI,WAAU,oBACb,UAAA,gBAAAC,EAAC,OAAA,EAAI,WAAU,sCACb,UAAA;AAAA,QAAA,gBAAAD,EAAC,MAAA,EAAG,WAAU,iCACX,UAAA2C,EAAQ,oBACX;AAAA,0BACC,KAAA,EAAE,WAAU,WAAW,UAAAxD,EAAE,oBAAoB,EAAA,CAAE;AAAA,MAAA,EAAA,CAClD,EAAA,CACF;AAAA,wBACC,OAAA,EAAI,WAAU,sBACb,UAAA,gBAAAc,EAAC,OAAA,EAAI,WAAU,sCACb,UAAA;AAAA,QAAA,gBAAAD,EAAC,MAAA,EAAG,WAAU,mCACX,UAAA2C,EAAQ,gBACX;AAAA,0BACC,KAAA,EAAE,WAAU,WAAW,UAAAxD,EAAE,iBAAiB,EAAA,CAAE;AAAA,MAAA,EAAA,CAC/C,EAAA,CACF;AAAA,wBACC,OAAA,EAAI,WAAU,sBACb,UAAA,gBAAAc,EAAC,OAAA,EAAI,WAAU,sCACb,UAAA;AAAA,QAAA,gBAAAD,EAAC,MAAA,EAAG,WAAU,mCACX,UAAA2C,EAAQ,uBACX;AAAA,0BACC,KAAA,EAAE,WAAU,WAAW,UAAAxD,EAAE,uBAAuB,EAAA,CAAE;AAAA,MAAA,EAAA,CACrD,EAAA,CACF;AAAA,IAAA,GACF;AAAA,sBAGC,OAAA,EAAI,WAAU,8BACb,UAAA,gBAAAc,EAAC,OAAA,EAAI,WAAU,sCACb,UAAA;AAAA,MAAA,gBAAAD,EAAC,MAAA,EAAG,WAAU,uBAAuB,UAAAb,EAAE,uBAAuB,GAAE;AAAA,wBAC/D,KAAA,EAAE,WAAU,6BACV,UAAAA,EAAE,sBAAsB,GAC3B;AAAA,MACA,gBAAAa;AAAA,QAACU;AAAA,QAAA;AAAA,UACC,MAAM,IAAID,CAAI,sBAAsB,mBAAmB,IAAIA,CAAI,wBAAwBmC,CAAO,EAAE,CAAC;AAAA,UACjG,WAAU;AAAA,UAET,YAAE,OAAO;AAAA,QAAA;AAAA,MAAA;AAAA,IACZ,EAAA,CACF,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;ACnEA,MAAMC,IAAmBC,EAAE,OAAO;AAAA,EAChC,UAAUA,EAAE,KAAK,CAAC,WAAW,UAAU,YAAY,SAAS,SAAS,CAAC;AAAA,EACtE,UAAUA,EAAE,KAAK,CAAC,QAAQ,UAAU,KAAK,CAAC;AAAA,EAC1C,OAAOA,EAAE,OAAA;AAAA,EACT,aAAaA,EAAE,OAAA;AAAA,EACf,YAAYA,EAAE,OAAA;AAChB,CAAC,GAEKC,KAAsBD,EAAE,OAAO;AAAA,EACnC,oBAAoBA,EAAE,OAAA,EAAS,QAAA;AAAA,EAC/B,eAAeA,EAAE,OAAA,EAAS,QAAA;AAAA,EAC1B,UAAUA,EAAE,OAAA,EAAS,QAAA;AAAA,EACrB,kBAAkBA,EAAE,OAAA;AAAA,EACpB,UAAUA,EAAE,MAAMA,EAAE,QAAQ;AAC9B,CAAC,GAEKE,KAA4BF,EAAE,OAAO;AAAA,EACzC,aAAaA,EAAE,OAAA,EAAS,QAAA;AAAA,EACxB,oBAAoBA,EAAE,OAAA,EAAS,QAAA;AAAA,EAC/B,cAAcA,EAAE,MAAMD,CAAgB;AAAA,EACtC,UAAUC,EAAE,MAAMD,CAAgB;AAAA,EAClC,iBAAiBC,EAAE,MAAMD,CAAgB;AAAA,EACzC,gBAAgBE;AAAA,EAChB,kBAAkBD,EAAE,MAAMA,EAAE,QAAQ;AAAA,EACpC,YAAYA,EAAE,OAAA;AAAA,EACd,gBAAgBA,EAAE,OAAA;AAAA,EAClB,mBAAmBA,EAAE,OAAA;AACvB,CAAC,GAEKG,KAAqBH,EAAE,OAAO;AAAA,EAClC,oBAAoBA,EAAE,OAAA;AAAA,EACtB,gBAAgBA,EAAE,OAAA;AAAA,EAClB,uBAAuBA,EAAE,OAAA;AAC3B,CAAC,GAEKI,KAAiCJ,EAAE,OAAO;AAAA,EAC9C,IAAIA,EAAE,OAAA;AAAA,EACN,SAASA,EAAE,OAAA,EAAS,QAAA;AAAA,EACpB,YAAYA,EAAE,OAAA;AAAA,EACd,cAAcE;AAAA,EACd,YAAYF,EAAE,OAAA;AAAA,EACd,eAAeA,EAAE,OAAA,EAAS,QAAA;AAAA,EAC1B,iBAAiBA,EAAE,QAAA;AAAA,EACnB,oBAAoBA,EAAE,OAAA,EAAS,QAAA;AAAA,EAC/B,oBAAoBA,EAAE,OAAA,EAAS,QAAA;AAAA,EAC/B,YAAYA,EAAE,OAAA;AAAA,EACd,YAAYA,EAAE,OAAA;AAChB,CAAC,GAwBKK,KAA2CL,EAAE,MAAM;AAAA,EACvDI;AAAA,EACAJ,EAAE,OAAO;AAAA,IACP,IAAIA,EAAE,OAAA;AAAA,IACN,eAAeG;AAAA,IACf,iBAAiBH,EAAE,QAAQ,EAAI;AAAA,EAAA,CAChC;AACH,CAAC;AAEM,MAAMM,WAA8BC,EAAuD;AAAA,EAA3F,cAAA;AAAA,UAAA,GAAA,SAAA,GACL,KAAS,WAAW;AAAA,EAAA;AAAA,EAEV,gBAAgB;AACxB,WAAOF;AAAA,EACT;AACF;AC9EO,MAAMG,KAAwB;AAAA,EACnC,MAAM;AAAA;AAAA,EACN,QAAQ;AAAA;AAAA;AAEV;","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":";;;;;;;;;;;AACA,SAASA,EAA+B;AAAA,EACtC,OAAAC;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,GAAGC,GAAQ;AACT,SAAoB,gBAAAC,EAAM,cAAc,OAAO,OAAO,OAAO;AAAA,IAC3D,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,eAAe;AAAA,IACf,aAAa;AAAA,IACb,KAAKD;AAAA,IACL,mBAAmBF;AAAA,EACvB,GAAKC,CAAK,GAAGF,IAAqB,gBAAAI,EAAM,cAAc,SAAS;AAAA,IAC3D,IAAIH;AAAA,EACR,GAAKD,CAAK,IAAI,MAAmB,gBAAAI,EAAM,cAAc,QAAQ;AAAA,IACzD,UAAU;AAAA,IACV,GAAG;AAAA,IACH,UAAU;AAAA,EACd,CAAG,CAAC;AACJ;AACA,MAAMC,IAA2B,gBAAAD,EAAM,WAAWL,CAA8B;ACrBhF,SAASO,EAAe;AAAA,EACtB,OAAAN;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,GAAGC,GAAQ;AACT,SAAoB,gBAAAC,EAAM,cAAc,OAAO,OAAO,OAAO;AAAA,IAC3D,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,eAAe;AAAA,IACf,aAAa;AAAA,IACb,KAAKD;AAAA,IACL,mBAAmBF;AAAA,EACvB,GAAKC,CAAK,GAAGF,IAAqB,gBAAAI,EAAM,cAAc,SAAS;AAAA,IAC3D,IAAIH;AAAA,EACR,GAAKD,CAAK,IAAI,MAAmB,gBAAAI,EAAM,cAAc,QAAQ;AAAA,IACzD,UAAU;AAAA,IACV,GAAG;AAAA,IACH,UAAU;AAAA,EACd,CAAG,CAAC;AACJ;AACA,MAAMC,IAA2B,gBAAAD,EAAM,WAAWE,CAAc;ACrBhE,SAASC,EAAgB;AAAA,EACvB,OAAAP;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,GAAGC,GAAQ;AACT,SAAoB,gBAAAC,EAAM,cAAc,OAAO,OAAO,OAAO;AAAA,IAC3D,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,eAAe;AAAA,IACf,aAAa;AAAA,IACb,KAAKD;AAAA,IACL,mBAAmBF;AAAA,EACvB,GAAKC,CAAK,GAAGF,IAAqB,gBAAAI,EAAM,cAAc,SAAS;AAAA,IAC3D,IAAIH;AAAA,EACR,GAAKD,CAAK,IAAI,MAAmB,gBAAAI,EAAM,cAAc,QAAQ;AAAA,IACzD,UAAU;AAAA,IACV,GAAG;AAAA,IACH,UAAU;AAAA,EACd,CAAG,CAAC;AACJ;AACA,MAAMC,IAA2B,gBAAAD,EAAM,WAAWG,CAAe;ACrBjE,SAASC,EAA2B;AAAA,EAClC,OAAAR;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,GAAGC,GAAQ;AACT,SAAoB,gBAAAC,EAAM,cAAc,OAAO,OAAO,OAAO;AAAA,IAC3D,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,eAAe;AAAA,IACf,aAAa;AAAA,IACb,KAAKD;AAAA,IACL,mBAAmBF;AAAA,EACvB,GAAKC,CAAK,GAAGF,IAAqB,gBAAAI,EAAM,cAAc,SAAS;AAAA,IAC3D,IAAIH;AAAA,EACR,GAAKD,CAAK,IAAI,MAAmB,gBAAAI,EAAM,cAAc,QAAQ;AAAA,IACzD,UAAU;AAAA,IACV,GAAG;AAAA,IACH,UAAU;AAAA,EACd,CAAG,GAAgB,gBAAAA,EAAM,cAAc,QAAQ;AAAA,IAC3C,UAAU;AAAA,IACV,GAAG;AAAA,IACH,UAAU;AAAA,EACd,CAAG,CAAC;AACJ;AACA,MAAMC,IAA2B,gBAAAD,EAAM,WAAWI,CAA0B;ACzB5E,SAASC,EAAmB;AAAA,EAC1B,OAAAT;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,GAAGC,GAAQ;AACT,SAAoB,gBAAAC,EAAM,cAAc,OAAO,OAAO,OAAO;AAAA,IAC3D,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,eAAe;AAAA,IACf,aAAa;AAAA,IACb,KAAKD;AAAA,IACL,mBAAmBF;AAAA,EACvB,GAAKC,CAAK,GAAGF,IAAqB,gBAAAI,EAAM,cAAc,SAAS;AAAA,IAC3D,IAAIH;AAAA,EACR,GAAKD,CAAK,IAAI,MAAmB,gBAAAI,EAAM,cAAc,QAAQ;AAAA,IACzD,GAAG;AAAA,EACP,CAAG,GAAgB,gBAAAA,EAAM,cAAc,QAAQ;AAAA,IAC3C,UAAU;AAAA,IACV,GAAG;AAAA,IACH,UAAU;AAAA,EACd,CAAG,CAAC;AACJ;AACA,MAAMC,IAA2B,gBAAAD,EAAM,WAAWK,CAAkB;ACvBpE,SAASC,EAAsB;AAAA,EAC7B,OAAAV;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,GAAGC,GAAQ;AACT,SAAoB,gBAAAC,EAAM,cAAc,OAAO,OAAO,OAAO;AAAA,IAC3D,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,eAAe;AAAA,IACf,aAAa;AAAA,IACb,KAAKD;AAAA,IACL,mBAAmBF;AAAA,EACvB,GAAKC,CAAK,GAAGF,IAAqB,gBAAAI,EAAM,cAAc,SAAS;AAAA,IAC3D,IAAIH;AAAA,EACR,GAAKD,CAAK,IAAI,MAAmB,gBAAAI,EAAM,cAAc,QAAQ;AAAA,IACzD,UAAU;AAAA,IACV,GAAG;AAAA,IACH,UAAU;AAAA,EACd,CAAG,CAAC;AACJ;AACA,MAAMC,IAA2B,gBAAAD,EAAM,WAAWM,CAAqB;ACrBvE,SAASC,EAAwB;AAAA,EAC/B,OAAAX;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,GAAGC,GAAQ;AACT,SAAoB,gBAAAC,EAAM,cAAc,OAAO,OAAO,OAAO;AAAA,IAC3D,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,eAAe;AAAA,IACf,aAAa;AAAA,IACb,KAAKD;AAAA,IACL,mBAAmBF;AAAA,EACvB,GAAKC,CAAK,GAAGF,IAAqB,gBAAAI,EAAM,cAAc,SAAS;AAAA,IAC3D,IAAIH;AAAA,EACR,GAAKD,CAAK,IAAI,MAAmB,gBAAAI,EAAM,cAAc,QAAQ;AAAA,IACzD,UAAU;AAAA,IACV,GAAG;AAAA,IACH,UAAU;AAAA,EACd,CAAG,CAAC;AACJ;AACA,MAAMC,IAA2B,gBAAAD,EAAM,WAAWO,CAAuB;ACrBzE,SAASC,EAAU;AAAA,EACjB,OAAAZ;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,GAAGC,GAAQ;AACT,SAAoB,gBAAAC,EAAM,cAAc,OAAO,OAAO,OAAO;AAAA,IAC3D,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,eAAe;AAAA,IACf,aAAa;AAAA,IACb,KAAKD;AAAA,IACL,mBAAmBF;AAAA,EACvB,GAAKC,CAAK,GAAGF,IAAqB,gBAAAI,EAAM,cAAc,SAAS;AAAA,IAC3D,IAAIH;AAAA,EACR,GAAKD,CAAK,IAAI,MAAmB,gBAAAI,EAAM,cAAc,QAAQ;AAAA,IACzD,GAAG;AAAA,EACP,CAAG,CAAC;AACJ;AACA,MAAMC,IAA2B,gBAAAD,EAAM,WAAWQ,CAAS;ACnB3D,SAASC,EAAsB;AAAA,EAC7B,OAAAb;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,GAAGC,GAAQ;AACT,SAAoB,gBAAAC,EAAM,cAAc,OAAO,OAAO,OAAO;AAAA,IAC3D,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,eAAe;AAAA,IACf,aAAa;AAAA,IACb,KAAKD;AAAA,IACL,mBAAmBF;AAAA,EACvB,GAAKC,CAAK,GAAGF,IAAqB,gBAAAI,EAAM,cAAc,SAAS;AAAA,IAC3D,IAAIH;AAAA,EACR,GAAKD,CAAK,IAAI,MAAmB,gBAAAI,EAAM,cAAc,QAAQ;AAAA,IACzD,UAAU;AAAA,IACV,GAAG;AAAA,IACH,UAAU;AAAA,EACd,CAAG,CAAC;AACJ;AACA,MAAMC,IAA2B,gBAAAD,EAAM,WAAWS,CAAqB;ACrBvE,SAASC,EAAa;AAAA,EACpB,OAAAd;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,GAAGC,GAAQ;AACT,SAAoB,gBAAAC,EAAM,cAAc,OAAO,OAAO,OAAO;AAAA,IAC3D,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,eAAe;AAAA,IACf,aAAa;AAAA,IACb,KAAKD;AAAA,IACL,mBAAmBF;AAAA,EACvB,GAAKC,CAAK,GAAGF,IAAqB,gBAAAI,EAAM,cAAc,SAAS;AAAA,IAC3D,IAAIH;AAAA,EACR,GAAKD,CAAK,IAAI,MAAmB,gBAAAI,EAAM,cAAc,QAAQ;AAAA,IACzD,UAAU;AAAA,IACV,GAAG;AAAA,IACH,UAAU;AAAA,EACd,CAAG,CAAC;AACJ;AACA,MAAMC,IAA2B,gBAAAD,EAAM,WAAWU,CAAY;ACrB9D,SAASC,EAAc;AAAA,EACrB,OAAAf;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,GAAGC,GAAQ;AACT,SAAoB,gBAAAC,EAAM,cAAc,OAAO,OAAO,OAAO;AAAA,IAC3D,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,eAAe;AAAA,IACf,aAAa;AAAA,IACb,KAAKD;AAAA,IACL,mBAAmBF;AAAA,EACvB,GAAKC,CAAK,GAAGF,IAAqB,gBAAAI,EAAM,cAAc,SAAS;AAAA,IAC3D,IAAIH;AAAA,EACR,GAAKD,CAAK,IAAI,MAAmB,gBAAAI,EAAM,cAAc,QAAQ;AAAA,IACzD,GAAG;AAAA,EACP,CAAG,GAAgB,gBAAAA,EAAM,cAAc,QAAQ;AAAA,IAC3C,UAAU;AAAA,IACV,GAAG;AAAA,IACH,UAAU;AAAA,EACd,CAAG,CAAC;AACJ;AACA,MAAMC,IAA2B,gBAAAD,EAAM,WAAWW,CAAa;ACvB/D,SAASC,EAAsB;AAAA,EAC7B,OAAAhB;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,GAAGC,GAAQ;AACT,SAAoB,gBAAAC,EAAM,cAAc,OAAO,OAAO,OAAO;AAAA,IAC3D,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,eAAe;AAAA,IACf,aAAa;AAAA,IACb,KAAKD;AAAA,IACL,mBAAmBF;AAAA,EACvB,GAAKC,CAAK,GAAGF,IAAqB,gBAAAI,EAAM,cAAc,SAAS;AAAA,IAC3D,IAAIH;AAAA,EACR,GAAKD,CAAK,IAAI,MAAmB,gBAAAI,EAAM,cAAc,QAAQ;AAAA,IACzD,UAAU;AAAA,IACV,GAAG;AAAA,IACH,UAAU;AAAA,EACd,CAAG,CAAC;AACJ;AACA,MAAMC,IAA2B,gBAAAD,EAAM,WAAWY,CAAqB;ACrBvE,SAASC,EAAS;AAAA,EAChB,OAAAjB;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,GAAGC,GAAQ;AACT,SAAoB,gBAAAC,EAAM,cAAc,OAAO,OAAO,OAAO;AAAA,IAC3D,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,eAAe;AAAA,IACf,aAAa;AAAA,IACb,KAAKD;AAAA,IACL,mBAAmBF;AAAA,EACvB,GAAKC,CAAK,GAAGF,IAAqB,gBAAAI,EAAM,cAAc,SAAS;AAAA,IAC3D,IAAIH;AAAA,EACR,GAAKD,CAAK,IAAI,MAAmB,gBAAAI,EAAM,cAAc,QAAQ;AAAA,IACzD,UAAU;AAAA,IACV,GAAG;AAAA,IACH,UAAU;AAAA,EACd,CAAG,CAAC;AACJ;AACA,MAAMC,IAA2B,gBAAAD,EAAM,WAAWa,CAAQ;ACtB1D,SAASC,EAAE,GAAE;AAAC,MAAIC,GAAEC,GAAE,IAAE;AAAG,MAAa,OAAO,KAAjB,YAA8B,OAAO,KAAjB,SAAmB,MAAG;AAAA,WAAoB,OAAO,KAAjB,SAAmB,KAAG,MAAM,QAAQ,CAAC,GAAE;AAAC,QAAIC,IAAE,EAAE;AAAO,SAAIF,IAAE,GAAEA,IAAEE,GAAEF,IAAI,GAAEA,CAAC,MAAIC,IAAEF,EAAE,EAAEC,CAAC,CAAC,OAAK,MAAI,KAAG,MAAK,KAAGC;AAAA,EAAE,MAAM,MAAIA,KAAK,EAAE,GAAEA,CAAC,MAAI,MAAI,KAAG,MAAK,KAAGA;AAAG,SAAO;AAAC;AAAQ,SAASE,IAAM;AAAC,WAAQ,GAAEH,GAAEC,IAAE,GAAE,IAAE,IAAGC,IAAE,UAAU,QAAOD,IAAEC,GAAED,IAAI,EAAC,IAAE,UAAUA,CAAC,OAAKD,IAAED,EAAE,CAAC,OAAK,MAAI,KAAG,MAAK,KAAGC;AAAG,SAAO;AAAC;ACkB/W,MAAMI,IAAgB;AAAA,EACpB,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AACX,GAEMC,IAAY;AAAA,EAChB,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AACX,GAEMC,IAAe;AAAA,EACnB,MAAMf;AAAAA,EACN,QAAQC;AAAAA,EACR,KAAKE;AACP;AAEO,SAASa,EAAe;AAAA,EAC7B,QAAAC;AAAA,EACA,SAAAC,IAAU;AACZ,GAAwB;AACtB,QAAM,EAAE,GAAAT,EAAA,IAAMU,EAAeC,CAAe,GACtCC,IAAON,EAAaE,EAAO,QAAQ;AAEzC,2BACG,OAAA,EAAI,WAAWL,EAAK,kCAAkCC,EAAcK,CAAO,CAAC,GAC3E,UAAA,gBAAAI,EAAC,SAAI,WAAU,aACb,UAAA,gBAAAC,EAAC,OAAA,EAAI,WAAU,0BACb,UAAA;AAAA,IAAA,gBAAAD,EAACD,KAAK,WAAWT,EAAK,wBAAwBE,EAAUI,CAAO,CAAC,GAAG;AAAA,IAEnE,gBAAAK,EAAC,OAAA,EAAI,WAAU,UACb,UAAA;AAAA,MAAA,gBAAAD,EAAC,MAAA,EAAG,WAAU,sBAAsB,UAAAL,EAAO,OAAM;AAAA,MACjD,gBAAAK,EAAC,KAAA,EAAE,WAAU,6BAA6B,YAAO,aAAY;AAAA,MAG7D,gBAAAC,EAAC,OAAA,EAAI,WAAU,sCACb,UAAA;AAAA,QAAA,gBAAAA,EAAC,KAAA,EAAE,WAAU,8BAA6B,UAAA;AAAA,UAAA;AAAA,UACpCd,EAAE,iBAAiB;AAAA,QAAA,GACzB;AAAA,QACA,gBAAAa,EAAC,KAAA,EAAE,WAAU,WAAW,YAAO,WAAA,CAAW;AAAA,MAAA,EAAA,CAC5C;AAAA,IAAA,EAAA,CACF;AAAA,EAAA,EAAA,CACF,GACF,GACF;AAEJ;ACnDO,SAASE,EAAgB,EAAE,UAAAC,KAAkC;AAClE,QAAM,EAAE,GAAAhB,EAAA,IAAMU,EAAeC,CAAe;AAE5C,SAAIK,EAAS,WAAW,IAAU,yBAG/B,WAAA,EACC,UAAA;AAAA,IAAA,gBAAAF,EAAC,MAAA,EAAG,WAAU,mDACZ,UAAA;AAAA,MAAA,gBAAAD,EAACrB,GAAA,EAAwB,WAAU,uBAAA,CAAuB;AAAA,MACzDQ,EAAE,iBAAiB;AAAA,IAAA,GACtB;AAAA,IAEA,gBAAAa,EAAC,SAAI,WAAU,aACZ,YAAS,IAAI,CAACI,GAASC,MACtB,gBAAAL;AAAA,MAACM,EAAO;AAAA,MAAP;AAAA,QAEC,SAAS,EAAE,GAAG,KAAK,SAAS,EAAA;AAAA,QAC5B,SAAS,EAAE,GAAG,GAAG,SAAS,EAAA;AAAA,QAC1B,YAAY,EAAE,OAAOD,IAAM,IAAA;AAAA,QAC3B,YAAY,EAAE,OAAO,MAAM,GAAG,GAAA;AAAA,QAE9B,UAAA,gBAAAL,EAACN,GAAA,EAAe,QAAQU,GAAS,SAAQ,UAAA,CAAU;AAAA,MAAA;AAAA,MAN9CC;AAAA,IAAA,CAQR,EAAA,CACH;AAAA,EAAA,GACF;AAEJ;AChCO,SAASE,IAAsB;AACpC,QAAM,EAAE,GAAApB,GAAG,MAAAqB,MAASX,EAAeC,CAAe,GAC5CW,IAAOD,EAAK;AAElB,SACE,gBAAAR,EAAC,aAAQ,WAAU,iEACjB,4BAAC,OAAA,EAAI,WAAU,4BACb,UAAA,gBAAAC,EAAC,OAAA,EACC,UAAA;AAAA,IAAA,gBAAAD,EAACjC,GAAA,EAA+B,WAAU,uBAAA,CAAuB;AAAA,sBAEhE,MAAA,EAAG,WAAU,2BACX,UAAAoB,EAAE,2BAA2B,GAChC;AAAA,sBAEC,KAAA,EAAE,WAAU,0BACV,UAAAA,EAAE,iCAAiC,GACtC;AAAA,IAEA,gBAAAa,EAACU,GAAA,EAAK,MAAM,IAAID,CAAI,eAClB,UAAA,gBAAAT;AAAA,MAACM,EAAO;AAAA,MAAP;AAAA,QACC,YAAY,EAAE,OAAO,IAAA;AAAA,QACrB,UAAU,EAAE,OAAO,KAAA;AAAA,QACnB,WAAU;AAAA,QAET,YAAE,4BAA4B;AAAA,MAAA;AAAA,IAAA,EACjC,CACF;AAAA,EAAA,EAAA,CACF,GACF,GACF;AAEJ;AC5BO,SAASK,EAAoB,EAAE,QAAAC,KAAoC;AACxE,QAAM,EAAE,GAAAzB,EAAA,IAAMU,EAAeC,CAAe;AAE5C,SACE,gBAAAE;AAAA,IAACM,EAAO;AAAA,IAAP;AAAA,MACC,YAAY,EAAE,OAAO,KAAA;AAAA,MACrB,WAAU;AAAA,MAEV,UAAA,gBAAAL,EAAC,OAAA,EAAI,WAAU,aACb,UAAA;AAAA,QAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,gCACb,UAAA;AAAA,UAAA,gBAAAD,EAAC,OAAA,EAAI,WAAU,sBACb,UAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,qDACb,UAAA,gBAAAA,EAACf,GAAA,EAAS,WAAU,SAAA,CAAS,EAAA,CAC/B,GACF;AAAA,4BACC,OAAA,EACC,UAAA;AAAA,YAAA,gBAAAe,EAAC,MAAA,EAAG,WAAU,sBAAsB,UAAAb,EAAE,qBAAqB,GAAE;AAAA,8BAC5D,KAAA,EAAE,WAAU,cAAc,UAAAA,EAAE,mBAAmB,EAAA,CAAE;AAAA,UAAA,EAAA,CACpD;AAAA,QAAA,GACF;AAAA,QAEA,gBAAAa,EAAC,SAAI,WAAU,oBACb,4BAAC,KAAA,EAAE,WAAU,+BAA+B,UAAAY,EAAA,CAAO,EAAA,CACrD;AAAA,MAAA,EAAA,CACF;AAAA,IAAA;AAAA,EAAA;AAGN;ACxBO,SAASC,EAAqB,EAAE,MAAAC,KAAmC;AACxE,QAAM,EAAE,GAAA3B,GAAG,MAAAqB,MAASX,EAAeC,CAAe;AAElD,SAAKgB,sBAGF,WAAA,EACC,UAAA;AAAA,IAAA,gBAAAb,EAAC,MAAA,EAAG,WAAU,mDACZ,UAAA;AAAA,MAAA,gBAAAD,EAACvB,GAAA,EAAmB,WAAU,yBAAA,CAAyB;AAAA,MACtDU,EAAE,sBAAsB;AAAA,IAAA,GAC3B;AAAA,sBAEC,OAAA,EAAI,WAAU,8BACb,UAAA,gBAAAc,EAAC,OAAA,EAAI,WAAU,aACb,UAAA;AAAA,MAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,yCACZ,UAAA;AAAA,QAAAa,EAAK,wCACH,OAAA,EACC,UAAA;AAAA,UAAA,gBAAAd,EAAC,MAAA,EAAG,WAAU,8BACX,UAAAb,EAAE,oBAAoB,GACzB;AAAA,UACA,gBAAAa,EAAC,KAAA,EAAE,WAAU,sBAAsB,YAAK,mBAAA,CAAmB;AAAA,QAAA,GAC7D;AAAA,QAGDc,EAAK,iBACJ,gBAAAb,EAAC,OAAA,EACC,UAAA;AAAA,UAAA,gBAAAD,EAAC,MAAA,EAAG,WAAU,8BACX,UAAAb,EAAE,qBAAqB,GAC1B;AAAA,UACA,gBAAAa,EAAC,OAAE,WAAU,mCACV,cAAI,KAAK,aAAaQ,EAAK,UAAU;AAAA,YACpC,OAAO;AAAA,YACP,UAAUM,EAAK,YAAY;AAAA,UAAA,CAC5B,EAAE,OAAOA,EAAK,aAAa,EAAA,CAC9B;AAAA,QAAA,EAAA,CACF;AAAA,MAAA,GAEJ;AAAA,MAGA,gBAAAb,EAAC,OAAA,EAAI,WAAU,mCACb,UAAA;AAAA,QAAA,gBAAAD,EAAC,MAAA,EAAG,WAAU,8BACX,UAAAb,EAAE,wBAAwB,GAC7B;AAAA,QACA,gBAAAa,EAAC,KAAA,EAAE,WAAU,wBAAwB,YAAK,iBAAA,CAAiB;AAAA,MAAA,GAC7D;AAAA,MAGCc,EAAK,SAAS,SAAS,KACtB,gBAAAb,EAAC,OAAA,EAAI,WAAU,QACb,UAAA;AAAA,QAAA,gBAAAA,EAAC,MAAA,EAAG,WAAU,mEACZ,UAAA;AAAA,UAAA,gBAAAD,EAACrB,GAAA,EAAwB,WAAU,SAAA,CAAS;AAAA,UAC3CQ,EAAE,sBAAsB;AAAA,QAAA,GAC3B;AAAA,0BACC,MAAA,EAAG,WAAU,mCACX,UAAA2B,EAAK,SAAS,IAAI,CAACC,GAASC,wBAC1B,MAAA,EAAe,WAAU,wBACvB,UAAAD,EAAA,GADMC,CAET,CACD,EAAA,CACH;AAAA,MAAA,EAAA,CACF;AAAA,IAAA,EAAA,CAEJ,EAAA,CACF;AAAA,EAAA,GACF,IA9DgB;AAgEpB;ACtEO,SAASC,EAAsB;AAAA,EACpC,gBAAAC;AAAA,EACA,kBAAAC;AACF,GAA+B;AAC7B,QAAM,EAAE,GAAAhC,EAAA,IAAMU,EAAeC,CAAe;AAE5C,2BACG,WAAA,EACC,UAAA;AAAA,IAAA,gBAAAG,EAAC,MAAA,EAAG,WAAU,mDACZ,UAAA;AAAA,MAAA,gBAAAD,EAACjB,GAAA,EAAc,WAAU,uBAAA,CAAuB;AAAA,MAC/CI,EAAE,uBAAuB;AAAA,IAAA,GAC5B;AAAA,sBAEC,OAAA,EAAI,WAAU,8BACb,UAAA,gBAAAc,EAAC,OAAA,EAAI,WAAU,aACb,UAAA;AAAA,MAAA,gBAAAD,EAAC,OAAA,EAAI,WAAU,oBACb,UAAA,gBAAAA,EAAC,OAAE,WAAU,oDACV,aACH,EAAA,CACF;AAAA,MAEA,gBAAAA,EAAC,OAAA,EAAI,WAAU,UAAA,CAAU;AAAA,wBAExB,OAAA,EAAI,WAAU,8BACb,UAAA,gBAAAC,EAAC,KAAA,EAAE,WAAU,+CACX,UAAA;AAAA,QAAA,gBAAAD,EAACpB,GAAA,EAAU,WAAU,mBAAA,CAAmB;AAAA,QAAE;AAAA,QAAEuC;AAAA,MAAA,EAAA,CAC9C,EAAA,CACF;AAAA,IAAA,EAAA,CACF,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;ACtBA,SAASC,EAAaC,GAA0B;AAC9C,SAAIA,KAAS,KACJ,EAAE,OAAO,QAAQ,OAAO,SAAS,MAAMrC,EAAA,IAE5CqC,KAAS,KACJ,EAAE,OAAO,UAAU,OAAO,WAAW,MAAM1C,EAAA,IAE7C,EAAE,OAAO,OAAO,OAAO,WAAW,MAAML,EAAA;AACjD;AAEO,SAASgD,GAAc,EAAE,OAAAD,KAA6B;AAC3D,QAAM,EAAE,GAAAlC,EAAA,IAAMU,EAAeC,CAAe,GACtCyB,IAAOH,EAAaC,CAAK,GACzB,EAAE,MAAAtB,MAASwB,GAEXC,IAAuC;AAAA,IAC3C,OAAO;AAAA,IACP,SAAS;AAAA,IACT,SAAS;AAAA,EAAA;AAGX,SACE,gBAAAxB,EAAC,SAAI,WAAU,6CACb,4BAAC,OAAA,EAAI,WAAU,4BACb,UAAA,gBAAAC,EAAC,OAAA,EACC,UAAA;AAAA,IAAA,gBAAAD,EAAC,OAAA,EAAI,WAAU,QACb,UAAA,gBAAAA,EAACD,GAAA,EAAK,WAAWT,EAAK,WAAWkC,EAAaD,EAAK,KAAK,CAAC,GAAG,GAC9D;AAAA,IACA,gBAAAvB,EAAC,QAAG,WAAU,2BACX,YAAE,oBAAoBuB,EAAK,KAAK,QAAQ,EAAA,CAC3C;AAAA,IAGA,gBAAAvB,EAAC,OAAA,EAAI,WAAU,gBACb,UAAA,gBAAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWV,EAAK,mBAAmBkC,EAAaD,EAAK,KAAK,CAAC;AAAA,QAC3D,OACE;AAAA,UACE,WAAWF;AAAA,UACX,UAAU;AAAA,UACV,eAAe;AAAA,QAAA;AAAA,QAGnB,MAAK;AAAA,QAEL,UAAA,gBAAArB,EAAC,QAAA,EAAK,WAAU,sBAAsB,UAAAqB,EAAA,CAAM;AAAA,MAAA;AAAA,IAAA,GAEhD;AAAA,IAEA,gBAAArB,EAAC,OAAE,WAAU,8CACV,YAAE,oBAAoBuB,EAAK,KAAK,UAAU,EAAA,CAC7C;AAAA,EAAA,EAAA,CACF,GACF,GACF;AAEJ;AChEO,SAASE,GAAmB,EAAE,SAAAC,KAAoC;AACvE,QAAM,EAAE,GAAAvC,EAAA,IAAMU,EAAeC,CAAe;AAE5C,SAAI4B,EAAQ,WAAW,IAAU,yBAG9B,WAAA,EACC,UAAA;AAAA,IAAA,gBAAAzB,EAAC,MAAA,EAAG,WAAU,mDACZ,UAAA;AAAA,MAAA,gBAAAD,EAAChB,GAAA,EAAsB,WAAU,qBAAA,CAAqB;AAAA,MACrDG,EAAE,oBAAoB;AAAA,IAAA,GACzB;AAAA,IAEA,gBAAAa,EAAC,SAAI,WAAU,aACZ,YAAQ,IAAI,CAACL,GAAQU,MACpB,gBAAAL;AAAA,MAACM,EAAO;AAAA,MAAP;AAAA,QAEC,SAAS,EAAE,GAAG,KAAK,SAAS,EAAA;AAAA,QAC5B,SAAS,EAAE,GAAG,GAAG,SAAS,EAAA;AAAA,QAC1B,YAAY,EAAE,OAAOD,IAAM,IAAA;AAAA,QAC3B,YAAY,EAAE,OAAO,MAAM,GAAG,GAAA;AAAA,QAE9B,UAAA,gBAAAL,EAACN,GAAA,EAAe,QAAAC,GAAgB,SAAQ,QAAA,CAAQ;AAAA,MAAA;AAAA,MAN3CU;AAAA,IAAA,CAQR,EAAA,CACH;AAAA,EAAA,GACF;AAEJ;AC3BO,SAASsB,GAAsB;AAAA,EACpC,YAAAC;AACF,GAA+B;AAC7B,QAAM,EAAE,GAAAzC,EAAA,IAAMU,EAAeC,CAAe;AAE5C,SAAI8B,EAAW,WAAW,IAAU,yBAGjC,WAAA,EACC,UAAA;AAAA,IAAA,gBAAA3B,EAAC,MAAA,EAAG,WAAU,mDACZ,UAAA;AAAA,MAAA,gBAAAD,EAACzB,GAAA,EAAgB,WAAU,uBAAA,CAAuB;AAAA,MACjDY,EAAE,uBAAuB;AAAA,IAAA,GAC5B;AAAA,IAEA,gBAAAa,EAAC,SAAI,WAAU,aACZ,YAAW,IAAI,CAAC6B,GAAWxB,MAC1B,gBAAAL;AAAA,MAACM,EAAO;AAAA,MAAP;AAAA,QAEC,SAAS,EAAE,GAAG,KAAK,SAAS,EAAA;AAAA,QAC5B,SAAS,EAAE,GAAG,GAAG,SAAS,EAAA;AAAA,QAC1B,YAAY,EAAE,OAAOD,IAAM,IAAA;AAAA,QAC3B,YAAY,EAAE,OAAO,MAAM,GAAG,GAAA;AAAA,QAE9B,UAAA,gBAAAL,EAACN,GAAA,EAAe,QAAQmC,GAAW,SAAQ,UAAA,CAAU;AAAA,MAAA;AAAA,MANhDxB;AAAA,IAAA,CAQR,EAAA,CACH;AAAA,EAAA,GACF;AAEJ;AC/BO,SAASyB,GAAuB,EAAE,OAAAC,KAAsC;AAC7E,QAAM,EAAE,GAAA5C,EAAA,IAAMU,EAAeC,CAAe;AAE5C,SAAIiC,EAAM,WAAW,IAAU,yBAG5B,WAAA,EACC,UAAA;AAAA,IAAA,gBAAA9B,EAAC,MAAA,EAAG,WAAU,mDACZ,UAAA;AAAA,MAAA,gBAAAD,EAACxB,GAAA,EAA2B,WAAU,uBAAA,CAAuB;AAAA,MAC5DW,EAAE,wBAAwB;AAAA,IAAA,GAC7B;AAAA,sBAEC,OAAA,EAAI,WAAU,+CACb,UAAA,gBAAAc,EAAC,OAAA,EAAI,WAAU,aACb,UAAA;AAAA,MAAA,gBAAAD,EAAC,KAAA,EAAE,WAAU,qCACV,UAAAb,EAAE,6BAA6B,GAClC;AAAA,MAEA,gBAAAa,EAAC,SAAI,WAAU,aACZ,YAAM,IAAI,CAACgC,GAAM3B,MAChB,gBAAAJ;AAAA,QAACK,EAAO;AAAA,QAAP;AAAA,UAEC,SAAS,EAAE,GAAG,KAAK,SAAS,EAAA;AAAA,UAC5B,SAAS,EAAE,GAAG,GAAG,SAAS,EAAA;AAAA,UAC1B,YAAY,EAAE,OAAOD,IAAM,KAAA;AAAA,UAC3B,WAAU;AAAA,UAEV,UAAA;AAAA,YAAA,gBAAAL;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,WAAU;AAAA,cAAA;AAAA,YAAA;AAAA,YAEZ,gBAAAA,EAAC,QAAA,EAAK,WAAU,WAAW,UAAAgC,EAAA,CAAK;AAAA,UAAA;AAAA,QAAA;AAAA,QAV3B3B;AAAA,MAAA,CAYR,EAAA,CACH;AAAA,IAAA,EAAA,CACF,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;ACvCO,SAAS4B,GAAmB;AAAA,EACjC,aAAAC;AAAA,EACA,QAAAC;AACF,GAA4B;AAC1B,QAAM,EAAE,GAAAhD,EAAA,IAAMU,EAAeC,CAAe;AAE5C,SAAI,CAACoC,KAAe,CAACC,IAAe,yBAGjC,WAAA,EACC,UAAA;AAAA,IAAA,gBAAAlC,EAAC,MAAA,EAAG,WAAU,mDACZ,UAAA;AAAA,MAAA,gBAAAD,EAAClB,GAAA,EAAa,WAAU,uBAAA,CAAuB;AAAA,MAC9CK,EAAE,oBAAoB;AAAA,IAAA,GACzB;AAAA,sBAEC,OAAA,EAAI,WAAU,8BACb,UAAA,gBAAAc,EAAC,OAAA,EAAI,WAAU,aACZ,UAAA;AAAA,MAAAiC,KACC,gBAAAjC,EAAC,OAAA,EAAI,WAAU,QACb,UAAA;AAAA,QAAA,gBAAAD,EAAC,MAAA,EAAG,WAAU,8BACX,UAAAb,EAAE,yBAAyB,GAC9B;AAAA,QACA,gBAAAa,EAAC,KAAA,EAAE,WAAU,4CACV,UAAAkC,EAAA,CACH;AAAA,MAAA,GACF;AAAA,MAGDC,uBACE,OAAA,EACC,UAAA;AAAA,QAAA,gBAAAnC,EAAC,MAAA,EAAG,WAAU,8BACX,UAAAb,EAAE,oBAAoB,GACzB;AAAA,QACA,gBAAAa,EAAC,KAAA,EAAE,WAAU,4CACV,UAAAmC,EAAA,CACH;AAAA,MAAA,EAAA,CACF;AAAA,IAAA,EAAA,CAEJ,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;AC9BA,MAAMC,IAAqB;AAAA,EACzB,SAAS,EAAE,GAAG,IAAI,SAAS,EAAA;AAAA,EAC3B,SAAS;AAAA,IACP,GAAG;AAAA,IACH,SAAS;AAAA,IACT,YAAY,EAAE,UAAU,IAAA;AAAA,EAAI;AAEhC,GAEMC,KAA6B;AAAA,EACjC,SAAS;AAAA,IACP,YAAY;AAAA,MACV,iBAAiB;AAAA,IAAA;AAAA,EACnB;AAEJ;AAEO,SAASC,GAAe;AAAA,EAC7B,UAAAC;AAAA,EACA,cAAAC;AAAA,EACA,kBAAAC,IAAmB;AACrB,GAAwB;AACtB,SACE,gBAAAxC;AAAA,IAACK,EAAO;AAAA,IAAP;AAAA,MACC,UAAU+B;AAAA,MACV,SAAQ;AAAA,MACR,SAAQ;AAAA,MACR,WAAU;AAAA,MAGV,UAAA;AAAA,QAAA,gBAAArC,EAACM,EAAO,KAAP,EAAW,UAAU8B,GACpB,4BAACd,IAAA,EAAc,OAAOiB,EAAS,WAAA,CAAY,EAAA,CAC7C;AAAA,SAGEA,EAAS,eAAeA,EAAS,yCAChCjC,EAAO,KAAP,EAAW,UAAU8B,GACpB,UAAA,gBAAApC;AAAA,UAACiC;AAAA,UAAA;AAAA,YACC,aAAaM,EAAS;AAAA,YACtB,QAAQA,EAAS;AAAA,UAAA;AAAA,QAAA,GAErB;AAAA,QAIDA,EAAS,aAAa,SAAS,uBAC7BjC,EAAO,KAAP,EAAW,UAAU8B,GACpB,UAAA,gBAAApC,EAACyB,IAAA,EAAmB,SAASc,EAAS,cAAc,GACtD;AAAA,QAIDA,EAAS,SAAS,SAAS,uBACzBjC,EAAO,KAAP,EAAW,UAAU8B,GACpB,UAAA,gBAAApC,EAACE,GAAA,EAAgB,UAAUqC,EAAS,UAAU,GAChD;AAAA,QAIDA,EAAS,gBAAgB,SAAS,uBAChCjC,EAAO,KAAP,EAAW,UAAU8B,GACpB,UAAA,gBAAApC,EAAC2B,IAAA,EAAsB,YAAYY,EAAS,iBAAiB,GAC/D;AAAA,QAIDA,EAAS,kBACR,gBAAAvC,EAACM,EAAO,KAAP,EAAW,UAAU8B,GACpB,UAAA,gBAAApC,EAACa,GAAA,EAAqB,MAAM0B,EAAS,gBAAgB,GACvD;AAAA,QAIDA,EAAS,iBAAiB,SAAS,uBACjCjC,EAAO,KAAP,EAAW,UAAU8B,GACpB,UAAA,gBAAApC,EAAC8B,IAAA,EAAuB,OAAOS,EAAS,kBAAkB,GAC5D;AAAA,QAIDC,KACC,gBAAAxC,EAACM,EAAO,KAAP,EAAW,UAAU8B,GACpB,UAAA,gBAAApC,EAACW,GAAA,EAAoB,QAAQ6B,EAAA,CAAc,EAAA,CAC7C;AAAA,QAIF,gBAAAxC,EAACM,EAAO,KAAP,EAAW,UAAU8B,GACpB,UAAA,gBAAApC;AAAA,UAACiB;AAAA,UAAA;AAAA,YACC,gBAAgBsB,EAAS;AAAA,YACzB,kBAAkBA,EAAS;AAAA,UAAA;AAAA,QAAA,GAE/B;AAAA,QAGCE,uBACEnC,EAAO,KAAP,EAAW,UAAU8B,GACpB,UAAA,gBAAApC,EAACO,GAAA,CAAA,CAAoB,EAAA,CACvB;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR;ACjHO,SAASmC,GAAkB;AAAA,EAChC,SAAAC;AAAA,EACA,SAAAC;AACF,GAA2B;AACzB,QAAM,EAAE,GAAAzD,GAAG,MAAAqB,MAASX,EAAeC,CAAe,GAC5CW,IAAOD,EAAK;AAElB,SACE,gBAAAP,EAAC,OAAA,EAAI,WAAU,qBACb,UAAA;AAAA,IAAA,gBAAAD,EAAC,MAAA,EAAG,WAAU,uCACX,UAAAb,EAAE,cAAc,GACnB;AAAA,IAGA,gBAAAc,EAAC,OAAA,EAAI,WAAU,8CACb,UAAA;AAAA,MAAA,gBAAAD,EAAC,SAAI,WAAU,oBACb,UAAA,gBAAAC,EAAC,OAAA,EAAI,WAAU,sCACb,UAAA;AAAA,QAAA,gBAAAD,EAAC,MAAA,EAAG,WAAU,iCACX,UAAA2C,EAAQ,oBACX;AAAA,0BACC,KAAA,EAAE,WAAU,WAAW,UAAAxD,EAAE,oBAAoB,EAAA,CAAE;AAAA,MAAA,EAAA,CAClD,EAAA,CACF;AAAA,wBACC,OAAA,EAAI,WAAU,sBACb,UAAA,gBAAAc,EAAC,OAAA,EAAI,WAAU,sCACb,UAAA;AAAA,QAAA,gBAAAD,EAAC,MAAA,EAAG,WAAU,mCACX,UAAA2C,EAAQ,gBACX;AAAA,0BACC,KAAA,EAAE,WAAU,WAAW,UAAAxD,EAAE,iBAAiB,EAAA,CAAE;AAAA,MAAA,EAAA,CAC/C,EAAA,CACF;AAAA,wBACC,OAAA,EAAI,WAAU,sBACb,UAAA,gBAAAc,EAAC,OAAA,EAAI,WAAU,sCACb,UAAA;AAAA,QAAA,gBAAAD,EAAC,MAAA,EAAG,WAAU,mCACX,UAAA2C,EAAQ,uBACX;AAAA,0BACC,KAAA,EAAE,WAAU,WAAW,UAAAxD,EAAE,uBAAuB,EAAA,CAAE;AAAA,MAAA,EAAA,CACrD,EAAA,CACF;AAAA,IAAA,GACF;AAAA,sBAGC,OAAA,EAAI,WAAU,8BACb,UAAA,gBAAAc,EAAC,OAAA,EAAI,WAAU,sCACb,UAAA;AAAA,MAAA,gBAAAD,EAAC,MAAA,EAAG,WAAU,uBAAuB,UAAAb,EAAE,uBAAuB,GAAE;AAAA,wBAC/D,KAAA,EAAE,WAAU,6BACV,UAAAA,EAAE,sBAAsB,GAC3B;AAAA,MACA,gBAAAa;AAAA,QAACU;AAAA,QAAA;AAAA,UACC,MAAM,IAAID,CAAI,sBAAsB,mBAAmB,IAAIA,CAAI,wBAAwBmC,CAAO,EAAE,CAAC;AAAA,UACjG,WAAU;AAAA,UAET,YAAE,OAAO;AAAA,QAAA;AAAA,MAAA;AAAA,IACZ,EAAA,CACF,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;ACnEA,MAAMC,IAAmBC,EAAE,OAAO;AAAA,EAChC,UAAUA,EAAE,KAAK,CAAC,WAAW,UAAU,YAAY,SAAS,SAAS,CAAC;AAAA,EACtE,UAAUA,EAAE,KAAK,CAAC,QAAQ,UAAU,KAAK,CAAC;AAAA,EAC1C,OAAOA,EAAE,OAAA;AAAA,EACT,aAAaA,EAAE,OAAA;AAAA,EACf,YAAYA,EAAE,OAAA;AAChB,CAAC,GAEKC,KAAsBD,EAAE,OAAO;AAAA,EACnC,oBAAoBA,EAAE,OAAA,EAAS,QAAA;AAAA,EAC/B,eAAeA,EAAE,OAAA,EAAS,QAAA;AAAA,EAC1B,UAAUA,EAAE,OAAA,EAAS,QAAA;AAAA,EACrB,kBAAkBA,EAAE,OAAA;AAAA,EACpB,UAAUA,EAAE,MAAMA,EAAE,QAAQ;AAC9B,CAAC,GAEKE,KAA4BF,EAAE,OAAO;AAAA,EACzC,aAAaA,EAAE,OAAA,EAAS,QAAA;AAAA,EACxB,oBAAoBA,EAAE,OAAA,EAAS,QAAA;AAAA,EAC/B,cAAcA,EAAE,MAAMD,CAAgB;AAAA,EACtC,UAAUC,EAAE,MAAMD,CAAgB;AAAA,EAClC,iBAAiBC,EAAE,MAAMD,CAAgB;AAAA,EACzC,gBAAgBE;AAAA,EAChB,kBAAkBD,EAAE,MAAMA,EAAE,QAAQ;AAAA,EACpC,YAAYA,EAAE,OAAA;AAAA,EACd,gBAAgBA,EAAE,OAAA;AAAA,EAClB,mBAAmBA,EAAE,OAAA;AACvB,CAAC,GAEKG,KAAqBH,EAAE,OAAO;AAAA,EAClC,oBAAoBA,EAAE,OAAA;AAAA,EACtB,gBAAgBA,EAAE,OAAA;AAAA,EAClB,uBAAuBA,EAAE,OAAA;AAC3B,CAAC,GAEKI,KAAiCJ,EAAE,OAAO;AAAA,EAC9C,IAAIA,EAAE,OAAA;AAAA,EACN,SAASA,EAAE,OAAA,EAAS,QAAA;AAAA,EACpB,YAAYA,EAAE,OAAA;AAAA,EACd,cAAcE;AAAA,EACd,YAAYF,EAAE,OAAA;AAAA,EACd,eAAeA,EAAE,OAAA,EAAS,QAAA;AAAA,EAC1B,iBAAiBA,EAAE,QAAA;AAAA,EACnB,oBAAoBA,EAAE,OAAA,EAAS,QAAA;AAAA,EAC/B,oBAAoBA,EAAE,OAAA,EAAS,QAAA;AAAA,EAC/B,YAAYA,EAAE,OAAA;AAAA,EACd,YAAYA,EAAE,OAAA;AAChB,CAAC,GAwBKK,KAA2CL,EAAE,MAAM;AAAA,EACvDI;AAAA,EACAJ,EAAE,OAAO;AAAA,IACP,IAAIA,EAAE,OAAA;AAAA,IACN,eAAeG;AAAA,IACf,iBAAiBH,EAAE,QAAQ,EAAI;AAAA,EAAA,CAChC;AACH,CAAC;AAEM,MAAMM,WAA8BC,EAAuD;AAAA,EAA3F,cAAA;AAAA,UAAA,GAAA,SAAA,GACL,KAAS,WAAW;AAAA,EAAA;AAAA,EAEV,gBAAgB;AACxB,WAAOF;AAAA,EACT;AACF;AC9EO,MAAMG,KAAwB;AAAA,EACnC,MAAM;AAAA;AAAA,EACN,QAAQ;AAAA;AAAA;AAEV;","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.0",
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/react": "^8.0.9",
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",