trade-safety 1.1.2 → 1.2.0

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.
Files changed (37) hide show
  1. package/README.md +1 -1
  2. package/dist/components/DetailedResult/AnalysisCard.d.ts +9 -0
  3. package/dist/components/DetailedResult/AnalysisCard.d.ts.map +1 -0
  4. package/dist/components/DetailedResult/PriceAnalysisSection.d.ts.map +1 -1
  5. package/dist/components/DetailedResult/RecommendationSection.d.ts +2 -3
  6. package/dist/components/DetailedResult/RecommendationSection.d.ts.map +1 -1
  7. package/dist/components/DetailedResult/SafetyChecklistSection.d.ts.map +1 -1
  8. package/dist/components/DetailedResult/SignalsSection.d.ts +8 -0
  9. package/dist/components/DetailedResult/SignalsSection.d.ts.map +1 -0
  10. package/dist/components/DetailedResult/TranslationSection.d.ts +1 -1
  11. package/dist/components/DetailedResult/TranslationSection.d.ts.map +1 -1
  12. package/dist/components/DetailedResult/index.d.ts +1 -4
  13. package/dist/components/DetailedResult/index.d.ts.map +1 -1
  14. package/dist/index.d.ts +1 -3
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +1 -1
  17. package/dist/index.js.map +1 -1
  18. package/dist/index.mjs +229 -659
  19. package/dist/index.mjs.map +1 -1
  20. package/dist/repositories/TradeSafetyRepository.d.ts +24 -24
  21. package/package.json +1 -1
  22. package/dist/components/DetailedResult/CautionsSection.d.ts +0 -7
  23. package/dist/components/DetailedResult/CautionsSection.d.ts.map +0 -1
  24. package/dist/components/DetailedResult/CompanionCtaSection.d.ts +0 -2
  25. package/dist/components/DetailedResult/CompanionCtaSection.d.ts.map +0 -1
  26. package/dist/components/DetailedResult/ExpertAdviceSection.d.ts +0 -6
  27. package/dist/components/DetailedResult/ExpertAdviceSection.d.ts.map +0 -1
  28. package/dist/components/DetailedResult/RiskScoreHero.d.ts +0 -6
  29. package/dist/components/DetailedResult/RiskScoreHero.d.ts.map +0 -1
  30. package/dist/components/DetailedResult/RiskSignalsSection.d.ts +0 -7
  31. package/dist/components/DetailedResult/RiskSignalsSection.d.ts.map +0 -1
  32. package/dist/components/DetailedResult/SafeIndicatorsSection.d.ts +0 -7
  33. package/dist/components/DetailedResult/SafeIndicatorsSection.d.ts.map +0 -1
  34. package/dist/components/QuickResultTeaser.d.ts +0 -8
  35. package/dist/components/QuickResultTeaser.d.ts.map +0 -1
  36. package/dist/components/RiskSignalCard.d.ts +0 -8
  37. package/dist/components/RiskSignalCard.d.ts.map +0 -1
package/README.md CHANGED
@@ -22,7 +22,7 @@ npm install trade-safety @aioia/core
22
22
  ```tsx
23
23
  import { DetailedResult } from "trade-safety";
24
24
 
25
- <DetailedResult analysis={analysis} expertAdvice={expertAdvice} />
25
+ <DetailedResult analysis={analysis} expertAdvice={expertAdvice} />;
26
26
  ```
27
27
 
28
28
  ### Repository
@@ -0,0 +1,9 @@
1
+ interface AnalysisCardProps {
2
+ title?: string;
3
+ icon?: React.ReactNode;
4
+ variant?: "default" | "error" | "warning" | "success" | "info";
5
+ children: React.ReactNode;
6
+ }
7
+ export declare function AnalysisCard({ title, icon, variant, children, }: AnalysisCardProps): import("react").JSX.Element | null;
8
+ export {};
9
+ //# sourceMappingURL=AnalysisCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnalysisCard.d.ts","sourceRoot":"","sources":["../../../src/components/DetailedResult/AnalysisCard.tsx"],"names":[],"mappings":"AAEA,UAAU,iBAAiB;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;IAC/D,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAUD,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,IAAI,EACJ,OAAmB,EACnB,QAAQ,GACT,EAAE,iBAAiB,sCAcnB"}
@@ -1 +1 @@
1
- {"version":3,"file":"PriceAnalysisSection.d.ts","sourceRoot":"","sources":["../../../src/components/DetailedResult/PriceAnalysisSection.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,UAAU,yBAAyB;IACjC,IAAI,CAAC,EAAE,aAAa,CAAC;CACtB;AAED,wBAAgB,oBAAoB,CAAC,EAAE,IAAI,EAAE,EAAE,yBAAyB,sCAmEvE"}
1
+ {"version":3,"file":"PriceAnalysisSection.d.ts","sourceRoot":"","sources":["../../../src/components/DetailedResult/PriceAnalysisSection.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAIxC,UAAU,yBAAyB;IACjC,IAAI,CAAC,EAAE,aAAa,CAAC;CACtB;AAED,wBAAgB,oBAAoB,CAAC,EAAE,IAAI,EAAE,EAAE,yBAAyB,sCAiCvE"}
@@ -1,7 +1,6 @@
1
1
  interface RecommendationSectionProps {
2
- recommendation: string;
3
- emotionalSupport: string;
2
+ recommendation?: string;
4
3
  }
5
- export declare function RecommendationSection({ recommendation, emotionalSupport, }: RecommendationSectionProps): import("react").JSX.Element;
4
+ export declare function RecommendationSection({ recommendation, }: RecommendationSectionProps): import("react").JSX.Element | null;
6
5
  export {};
7
6
  //# sourceMappingURL=RecommendationSection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RecommendationSection.d.ts","sourceRoot":"","sources":["../../../src/components/DetailedResult/RecommendationSection.tsx"],"names":[],"mappings":"AAOA,UAAU,0BAA0B;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,qBAAqB,CAAC,EACpC,cAAc,EACd,gBAAgB,GACjB,EAAE,0BAA0B,+BA6B5B"}
1
+ {"version":3,"file":"RecommendationSection.d.ts","sourceRoot":"","sources":["../../../src/components/DetailedResult/RecommendationSection.tsx"],"names":[],"mappings":"AAQA,UAAU,0BAA0B;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,qBAAqB,CAAC,EACpC,cAAc,GACf,EAAE,0BAA0B,sCAU5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"SafetyChecklistSection.d.ts","sourceRoot":"","sources":["../../../src/components/DetailedResult/SafetyChecklistSection.tsx"],"names":[],"mappings":"AAQA,UAAU,2BAA2B;IACnC,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,wBAAgB,sBAAsB,CAAC,EAAE,KAAK,EAAE,EAAE,2BAA2B,sCAuC5E"}
1
+ {"version":3,"file":"SafetyChecklistSection.d.ts","sourceRoot":"","sources":["../../../src/components/DetailedResult/SafetyChecklistSection.tsx"],"names":[],"mappings":"AASA,UAAU,2BAA2B;IACnC,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,wBAAgB,sBAAsB,CAAC,EAAE,KAAK,EAAE,EAAE,2BAA2B,sCAuB5E"}
@@ -0,0 +1,8 @@
1
+ import { RiskSignal } from '../../types';
2
+ interface SignalsSectionProps {
3
+ signals: RiskSignal[];
4
+ variant?: "error" | "warning" | "success";
5
+ }
6
+ export declare function SignalsSection({ signals, variant, }: SignalsSectionProps): import("react").JSX.Element | null;
7
+ export {};
8
+ //# sourceMappingURL=SignalsSection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignalsSection.d.ts","sourceRoot":"","sources":["../../../src/components/DetailedResult/SignalsSection.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAIrC,UAAU,mBAAmB;IAC3B,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;CAC3C;AAcD,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,OAAiB,GAClB,EAAE,mBAAmB,sCA8BrB"}
@@ -2,6 +2,6 @@ interface TranslationSectionProps {
2
2
  translation?: string | null;
3
3
  nuance?: string | null;
4
4
  }
5
- export declare function TranslationSection({ translation, nuance, }: TranslationSectionProps): import("react").JSX.Element | null;
5
+ export declare function TranslationSection({ translation, nuance, }: TranslationSectionProps): import("react").JSX.Element;
6
6
  export {};
7
7
  //# sourceMappingURL=TranslationSection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TranslationSection.d.ts","sourceRoot":"","sources":["../../../src/components/DetailedResult/TranslationSection.tsx"],"names":[],"mappings":"AAOA,UAAU,uBAAuB;IAC/B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,wBAAgB,kBAAkB,CAAC,EACjC,WAAW,EACX,MAAM,GACP,EAAE,uBAAuB,sCAuCzB"}
1
+ {"version":3,"file":"TranslationSection.d.ts","sourceRoot":"","sources":["../../../src/components/DetailedResult/TranslationSection.tsx"],"names":[],"mappings":"AAQA,UAAU,uBAAuB;IAC/B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,wBAAgB,kBAAkB,CAAC,EACjC,WAAW,EACX,MAAM,GACP,EAAE,uBAAuB,+BAoBzB"}
@@ -1,10 +1,7 @@
1
1
  import { TradeSafetyAnalysis } from '../../types';
2
2
  interface DetailedResultProps {
3
3
  analysis: TradeSafetyAnalysis;
4
- expertAdvice?: string | null;
5
- /** Set to true to show AI companion CTA (for external integrations) */
6
- showCompanionCta?: boolean;
7
4
  }
8
- export declare function DetailedResult({ analysis, expertAdvice, showCompanionCta, }: DetailedResultProps): import("react").JSX.Element;
5
+ export declare function DetailedResult({ analysis }: DetailedResultProps): import("react").JSX.Element;
9
6
  export {};
10
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/DetailedResult/index.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAalD,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAmBD,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,YAAY,EACZ,gBAAwB,GACzB,EAAE,mBAAmB,+BAiFrB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/DetailedResult/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAQ9C,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,mBAAmB,CAAC;CAC/B;AAED,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,mBAAmB,+BA4C/D"}
package/dist/index.d.ts CHANGED
@@ -4,10 +4,8 @@
4
4
  * AI-powered safety analysis for K-pop merchandise trading
5
5
  */
6
6
  export { DetailedResult } from './components/DetailedResult';
7
- export { QuickResultTeaser } from './components/QuickResultTeaser';
8
- export { RiskSignalCard } from './components/RiskSignalCard';
9
7
  export { TradeSafetyRepository } from './repositories';
10
8
  export type { TradeSafetyCheckRepositoryResponse, TradeSafetyCheckFullResponse, QuickCheckRepositoryResponse, } from './repositories/TradeSafetyRepository';
11
9
  export * from './types';
12
- export { TRADE_SAFETY_NS, tradeSafetyTranslations, } from './i18n/translations';
10
+ export { TRADE_SAFETY_NS, tradeSafetyTranslations } from './i18n/translations';
13
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,YAAY,EACV,kCAAkC,EAClC,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,sCAAsC,CAAC;AAG9C,cAAc,SAAS,CAAC;AAIxB,OAAO,EACL,eAAe,EACf,uBAAuB,GACxB,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,YAAY,EACV,kCAAkC,EAClC,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,sCAAsC,CAAC;AAG9C,cAAc,SAAS,CAAC;AAIxB,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC"}
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 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;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),o=require("react-i18next");require("i18next");require("i18next-resources-to-backend");const l=require("./locale.js"),x=require("react"),g=require("@aioia/core"),t=require("zod");function p(e){const s=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const a=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(s,n,a.get?a:{enumerable:!0,get:()=>e[n]})}}return s.default=e,Object.freeze(s)}const c=p(x);function f(e){var s,n,a="";if(typeof e=="string"||typeof e=="number")a+=e;else if(typeof e=="object")if(Array.isArray(e)){var i=e.length;for(s=0;s<i;s++)e[s]&&(n=f(e[s]))&&(a&&(a+=" "),a+=n)}else for(n in e)e[n]&&(a&&(a+=" "),a+=n);return a}function _(){for(var e,s,n=0,a="",i=arguments.length;n<i;n++)(e=arguments[n])&&(s=f(e))&&(a&&(a+=" "),a+=s);return a}const b={default:"border-base-300",error:"border-error bg-error/10",warning:"border-warning bg-warning/10",success:"border-success bg-success/10",info:"border-info bg-info/10"};function u({title:e,icon:s,variant:n="default",children:a}){return a?r.jsxs("div",{className:_("rounded-lg border p-6",b[n]),children:[e&&r.jsxs("h2",{className:"mb-2 flex items-center gap-2 font-bold",children:[e,s]}),a]}):null}function j({data:e}){const{t:s,i18n:n}=o.useTranslation(l.TRADE_SAFETY_NS);return e?r.jsxs(u,{title:s("result.priceAnalysis"),children:[e.market_price_range&&r.jsxs("div",{className:"mb-2",children:[r.jsx("h3",{className:"text-sm font-bold",children:s("result.marketPrice")}),r.jsx("p",{className:"text-xs",children:e.market_price_range})]}),e.offered_price&&r.jsxs("div",{className:"mb-2",children:[r.jsx("h3",{className:"text-sm font-bold",children:s("result.offeredPrice")}),r.jsx("p",{className:"text-xs",children:new Intl.NumberFormat(n.language,{style:"currency",currency:e.currency||"USD"}).format(e.offered_price)})]}),e.price_assessment&&r.jsxs("div",{children:[r.jsx("h3",{className:"text-sm font-bold",children:s("result.priceAssessment")}),r.jsx("p",{className:"text-xs",children:e.price_assessment})]})]}):null}function S({recommendation:e}){const{t:s}=o.useTranslation(l.TRADE_SAFETY_NS);return e?r.jsx(u,{title:s("result.recommendation"),children:r.jsx("p",{className:"text-xs",children:e})}):null}function v({title:e,titleId:s,...n},a){return c.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},n),e?c.createElement("title",{id:s},e):null,c.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 y=c.forwardRef(v);function z({title:e,titleId:s,...n},a){return c.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},n),e?c.createElement("title",{id:s},e):null,c.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 w=c.forwardRef(z);function N({title:e,titleId:s,...n},a){return c.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},n),e?c.createElement("title",{id:s},e):null,c.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.25Zm-2.625 6c-.54 0-.828.419-.936.634a1.96 1.96 0 0 0-.189.866c0 .298.059.605.189.866.108.215.395.634.936.634.54 0 .828-.419.936-.634.13-.26.189-.568.189-.866 0-.298-.059-.605-.189-.866-.108-.215-.395-.634-.936-.634Zm4.314.634c.108-.215.395-.634.936-.634.54 0 .828.419.936.634.13.26.189.568.189.866 0 .298-.059.605-.189.866-.108.215-.395.634-.936.634-.54 0-.828-.419-.936-.634a1.96 1.96 0 0 1-.189-.866c0-.298.059-.605.189-.866Zm-4.34 7.964a.75.75 0 0 1-1.061-1.06 5.236 5.236 0 0 1 3.73-1.538 5.236 5.236 0 0 1 3.695 1.538.75.75 0 1 1-1.061 1.06 3.736 3.736 0 0 0-2.639-1.098 3.736 3.736 0 0 0-2.664 1.098Z",clipRule:"evenodd"}))}const R=c.forwardRef(N);function T({title:e,titleId:s,...n},a){return c.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},n),e?c.createElement("title",{id:s},e):null,c.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 E=c.forwardRef(T);function k({items:e}){const{t:s}=o.useTranslation(l.TRADE_SAFETY_NS);return e.length===0?null:r.jsxs("div",{className:"mb-4",children:[r.jsxs("h2",{className:"flex items-center gap-1 py-4 font-bold",children:[s("result.safetyChecklist")," ",r.jsx(y,{className:"size-6"})]}),r.jsx(u,{variant:"info",children:e.map((n,a)=>r.jsxs("label",{className:"label w-fit cursor-pointer gap-2",children:[r.jsx("input",{type:"checkbox",className:"checkbox rounded-full [--chkbg:theme(colors.neutral)] [--chkfg:theme(colors.neutral-content)]"}),r.jsx("span",{className:"label-text",children:n})]},a))})]})}const A={error:R,warning:w,success:E},D={error:"result.riskSignals",warning:"result.cautions",success:"result.safeIndicators"};function d({signals:e,variant:s="error"}){const{t:n}=o.useTranslation(l.TRADE_SAFETY_NS);if(e.length===0)return null;const a=A[s];return r.jsxs("div",{className:"mb-4",children:[r.jsxs("h2",{className:"flex items-center gap-1 py-4 font-bold",children:[n(D[s])," ",r.jsx(a,{className:"size-6"})]}),r.jsx("div",{className:"space-y-3",children:e.map((i,h)=>r.jsx(u,{variant:s,children:r.jsxs("div",{className:"space-y-2",children:[r.jsxs("div",{children:[r.jsx("h3",{className:"text-sm font-bold",children:i.title}),r.jsx("p",{className:"text-xs",children:i.description})]}),r.jsxs("div",{children:[r.jsx("h3",{className:"text-sm font-bold",children:n("result.whatToDo")}),r.jsx("p",{className:"text-xs",children:i.what_to_do})]})]})},h))})]})}function C({translation:e,nuance:s}){const{t:n}=o.useTranslation(l.TRADE_SAFETY_NS);return r.jsxs(u,{title:n("result.translation"),children:[e&&r.jsxs("div",{className:"mb-2",children:[r.jsx("h3",{className:"text-sm font-bold",children:n("result.translationTitle")}),r.jsx("p",{className:"text-xs",children:e})]}),s&&r.jsxs("div",{children:[r.jsx("h3",{className:"text-sm font-bold",children:n("result.nuanceTitle")}),r.jsx("p",{className:"text-xs",children:s})]})]})}function F({analysis:e}){return r.jsxs("div",{children:[r.jsxs("div",{className:"mb-4 flex flex-col gap-4",children:[(e.translation||e.nuance_explanation)&&r.jsx(C,{translation:e.translation,nuance:e.nuance_explanation}),e.price_analysis&&r.jsx(j,{data:e.price_analysis}),e.recommendation&&r.jsx(S,{recommendation:e.recommendation})]}),e.risk_signals.length>0&&r.jsx(d,{signals:e.risk_signals,variant:"error"}),e.cautions.length>0&&r.jsx(d,{signals:e.cautions,variant:"warning"}),e.safe_indicators.length>0&&r.jsx(d,{signals:e.safe_indicators,variant:"success"}),e.safety_checklist.length>0&&r.jsx(k,{items:e.safety_checklist})]})}const m=t.z.object({category:t.z.enum(["payment","seller","platform","price","content"]),severity:t.z.enum(["high","medium","low"]),title:t.z.string(),description:t.z.string(),what_to_do:t.z.string()}),O=t.z.object({market_price_range:t.z.string().nullish(),offered_price:t.z.number().nullish(),currency:t.z.string().nullish(),price_assessment:t.z.string(),warnings:t.z.array(t.z.string())}),Z=t.z.object({translation:t.z.string().nullish(),nuance_explanation:t.z.string().nullish(),risk_signals:t.z.array(m),cautions:t.z.array(m),safe_indicators:t.z.array(m),price_analysis:O,safety_checklist:t.z.array(t.z.string()),risk_score:t.z.number(),recommendation:t.z.string(),emotional_support:t.z.string()}),q=t.z.object({risk_signals_count:t.z.number(),cautions_count:t.z.number(),safe_indicators_count:t.z.number()}),M=t.z.object({id:t.z.string(),user_id:t.z.string().nullish(),input_text:t.z.string(),llm_analysis:Z,risk_score:t.z.number(),expert_advice:t.z.string().nullish(),expert_reviewed:t.z.boolean(),expert_reviewed_at:t.z.string().nullish(),expert_reviewed_by:t.z.string().nullish(),created_at:t.z.string(),updated_at:t.z.string()}),I=t.z.union([M,t.z.object({id:t.z.string(),quick_summary:q,signup_required:t.z.literal(!0)})]);class Y extends g.BaseCrudRepository{constructor(){super(...arguments),this.resource="trade-safety"}getDataSchema(){return I}}const B={high:70,medium:40};exports.TRADE_SAFETY_NS=l.TRADE_SAFETY_NS;exports.tradeSafetyTranslations=l.tradeSafetyTranslations;exports.DetailedResult=F;exports.RISK_SCORE_THRESHOLDS=B;exports.TradeSafetyRepository=Y;
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\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]}
1
+ {"version":3,"file":"index.js","sources":["../node_modules/clsx/dist/clsx.mjs","../src/components/DetailedResult/AnalysisCard.tsx","../src/components/DetailedResult/PriceAnalysisSection.tsx","../src/components/DetailedResult/RecommendationSection.tsx","../node_modules/@heroicons/react/24/solid/esm/CheckBadgeIcon.js","../node_modules/@heroicons/react/24/solid/esm/ExclamationTriangleIcon.js","../node_modules/@heroicons/react/24/solid/esm/FaceFrownIcon.js","../node_modules/@heroicons/react/24/solid/esm/ShieldExclamationIcon.js","../src/components/DetailedResult/SafetyChecklistSection.tsx","../src/components/DetailedResult/SignalsSection.tsx","../src/components/DetailedResult/TranslationSection.tsx","../src/components/DetailedResult/index.tsx","../src/repositories/TradeSafetyRepository.ts","../src/types.ts"],"sourcesContent":["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;","import clsx from \"clsx\";\n\ninterface AnalysisCardProps {\n title?: string;\n icon?: React.ReactNode;\n variant?: \"default\" | \"error\" | \"warning\" | \"success\" | \"info\";\n children: React.ReactNode;\n}\n\nconst variantStyles = {\n default: \"border-base-300\",\n error: \"border-error bg-error/10\",\n warning: \"border-warning bg-warning/10\",\n success: \"border-success bg-success/10\",\n info: \"border-info bg-info/10\",\n};\n\nexport function AnalysisCard({\n title,\n icon,\n variant = \"default\",\n children,\n}: AnalysisCardProps) {\n if (!children) return null;\n\n return (\n <div className={clsx(\"rounded-lg border p-6\", variantStyles[variant])}>\n {title && (\n <h2 className=\"mb-2 flex items-center gap-2 font-bold\">\n {title}\n {icon}\n </h2>\n )}\n {children}\n </div>\n );\n}\n","\"use client\";\n\nimport { useTranslation } from \"react-i18next\";\n\nimport { TRADE_SAFETY_NS } from \"@/i18n\";\nimport { PriceAnalysis } from \"@/types\";\n\nimport { AnalysisCard } from \"./AnalysisCard\";\n\ninterface PriceAnalysisSectionProps {\n data?: PriceAnalysis;\n}\n\nexport function PriceAnalysisSection({ data }: PriceAnalysisSectionProps) {\n const { t, i18n } = useTranslation(TRADE_SAFETY_NS);\n if (!data) return null;\n\n return (\n <AnalysisCard title={t(\"result.priceAnalysis\")}>\n {data.market_price_range && (\n <div className=\"mb-2\">\n <h3 className=\"text-sm font-bold\">{t(\"result.marketPrice\")}</h3>\n <p className=\"text-xs\">{data.market_price_range}</p>\n </div>\n )}\n\n {data.offered_price && (\n <div className=\"mb-2\">\n <h3 className=\"text-sm font-bold\">{t(\"result.offeredPrice\")}</h3>\n <p className=\"text-xs\">\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\n {data.price_assessment && (\n <div>\n <h3 className=\"text-sm font-bold\">{t(\"result.priceAssessment\")}</h3>\n <p className=\"text-xs\">{data.price_assessment}</p>\n </div>\n )}\n </AnalysisCard>\n );\n}\n","\"use client\";\n\nimport { useTranslation } from \"react-i18next\";\n\nimport { TRADE_SAFETY_NS } from \"@/i18n\";\n\nimport { AnalysisCard } from \"./AnalysisCard\";\n\ninterface RecommendationSectionProps {\n recommendation?: string;\n}\n\nexport function RecommendationSection({\n recommendation,\n}: RecommendationSectionProps) {\n const { t } = useTranslation(TRADE_SAFETY_NS);\n\n if (!recommendation) return null;\n\n return (\n <AnalysisCard title={t(\"result.recommendation\")}>\n <p className=\"text-xs\">{recommendation}</p>\n </AnalysisCard>\n );\n}\n","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 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 FaceFrownIcon({\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: \"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.25Zm-2.625 6c-.54 0-.828.419-.936.634a1.96 1.96 0 0 0-.189.866c0 .298.059.605.189.866.108.215.395.634.936.634.54 0 .828-.419.936-.634.13-.26.189-.568.189-.866 0-.298-.059-.605-.189-.866-.108-.215-.395-.634-.936-.634Zm4.314.634c.108-.215.395-.634.936-.634.54 0 .828.419.936.634.13.26.189.568.189.866 0 .298-.059.605-.189.866-.108.215-.395.634-.936.634-.54 0-.828-.419-.936-.634a1.96 1.96 0 0 1-.189-.866c0-.298.059-.605.189-.866Zm-4.34 7.964a.75.75 0 0 1-1.061-1.06 5.236 5.236 0 0 1 3.73-1.538 5.236 5.236 0 0 1 3.695 1.538.75.75 0 1 1-1.061 1.06 3.736 3.736 0 0 0-2.639-1.098 3.736 3.736 0 0 0-2.664 1.098Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(FaceFrownIcon);\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;","\"use client\";\n\nimport { CheckBadgeIcon } from \"@heroicons/react/24/solid\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { TRADE_SAFETY_NS } from \"@/i18n\";\n\nimport { AnalysisCard } from \"./AnalysisCard\";\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 <div className=\"mb-4\">\n <h2 className=\"flex items-center gap-1 py-4 font-bold\">\n {t(\"result.safetyChecklist\")} <CheckBadgeIcon className=\"size-6\" />\n </h2>\n <AnalysisCard variant=\"info\">\n {items.map((item, idx) => (\n <label key={idx} className=\"label w-fit cursor-pointer gap-2\">\n <input\n type=\"checkbox\"\n className=\"checkbox rounded-full [--chkbg:theme(colors.neutral)] [--chkfg:theme(colors.neutral-content)]\"\n />\n <span className=\"label-text\">{item}</span>\n </label>\n ))}\n </AnalysisCard>\n </div>\n );\n}\n","\"use client\";\n\nimport {\n ExclamationTriangleIcon,\n FaceFrownIcon,\n ShieldExclamationIcon,\n} from \"@heroicons/react/24/solid\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { TRADE_SAFETY_NS } from \"@/i18n\";\nimport { RiskSignal } from \"@/types\";\n\nimport { AnalysisCard } from \"./AnalysisCard\";\n\ninterface SignalsSectionProps {\n signals: RiskSignal[];\n variant?: \"error\" | \"warning\" | \"success\";\n}\n\nconst severityIcon = {\n error: FaceFrownIcon,\n warning: ExclamationTriangleIcon,\n success: ShieldExclamationIcon,\n};\n\nconst severityTitle = {\n error: \"result.riskSignals\",\n warning: \"result.cautions\",\n success: \"result.safeIndicators\",\n};\n\nexport function SignalsSection({\n signals,\n variant = \"error\",\n}: SignalsSectionProps) {\n const { t } = useTranslation(TRADE_SAFETY_NS);\n\n if (signals.length === 0) return null;\n\n const Icon = severityIcon[variant];\n\n return (\n <div className=\"mb-4\">\n <h2 className=\"flex items-center gap-1 py-4 font-bold\">\n {t(severityTitle[variant])} <Icon className=\"size-6\" />\n </h2>\n <div className=\"space-y-3\">\n {signals.map((signal, idx) => (\n <AnalysisCard key={idx} variant={variant}>\n <div className=\"space-y-2\">\n <div>\n <h3 className=\"text-sm font-bold\">{signal.title}</h3>\n <p className=\"text-xs\">{signal.description}</p>\n </div>\n <div>\n <h3 className=\"text-sm font-bold\">{t(\"result.whatToDo\")}</h3>\n <p className=\"text-xs\">{signal.what_to_do}</p>\n </div>\n </div>\n </AnalysisCard>\n ))}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { useTranslation } from \"react-i18next\";\n\nimport { TRADE_SAFETY_NS } from \"@/i18n\";\n\nimport { AnalysisCard } from \"./AnalysisCard\";\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 return (\n <AnalysisCard title={t(\"result.translation\")}>\n {translation && (\n <div className=\"mb-2\">\n <h3 className=\"text-sm font-bold\">{t(\"result.translationTitle\")}</h3>\n <p className=\"text-xs\">{translation}</p>\n </div>\n )}\n\n {nuance && (\n <div>\n <h3 className=\"text-sm font-bold\">{t(\"result.nuanceTitle\")}</h3>\n <p className=\"text-xs\">{nuance}</p>\n </div>\n )}\n </AnalysisCard>\n );\n}\n","\"use client\";\n\nimport { TradeSafetyAnalysis } from \"@/types\";\n\nimport { PriceAnalysisSection } from \"./PriceAnalysisSection\";\nimport { RecommendationSection } from \"./RecommendationSection\";\nimport { SafetyChecklistSection } from \"./SafetyChecklistSection\";\nimport { SignalsSection } from \"./SignalsSection\";\nimport { TranslationSection } from \"./TranslationSection\";\n\ninterface DetailedResultProps {\n analysis: TradeSafetyAnalysis;\n}\n\nexport function DetailedResult({ analysis }: DetailedResultProps) {\n return (\n <div>\n <div className=\"mb-4 flex flex-col gap-4\">\n {/* 번역 및 뉘앙스 */}\n {(analysis.translation || analysis.nuance_explanation) && (\n <TranslationSection\n translation={analysis.translation}\n nuance={analysis.nuance_explanation}\n />\n )}\n\n {/* 가격 분석 */}\n {analysis.price_analysis && (\n <PriceAnalysisSection data={analysis.price_analysis} />\n )}\n\n {/* 종합 추천 */}\n {analysis.recommendation && (\n <RecommendationSection recommendation={analysis.recommendation} />\n )}\n </div>\n\n {/* 위험 신호 */}\n {analysis.risk_signals.length > 0 && (\n <SignalsSection signals={analysis.risk_signals} variant=\"error\" />\n )}\n\n {/* 주의 사항 */}\n {analysis.cautions.length > 0 && (\n <SignalsSection signals={analysis.cautions} variant=\"warning\" />\n )}\n\n {/* 안전 지표 */}\n {analysis.safe_indicators.length > 0 && (\n <SignalsSection signals={analysis.safe_indicators} variant=\"success\" />\n )}\n\n {/* 안전 체크리스트 */}\n {analysis.safety_checklist.length > 0 && (\n <SafetyChecklistSection items={analysis.safety_checklist} />\n )}\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":["r","t","f","n","o","clsx","variantStyles","AnalysisCard","title","icon","variant","children","jsxs","PriceAnalysisSection","data","i18n","useTranslation","TRADE_SAFETY_NS","jsx","RecommendationSection","recommendation","CheckBadgeIcon","titleId","props","svgRef","React","ForwardRef","ExclamationTriangleIcon","FaceFrownIcon","ShieldExclamationIcon","SafetyChecklistSection","items","item","idx","severityIcon","severityTitle","SignalsSection","signals","Icon","signal","TranslationSection","translation","nuance","DetailedResult","analysis","riskSignalSchema","z","priceAnalysisSchema","tradeSafetyAnalysisSchema","quickSummarySchema","tradeSafetyCheckResponseSchema","tradeSafetyCheckRepositoryResponseSchema","TradeSafetyRepository","BaseCrudRepository","RISK_SCORE_THRESHOLDS"],"mappings":"ikBAAA,SAASA,EAAE,EAAE,CAAC,IAAIC,EAAEC,EAAEC,EAAE,GAAG,GAAa,OAAO,GAAjB,UAA8B,OAAO,GAAjB,SAAmBA,GAAG,UAAoB,OAAO,GAAjB,SAAmB,GAAG,MAAM,QAAQ,CAAC,EAAE,CAAC,IAAIC,EAAE,EAAE,OAAO,IAAIH,EAAE,EAAEA,EAAEG,EAAEH,IAAI,EAAEA,CAAC,IAAIC,EAAEF,EAAE,EAAEC,CAAC,CAAC,KAAKE,IAAIA,GAAG,KAAKA,GAAGD,EAAE,KAAM,KAAIA,KAAK,EAAE,EAAEA,CAAC,IAAIC,IAAIA,GAAG,KAAKA,GAAGD,GAAG,OAAOC,CAAC,CAAQ,SAASE,GAAM,CAAC,QAAQ,EAAEJ,EAAEC,EAAE,EAAEC,EAAE,GAAGC,EAAE,UAAU,OAAOF,EAAEE,EAAEF,KAAK,EAAE,UAAUA,CAAC,KAAKD,EAAED,EAAE,CAAC,KAAKG,IAAIA,GAAG,KAAKA,GAAGF,GAAG,OAAOE,CAAC,CCS/W,MAAMG,EAAgB,CACpB,QAAS,kBACT,MAAO,2BACP,QAAS,+BACT,QAAS,+BACT,KAAM,wBACR,EAEO,SAASC,EAAa,CAC3B,MAAAC,EACA,KAAAC,EACA,QAAAC,EAAU,UACV,SAAAC,CACF,EAAsB,CACpB,OAAKA,EAGHC,EAAAA,KAAC,OAAI,UAAWP,EAAK,wBAAyBC,EAAcI,CAAO,CAAC,EACjE,SAAA,CAAAF,GACCI,EAAAA,KAAC,KAAA,CAAG,UAAU,yCACX,SAAA,CAAAJ,EACAC,CAAA,EACH,EAEDE,CAAA,EACH,EAXoB,IAaxB,CCvBO,SAASE,EAAqB,CAAE,KAAAC,GAAmC,CACxE,KAAM,CAAE,EAAAb,EAAG,KAAAc,GAASC,EAAAA,eAAeC,EAAAA,eAAe,EAClD,OAAKH,EAGHF,EAAAA,KAACL,EAAA,CAAa,MAAON,EAAE,sBAAsB,EAC1C,SAAA,CAAAa,EAAK,oBACJF,OAAC,MAAA,CAAI,UAAU,OACb,SAAA,CAAAM,MAAC,KAAA,CAAG,UAAU,oBAAqB,SAAAjB,EAAE,oBAAoB,EAAE,EAC3DiB,EAAAA,IAAC,IAAA,CAAE,UAAU,UAAW,WAAK,kBAAA,CAAmB,CAAA,EAClD,EAGDJ,EAAK,eACJF,OAAC,MAAA,CAAI,UAAU,OACb,SAAA,CAAAM,MAAC,KAAA,CAAG,UAAU,oBAAqB,SAAAjB,EAAE,qBAAqB,EAAE,EAC5DiB,MAAC,KAAE,UAAU,UACV,aAAI,KAAK,aAAaH,EAAK,SAAU,CACpC,MAAO,WACP,SAAUD,EAAK,UAAY,KAAA,CAC5B,EAAE,OAAOA,EAAK,aAAa,CAAA,CAC9B,CAAA,EACF,EAGDA,EAAK,kBACJF,EAAAA,KAAC,MAAA,CACC,SAAA,CAAAM,MAAC,KAAA,CAAG,UAAU,oBAAqB,SAAAjB,EAAE,wBAAwB,EAAE,EAC/DiB,EAAAA,IAAC,IAAA,CAAE,UAAU,UAAW,WAAK,gBAAA,CAAiB,CAAA,CAAA,CAChD,CAAA,EAEJ,EA7BgB,IA+BpB,CClCO,SAASC,EAAsB,CACpC,eAAAC,CACF,EAA+B,CAC7B,KAAM,CAAE,EAAAnB,CAAA,EAAMe,EAAAA,eAAeC,iBAAe,EAE5C,OAAKG,EAGHF,EAAAA,IAACX,EAAA,CAAa,MAAON,EAAE,uBAAuB,EAC5C,SAAAiB,EAAAA,IAAC,IAAA,CAAE,UAAU,UAAW,SAAAE,CAAA,CAAe,EACzC,EAL0B,IAO9B,CCvBA,SAASC,EAAe,CACtB,MAAAb,EACA,QAAAc,EACA,GAAGC,CACL,EAAGC,EAAQ,CACT,OAAoBC,EAAM,cAAc,MAAO,OAAO,OAAO,CAC3D,MAAO,6BACP,QAAS,YACT,KAAM,eACN,cAAe,OACf,YAAa,OACb,IAAKD,EACL,kBAAmBF,CACvB,EAAKC,CAAK,EAAGf,EAAqBiB,EAAM,cAAc,QAAS,CAC3D,GAAIH,CACR,EAAKd,CAAK,EAAI,KAAmBiB,EAAM,cAAc,OAAQ,CACzD,SAAU,UACV,EAAG,ukBACH,SAAU,SACd,CAAG,CAAC,CACJ,CACA,MAAMC,EAA2BD,EAAM,WAAWJ,CAAc,ECrBhE,SAASM,EAAwB,CAC/B,MAAAnB,EACA,QAAAc,EACA,GAAGC,CACL,EAAGC,EAAQ,CACT,OAAoBC,EAAM,cAAc,MAAO,OAAO,OAAO,CAC3D,MAAO,6BACP,QAAS,YACT,KAAM,eACN,cAAe,OACf,YAAa,OACb,IAAKD,EACL,kBAAmBF,CACvB,EAAKC,CAAK,EAAGf,EAAqBiB,EAAM,cAAc,QAAS,CAC3D,GAAIH,CACR,EAAKd,CAAK,EAAI,KAAmBiB,EAAM,cAAc,OAAQ,CACzD,SAAU,UACV,EAAG,qPACH,SAAU,SACd,CAAG,CAAC,CACJ,CACA,MAAMC,EAA2BD,EAAM,WAAWE,CAAuB,ECrBzE,SAASC,EAAc,CACrB,MAAApB,EACA,QAAAc,EACA,GAAGC,CACL,EAAGC,EAAQ,CACT,OAAoBC,EAAM,cAAc,MAAO,OAAO,OAAO,CAC3D,MAAO,6BACP,QAAS,YACT,KAAM,eACN,cAAe,OACf,YAAa,OACb,IAAKD,EACL,kBAAmBF,CACvB,EAAKC,CAAK,EAAGf,EAAqBiB,EAAM,cAAc,QAAS,CAC3D,GAAIH,CACR,EAAKd,CAAK,EAAI,KAAmBiB,EAAM,cAAc,OAAQ,CACzD,SAAU,UACV,EAAG,osBACH,SAAU,SACd,CAAG,CAAC,CACJ,CACA,MAAMC,EAA2BD,EAAM,WAAWG,CAAa,ECrB/D,SAASC,EAAsB,CAC7B,MAAArB,EACA,QAAAc,EACA,GAAGC,CACL,EAAGC,EAAQ,CACT,OAAoBC,EAAM,cAAc,MAAO,OAAO,OAAO,CAC3D,MAAO,6BACP,QAAS,YACT,KAAM,eACN,cAAe,OACf,YAAa,OACb,IAAKD,EACL,kBAAmBF,CACvB,EAAKC,CAAK,EAAGf,EAAqBiB,EAAM,cAAc,QAAS,CAC3D,GAAIH,CACR,EAAKd,CAAK,EAAI,KAAmBiB,EAAM,cAAc,OAAQ,CACzD,SAAU,UACV,EAAG,ieACH,SAAU,SACd,CAAG,CAAC,CACJ,CACA,MAAMC,EAA2BD,EAAM,WAAWI,CAAqB,ECThE,SAASC,EAAuB,CAAE,MAAAC,GAAsC,CAC7E,KAAM,CAAE,EAAA9B,CAAA,EAAMe,EAAAA,eAAeC,iBAAe,EAE5C,OAAIc,EAAM,SAAW,EAAU,KAG7BnB,EAAAA,KAAC,MAAA,CAAI,UAAU,OACb,SAAA,CAAAA,EAAAA,KAAC,KAAA,CAAG,UAAU,yCACX,SAAA,CAAAX,EAAE,wBAAwB,EAAE,IAACiB,EAAAA,IAACG,EAAA,CAAe,UAAU,QAAA,CAAS,CAAA,EACnE,EACAH,EAAAA,IAACX,EAAA,CAAa,QAAQ,OACnB,SAAAwB,EAAM,IAAI,CAACC,EAAMC,IAChBrB,EAAAA,KAAC,QAAA,CAAgB,UAAU,mCACzB,SAAA,CAAAM,EAAAA,IAAC,QAAA,CACC,KAAK,WACL,UAAU,+FAAA,CAAA,EAEZA,EAAAA,IAAC,OAAA,CAAK,UAAU,aAAc,SAAAc,CAAA,CAAK,CAAA,CAAA,EALzBC,CAMZ,CACD,CAAA,CACH,CAAA,EACF,CAEJ,CCjBA,MAAMC,EAAe,CACnB,MAAON,EACP,QAASD,EACT,QAASE,CACX,EAEMM,EAAgB,CACpB,MAAO,qBACP,QAAS,kBACT,QAAS,uBACX,EAEO,SAASC,EAAe,CAC7B,QAAAC,EACA,QAAA3B,EAAU,OACZ,EAAwB,CACtB,KAAM,CAAE,EAAAT,CAAA,EAAMe,EAAAA,eAAeC,iBAAe,EAE5C,GAAIoB,EAAQ,SAAW,EAAG,OAAO,KAEjC,MAAMC,EAAOJ,EAAaxB,CAAO,EAEjC,OACEE,EAAAA,KAAC,MAAA,CAAI,UAAU,OACb,SAAA,CAAAA,EAAAA,KAAC,KAAA,CAAG,UAAU,yCACX,SAAA,CAAAX,EAAEkC,EAAczB,CAAO,CAAC,EAAE,IAACQ,EAAAA,IAACoB,EAAA,CAAK,UAAU,QAAA,CAAS,CAAA,EACvD,EACApB,MAAC,MAAA,CAAI,UAAU,YACZ,WAAQ,IAAI,CAACqB,EAAQN,UACnB1B,EAAA,CAAuB,QAAAG,EACtB,SAAAE,EAAAA,KAAC,MAAA,CAAI,UAAU,YACb,SAAA,CAAAA,OAAC,MAAA,CACC,SAAA,CAAAM,EAAAA,IAAC,KAAA,CAAG,UAAU,oBAAqB,SAAAqB,EAAO,MAAM,EAChDrB,EAAAA,IAAC,IAAA,CAAE,UAAU,UAAW,WAAO,WAAA,CAAY,CAAA,EAC7C,SACC,MAAA,CACC,SAAA,CAAAA,MAAC,KAAA,CAAG,UAAU,oBAAqB,SAAAjB,EAAE,iBAAiB,EAAE,EACxDiB,EAAAA,IAAC,IAAA,CAAE,UAAU,UAAW,WAAO,UAAA,CAAW,CAAA,CAAA,CAC5C,CAAA,EACF,CAAA,EAViBe,CAWnB,CACD,CAAA,CACH,CAAA,EACF,CAEJ,CCnDO,SAASO,EAAmB,CACjC,YAAAC,EACA,OAAAC,CACF,EAA4B,CAC1B,KAAM,CAAE,EAAAzC,CAAA,EAAMe,EAAAA,eAAeC,iBAAe,EAE5C,OACEL,EAAAA,KAACL,EAAA,CAAa,MAAON,EAAE,oBAAoB,EACxC,SAAA,CAAAwC,GACC7B,EAAAA,KAAC,MAAA,CAAI,UAAU,OACb,SAAA,CAAAM,MAAC,KAAA,CAAG,UAAU,oBAAqB,SAAAjB,EAAE,yBAAyB,EAAE,EAChEiB,EAAAA,IAAC,IAAA,CAAE,UAAU,UAAW,SAAAuB,CAAA,CAAY,CAAA,EACtC,EAGDC,UACE,MAAA,CACC,SAAA,CAAAxB,MAAC,KAAA,CAAG,UAAU,oBAAqB,SAAAjB,EAAE,oBAAoB,EAAE,EAC3DiB,EAAAA,IAAC,IAAA,CAAE,UAAU,UAAW,SAAAwB,CAAA,CAAO,CAAA,CAAA,CACjC,CAAA,EAEJ,CAEJ,CCtBO,SAASC,EAAe,CAAE,SAAAC,GAAiC,CAChE,cACG,MAAA,CACC,SAAA,CAAAhC,EAAAA,KAAC,MAAA,CAAI,UAAU,2BAEX,SAAA,EAAAgC,EAAS,aAAeA,EAAS,qBACjC1B,EAAAA,IAACsB,EAAA,CACC,YAAaI,EAAS,YACtB,OAAQA,EAAS,kBAAA,CAAA,EAKpBA,EAAS,gBACR1B,MAACL,EAAA,CAAqB,KAAM+B,EAAS,eAAgB,EAItDA,EAAS,gBACR1B,MAACC,EAAA,CAAsB,eAAgByB,EAAS,cAAA,CAAgB,CAAA,EAEpE,EAGCA,EAAS,aAAa,OAAS,GAC9B1B,EAAAA,IAACkB,GAAe,QAASQ,EAAS,aAAc,QAAQ,OAAA,CAAQ,EAIjEA,EAAS,SAAS,OAAS,GAC1B1B,EAAAA,IAACkB,GAAe,QAASQ,EAAS,SAAU,QAAQ,SAAA,CAAU,EAI/DA,EAAS,gBAAgB,OAAS,GACjC1B,EAAAA,IAACkB,GAAe,QAASQ,EAAS,gBAAiB,QAAQ,SAAA,CAAU,EAItEA,EAAS,iBAAiB,OAAS,SACjCd,EAAA,CAAuB,MAAOc,EAAS,gBAAA,CAAkB,CAAA,EAE9D,CAEJ,CCtDA,MAAMC,EAAmBC,EAAAA,EAAE,OAAO,CAChC,SAAUA,EAAAA,EAAE,KAAK,CAAC,UAAW,SAAU,WAAY,QAAS,SAAS,CAAC,EACtE,SAAUA,EAAAA,EAAE,KAAK,CAAC,OAAQ,SAAU,KAAK,CAAC,EAC1C,MAAOA,EAAAA,EAAE,OAAA,EACT,YAAaA,EAAAA,EAAE,OAAA,EACf,WAAYA,EAAAA,EAAE,OAAA,CAChB,CAAC,EAEKC,EAAsBD,EAAAA,EAAE,OAAO,CACnC,mBAAoBA,EAAAA,EAAE,OAAA,EAAS,QAAA,EAC/B,cAAeA,EAAAA,EAAE,OAAA,EAAS,QAAA,EAC1B,SAAUA,EAAAA,EAAE,OAAA,EAAS,QAAA,EACrB,iBAAkBA,EAAAA,EAAE,OAAA,EACpB,SAAUA,EAAAA,EAAE,MAAMA,EAAAA,EAAE,QAAQ,CAC9B,CAAC,EAEKE,EAA4BF,EAAAA,EAAE,OAAO,CACzC,YAAaA,EAAAA,EAAE,OAAA,EAAS,QAAA,EACxB,mBAAoBA,EAAAA,EAAE,OAAA,EAAS,QAAA,EAC/B,aAAcA,EAAAA,EAAE,MAAMD,CAAgB,EACtC,SAAUC,EAAAA,EAAE,MAAMD,CAAgB,EAClC,gBAAiBC,EAAAA,EAAE,MAAMD,CAAgB,EACzC,eAAgBE,EAChB,iBAAkBD,EAAAA,EAAE,MAAMA,EAAAA,EAAE,QAAQ,EACpC,WAAYA,EAAAA,EAAE,OAAA,EACd,eAAgBA,EAAAA,EAAE,OAAA,EAClB,kBAAmBA,EAAAA,EAAE,OAAA,CACvB,CAAC,EAEKG,EAAqBH,EAAAA,EAAE,OAAO,CAClC,mBAAoBA,EAAAA,EAAE,OAAA,EACtB,eAAgBA,EAAAA,EAAE,OAAA,EAClB,sBAAuBA,EAAAA,EAAE,OAAA,CAC3B,CAAC,EAEKI,EAAiCJ,EAAAA,EAAE,OAAO,CAC9C,GAAIA,EAAAA,EAAE,OAAA,EACN,QAASA,EAAAA,EAAE,OAAA,EAAS,QAAA,EACpB,WAAYA,EAAAA,EAAE,OAAA,EACd,aAAcE,EACd,WAAYF,EAAAA,EAAE,OAAA,EACd,cAAeA,EAAAA,EAAE,OAAA,EAAS,QAAA,EAC1B,gBAAiBA,EAAAA,EAAE,QAAA,EACnB,mBAAoBA,EAAAA,EAAE,OAAA,EAAS,QAAA,EAC/B,mBAAoBA,EAAAA,EAAE,OAAA,EAAS,QAAA,EAC/B,WAAYA,EAAAA,EAAE,OAAA,EACd,WAAYA,EAAAA,EAAE,OAAA,CAChB,CAAC,EAwBKK,EAA2CL,EAAAA,EAAE,MAAM,CACvDI,EACAJ,EAAAA,EAAE,OAAO,CACP,GAAIA,EAAAA,EAAE,OAAA,EACN,cAAeG,EACf,gBAAiBH,EAAAA,EAAE,QAAQ,EAAI,CAAA,CAChC,CACH,CAAC,EAEM,MAAMM,UAA8BC,EAAAA,kBAAuD,CAA3F,aAAA,CAAA,MAAA,GAAA,SAAA,EACL,KAAS,SAAW,cAAA,CAEV,eAAgB,CACxB,OAAOF,CACT,CACF,CC9EO,MAAMG,EAAwB,CACnC,KAAM,GACN,OAAQ,EAEV","x_google_ignoreList":[0,4,5,6,7]}