@aigentyc/chat-sdk 0.1.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.
- package/LICENSE +21 -0
- package/README.md +156 -0
- package/dist/JsonRenderResult-Ftw4AKwb.d.cts +18 -0
- package/dist/JsonRenderResult-Ftw4AKwb.d.ts +18 -0
- package/dist/JsonRenderResult-GQOYPLVH.cjs +15 -0
- package/dist/JsonRenderResult-GQOYPLVH.cjs.map +1 -0
- package/dist/JsonRenderResult-ZFJ6VWMS.js +6 -0
- package/dist/JsonRenderResult-ZFJ6VWMS.js.map +1 -0
- package/dist/SlotsContext-CBtt36al.d.ts +148 -0
- package/dist/SlotsContext-CHvISDJT.d.cts +148 -0
- package/dist/VisualizationRenderer-FNFYNN66.js +5 -0
- package/dist/VisualizationRenderer-FNFYNN66.js.map +1 -0
- package/dist/VisualizationRenderer-VKMZXRUX.cjs +20 -0
- package/dist/VisualizationRenderer-VKMZXRUX.cjs.map +1 -0
- package/dist/ai-elements.cjs +4608 -0
- package/dist/ai-elements.cjs.map +1 -0
- package/dist/ai-elements.d.cts +897 -0
- package/dist/ai-elements.d.ts +897 -0
- package/dist/ai-elements.js +4363 -0
- package/dist/ai-elements.js.map +1 -0
- package/dist/chunk-3MP2EGEJ.cjs +270 -0
- package/dist/chunk-3MP2EGEJ.cjs.map +1 -0
- package/dist/chunk-3RW7O444.js +26 -0
- package/dist/chunk-3RW7O444.js.map +1 -0
- package/dist/chunk-42ARGQXE.js +51 -0
- package/dist/chunk-42ARGQXE.js.map +1 -0
- package/dist/chunk-4FBVV64J.js +257 -0
- package/dist/chunk-4FBVV64J.js.map +1 -0
- package/dist/chunk-4QT25AXI.js +21 -0
- package/dist/chunk-4QT25AXI.js.map +1 -0
- package/dist/chunk-525KS5HM.cjs +30 -0
- package/dist/chunk-525KS5HM.cjs.map +1 -0
- package/dist/chunk-5F3O3ZJH.js +299 -0
- package/dist/chunk-5F3O3ZJH.js.map +1 -0
- package/dist/chunk-5QSXB6UL.cjs +259 -0
- package/dist/chunk-5QSXB6UL.cjs.map +1 -0
- package/dist/chunk-5T4FJ2SR.js +664 -0
- package/dist/chunk-5T4FJ2SR.js.map +1 -0
- package/dist/chunk-7BNYTOTE.cjs +67 -0
- package/dist/chunk-7BNYTOTE.cjs.map +1 -0
- package/dist/chunk-AWAJOSFP.cjs +96 -0
- package/dist/chunk-AWAJOSFP.cjs.map +1 -0
- package/dist/chunk-BKDV2H6Z.js +224 -0
- package/dist/chunk-BKDV2H6Z.js.map +1 -0
- package/dist/chunk-FQN6OBGN.cjs +171 -0
- package/dist/chunk-FQN6OBGN.cjs.map +1 -0
- package/dist/chunk-FYPJSHCL.js +190 -0
- package/dist/chunk-FYPJSHCL.js.map +1 -0
- package/dist/chunk-J2H6MLQF.cjs +680 -0
- package/dist/chunk-J2H6MLQF.cjs.map +1 -0
- package/dist/chunk-J2K7EJYP.cjs +198 -0
- package/dist/chunk-J2K7EJYP.cjs.map +1 -0
- package/dist/chunk-JI5KCSOI.cjs +23 -0
- package/dist/chunk-JI5KCSOI.cjs.map +1 -0
- package/dist/chunk-JOO6C3XT.cjs +44 -0
- package/dist/chunk-JOO6C3XT.cjs.map +1 -0
- package/dist/chunk-KBGPBUTI.cjs +78 -0
- package/dist/chunk-KBGPBUTI.cjs.map +1 -0
- package/dist/chunk-MT2AMINB.js +75 -0
- package/dist/chunk-MT2AMINB.js.map +1 -0
- package/dist/chunk-MZQKGNWF.js +4 -0
- package/dist/chunk-MZQKGNWF.js.map +1 -0
- package/dist/chunk-NG7OTWXQ.cjs +226 -0
- package/dist/chunk-NG7OTWXQ.cjs.map +1 -0
- package/dist/chunk-NPJKLYLV.js +68 -0
- package/dist/chunk-NPJKLYLV.js.map +1 -0
- package/dist/chunk-NW2ESHRV.js +685 -0
- package/dist/chunk-NW2ESHRV.js.map +1 -0
- package/dist/chunk-NWF735F5.js +1631 -0
- package/dist/chunk-NWF735F5.js.map +1 -0
- package/dist/chunk-NYQSM3EB.cjs +305 -0
- package/dist/chunk-NYQSM3EB.cjs.map +1 -0
- package/dist/chunk-OU7OROOE.cjs +1643 -0
- package/dist/chunk-OU7OROOE.cjs.map +1 -0
- package/dist/chunk-PS3U7T37.js +42 -0
- package/dist/chunk-PS3U7T37.js.map +1 -0
- package/dist/chunk-Q7T3VAJV.cjs +687 -0
- package/dist/chunk-Q7T3VAJV.cjs.map +1 -0
- package/dist/chunk-QYCEHFAB.js +265 -0
- package/dist/chunk-QYCEHFAB.js.map +1 -0
- package/dist/chunk-RPDJXB3U.js +676 -0
- package/dist/chunk-RPDJXB3U.js.map +1 -0
- package/dist/chunk-UKEL7FWS.js +64 -0
- package/dist/chunk-UKEL7FWS.js.map +1 -0
- package/dist/chunk-VS3NZ7FX.js +164 -0
- package/dist/chunk-VS3NZ7FX.js.map +1 -0
- package/dist/chunk-WZLWAVSS.cjs +73 -0
- package/dist/chunk-WZLWAVSS.cjs.map +1 -0
- package/dist/chunk-X5YEOOPK.cjs +758 -0
- package/dist/chunk-X5YEOOPK.cjs.map +1 -0
- package/dist/chunk-X7R334SB.cjs +5 -0
- package/dist/chunk-X7R334SB.cjs.map +1 -0
- package/dist/chunk-XXNDL5SJ.cjs +432 -0
- package/dist/chunk-XXNDL5SJ.cjs.map +1 -0
- package/dist/chunk-YQELMJW5.js +429 -0
- package/dist/chunk-YQELMJW5.js.map +1 -0
- package/dist/components.cjs +551 -0
- package/dist/components.cjs.map +1 -0
- package/dist/components.d.cts +181 -0
- package/dist/components.d.ts +181 -0
- package/dist/components.js +483 -0
- package/dist/components.js.map +1 -0
- package/dist/core.cjs +283 -0
- package/dist/core.cjs.map +1 -0
- package/dist/core.d.cts +455 -0
- package/dist/core.d.ts +455 -0
- package/dist/core.js +241 -0
- package/dist/core.js.map +1 -0
- package/dist/hooks.cjs +324 -0
- package/dist/hooks.cjs.map +1 -0
- package/dist/hooks.d.cts +163 -0
- package/dist/hooks.d.ts +163 -0
- package/dist/hooks.js +277 -0
- package/dist/hooks.js.map +1 -0
- package/dist/i18n.cjs +26 -0
- package/dist/i18n.cjs.map +1 -0
- package/dist/i18n.d.cts +50 -0
- package/dist/i18n.d.ts +50 -0
- package/dist/i18n.js +5 -0
- package/dist/i18n.js.map +1 -0
- package/dist/index.cjs +466 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +80 -0
- package/dist/index.d.ts +80 -0
- package/dist/index.js +438 -0
- package/dist/index.js.map +1 -0
- package/dist/interaction-tracker-D9P1Oq4j.d.cts +83 -0
- package/dist/interaction-tracker-D9P1Oq4j.d.ts +83 -0
- package/dist/json-render.cjs +23 -0
- package/dist/json-render.cjs.map +1 -0
- package/dist/json-render.d.cts +857 -0
- package/dist/json-render.d.ts +857 -0
- package/dist/json-render.js +6 -0
- package/dist/json-render.js.map +1 -0
- package/dist/live-chat-transport-4XLOIPOE.js +4 -0
- package/dist/live-chat-transport-4XLOIPOE.js.map +1 -0
- package/dist/live-chat-transport-ALVRGWX7.cjs +13 -0
- package/dist/live-chat-transport-ALVRGWX7.cjs.map +1 -0
- package/dist/select-B4l9yoyn.d.cts +99 -0
- package/dist/select-B4l9yoyn.d.ts +99 -0
- package/dist/styles.css +2 -0
- package/dist/theme.cjs +18 -0
- package/dist/theme.cjs.map +1 -0
- package/dist/theme.d.cts +55 -0
- package/dist/theme.d.ts +55 -0
- package/dist/theme.js +5 -0
- package/dist/theme.js.map +1 -0
- package/dist/tools.cjs +32 -0
- package/dist/tools.cjs.map +1 -0
- package/dist/tools.d.cts +117 -0
- package/dist/tools.d.ts +117 -0
- package/dist/tools.js +11 -0
- package/dist/tools.js.map +1 -0
- package/dist/types-DKJ_-nbG.d.cts +349 -0
- package/dist/types-DKJ_-nbG.d.ts +349 -0
- package/dist/ui.cjs +667 -0
- package/dist/ui.cjs.map +1 -0
- package/dist/ui.d.cts +95 -0
- package/dist/ui.d.ts +95 -0
- package/dist/ui.js +414 -0
- package/dist/ui.js.map +1 -0
- package/package.json +255 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ui/chart.tsx","../src/tools/VisualizationRenderer.tsx"],"names":["React","jsxs","cn","jsx","RechartsPrimitive","config","Fragment","LineChart","CartesianGrid","XAxis","YAxis","Line","BarChart","Bar","PieChart","Pie","Cell","AreaChart","Area","RadarChart","PolarGrid","PolarAngleAxis","Radar","ComposedChart","TrendingUp","TrendingDown","Minus","Check","X","Star"],"mappings":"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","file":"chunk-Q7T3VAJV.cjs","sourcesContent":["\"use client\";\n\nimport * as React from \"react\"\nimport * as RechartsPrimitive from \"recharts\"\n\nimport { cn } from \"../core/utils\"\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const\n\nexport type ChartConfig = {\n [k in string]: {\n label?: React.ReactNode\n icon?: React.ComponentType\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\n )\n}\n\ntype ChartContextProps = {\n config: ChartConfig\n}\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\n\nfunction useChart() {\n const context = React.useContext(ChartContext)\n\n if (!context) {\n throw new Error(\"useChart must be used within a <ChartContainer />\")\n }\n\n return context\n}\n\nconst ChartContainer = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n config: ChartConfig\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"]\n }\n>(({ id, className, children, config, ...props }, ref) => {\n const uniqueId = React.useId()\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-chart={chartId}\n ref={ref}\n className={cn(\n \"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none\",\n className\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer>\n {children}\n </RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n )\n})\nChartContainer.displayName = \"Chart\"\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(\n ([, config]) => config.theme || config.color\n )\n\n if (!colorConfig.length) {\n return null\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n itemConfig.color\n return color ? ` --color-${key}: ${color};` : null\n })\n .join(\"\\n\")}\n}\n`\n )\n .join(\"\\n\"),\n }}\n />\n )\n}\n\nconst ChartTooltip = RechartsPrimitive.Tooltip\n\nconst ChartTooltipContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n React.ComponentProps<\"div\"> & {\n hideLabel?: boolean\n hideIndicator?: boolean\n indicator?: \"line\" | \"dot\" | \"dashed\"\n nameKey?: string\n labelKey?: string\n }\n>(\n (\n {\n active,\n payload,\n className,\n indicator = \"dot\",\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n },\n ref\n ) => {\n const { config } = useChart()\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null\n }\n\n const [item] = payload\n const key = `${labelKey || item?.dataKey || item?.name || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const value =\n !labelKey && typeof label === \"string\"\n ? config[label as keyof typeof config]?.label || label\n : itemConfig?.label\n\n if (labelFormatter) {\n return (\n <div className={cn(\"font-medium\", labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n )\n }\n\n if (!value) {\n return null\n }\n\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ])\n\n if (!active || !payload?.length) {\n return null\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\"\n\n return (\n <div\n ref={ref}\n className={cn(\n \"grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl\",\n className\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload\n .filter((item) => item.type !== \"none\")\n .map((item, index) => {\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const indicatorColor = color || item.payload.fill || item.color\n\n return (\n <div\n key={item.dataKey}\n className={cn(\n \"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\",\n indicator === \"dot\" && \"items-center\"\n )}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n \"shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]\",\n {\n \"h-2.5 w-2.5\": indicator === \"dot\",\n \"w-1\": indicator === \"line\",\n \"w-0 border-[1.5px] border-dashed bg-transparent\":\n indicator === \"dashed\",\n \"my-0.5\": nestLabel && indicator === \"dashed\",\n }\n )}\n style={\n {\n \"--color-bg\": indicatorColor,\n \"--color-border\": indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n \"flex flex-1 justify-between leading-none\",\n nestLabel ? \"items-end\" : \"items-center\"\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted-foreground\">\n {itemConfig?.label || item.name}\n </span>\n </div>\n {item.value && (\n <span className=\"font-mono font-medium tabular-nums text-foreground\">\n {item.value.toLocaleString()}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n )\n })}\n </div>\n </div>\n )\n }\n)\nChartTooltipContent.displayName = \"ChartTooltip\"\n\nconst ChartLegend = RechartsPrimitive.Legend\n\nconst ChartLegendContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> &\n Pick<RechartsPrimitive.LegendProps, \"payload\" | \"verticalAlign\"> & {\n hideIcon?: boolean\n nameKey?: string\n }\n>(\n (\n { className, hideIcon = false, payload, verticalAlign = \"bottom\", nameKey },\n ref\n ) => {\n const { config } = useChart()\n\n if (!payload?.length) {\n return null\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex items-center justify-center gap-4\",\n verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n className\n )}\n >\n {payload\n .filter((item) => item.type !== \"none\")\n .map((item) => {\n const key = `${nameKey || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n\n return (\n <div\n key={item.value}\n className={cn(\n \"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\"\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color,\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n )\n })}\n </div>\n )\n }\n)\nChartLegendContent.displayName = \"ChartLegend\"\n\n// Helper to extract item config from a payload.\nfunction getPayloadConfigFromPayload(\n config: ChartConfig,\n payload: unknown,\n key: string\n) {\n if (typeof payload !== \"object\" || payload === null) {\n return undefined\n }\n\n const payloadPayload =\n \"payload\" in payload &&\n typeof payload.payload === \"object\" &&\n payload.payload !== null\n ? payload.payload\n : undefined\n\n let configLabelKey: string = key\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === \"string\"\n ) {\n configLabelKey = payload[key as keyof typeof payload] as string\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n ) {\n configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string\n }\n\n return configLabelKey in config\n ? config[configLabelKey]\n : config[key as keyof typeof config]\n}\n\nexport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n}\n","\"use client\";\n\n/**\n * VisualizationRenderer — renders chart / metric / comparison / timeline specs\n * produced by tools whose `uiRenderMode === \"visualization\"`.\n *\n * Uses `recharts` (declared as an optional peer dependency).\n */\n\nimport {\n LineChart,\n Line,\n BarChart,\n Bar,\n PieChart,\n Pie,\n Cell,\n AreaChart,\n Area,\n RadarChart,\n Radar,\n PolarGrid,\n PolarAngleAxis,\n ComposedChart,\n XAxis,\n YAxis,\n CartesianGrid,\n} from \"recharts\";\nimport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n} from \"../ui/chart\";\nimport type { ChartConfig } from \"../ui/chart\";\nimport {\n TrendingUp,\n TrendingDown,\n Minus,\n Check,\n X,\n Star,\n} from \"lucide-react\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\ninterface SeriesConfig {\n dataKey: string;\n label: string;\n color?: string;\n type?: \"line\" | \"bar\" | \"area\";\n}\n\ninterface VisualizationConfig {\n xAxis?: string;\n series?: SeriesConfig[];\n showGrid?: boolean;\n showLegend?: boolean;\n stacked?: boolean;\n valueFormatter?: \"currency\" | \"percent\" | \"number\" | \"compact\";\n}\n\ninterface MetricItem {\n label: string;\n value: string;\n unit?: string;\n trend?: string;\n trendDirection?: \"up\" | \"down\" | \"neutral\";\n description?: string;\n}\n\ninterface ComparisonItem {\n name: string;\n highlight?: boolean;\n features: Record<string, string | boolean | number>;\n}\n\ninterface ComparisonField {\n key: string;\n label: string;\n type?: \"text\" | \"boolean\" | \"rating\";\n}\n\ninterface TimelineEvent {\n date?: string;\n title: string;\n description?: string;\n status?: \"completed\" | \"current\" | \"upcoming\";\n}\n\ninterface GoalItem {\n label: string;\n current: number;\n target: number;\n unit?: string;\n}\n\n/** Declarative visualization spec produced by a tool. */\nexport interface VisualizationSpec {\n type:\n | \"line_chart\"\n | \"bar_chart\"\n | \"pie_chart\"\n | \"area_chart\"\n | \"radar_chart\"\n | \"composed_chart\"\n | \"metric_cards\"\n | \"comparison\"\n | \"timeline\"\n | \"progress\";\n title?: string;\n description?: string;\n data?: Array<Record<string, unknown>>;\n config?: VisualizationConfig;\n metrics?: MetricItem[];\n items?: ComparisonItem[];\n comparisonFields?: ComparisonField[];\n events?: TimelineEvent[];\n goals?: GoalItem[];\n}\n\n// ---------------------------------------------------------------------------\n// Constants & helpers\n// ---------------------------------------------------------------------------\n\nconst CHART_COLORS = [\n \"var(--ac-chart-1, hsl(221, 83%, 53%))\",\n \"var(--ac-chart-2, hsl(142, 71%, 45%))\",\n \"var(--ac-chart-3, hsl(38, 92%, 50%))\",\n \"var(--ac-chart-4, hsl(0, 84%, 60%))\",\n \"var(--ac-chart-5, hsl(262, 83%, 58%))\",\n \"var(--ac-chart-6, hsl(173, 80%, 40%))\",\n \"var(--ac-chart-7, hsl(330, 81%, 60%))\",\n \"var(--ac-chart-8, hsl(25, 95%, 53%))\",\n];\n\nfunction formatValue(value: number, formatter?: string): string {\n switch (formatter) {\n case \"currency\":\n return `$${value.toLocaleString()}`;\n case \"percent\":\n return `${value}%`;\n case \"compact\": {\n if (value >= 1_000_000) return `${(value / 1_000_000).toFixed(1)}M`;\n if (value >= 1_000) return `${(value / 1_000).toFixed(1)}K`;\n return value.toLocaleString();\n }\n default:\n return value.toLocaleString();\n }\n}\n\nfunction buildChartConfig(series: SeriesConfig[]): ChartConfig {\n const cfg: ChartConfig = {};\n for (let i = 0; i < series.length; i++) {\n const s = series[i];\n cfg[s.dataKey] = {\n label: s.label,\n color: s.color || CHART_COLORS[i % CHART_COLORS.length],\n };\n }\n return cfg;\n}\n\nfunction shouldShowLegend(\n config?: VisualizationConfig,\n series?: SeriesConfig[]\n): boolean {\n if (config?.showLegend !== undefined) return config.showLegend;\n return (series?.length ?? 0) > 1;\n}\n\n// ---------------------------------------------------------------------------\n// Chart renderers\n// ---------------------------------------------------------------------------\n\nfunction RenderLineChart({ spec }: { spec: VisualizationSpec }) {\n const series = spec.config?.series ?? [];\n const chartConfig = buildChartConfig(series);\n const xKey = spec.config?.xAxis ?? \"name\";\n const showGrid = spec.config?.showGrid !== false;\n\n return (\n <ChartContainer config={chartConfig} className=\"h-[300px] w-full\">\n <LineChart data={spec.data} accessibilityLayer>\n {showGrid && <CartesianGrid strokeDasharray=\"3 3\" className=\"stroke-muted\" />}\n <XAxis dataKey={xKey} className=\"text-xs\" tickLine={false} axisLine={false} />\n <YAxis\n className=\"text-xs\"\n tickLine={false}\n axisLine={false}\n tickFormatter={(v: number) => formatValue(v, spec.config?.valueFormatter)}\n />\n <ChartTooltip content={<ChartTooltipContent />} />\n {shouldShowLegend(spec.config, series) && (\n <ChartLegend content={<ChartLegendContent />} />\n )}\n {series.map((s) => (\n <Line\n key={s.dataKey}\n type=\"monotone\"\n dataKey={s.dataKey}\n stroke={`var(--color-${s.dataKey})`}\n strokeWidth={2}\n dot={{ r: 3 }}\n activeDot={{ r: 5 }}\n />\n ))}\n </LineChart>\n </ChartContainer>\n );\n}\n\nfunction RenderBarChart({ spec }: { spec: VisualizationSpec }) {\n const series = spec.config?.series ?? [];\n const chartConfig = buildChartConfig(series);\n const xKey = spec.config?.xAxis ?? \"name\";\n const showGrid = spec.config?.showGrid !== false;\n const stacked = spec.config?.stacked ?? false;\n\n return (\n <ChartContainer config={chartConfig} className=\"h-[300px] w-full\">\n <BarChart data={spec.data} accessibilityLayer>\n {showGrid && <CartesianGrid strokeDasharray=\"3 3\" className=\"stroke-muted\" />}\n <XAxis dataKey={xKey} className=\"text-xs\" tickLine={false} axisLine={false} />\n <YAxis\n className=\"text-xs\"\n tickLine={false}\n axisLine={false}\n tickFormatter={(v: number) => formatValue(v, spec.config?.valueFormatter)}\n />\n <ChartTooltip content={<ChartTooltipContent />} />\n {shouldShowLegend(spec.config, series) && (\n <ChartLegend content={<ChartLegendContent />} />\n )}\n {series.map((s) => (\n <Bar\n key={s.dataKey}\n dataKey={s.dataKey}\n fill={`var(--color-${s.dataKey})`}\n radius={[4, 4, 0, 0]}\n stackId={stacked ? \"stack\" : undefined}\n />\n ))}\n </BarChart>\n </ChartContainer>\n );\n}\n\nfunction RenderPieChart({ spec }: { spec: VisualizationSpec }) {\n const series = spec.config?.series ?? [];\n const valueKey = series[0]?.dataKey ?? \"value\";\n const chartConfig = buildChartConfig(series);\n\n const data = (spec.data ?? []).map((d, i) => ({\n ...d,\n fill: CHART_COLORS[i % CHART_COLORS.length],\n }));\n\n return (\n <ChartContainer config={chartConfig} className=\"h-[300px] w-full\">\n <PieChart accessibilityLayer>\n <ChartTooltip content={<ChartTooltipContent nameKey=\"name\" />} />\n <Pie\n data={data}\n dataKey={valueKey}\n nameKey=\"name\"\n cx=\"50%\"\n cy=\"50%\"\n outerRadius={100}\n label={({ percent }) => `${((percent ?? 0) * 100).toFixed(0)}%`}\n labelLine={false}\n >\n {data.map((_entry, i) => (\n <Cell key={`cell-${i}`} fill={CHART_COLORS[i % CHART_COLORS.length]} />\n ))}\n </Pie>\n {shouldShowLegend(spec.config, series) && (\n <ChartLegend content={<ChartLegendContent nameKey=\"name\" />} />\n )}\n </PieChart>\n </ChartContainer>\n );\n}\n\nfunction RenderAreaChart({ spec }: { spec: VisualizationSpec }) {\n const series = spec.config?.series ?? [];\n const chartConfig = buildChartConfig(series);\n const xKey = spec.config?.xAxis ?? \"name\";\n const showGrid = spec.config?.showGrid !== false;\n const stacked = spec.config?.stacked ?? false;\n\n return (\n <ChartContainer config={chartConfig} className=\"h-[300px] w-full\">\n <AreaChart data={spec.data} accessibilityLayer>\n <defs>\n {series.map((s) => (\n <linearGradient key={s.dataKey} id={`fill-${s.dataKey}`} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"5%\" stopColor={`var(--color-${s.dataKey})`} stopOpacity={0.3} />\n <stop offset=\"95%\" stopColor={`var(--color-${s.dataKey})`} stopOpacity={0.05} />\n </linearGradient>\n ))}\n </defs>\n {showGrid && <CartesianGrid strokeDasharray=\"3 3\" className=\"stroke-muted\" />}\n <XAxis dataKey={xKey} className=\"text-xs\" tickLine={false} axisLine={false} />\n <YAxis\n className=\"text-xs\"\n tickLine={false}\n axisLine={false}\n tickFormatter={(v: number) => formatValue(v, spec.config?.valueFormatter)}\n />\n <ChartTooltip content={<ChartTooltipContent />} />\n {shouldShowLegend(spec.config, series) && (\n <ChartLegend content={<ChartLegendContent />} />\n )}\n {series.map((s) => (\n <Area\n key={s.dataKey}\n type=\"monotone\"\n dataKey={s.dataKey}\n stroke={`var(--color-${s.dataKey})`}\n fill={`url(#fill-${s.dataKey})`}\n strokeWidth={2}\n stackId={stacked ? \"stack\" : undefined}\n />\n ))}\n </AreaChart>\n </ChartContainer>\n );\n}\n\nfunction RenderRadarChart({ spec }: { spec: VisualizationSpec }) {\n const series = spec.config?.series ?? [];\n const chartConfig = buildChartConfig(series);\n const xKey = spec.config?.xAxis ?? \"name\";\n\n return (\n <ChartContainer config={chartConfig} className=\"h-[300px] w-full\">\n <RadarChart data={spec.data} cx=\"50%\" cy=\"50%\" outerRadius=\"80%\" accessibilityLayer>\n <PolarGrid className=\"stroke-muted\" />\n <PolarAngleAxis dataKey={xKey} className=\"text-xs\" />\n <ChartTooltip content={<ChartTooltipContent />} />\n {shouldShowLegend(spec.config, series) && (\n <ChartLegend content={<ChartLegendContent />} />\n )}\n {series.map((s) => (\n <Radar\n key={s.dataKey}\n name={s.label}\n dataKey={s.dataKey}\n stroke={`var(--color-${s.dataKey})`}\n fill={`var(--color-${s.dataKey})`}\n fillOpacity={0.2}\n />\n ))}\n </RadarChart>\n </ChartContainer>\n );\n}\n\nfunction RenderComposedChart({ spec }: { spec: VisualizationSpec }) {\n const series = spec.config?.series ?? [];\n const chartConfig = buildChartConfig(series);\n const xKey = spec.config?.xAxis ?? \"name\";\n const showGrid = spec.config?.showGrid !== false;\n\n return (\n <ChartContainer config={chartConfig} className=\"h-[300px] w-full\">\n <ComposedChart data={spec.data} accessibilityLayer>\n {showGrid && <CartesianGrid strokeDasharray=\"3 3\" className=\"stroke-muted\" />}\n <XAxis dataKey={xKey} className=\"text-xs\" tickLine={false} axisLine={false} />\n <YAxis\n className=\"text-xs\"\n tickLine={false}\n axisLine={false}\n tickFormatter={(v: number) => formatValue(v, spec.config?.valueFormatter)}\n />\n <ChartTooltip content={<ChartTooltipContent />} />\n {shouldShowLegend(spec.config, series) && (\n <ChartLegend content={<ChartLegendContent />} />\n )}\n {series.map((s) => {\n const color = `var(--color-${s.dataKey})`;\n switch (s.type) {\n case \"area\":\n return (\n <Area\n key={s.dataKey}\n type=\"monotone\"\n dataKey={s.dataKey}\n stroke={color}\n fill={color}\n fillOpacity={0.15}\n strokeWidth={2}\n />\n );\n case \"line\":\n return (\n <Line\n key={s.dataKey}\n type=\"monotone\"\n dataKey={s.dataKey}\n stroke={color}\n strokeWidth={2}\n dot={{ r: 3 }}\n />\n );\n case \"bar\":\n default:\n return (\n <Bar\n key={s.dataKey}\n dataKey={s.dataKey}\n fill={color}\n radius={[4, 4, 0, 0]}\n />\n );\n }\n })}\n </ComposedChart>\n </ChartContainer>\n );\n}\n\n// ---------------------------------------------------------------------------\n// Non-chart renderers\n// ---------------------------------------------------------------------------\n\nfunction RenderMetricCards({ spec }: { spec: VisualizationSpec }) {\n const metrics = spec.metrics ?? [];\n if (metrics.length === 0) return null;\n\n return (\n <div className=\"grid grid-cols-2 md:grid-cols-3 gap-3\">\n {metrics.map((m, i) => (\n <div key={i} className=\"rounded-lg border bg-card p-4 space-y-1.5\">\n <div className=\"flex items-baseline gap-1\">\n <span className=\"text-2xl font-bold tracking-tight\">{m.value}</span>\n {m.unit && (\n <span className=\"text-sm text-muted-foreground\">{m.unit}</span>\n )}\n </div>\n <p className=\"text-sm font-medium text-muted-foreground\">{m.label}</p>\n {m.trend && (\n <div className=\"flex items-center gap-1\">\n {m.trendDirection === \"up\" && (\n <TrendingUp className=\"h-3.5 w-3.5 text-emerald-500\" />\n )}\n {m.trendDirection === \"down\" && (\n <TrendingDown className=\"h-3.5 w-3.5 text-red-500\" />\n )}\n {m.trendDirection === \"neutral\" && (\n <Minus className=\"h-3.5 w-3.5 text-muted-foreground\" />\n )}\n <span\n className={`text-xs font-medium ${\n m.trendDirection === \"up\"\n ? \"text-emerald-500\"\n : m.trendDirection === \"down\"\n ? \"text-red-500\"\n : \"text-muted-foreground\"\n }`}\n >\n {m.trend}\n </span>\n </div>\n )}\n {m.description && (\n <p className=\"text-xs text-muted-foreground/70\">{m.description}</p>\n )}\n </div>\n ))}\n </div>\n );\n}\n\nfunction RenderComparison({ spec }: { spec: VisualizationSpec }) {\n const items = spec.items ?? [];\n const fields = spec.comparisonFields ?? [];\n if (items.length === 0 || fields.length === 0) return null;\n\n function renderCellValue(value: string | boolean | number, type?: string) {\n if (type === \"boolean\" || typeof value === \"boolean\") {\n return value ? (\n <Check className=\"h-4 w-4 text-emerald-500 mx-auto\" />\n ) : (\n <X className=\"h-4 w-4 text-red-400 mx-auto\" />\n );\n }\n if (type === \"rating\" && typeof value === \"number\") {\n return (\n <div className=\"flex items-center justify-center gap-0.5\">\n {Array.from({ length: 5 }).map((_, i) => (\n <Star\n key={i}\n className={`h-3.5 w-3.5 ${\n i < value\n ? \"fill-amber-400 text-amber-400\"\n : \"text-muted-foreground/30\"\n }`}\n />\n ))}\n </div>\n );\n }\n return <span className=\"text-sm\">{String(value)}</span>;\n }\n\n return (\n <div className=\"overflow-x-auto rounded-lg border\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"border-b bg-muted/50\">\n <th className=\"px-3 py-2 text-left font-medium text-muted-foreground\" />\n {items.map((item, i) => (\n <th\n key={i}\n className={`px-3 py-2 text-center font-semibold ${\n item.highlight\n ? \"bg-primary/5 border-t-2 border-t-primary\"\n : \"\"\n }`}\n >\n {item.name}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {fields.map((field, fi) => (\n <tr key={field.key} className={fi % 2 === 0 ? \"\" : \"bg-muted/20\"}>\n <td className=\"px-3 py-2 font-medium text-muted-foreground whitespace-nowrap\">\n {field.label}\n </td>\n {items.map((item, ii) => (\n <td\n key={ii}\n className={`px-3 py-2 text-center ${\n item.highlight ? \"bg-primary/5\" : \"\"\n }`}\n >\n {field.key in item.features ? (\n renderCellValue(item.features[field.key], field.type)\n ) : (\n <span className=\"text-muted-foreground/40\">-</span>\n )}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n\nfunction RenderTimeline({ spec }: { spec: VisualizationSpec }) {\n const events = spec.events ?? [];\n if (events.length === 0) return null;\n\n return (\n <div className=\"relative pl-6 space-y-6\">\n <div className=\"absolute left-[9px] top-2 bottom-2 w-px bg-border\" />\n {events.map((event, i) => {\n const status = event.status ?? \"upcoming\";\n return (\n <div key={i} className=\"relative flex gap-4\">\n <div className=\"absolute -left-6 top-0.5 flex items-center justify-center\">\n <div\n className={`h-[18px] w-[18px] rounded-full border-2 ${\n status === \"completed\"\n ? \"border-emerald-500 bg-emerald-500\"\n : status === \"current\"\n ? \"border-blue-500 bg-blue-500 animate-pulse\"\n : \"border-muted-foreground/40 bg-background\"\n }`}\n >\n {status === \"completed\" && (\n <Check className=\"h-3.5 w-3.5 text-white m-auto\" />\n )}\n </div>\n </div>\n <div className=\"flex-1 min-w-0 pb-1\">\n {event.date && (\n <p className=\"text-xs text-muted-foreground mb-0.5\">{event.date}</p>\n )}\n <p\n className={`text-sm font-medium ${\n status === \"upcoming\" ? \"text-muted-foreground\" : \"\"\n }`}\n >\n {event.title}\n </p>\n {event.description && (\n <p className=\"text-xs text-muted-foreground/70 mt-0.5\">\n {event.description}\n </p>\n )}\n </div>\n </div>\n );\n })}\n </div>\n );\n}\n\nfunction RenderProgress({ spec }: { spec: VisualizationSpec }) {\n const goals = spec.goals ?? [];\n if (goals.length === 0) return null;\n\n return (\n <div className=\"space-y-4\">\n {goals.map((goal, i) => {\n const pct =\n goal.target > 0 ? Math.min((goal.current / goal.target) * 100, 100) : 0;\n const barColor =\n pct >= 75 ? \"bg-emerald-500\" : pct >= 40 ? \"bg-amber-500\" : \"bg-red-500\";\n\n return (\n <div key={i} className=\"space-y-1.5\">\n <div className=\"flex items-center justify-between text-sm\">\n <span className=\"font-medium\">{goal.label}</span>\n <span className=\"text-muted-foreground tabular-nums\">\n {goal.current.toLocaleString()}\n {goal.unit ? ` ${goal.unit}` : \"\"} / {goal.target.toLocaleString()}\n {goal.unit ? ` ${goal.unit}` : \"\"}\n </span>\n </div>\n <div className=\"h-2.5 w-full rounded-full bg-muted overflow-hidden\">\n <div\n className={`h-full rounded-full transition-all ${barColor}`}\n style={{ width: `${pct}%` }}\n />\n </div>\n <p className=\"text-xs text-muted-foreground text-right tabular-nums\">\n {pct.toFixed(0)}%\n </p>\n </div>\n );\n })}\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// Router\n// ---------------------------------------------------------------------------\n\nfunction renderContent(spec: VisualizationSpec) {\n switch (spec.type) {\n case \"line_chart\":\n return spec.data?.length ? <RenderLineChart spec={spec} /> : null;\n case \"bar_chart\":\n return spec.data?.length ? <RenderBarChart spec={spec} /> : null;\n case \"pie_chart\":\n return spec.data?.length ? <RenderPieChart spec={spec} /> : null;\n case \"area_chart\":\n return spec.data?.length ? <RenderAreaChart spec={spec} /> : null;\n case \"radar_chart\":\n return spec.data?.length ? <RenderRadarChart spec={spec} /> : null;\n case \"composed_chart\":\n return spec.data?.length ? <RenderComposedChart spec={spec} /> : null;\n case \"metric_cards\":\n return <RenderMetricCards spec={spec} />;\n case \"comparison\":\n return <RenderComparison spec={spec} />;\n case \"timeline\":\n return <RenderTimeline spec={spec} />;\n case \"progress\":\n return <RenderProgress spec={spec} />;\n default:\n return (\n <p className=\"text-sm text-muted-foreground\">\n Unsupported visualization type: {String((spec as { type?: string }).type)}\n </p>\n );\n }\n}\n\n// ---------------------------------------------------------------------------\n// Main component\n// ---------------------------------------------------------------------------\n\n/**\n * Props for `VisualizationRenderer`.\n *\n * The renderer expects the visualization spec inside the tool result's `data`\n * (or directly as `spec`).\n */\nexport interface VisualizationRendererProps {\n spec: VisualizationSpec;\n}\n\n/**\n * Renders a declarative visualization spec (charts, metric cards, timelines,\n * comparisons, progress bars) using recharts.\n */\nexport function VisualizationRenderer({ spec }: VisualizationRendererProps) {\n if (!spec || !spec.type) {\n return null;\n }\n\n return (\n <div className=\"w-full space-y-3\">\n {(spec.title || spec.description) && (\n <div>\n {spec.title && <h4 className=\"text-sm font-semibold\">{spec.title}</h4>}\n {spec.description && (\n <p className=\"text-xs text-muted-foreground\">{spec.description}</p>\n )}\n </div>\n )}\n {renderContent(spec)}\n </div>\n );\n}\n\nexport default VisualizationRenderer;\n"]}
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { createContext, useState, useCallback, useMemo, useContext } from 'react';
|
|
3
|
+
import { jsx } from 'react/jsx-runtime';
|
|
4
|
+
|
|
5
|
+
// src/providers/I18nProvider.tsx
|
|
6
|
+
var en = {
|
|
7
|
+
welcomeTitle: "Welcome to {clientName}",
|
|
8
|
+
welcomeSubtitle: "How can I assist you today? Select a topic or type your message below.",
|
|
9
|
+
searchKnowledgeBase: "Searching knowledge base...",
|
|
10
|
+
searchingFor: 'Searching for "{query}"...',
|
|
11
|
+
processing: "Processing...",
|
|
12
|
+
thinking: "Thinking...",
|
|
13
|
+
newConversation: "New conversation",
|
|
14
|
+
backToStart: "Back to start",
|
|
15
|
+
closeChat: "Close chat",
|
|
16
|
+
alwaysVerify: "Always verify AI responses",
|
|
17
|
+
poweredBy: "powered by",
|
|
18
|
+
startNewConversation: "Start New Conversation",
|
|
19
|
+
somethingWentWrong: "Something Went Wrong",
|
|
20
|
+
conversationTooLong: "Conversation Too Long",
|
|
21
|
+
conversationTooLongDesc: "The conversation has become too long to continue.",
|
|
22
|
+
somethingWentWrongDesc: "We encountered an issue. Please try again or start fresh.",
|
|
23
|
+
typeMessage: "Type a message...",
|
|
24
|
+
send: "Send",
|
|
25
|
+
aboutUs: "About Us",
|
|
26
|
+
aboutUsDesc: "Learn more about our services",
|
|
27
|
+
support: "Support",
|
|
28
|
+
supportDesc: "Get help with your questions",
|
|
29
|
+
features: "Features",
|
|
30
|
+
featuresDesc: "Discover what we can do",
|
|
31
|
+
search: "Search",
|
|
32
|
+
searchDesc: "Find specific information",
|
|
33
|
+
greeting: "Hi there \u{1F44B} How can I help you today?",
|
|
34
|
+
guest: "Guest",
|
|
35
|
+
guestDesc: "Just browsing",
|
|
36
|
+
customer: "Customer",
|
|
37
|
+
customerDesc: "Existing customer with questions",
|
|
38
|
+
partner: "Partner",
|
|
39
|
+
partnerDesc: "Business partner or professional",
|
|
40
|
+
aboutUsQuery: "Tell me about About Us",
|
|
41
|
+
supportQuery: "Tell me about Support",
|
|
42
|
+
featuresQuery: "Tell me about Features",
|
|
43
|
+
searchQuery: "Tell me about Search",
|
|
44
|
+
whatWentWrong: "What went wrong?",
|
|
45
|
+
wrongAnswer: "Wrong answer",
|
|
46
|
+
partialAnswer: "Partial answer",
|
|
47
|
+
hallucination: "Hallucination",
|
|
48
|
+
inappropriateTone: "Inappropriate tone",
|
|
49
|
+
addDetails: "Add details (optional)...",
|
|
50
|
+
submitting: "Submitting...",
|
|
51
|
+
submitFeedback: "Submit Feedback",
|
|
52
|
+
helpful: "Helpful",
|
|
53
|
+
notHelpful: "Not helpful",
|
|
54
|
+
copyResponse: "Copy response",
|
|
55
|
+
searchingProducts: "Searching products...",
|
|
56
|
+
searchingProductsFor: 'Searching products: "{query}"...',
|
|
57
|
+
sendingVerification: "Sending verification code...",
|
|
58
|
+
verifyingOrders: "Verifying and fetching orders...",
|
|
59
|
+
generatingLogin: "Generating login link...",
|
|
60
|
+
noProductsFound: "No products found",
|
|
61
|
+
noOrdersFound: "No orders found",
|
|
62
|
+
inStock: "In stock",
|
|
63
|
+
outOfStock: "Out of stock",
|
|
64
|
+
backorder: "Backorder",
|
|
65
|
+
sale: "Sale",
|
|
66
|
+
addToCart: "Add to Cart",
|
|
67
|
+
addedToCart: "Added to cart!",
|
|
68
|
+
addToCartError: "Failed to add to cart",
|
|
69
|
+
loginToStore: "Login to Store",
|
|
70
|
+
enterEmail: "Enter your email to verify",
|
|
71
|
+
sendCode: "Send verification code",
|
|
72
|
+
otpSentTo: "Verification code sent to {email}",
|
|
73
|
+
verifyCode: "Verify",
|
|
74
|
+
verifiedSuccess: "Verified successfully!",
|
|
75
|
+
resendCode: "Resend code",
|
|
76
|
+
invalidCode: "Invalid code, please try again",
|
|
77
|
+
selectVariation: "Select",
|
|
78
|
+
orderStatus_completed: "Completed",
|
|
79
|
+
orderStatus_processing: "Processing",
|
|
80
|
+
"orderStatus_on-hold": "On Hold",
|
|
81
|
+
orderStatus_pending: "Pending",
|
|
82
|
+
orderStatus_cancelled: "Cancelled",
|
|
83
|
+
orderStatus_failed: "Failed",
|
|
84
|
+
orderStatus_refunded: "Refunded",
|
|
85
|
+
cart: "Cart",
|
|
86
|
+
yourCart: "Your Cart",
|
|
87
|
+
cartItems: "{count} items",
|
|
88
|
+
cartEmpty: "Your cart is empty",
|
|
89
|
+
checkout: "Checkout",
|
|
90
|
+
cartTotal: "Total",
|
|
91
|
+
removeItem: "Remove",
|
|
92
|
+
liveChatConnecting: "Connecting you with an operator...",
|
|
93
|
+
liveChatPosition: "Position #{position}",
|
|
94
|
+
liveChatCancel: "Cancel",
|
|
95
|
+
liveChatChattingWith: "Chatting with {name}",
|
|
96
|
+
liveChatEndChat: "End Chat",
|
|
97
|
+
liveChatRateTitle: "How was your experience?",
|
|
98
|
+
liveChatRateThank: "Thank you for your feedback!",
|
|
99
|
+
liveChatBackToAI: "Back to AI Assistant",
|
|
100
|
+
liveChatSubmit: "Submit",
|
|
101
|
+
liveChatSkip: "Skip",
|
|
102
|
+
liveChatFeedbackPlaceholder: "Any additional feedback? (optional)",
|
|
103
|
+
liveChatTalkToHuman: "Talk to an operator",
|
|
104
|
+
liveChatIdentityTitle: "Please provide your details to connect with an operator",
|
|
105
|
+
liveChatIdentityName: "Your name",
|
|
106
|
+
liveChatIdentityEmail: "Your email",
|
|
107
|
+
liveChatIdentityConnect: "Connect",
|
|
108
|
+
liveChatIdentityContinue: "Continue",
|
|
109
|
+
liveChatRateExperience: "Rate your experience",
|
|
110
|
+
liveChatEnded: "Chat ended"
|
|
111
|
+
};
|
|
112
|
+
var he = {
|
|
113
|
+
welcomeTitle: "\u05D1\u05E8\u05D5\u05DB\u05D9\u05DD \u05D4\u05D1\u05D0\u05D9\u05DD \u05DC-{clientName}",
|
|
114
|
+
welcomeSubtitle: "\u05D0\u05D9\u05DA \u05D0\u05D5\u05DB\u05DC \u05DC\u05E2\u05D6\u05D5\u05E8 \u05D4\u05D9\u05D5\u05DD? \u05D1\u05D7\u05E8\u05D5 \u05E0\u05D5\u05E9\u05D0 \u05D0\u05D5 \u05D4\u05E7\u05DC\u05D9\u05D3\u05D5 \u05D4\u05D5\u05D3\u05E2\u05D4 \u05DC\u05DE\u05D8\u05D4.",
|
|
115
|
+
searchKnowledgeBase: "\u05DE\u05D7\u05E4\u05E9 \u05D1\u05DE\u05D0\u05D2\u05E8 \u05D4\u05D9\u05D3\u05E2...",
|
|
116
|
+
searchingFor: '\u05DE\u05D7\u05E4\u05E9 \u05D0\u05EA "{query}"...',
|
|
117
|
+
processing: "\u05DE\u05E2\u05D1\u05D3...",
|
|
118
|
+
thinking: "\u05D7\u05D5\u05E9\u05D1...",
|
|
119
|
+
newConversation: "\u05E9\u05D9\u05D7\u05D4 \u05D7\u05D3\u05E9\u05D4",
|
|
120
|
+
backToStart: "\u05D7\u05D6\u05E8\u05D4 \u05DC\u05D4\u05EA\u05D7\u05DC\u05D4",
|
|
121
|
+
closeChat: "\u05E1\u05D2\u05D5\u05E8 \u05E6'\u05D0\u05D8",
|
|
122
|
+
alwaysVerify: "\u05EA\u05DE\u05D9\u05D3 \u05DB\u05D3\u05D0\u05D9 \u05DC\u05D5\u05D5\u05D3\u05D0 \u05D0\u05EA \u05EA\u05E9\u05D5\u05D1\u05D5\u05EA \u05D4-AI",
|
|
123
|
+
poweredBy: "\u05DE\u05D5\u05E4\u05E2\u05DC \u05E2\u05DC \u05D9\u05D3\u05D9",
|
|
124
|
+
startNewConversation: "\u05D4\u05EA\u05D7\u05DC \u05E9\u05D9\u05D7\u05D4 \u05D7\u05D3\u05E9\u05D4",
|
|
125
|
+
somethingWentWrong: "\u05DE\u05E9\u05D4\u05D5 \u05D4\u05E9\u05EA\u05D1\u05E9",
|
|
126
|
+
conversationTooLong: "\u05D4\u05E9\u05D9\u05D7\u05D4 \u05D0\u05E8\u05D5\u05DB\u05D4 \u05DE\u05D3\u05D9",
|
|
127
|
+
conversationTooLongDesc: "\u05D4\u05E9\u05D9\u05D7\u05D4 \u05D4\u05E4\u05DB\u05D4 \u05DC\u05D0\u05E8\u05D5\u05DB\u05D4 \u05DE\u05D3\u05D9 \u05D1\u05E9\u05D1\u05D9\u05DC \u05DC\u05D4\u05DE\u05E9\u05D9\u05DA.",
|
|
128
|
+
somethingWentWrongDesc: "\u05E0\u05EA\u05E7\u05DC\u05E0\u05D5 \u05D1\u05D1\u05E2\u05D9\u05D4. \u05D0\u05E0\u05D0 \u05E0\u05E1\u05D5 \u05E9\u05D5\u05D1 \u05D0\u05D5 \u05D4\u05EA\u05D7\u05D9\u05DC\u05D5 \u05DE\u05D7\u05D3\u05E9.",
|
|
129
|
+
typeMessage: "\u05D4\u05E7\u05DC\u05D3 \u05D4\u05D5\u05D3\u05E2\u05D4...",
|
|
130
|
+
send: "\u05E9\u05DC\u05D7",
|
|
131
|
+
aboutUs: "\u05D0\u05D5\u05D3\u05D5\u05EA\u05D9\u05E0\u05D5",
|
|
132
|
+
aboutUsDesc: "\u05DC\u05DE\u05D3\u05D5 \u05E2\u05D5\u05D3 \u05E2\u05DC \u05D4\u05E9\u05D9\u05E8\u05D5\u05EA\u05D9\u05DD \u05E9\u05DC\u05E0\u05D5",
|
|
133
|
+
support: "\u05EA\u05DE\u05D9\u05DB\u05D4",
|
|
134
|
+
supportDesc: "\u05E7\u05D1\u05DC\u05D5 \u05E2\u05D6\u05E8\u05D4 \u05E2\u05DD \u05D4\u05E9\u05D0\u05DC\u05D5\u05EA \u05E9\u05DC\u05DB\u05DD",
|
|
135
|
+
features: "\u05E4\u05D9\u05E6'\u05E8\u05D9\u05DD",
|
|
136
|
+
featuresDesc: "\u05D2\u05DC\u05D5 \u05DE\u05D4 \u05D0\u05E0\u05D7\u05E0\u05D5 \u05D9\u05DB\u05D5\u05DC\u05D9\u05DD \u05DC\u05E2\u05E9\u05D5\u05EA",
|
|
137
|
+
search: "\u05D7\u05D9\u05E4\u05D5\u05E9",
|
|
138
|
+
searchDesc: "\u05DE\u05E6\u05D0\u05D5 \u05DE\u05D9\u05D3\u05E2 \u05E1\u05E4\u05E6\u05D9\u05E4\u05D9",
|
|
139
|
+
greeting: "\u05E9\u05DC\u05D5\u05DD \u{1F44B} \u05D0\u05D9\u05DA \u05D0\u05D5\u05DB\u05DC \u05DC\u05E2\u05D6\u05D5\u05E8 \u05DC\u05DB\u05DD \u05D4\u05D9\u05D5\u05DD?",
|
|
140
|
+
guest: "\u05D0\u05D5\u05E8\u05D7",
|
|
141
|
+
guestDesc: "\u05E8\u05E7 \u05D2\u05D5\u05DC\u05E9",
|
|
142
|
+
customer: "\u05DC\u05E7\u05D5\u05D7",
|
|
143
|
+
customerDesc: "\u05DC\u05E7\u05D5\u05D7 \u05E7\u05D9\u05D9\u05DD \u05E2\u05DD \u05E9\u05D0\u05DC\u05D5\u05EA",
|
|
144
|
+
partner: "\u05E9\u05D5\u05EA\u05E3",
|
|
145
|
+
partnerDesc: "\u05E9\u05D5\u05EA\u05E3 \u05E2\u05E1\u05E7\u05D9 \u05D0\u05D5 \u05D0\u05D9\u05E9 \u05DE\u05E7\u05E6\u05D5\u05E2",
|
|
146
|
+
aboutUsQuery: "\u05E1\u05E4\u05E8 \u05DC\u05D9 \u05E2\u05DC \u05D0\u05D5\u05D3\u05D5\u05EA\u05D9\u05E0\u05D5",
|
|
147
|
+
supportQuery: "\u05E1\u05E4\u05E8 \u05DC\u05D9 \u05E2\u05DC \u05EA\u05DE\u05D9\u05DB\u05D4",
|
|
148
|
+
featuresQuery: "\u05E1\u05E4\u05E8 \u05DC\u05D9 \u05E2\u05DC \u05E4\u05D9\u05E6'\u05E8\u05D9\u05DD",
|
|
149
|
+
searchQuery: "\u05E1\u05E4\u05E8 \u05DC\u05D9 \u05E2\u05DC \u05D7\u05D9\u05E4\u05D5\u05E9",
|
|
150
|
+
whatWentWrong: "\u05DE\u05D4 \u05D4\u05E9\u05EA\u05D1\u05E9?",
|
|
151
|
+
wrongAnswer: "\u05EA\u05E9\u05D5\u05D1\u05D4 \u05DC\u05D0 \u05E0\u05DB\u05D5\u05E0\u05D4",
|
|
152
|
+
partialAnswer: "\u05EA\u05E9\u05D5\u05D1\u05D4 \u05D7\u05DC\u05E7\u05D9\u05EA",
|
|
153
|
+
hallucination: "\u05D4\u05D6\u05D9\u05D4 (\u05DE\u05D9\u05D3\u05E2 \u05DE\u05D5\u05DE\u05E6\u05D0)",
|
|
154
|
+
inappropriateTone: "\u05D8\u05D5\u05DF \u05DC\u05D0 \u05D4\u05D5\u05DC\u05DD",
|
|
155
|
+
addDetails: "\u05D4\u05D5\u05E1\u05D9\u05E4\u05D5 \u05E4\u05E8\u05D8\u05D9\u05DD (\u05D0\u05D5\u05E4\u05E6\u05D9\u05D5\u05E0\u05DC\u05D9)...",
|
|
156
|
+
submitting: "\u05E9\u05D5\u05DC\u05D7...",
|
|
157
|
+
submitFeedback: "\u05E9\u05DC\u05D7 \u05DE\u05E9\u05D5\u05D1",
|
|
158
|
+
helpful: "\u05E2\u05D5\u05D6\u05E8",
|
|
159
|
+
notHelpful: "\u05DC\u05D0 \u05E2\u05D5\u05D6\u05E8",
|
|
160
|
+
copyResponse: "\u05D4\u05E2\u05EA\u05E7 \u05EA\u05E9\u05D5\u05D1\u05D4",
|
|
161
|
+
searchingProducts: "\u05DE\u05D7\u05E4\u05E9 \u05DE\u05D5\u05E6\u05E8\u05D9\u05DD...",
|
|
162
|
+
searchingProductsFor: '\u05DE\u05D7\u05E4\u05E9 \u05DE\u05D5\u05E6\u05E8\u05D9\u05DD: "{query}"...',
|
|
163
|
+
sendingVerification: "\u05E9\u05D5\u05DC\u05D7 \u05E7\u05D5\u05D3 \u05D0\u05D9\u05DE\u05D5\u05EA...",
|
|
164
|
+
verifyingOrders: "\u05DE\u05D0\u05DE\u05EA \u05D5\u05DE\u05D1\u05D9\u05D0 \u05D4\u05D6\u05DE\u05E0\u05D5\u05EA...",
|
|
165
|
+
generatingLogin: "\u05DE\u05D9\u05D9\u05E6\u05E8 \u05E7\u05D9\u05E9\u05D5\u05E8 \u05D4\u05EA\u05D7\u05D1\u05E8\u05D5\u05EA...",
|
|
166
|
+
noProductsFound: "\u05DC\u05D0 \u05E0\u05DE\u05E6\u05D0\u05D5 \u05DE\u05D5\u05E6\u05E8\u05D9\u05DD",
|
|
167
|
+
noOrdersFound: "\u05DC\u05D0 \u05E0\u05DE\u05E6\u05D0\u05D5 \u05D4\u05D6\u05DE\u05E0\u05D5\u05EA",
|
|
168
|
+
inStock: "\u05D1\u05DE\u05DC\u05D0\u05D9",
|
|
169
|
+
outOfStock: "\u05D0\u05D6\u05DC \u05DE\u05D4\u05DE\u05DC\u05D0\u05D9",
|
|
170
|
+
backorder: "\u05D1\u05D4\u05D6\u05DE\u05E0\u05D4 \u05DE\u05E8\u05D0\u05E9",
|
|
171
|
+
sale: "\u05DE\u05D1\u05E6\u05E2",
|
|
172
|
+
addToCart: "\u05D4\u05D5\u05E1\u05E3 \u05DC\u05E1\u05DC",
|
|
173
|
+
addedToCart: "\u05E0\u05D5\u05E1\u05E3 \u05DC\u05E1\u05DC!",
|
|
174
|
+
addToCartError: "\u05E9\u05D2\u05D9\u05D0\u05D4 \u05D1\u05D4\u05D5\u05E1\u05E4\u05D4 \u05DC\u05E1\u05DC",
|
|
175
|
+
loginToStore: "\u05D4\u05EA\u05D7\u05D1\u05E8 \u05DC\u05D7\u05E0\u05D5\u05EA",
|
|
176
|
+
enterEmail: "\u05D4\u05D6\u05D9\u05E0\u05D5 \u05D0\u05D9\u05DE\u05D9\u05D9\u05DC \u05DC\u05D0\u05D9\u05DE\u05D5\u05EA",
|
|
177
|
+
sendCode: "\u05E9\u05DC\u05D7 \u05E7\u05D5\u05D3 \u05D0\u05D9\u05DE\u05D5\u05EA",
|
|
178
|
+
otpSentTo: "\u05E7\u05D5\u05D3 \u05D0\u05D9\u05DE\u05D5\u05EA \u05E0\u05E9\u05DC\u05D7 \u05DC-{email}",
|
|
179
|
+
verifyCode: "\u05D0\u05DE\u05EA",
|
|
180
|
+
verifiedSuccess: "\u05D0\u05D5\u05DE\u05EA \u05D1\u05D4\u05E6\u05DC\u05D7\u05D4!",
|
|
181
|
+
resendCode: "\u05E9\u05DC\u05D7 \u05E9\u05D5\u05D1",
|
|
182
|
+
invalidCode: "\u05E7\u05D5\u05D3 \u05E9\u05D2\u05D5\u05D9, \u05E0\u05E1\u05D5 \u05E9\u05D5\u05D1",
|
|
183
|
+
selectVariation: "\u05D1\u05D7\u05E8",
|
|
184
|
+
orderStatus_completed: "\u05D4\u05D5\u05E9\u05DC\u05DE\u05D4",
|
|
185
|
+
orderStatus_processing: "\u05D1\u05D8\u05D9\u05E4\u05D5\u05DC",
|
|
186
|
+
"orderStatus_on-hold": "\u05D1\u05D4\u05DE\u05EA\u05E0\u05D4",
|
|
187
|
+
orderStatus_pending: "\u05DE\u05DE\u05EA\u05D9\u05E0\u05D4",
|
|
188
|
+
orderStatus_cancelled: "\u05D1\u05D5\u05D8\u05DC\u05D4",
|
|
189
|
+
orderStatus_failed: "\u05E0\u05DB\u05E9\u05DC\u05D4",
|
|
190
|
+
orderStatus_refunded: "\u05D4\u05D5\u05D7\u05D6\u05E8\u05D4",
|
|
191
|
+
cart: "\u05E1\u05DC",
|
|
192
|
+
yourCart: "\u05D4\u05E1\u05DC \u05E9\u05DC\u05DA",
|
|
193
|
+
cartItems: "{count} \u05E4\u05E8\u05D9\u05D8\u05D9\u05DD",
|
|
194
|
+
cartEmpty: "\u05D4\u05E1\u05DC \u05E8\u05D9\u05E7",
|
|
195
|
+
checkout: "\u05DC\u05EA\u05E9\u05DC\u05D5\u05DD",
|
|
196
|
+
cartTotal: "\u05E1\u05D4\u05F4\u05DB",
|
|
197
|
+
removeItem: "\u05D4\u05E1\u05E8",
|
|
198
|
+
liveChatConnecting: "\u05DE\u05D7\u05D1\u05E8 \u05D0\u05D5\u05EA\u05DA \u05DC\u05E0\u05E6\u05D9\u05D2...",
|
|
199
|
+
liveChatPosition: "\u05DE\u05D9\u05E7\u05D5\u05DD #{position}",
|
|
200
|
+
liveChatCancel: "\u05D1\u05D9\u05D8\u05D5\u05DC",
|
|
201
|
+
liveChatChattingWith: "\u05DE\u05E9\u05D5\u05D7\u05D7 \u05E2\u05DD {name}",
|
|
202
|
+
liveChatEndChat: "\u05E1\u05D9\u05D5\u05DD \u05E9\u05D9\u05D7\u05D4",
|
|
203
|
+
liveChatRateTitle: "\u05D0\u05D9\u05DA \u05D4\u05D9\u05D4 \u05D4\u05E9\u05D9\u05E8\u05D5\u05EA?",
|
|
204
|
+
liveChatRateThank: "\u05EA\u05D5\u05D3\u05D4 \u05E2\u05DC \u05D4\u05DE\u05E9\u05D5\u05D1!",
|
|
205
|
+
liveChatBackToAI: "\u05D7\u05D6\u05E8\u05D4 \u05DC\u05E2\u05D5\u05D6\u05E8 AI",
|
|
206
|
+
liveChatSubmit: "\u05E9\u05DC\u05D7",
|
|
207
|
+
liveChatSkip: "\u05D3\u05DC\u05D2",
|
|
208
|
+
liveChatFeedbackPlaceholder: "\u05DE\u05E9\u05D5\u05D1 \u05E0\u05D5\u05E1\u05E3 (\u05D0\u05D5\u05E4\u05E6\u05D9\u05D5\u05E0\u05DC\u05D9)...",
|
|
209
|
+
liveChatTalkToHuman: "\u05D3\u05D1\u05E8 \u05E2\u05DD \u05E0\u05E6\u05D9\u05D2",
|
|
210
|
+
liveChatIdentityTitle: "\u05D0\u05E0\u05D0 \u05DE\u05DC\u05D0/\u05D9 \u05D0\u05EA \u05D4\u05E4\u05E8\u05D8\u05D9\u05DD \u05DB\u05D3\u05D9 \u05DC\u05D4\u05EA\u05D7\u05D1\u05E8 \u05DC\u05E0\u05E6\u05D9\u05D2",
|
|
211
|
+
liveChatIdentityName: "\u05E9\u05DD",
|
|
212
|
+
liveChatIdentityEmail: "\u05D0\u05D9\u05DE\u05D9\u05D9\u05DC",
|
|
213
|
+
liveChatIdentityConnect: "\u05D4\u05EA\u05D7\u05D1\u05E8",
|
|
214
|
+
liveChatIdentityContinue: "\u05D4\u05DE\u05E9\u05DA",
|
|
215
|
+
liveChatRateExperience: "\u05D3\u05E8\u05D2\u05D5 \u05D0\u05EA \u05D4\u05D7\u05D5\u05D5\u05D9\u05D4 \u05E9\u05DC\u05DB\u05DD",
|
|
216
|
+
liveChatEnded: "\u05D4\u05E9\u05D9\u05D7\u05D4 \u05D4\u05E1\u05EA\u05D9\u05D9\u05DE\u05D4"
|
|
217
|
+
};
|
|
218
|
+
var builtInTranslations = { en, he };
|
|
219
|
+
var customTranslations = {};
|
|
220
|
+
function addLanguage(code, translations) {
|
|
221
|
+
const base = customTranslations[code] || builtInTranslations[code] || en;
|
|
222
|
+
customTranslations[code] = { ...base, ...translations };
|
|
223
|
+
}
|
|
224
|
+
function resolve(language, key, overrides, params) {
|
|
225
|
+
let text = overrides?.[key] || customTranslations[language]?.[key] || builtInTranslations[language]?.[key] || builtInTranslations["en"][key] || key;
|
|
226
|
+
if (params) {
|
|
227
|
+
Object.entries(params).forEach(([k, v]) => {
|
|
228
|
+
text = text.replace(`{${k}}`, v);
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
return text;
|
|
232
|
+
}
|
|
233
|
+
var RTL_LANGUAGES = /* @__PURE__ */ new Set(["he", "ar", "fa", "ur"]);
|
|
234
|
+
function isRTL(language) {
|
|
235
|
+
return RTL_LANGUAGES.has(language);
|
|
236
|
+
}
|
|
237
|
+
var I18nContext = createContext(null);
|
|
238
|
+
function I18nProvider({
|
|
239
|
+
language: initialLanguage = "en",
|
|
240
|
+
translations: overrides,
|
|
241
|
+
children
|
|
242
|
+
}) {
|
|
243
|
+
const [language, setLanguage] = useState(initialLanguage);
|
|
244
|
+
const t = useCallback(
|
|
245
|
+
(key, params) => resolve(language, key, overrides, params),
|
|
246
|
+
[language, overrides]
|
|
247
|
+
);
|
|
248
|
+
const direction = isRTL(language) ? "rtl" : "ltr";
|
|
249
|
+
const value = useMemo(
|
|
250
|
+
() => ({ t, language, setLanguage, direction }),
|
|
251
|
+
[t, language, direction]
|
|
252
|
+
);
|
|
253
|
+
return /* @__PURE__ */ jsx(I18nContext.Provider, { value, children });
|
|
254
|
+
}
|
|
255
|
+
function useI18n() {
|
|
256
|
+
const ctx = useContext(I18nContext);
|
|
257
|
+
if (!ctx) {
|
|
258
|
+
throw new Error("useI18n must be used within an I18nProvider");
|
|
259
|
+
}
|
|
260
|
+
return ctx;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
export { I18nProvider, addLanguage, isRTL, useI18n };
|
|
264
|
+
//# sourceMappingURL=chunk-QYCEHFAB.js.map
|
|
265
|
+
//# sourceMappingURL=chunk-QYCEHFAB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/providers/I18nProvider.tsx"],"names":[],"mappings":"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","file":"chunk-QYCEHFAB.js","sourcesContent":["\"use client\";\n\nimport {\n createContext,\n useContext,\n useState,\n useCallback,\n useMemo,\n type ReactNode,\n} from \"react\";\n\n/**\n * All supported translation keys.\n */\nexport type TranslationKeys =\n | \"welcomeTitle\"\n | \"welcomeSubtitle\"\n | \"searchKnowledgeBase\"\n | \"searchingFor\"\n | \"processing\"\n | \"thinking\"\n | \"newConversation\"\n | \"backToStart\"\n | \"closeChat\"\n | \"alwaysVerify\"\n | \"poweredBy\"\n | \"startNewConversation\"\n | \"somethingWentWrong\"\n | \"conversationTooLong\"\n | \"conversationTooLongDesc\"\n | \"somethingWentWrongDesc\"\n | \"typeMessage\"\n | \"send\"\n | \"aboutUs\"\n | \"aboutUsDesc\"\n | \"support\"\n | \"supportDesc\"\n | \"features\"\n | \"featuresDesc\"\n | \"search\"\n | \"searchDesc\"\n | \"greeting\"\n | \"guest\"\n | \"guestDesc\"\n | \"customer\"\n | \"customerDesc\"\n | \"partner\"\n | \"partnerDesc\"\n | \"aboutUsQuery\"\n | \"supportQuery\"\n | \"featuresQuery\"\n | \"searchQuery\"\n | \"whatWentWrong\"\n | \"wrongAnswer\"\n | \"partialAnswer\"\n | \"hallucination\"\n | \"inappropriateTone\"\n | \"addDetails\"\n | \"submitting\"\n | \"submitFeedback\"\n | \"helpful\"\n | \"notHelpful\"\n | \"copyResponse\"\n | \"searchingProducts\"\n | \"searchingProductsFor\"\n | \"sendingVerification\"\n | \"verifyingOrders\"\n | \"generatingLogin\"\n | \"noProductsFound\"\n | \"noOrdersFound\"\n | \"inStock\"\n | \"outOfStock\"\n | \"backorder\"\n | \"sale\"\n | \"addToCart\"\n | \"addedToCart\"\n | \"addToCartError\"\n | \"loginToStore\"\n | \"enterEmail\"\n | \"sendCode\"\n | \"otpSentTo\"\n | \"verifyCode\"\n | \"verifiedSuccess\"\n | \"resendCode\"\n | \"invalidCode\"\n | \"selectVariation\"\n | \"orderStatus_completed\"\n | \"orderStatus_processing\"\n | \"orderStatus_on-hold\"\n | \"orderStatus_pending\"\n | \"orderStatus_cancelled\"\n | \"orderStatus_failed\"\n | \"orderStatus_refunded\"\n | \"cart\"\n | \"yourCart\"\n | \"cartItems\"\n | \"cartEmpty\"\n | \"checkout\"\n | \"cartTotal\"\n | \"removeItem\"\n | \"liveChatConnecting\"\n | \"liveChatPosition\"\n | \"liveChatCancel\"\n | \"liveChatChattingWith\"\n | \"liveChatEndChat\"\n | \"liveChatRateTitle\"\n | \"liveChatRateThank\"\n | \"liveChatBackToAI\"\n | \"liveChatSubmit\"\n | \"liveChatSkip\"\n | \"liveChatFeedbackPlaceholder\"\n | \"liveChatTalkToHuman\"\n | \"liveChatIdentityTitle\"\n | \"liveChatIdentityName\"\n | \"liveChatIdentityEmail\"\n | \"liveChatIdentityConnect\"\n | \"liveChatIdentityContinue\"\n | \"liveChatRateExperience\"\n | \"liveChatEnded\";\n\n/** A complete set of translations for a language. */\nexport type TranslationMap = Record<TranslationKeys, string>;\n\n/** Built-in English translations. */\nconst en: TranslationMap = {\n welcomeTitle: \"Welcome to {clientName}\",\n welcomeSubtitle: \"How can I assist you today? Select a topic or type your message below.\",\n searchKnowledgeBase: \"Searching knowledge base...\",\n searchingFor: 'Searching for \"{query}\"...',\n processing: \"Processing...\",\n thinking: \"Thinking...\",\n newConversation: \"New conversation\",\n backToStart: \"Back to start\",\n closeChat: \"Close chat\",\n alwaysVerify: \"Always verify AI responses\",\n poweredBy: \"powered by\",\n startNewConversation: \"Start New Conversation\",\n somethingWentWrong: \"Something Went Wrong\",\n conversationTooLong: \"Conversation Too Long\",\n conversationTooLongDesc: \"The conversation has become too long to continue.\",\n somethingWentWrongDesc: \"We encountered an issue. Please try again or start fresh.\",\n typeMessage: \"Type a message...\",\n send: \"Send\",\n aboutUs: \"About Us\",\n aboutUsDesc: \"Learn more about our services\",\n support: \"Support\",\n supportDesc: \"Get help with your questions\",\n features: \"Features\",\n featuresDesc: \"Discover what we can do\",\n search: \"Search\",\n searchDesc: \"Find specific information\",\n greeting: \"Hi there 👋 How can I help you today?\",\n guest: \"Guest\",\n guestDesc: \"Just browsing\",\n customer: \"Customer\",\n customerDesc: \"Existing customer with questions\",\n partner: \"Partner\",\n partnerDesc: \"Business partner or professional\",\n aboutUsQuery: \"Tell me about About Us\",\n supportQuery: \"Tell me about Support\",\n featuresQuery: \"Tell me about Features\",\n searchQuery: \"Tell me about Search\",\n whatWentWrong: \"What went wrong?\",\n wrongAnswer: \"Wrong answer\",\n partialAnswer: \"Partial answer\",\n hallucination: \"Hallucination\",\n inappropriateTone: \"Inappropriate tone\",\n addDetails: \"Add details (optional)...\",\n submitting: \"Submitting...\",\n submitFeedback: \"Submit Feedback\",\n helpful: \"Helpful\",\n notHelpful: \"Not helpful\",\n copyResponse: \"Copy response\",\n searchingProducts: \"Searching products...\",\n searchingProductsFor: 'Searching products: \"{query}\"...',\n sendingVerification: \"Sending verification code...\",\n verifyingOrders: \"Verifying and fetching orders...\",\n generatingLogin: \"Generating login link...\",\n noProductsFound: \"No products found\",\n noOrdersFound: \"No orders found\",\n inStock: \"In stock\",\n outOfStock: \"Out of stock\",\n backorder: \"Backorder\",\n sale: \"Sale\",\n addToCart: \"Add to Cart\",\n addedToCart: \"Added to cart!\",\n addToCartError: \"Failed to add to cart\",\n loginToStore: \"Login to Store\",\n enterEmail: \"Enter your email to verify\",\n sendCode: \"Send verification code\",\n otpSentTo: \"Verification code sent to {email}\",\n verifyCode: \"Verify\",\n verifiedSuccess: \"Verified successfully!\",\n resendCode: \"Resend code\",\n invalidCode: \"Invalid code, please try again\",\n selectVariation: \"Select\",\n orderStatus_completed: \"Completed\",\n orderStatus_processing: \"Processing\",\n \"orderStatus_on-hold\": \"On Hold\",\n orderStatus_pending: \"Pending\",\n orderStatus_cancelled: \"Cancelled\",\n orderStatus_failed: \"Failed\",\n orderStatus_refunded: \"Refunded\",\n cart: \"Cart\",\n yourCart: \"Your Cart\",\n cartItems: \"{count} items\",\n cartEmpty: \"Your cart is empty\",\n checkout: \"Checkout\",\n cartTotal: \"Total\",\n removeItem: \"Remove\",\n liveChatConnecting: \"Connecting you with an operator...\",\n liveChatPosition: \"Position #{position}\",\n liveChatCancel: \"Cancel\",\n liveChatChattingWith: \"Chatting with {name}\",\n liveChatEndChat: \"End Chat\",\n liveChatRateTitle: \"How was your experience?\",\n liveChatRateThank: \"Thank you for your feedback!\",\n liveChatBackToAI: \"Back to AI Assistant\",\n liveChatSubmit: \"Submit\",\n liveChatSkip: \"Skip\",\n liveChatFeedbackPlaceholder: \"Any additional feedback? (optional)\",\n liveChatTalkToHuman: \"Talk to an operator\",\n liveChatIdentityTitle: \"Please provide your details to connect with an operator\",\n liveChatIdentityName: \"Your name\",\n liveChatIdentityEmail: \"Your email\",\n liveChatIdentityConnect: \"Connect\",\n liveChatIdentityContinue: \"Continue\",\n liveChatRateExperience: \"Rate your experience\",\n liveChatEnded: \"Chat ended\",\n};\n\n/** Built-in Hebrew translations. */\nconst he: TranslationMap = {\n welcomeTitle: \"ברוכים הבאים ל-{clientName}\",\n welcomeSubtitle: \"איך אוכל לעזור היום? בחרו נושא או הקלידו הודעה למטה.\",\n searchKnowledgeBase: \"מחפש במאגר הידע...\",\n searchingFor: 'מחפש את \"{query}\"...',\n processing: \"מעבד...\",\n thinking: \"חושב...\",\n newConversation: \"שיחה חדשה\",\n backToStart: \"חזרה להתחלה\",\n closeChat: \"סגור צ'אט\",\n alwaysVerify: \"תמיד כדאי לוודא את תשובות ה-AI\",\n poweredBy: \"מופעל על ידי\",\n startNewConversation: \"התחל שיחה חדשה\",\n somethingWentWrong: \"משהו השתבש\",\n conversationTooLong: \"השיחה ארוכה מדי\",\n conversationTooLongDesc: \"השיחה הפכה לארוכה מדי בשביל להמשיך.\",\n somethingWentWrongDesc: \"נתקלנו בבעיה. אנא נסו שוב או התחילו מחדש.\",\n typeMessage: \"הקלד הודעה...\",\n send: \"שלח\",\n aboutUs: \"אודותינו\",\n aboutUsDesc: \"למדו עוד על השירותים שלנו\",\n support: \"תמיכה\",\n supportDesc: \"קבלו עזרה עם השאלות שלכם\",\n features: \"פיצ'רים\",\n featuresDesc: \"גלו מה אנחנו יכולים לעשות\",\n search: \"חיפוש\",\n searchDesc: \"מצאו מידע ספציפי\",\n greeting: \"שלום 👋 איך אוכל לעזור לכם היום?\",\n guest: \"אורח\",\n guestDesc: \"רק גולש\",\n customer: \"לקוח\",\n customerDesc: \"לקוח קיים עם שאלות\",\n partner: \"שותף\",\n partnerDesc: \"שותף עסקי או איש מקצוע\",\n aboutUsQuery: \"ספר לי על אודותינו\",\n supportQuery: \"ספר לי על תמיכה\",\n featuresQuery: \"ספר לי על פיצ'רים\",\n searchQuery: \"ספר לי על חיפוש\",\n whatWentWrong: \"מה השתבש?\",\n wrongAnswer: \"תשובה לא נכונה\",\n partialAnswer: \"תשובה חלקית\",\n hallucination: \"הזיה (מידע מומצא)\",\n inappropriateTone: \"טון לא הולם\",\n addDetails: \"הוסיפו פרטים (אופציונלי)...\",\n submitting: \"שולח...\",\n submitFeedback: \"שלח משוב\",\n helpful: \"עוזר\",\n notHelpful: \"לא עוזר\",\n copyResponse: \"העתק תשובה\",\n searchingProducts: \"מחפש מוצרים...\",\n searchingProductsFor: 'מחפש מוצרים: \"{query}\"...',\n sendingVerification: \"שולח קוד אימות...\",\n verifyingOrders: \"מאמת ומביא הזמנות...\",\n generatingLogin: \"מייצר קישור התחברות...\",\n noProductsFound: \"לא נמצאו מוצרים\",\n noOrdersFound: \"לא נמצאו הזמנות\",\n inStock: \"במלאי\",\n outOfStock: \"אזל מהמלאי\",\n backorder: \"בהזמנה מראש\",\n sale: \"מבצע\",\n addToCart: \"הוסף לסל\",\n addedToCart: \"נוסף לסל!\",\n addToCartError: \"שגיאה בהוספה לסל\",\n loginToStore: \"התחבר לחנות\",\n enterEmail: \"הזינו אימייל לאימות\",\n sendCode: \"שלח קוד אימות\",\n otpSentTo: \"קוד אימות נשלח ל-{email}\",\n verifyCode: \"אמת\",\n verifiedSuccess: \"אומת בהצלחה!\",\n resendCode: \"שלח שוב\",\n invalidCode: \"קוד שגוי, נסו שוב\",\n selectVariation: \"בחר\",\n orderStatus_completed: \"הושלמה\",\n orderStatus_processing: \"בטיפול\",\n \"orderStatus_on-hold\": \"בהמתנה\",\n orderStatus_pending: \"ממתינה\",\n orderStatus_cancelled: \"בוטלה\",\n orderStatus_failed: \"נכשלה\",\n orderStatus_refunded: \"הוחזרה\",\n cart: \"סל\",\n yourCart: \"הסל שלך\",\n cartItems: \"{count} פריטים\",\n cartEmpty: \"הסל ריק\",\n checkout: \"לתשלום\",\n cartTotal: \"סה״כ\",\n removeItem: \"הסר\",\n liveChatConnecting: \"מחבר אותך לנציג...\",\n liveChatPosition: \"מיקום #{position}\",\n liveChatCancel: \"ביטול\",\n liveChatChattingWith: \"משוחח עם {name}\",\n liveChatEndChat: \"סיום שיחה\",\n liveChatRateTitle: \"איך היה השירות?\",\n liveChatRateThank: \"תודה על המשוב!\",\n liveChatBackToAI: \"חזרה לעוזר AI\",\n liveChatSubmit: \"שלח\",\n liveChatSkip: \"דלג\",\n liveChatFeedbackPlaceholder: \"משוב נוסף (אופציונלי)...\",\n liveChatTalkToHuman: \"דבר עם נציג\",\n liveChatIdentityTitle: \"אנא מלא/י את הפרטים כדי להתחבר לנציג\",\n liveChatIdentityName: \"שם\",\n liveChatIdentityEmail: \"אימייל\",\n liveChatIdentityConnect: \"התחבר\",\n liveChatIdentityContinue: \"המשך\",\n liveChatRateExperience: \"דרגו את החוויה שלכם\",\n liveChatEnded: \"השיחה הסתיימה\",\n};\n\n/** Built-in translation registry. */\nconst builtInTranslations: Record<string, TranslationMap> = { en, he };\n\n/** Registry for dynamically added languages. */\nconst customTranslations: Record<string, TranslationMap> = {};\n\n/**\n * Register a new language at runtime. Merges with any existing translations.\n *\n * @param code - Language code (e.g. \"fr\", \"es\")\n * @param translations - Full or partial translation map\n */\nexport function addLanguage(\n code: string,\n translations: Partial<TranslationMap>\n): void {\n const base = customTranslations[code] || builtInTranslations[code] || en;\n customTranslations[code] = { ...base, ...translations };\n}\n\n/** Resolve a translation string for the given language and key. */\nfunction resolve(\n language: string,\n key: TranslationKeys,\n overrides?: Partial<TranslationMap>,\n params?: Record<string, string>\n): string {\n // Priority: overrides > custom > built-in > fallback to English\n let text =\n overrides?.[key] ||\n customTranslations[language]?.[key] ||\n builtInTranslations[language]?.[key] ||\n builtInTranslations[\"en\"][key] ||\n key;\n\n if (params) {\n Object.entries(params).forEach(([k, v]) => {\n text = text.replace(`{${k}}`, v);\n });\n }\n return text;\n}\n\n/** RTL language codes. */\nconst RTL_LANGUAGES = new Set([\"he\", \"ar\", \"fa\", \"ur\"]);\n\n/** Returns true if the given language code is RTL. */\nexport function isRTL(language: string): boolean {\n return RTL_LANGUAGES.has(language);\n}\n\ninterface I18nContextValue {\n /** Translate a key, with optional interpolation params. */\n t: (key: TranslationKeys, params?: Record<string, string>) => string;\n /** Current language code. */\n language: string;\n /** Change the active language at runtime. */\n setLanguage: (lang: string) => void;\n /** Current text direction. */\n direction: \"ltr\" | \"rtl\";\n}\n\nconst I18nContext = createContext<I18nContextValue | null>(null);\n\n/** Props for the I18nProvider component. */\nexport interface I18nProviderProps {\n /** Active language code. Defaults to \"en\". */\n language?: string;\n /** Per-key translation overrides applied on top of built-in strings. */\n translations?: Partial<TranslationMap>;\n children: ReactNode;\n}\n\n/**\n * Provides i18n context to descendant components.\n * Supports built-in \"en\" and \"he\", dynamic languages via `addLanguage()`,\n * and per-instance overrides via the `translations` prop.\n */\nexport function I18nProvider({\n language: initialLanguage = \"en\",\n translations: overrides,\n children,\n}: I18nProviderProps) {\n const [language, setLanguage] = useState(initialLanguage);\n\n const t = useCallback(\n (key: TranslationKeys, params?: Record<string, string>) =>\n resolve(language, key, overrides, params),\n [language, overrides]\n );\n\n const direction = isRTL(language) ? \"rtl\" : \"ltr\";\n\n const value = useMemo<I18nContextValue>(\n () => ({ t, language, setLanguage, direction }),\n [t, language, direction]\n );\n\n return <I18nContext.Provider value={value}>{children}</I18nContext.Provider>;\n}\n\n/**\n * Returns the i18n context: `t()` translation function, current language, and `setLanguage`.\n * Must be used within an `I18nProvider`.\n */\nexport function useI18n(): I18nContextValue {\n const ctx = useContext(I18nContext);\n if (!ctx) {\n throw new Error(\"useI18n must be used within an I18nProvider\");\n }\n return ctx;\n}\n"]}
|