@chatsdk-dev/elements 0.1.2 → 0.1.3

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.
@@ -2,7 +2,7 @@ import { r as languages } from "../../config-BigIL6TQ.js";
2
2
  import { i18n } from "../../i18n/i18next.js";
3
3
  import { getLocaleChainFromLocale } from "../../i18n/utils.js";
4
4
  import { createContext, use } from "react";
5
- import { jsx, jsxs } from "react/jsx-runtime";
5
+ import { jsx } from "react/jsx-runtime";
6
6
  import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
7
7
  import { I18nextProvider } from "react-i18next";
8
8
  //#region src/features/element/element-provider.tsx
@@ -56,13 +56,14 @@ function createElementContext({ name }) {
56
56
  },
57
57
  children: /* @__PURE__ */ jsx(QueryClientProvider, {
58
58
  client: queryClient,
59
- children: /* @__PURE__ */ jsxs(ElementTranslationsProvider, {
59
+ children: /* @__PURE__ */ jsx(ElementTranslationsProvider, {
60
60
  localeConfig: config.locale,
61
61
  translationsConfig: config.translations,
62
- children: [/* @__PURE__ */ jsx("div", {
62
+ children: /* @__PURE__ */ jsx("div", {
63
63
  "data-chatsdk": true,
64
- className: "contents"
65
- }), children]
64
+ className: "contents",
65
+ children
66
+ })
66
67
  })
67
68
  })
68
69
  });
@@ -1 +1 @@
1
- {"version":3,"file":"element-provider.js","names":[],"sources":["../../../src/features/element/element-provider.tsx"],"sourcesContent":["import { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\nimport React, { createContext, use } from \"react\";\nimport { I18nextProvider } from \"react-i18next\";\n\nimport { languages } from \"../../i18n/config\";\nimport { i18n } from \"../../i18n/i18next\";\nimport { getLocaleChainFromLocale } from \"../../i18n/utils\";\n\nimport type { Callbacks } from \"./types/callbacks\";\nimport type { RootConfig } from \"./types/config\";\n\nconst queryClient = new QueryClient();\n\ninterface TranslationsProviderProps {\n localeConfig: RootConfig[\"locale\"];\n translationsConfig: RootConfig[\"translations\"];\n children: React.ReactNode;\n}\n\nfunction ElementTranslationsProvider({\n localeConfig,\n translationsConfig,\n children,\n}: TranslationsProviderProps) {\n let language = localeConfig?.language;\n if (language && !languages.includes(language)) {\n // if region doesn't exists, try base language (see https://en.wikipedia.org/wiki/IETF_language_tag)\n const [_languageTag] = getLocaleChainFromLocale(language);\n if (_languageTag && languages.includes(_languageTag)) {\n language = _languageTag;\n }\n }\n\n // handle locale config\n let _i18n = i18n;\n if (\n language &&\n (i18n.language !== language ||\n i18n.options.formality !== localeConfig?.formality) &&\n Object.keys(i18n.services.resourceStore.data).includes(language)\n ) {\n _i18n = i18n.cloneInstance({\n lng: language,\n formality: localeConfig?.formality,\n });\n }\n\n // handle translations config\n if (translationsConfig) {\n for (const [namespace, translations] of Object.entries(\n translationsConfig,\n )) {\n for (const [language, resource] of Object.entries(translations)) {\n _i18n.addResourceBundle(language, namespace, resource, true, true);\n }\n }\n }\n\n return (\n <I18nextProvider i18n={_i18n} defaultNS={\"elements\"}>\n {children}\n </I18nextProvider>\n );\n}\n\nexport interface ElementContextType<T, W> {\n config: RootConfig;\n component: T;\n callbacks: Callbacks<W>;\n}\n\nexport interface ElementProviderProps<T, W> {\n config: RootConfig;\n component: T;\n children: React.ReactNode;\n callbacks: Callbacks<W>;\n}\n\ninterface CreateElementContextParams {\n name: string;\n}\n\nexport function createElementContext<T, W>({\n name,\n}: CreateElementContextParams) {\n const ElementContext = createContext<ElementContextType<T, W> | null>(null);\n\n function useElement() {\n const v = use(ElementContext);\n if (!v) throw new Error(\"Must be used within its ElementProvider\");\n return v;\n }\n function useElementConfig() {\n const v = use(ElementContext);\n if (!v) throw new Error(\"Must be used within its ElementProvider\");\n return v.config;\n }\n function useElementComponent() {\n const v = use(ElementContext);\n if (!v) throw new Error(\"Must be used within its ElementProvider\");\n return v.component;\n }\n function useElementCallbacks() {\n const v = use(ElementContext);\n if (!v) throw new Error(\"Must be used within its ElementProvider\");\n return v.callbacks;\n }\n\n function TypedElementProvider({\n config = {},\n component,\n callbacks,\n children,\n }: ElementProviderProps<T, W>) {\n return (\n <ElementContext.Provider value={{ config, component, callbacks }}>\n <QueryClientProvider client={queryClient}>\n <ElementTranslationsProvider\n localeConfig={config.locale}\n translationsConfig={config.translations}\n >\n <div data-chatsdk className=\"contents\"></div>\n {children}\n </ElementTranslationsProvider>\n </QueryClientProvider>\n </ElementContext.Provider>\n );\n }\n TypedElementProvider.displayName = `ElementProvider<${name}>`;\n\n return {\n useElement,\n useElementConfig,\n useElementComponent,\n useElementCallbacks,\n ElementProvider: TypedElementProvider,\n } as const;\n}\n"],"mappings":";;;;;;;;AAWA,MAAM,cAAc,IAAI,aAAa;AAQrC,SAAS,4BAA4B,EACnC,cACA,oBACA,YAC4B;CAC5B,IAAI,WAAW,cAAc;AAC7B,KAAI,YAAY,CAAC,UAAU,SAAS,SAAS,EAAE;EAE7C,MAAM,CAAC,gBAAgB,yBAAyB,SAAS;AACzD,MAAI,gBAAgB,UAAU,SAAS,aAAa,CAClD,YAAW;;CAKf,IAAI,QAAQ;AACZ,KACE,aACC,KAAK,aAAa,YACjB,KAAK,QAAQ,cAAc,cAAc,cAC3C,OAAO,KAAK,KAAK,SAAS,cAAc,KAAK,CAAC,SAAS,SAAS,CAEhE,SAAQ,KAAK,cAAc;EACzB,KAAK;EACL,WAAW,cAAc;EAC1B,CAAC;AAIJ,KAAI,mBACF,MAAK,MAAM,CAAC,WAAW,iBAAiB,OAAO,QAC7C,mBACD,CACC,MAAK,MAAM,CAAC,UAAU,aAAa,OAAO,QAAQ,aAAa,CAC7D,OAAM,kBAAkB,UAAU,WAAW,UAAU,MAAM,KAAK;AAKxE,QACE,oBAAC,iBAAD;EAAiB,MAAM;EAAO,WAAW;EACtC;EACe,CAAA;;AAqBtB,SAAgB,qBAA2B,EACzC,QAC6B;CAC7B,MAAM,iBAAiB,cAA+C,KAAK;CAE3E,SAAS,aAAa;EACpB,MAAM,IAAI,IAAI,eAAe;AAC7B,MAAI,CAAC,EAAG,OAAM,IAAI,MAAM,0CAA0C;AAClE,SAAO;;CAET,SAAS,mBAAmB;EAC1B,MAAM,IAAI,IAAI,eAAe;AAC7B,MAAI,CAAC,EAAG,OAAM,IAAI,MAAM,0CAA0C;AAClE,SAAO,EAAE;;CAEX,SAAS,sBAAsB;EAC7B,MAAM,IAAI,IAAI,eAAe;AAC7B,MAAI,CAAC,EAAG,OAAM,IAAI,MAAM,0CAA0C;AAClE,SAAO,EAAE;;CAEX,SAAS,sBAAsB;EAC7B,MAAM,IAAI,IAAI,eAAe;AAC7B,MAAI,CAAC,EAAG,OAAM,IAAI,MAAM,0CAA0C;AAClE,SAAO,EAAE;;CAGX,SAAS,qBAAqB,EAC5B,SAAS,EAAE,EACX,WACA,WACA,YAC6B;AAC7B,SACE,oBAAC,eAAe,UAAhB;GAAyB,OAAO;IAAE;IAAQ;IAAW;IAAW;aAC9D,oBAAC,qBAAD;IAAqB,QAAQ;cAC3B,qBAAC,6BAAD;KACE,cAAc,OAAO;KACrB,oBAAoB,OAAO;eAF7B,CAIE,oBAAC,OAAD;MAAK,gBAAA;MAAa,WAAU;MAAiB,CAAA,EAC5C,SAC2B;;IACV,CAAA;GACE,CAAA;;AAG9B,sBAAqB,cAAc,mBAAmB,KAAK;AAE3D,QAAO;EACL;EACA;EACA;EACA;EACA,iBAAiB;EAClB"}
1
+ {"version":3,"file":"element-provider.js","names":[],"sources":["../../../src/features/element/element-provider.tsx"],"sourcesContent":["import { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\nimport React, { createContext, use } from \"react\";\nimport { I18nextProvider } from \"react-i18next\";\n\nimport { languages } from \"../../i18n/config\";\nimport { i18n } from \"../../i18n/i18next\";\nimport { getLocaleChainFromLocale } from \"../../i18n/utils\";\n\nimport type { Callbacks } from \"./types/callbacks\";\nimport type { RootConfig } from \"./types/config\";\n\nconst queryClient = new QueryClient();\n\ninterface TranslationsProviderProps {\n localeConfig: RootConfig[\"locale\"];\n translationsConfig: RootConfig[\"translations\"];\n children: React.ReactNode;\n}\n\nfunction ElementTranslationsProvider({\n localeConfig,\n translationsConfig,\n children,\n}: TranslationsProviderProps) {\n let language = localeConfig?.language;\n if (language && !languages.includes(language)) {\n // if region doesn't exists, try base language (see https://en.wikipedia.org/wiki/IETF_language_tag)\n const [_languageTag] = getLocaleChainFromLocale(language);\n if (_languageTag && languages.includes(_languageTag)) {\n language = _languageTag;\n }\n }\n\n // handle locale config\n let _i18n = i18n;\n if (\n language &&\n (i18n.language !== language ||\n i18n.options.formality !== localeConfig?.formality) &&\n Object.keys(i18n.services.resourceStore.data).includes(language)\n ) {\n _i18n = i18n.cloneInstance({\n lng: language,\n formality: localeConfig?.formality,\n });\n }\n\n // handle translations config\n if (translationsConfig) {\n for (const [namespace, translations] of Object.entries(\n translationsConfig,\n )) {\n for (const [language, resource] of Object.entries(translations)) {\n _i18n.addResourceBundle(language, namespace, resource, true, true);\n }\n }\n }\n\n return (\n <I18nextProvider i18n={_i18n} defaultNS={\"elements\"}>\n {children}\n </I18nextProvider>\n );\n}\n\nexport interface ElementContextType<T, W> {\n config: RootConfig;\n component: T;\n callbacks: Callbacks<W>;\n}\n\nexport interface ElementProviderProps<T, W> {\n config: RootConfig;\n component: T;\n children: React.ReactNode;\n callbacks: Callbacks<W>;\n}\n\ninterface CreateElementContextParams {\n name: string;\n}\n\nexport function createElementContext<T, W>({\n name,\n}: CreateElementContextParams) {\n const ElementContext = createContext<ElementContextType<T, W> | null>(null);\n\n function useElement() {\n const v = use(ElementContext);\n if (!v) throw new Error(\"Must be used within its ElementProvider\");\n return v;\n }\n function useElementConfig() {\n const v = use(ElementContext);\n if (!v) throw new Error(\"Must be used within its ElementProvider\");\n return v.config;\n }\n function useElementComponent() {\n const v = use(ElementContext);\n if (!v) throw new Error(\"Must be used within its ElementProvider\");\n return v.component;\n }\n function useElementCallbacks() {\n const v = use(ElementContext);\n if (!v) throw new Error(\"Must be used within its ElementProvider\");\n return v.callbacks;\n }\n\n function TypedElementProvider({\n config = {},\n component,\n callbacks,\n children,\n }: ElementProviderProps<T, W>) {\n return (\n <ElementContext.Provider value={{ config, component, callbacks }}>\n <QueryClientProvider client={queryClient}>\n <ElementTranslationsProvider\n localeConfig={config.locale}\n translationsConfig={config.translations}\n >\n <div data-chatsdk className=\"contents\">\n {children}\n </div>\n </ElementTranslationsProvider>\n </QueryClientProvider>\n </ElementContext.Provider>\n );\n }\n TypedElementProvider.displayName = `ElementProvider<${name}>`;\n\n return {\n useElement,\n useElementConfig,\n useElementComponent,\n useElementCallbacks,\n ElementProvider: TypedElementProvider,\n } as const;\n}\n"],"mappings":";;;;;;;;AAWA,MAAM,cAAc,IAAI,aAAa;AAQrC,SAAS,4BAA4B,EACnC,cACA,oBACA,YAC4B;CAC5B,IAAI,WAAW,cAAc;AAC7B,KAAI,YAAY,CAAC,UAAU,SAAS,SAAS,EAAE;EAE7C,MAAM,CAAC,gBAAgB,yBAAyB,SAAS;AACzD,MAAI,gBAAgB,UAAU,SAAS,aAAa,CAClD,YAAW;;CAKf,IAAI,QAAQ;AACZ,KACE,aACC,KAAK,aAAa,YACjB,KAAK,QAAQ,cAAc,cAAc,cAC3C,OAAO,KAAK,KAAK,SAAS,cAAc,KAAK,CAAC,SAAS,SAAS,CAEhE,SAAQ,KAAK,cAAc;EACzB,KAAK;EACL,WAAW,cAAc;EAC1B,CAAC;AAIJ,KAAI,mBACF,MAAK,MAAM,CAAC,WAAW,iBAAiB,OAAO,QAC7C,mBACD,CACC,MAAK,MAAM,CAAC,UAAU,aAAa,OAAO,QAAQ,aAAa,CAC7D,OAAM,kBAAkB,UAAU,WAAW,UAAU,MAAM,KAAK;AAKxE,QACE,oBAAC,iBAAD;EAAiB,MAAM;EAAO,WAAW;EACtC;EACe,CAAA;;AAqBtB,SAAgB,qBAA2B,EACzC,QAC6B;CAC7B,MAAM,iBAAiB,cAA+C,KAAK;CAE3E,SAAS,aAAa;EACpB,MAAM,IAAI,IAAI,eAAe;AAC7B,MAAI,CAAC,EAAG,OAAM,IAAI,MAAM,0CAA0C;AAClE,SAAO;;CAET,SAAS,mBAAmB;EAC1B,MAAM,IAAI,IAAI,eAAe;AAC7B,MAAI,CAAC,EAAG,OAAM,IAAI,MAAM,0CAA0C;AAClE,SAAO,EAAE;;CAEX,SAAS,sBAAsB;EAC7B,MAAM,IAAI,IAAI,eAAe;AAC7B,MAAI,CAAC,EAAG,OAAM,IAAI,MAAM,0CAA0C;AAClE,SAAO,EAAE;;CAEX,SAAS,sBAAsB;EAC7B,MAAM,IAAI,IAAI,eAAe;AAC7B,MAAI,CAAC,EAAG,OAAM,IAAI,MAAM,0CAA0C;AAClE,SAAO,EAAE;;CAGX,SAAS,qBAAqB,EAC5B,SAAS,EAAE,EACX,WACA,WACA,YAC6B;AAC7B,SACE,oBAAC,eAAe,UAAhB;GAAyB,OAAO;IAAE;IAAQ;IAAW;IAAW;aAC9D,oBAAC,qBAAD;IAAqB,QAAQ;cAC3B,oBAAC,6BAAD;KACE,cAAc,OAAO;KACrB,oBAAoB,OAAO;eAE3B,oBAAC,OAAD;MAAK,gBAAA;MAAa,WAAU;MACzB;MACG,CAAA;KACsB,CAAA;IACV,CAAA;GACE,CAAA;;AAG9B,sBAAqB,cAAc,mBAAmB,KAAK;AAE3D,QAAO;EACL;EACA;EACA;EACA;EACA,iBAAiB;EAClB"}
@@ -19,7 +19,7 @@ type ComponentProps<T extends object, U extends object> = Omit<RequiredTAndOptio
19
19
  declare function useMergeElementConfig<T extends object, U extends ElementConfig<T, W>, W = (U extends Callbacks<infer CallbackType> ? CallbackType : unknown)>(elementConfig: {
20
20
  props: U;
21
21
  name: string;
22
- }): Omit<Omit<U, "defaultProps" | "component">, "config" | "onloading" | "onsuccess" | "onerror"> & {
22
+ }): Omit<Omit<U, "component" | "defaultProps">, "config" | "onloading" | "onsuccess" | "onerror"> & {
23
23
  config: {
24
24
  logger: Required<LoggerInput>;
25
25
  locale: LocaleConfig | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chatsdk-dev/elements",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "files": [
@@ -31,8 +31,8 @@
31
31
  "lucide-react": "^0.577.0",
32
32
  "react-i18next": "^16.6.0",
33
33
  "zustand": "^5.0.12",
34
- "@chatsdk-dev/ui": "0.1.2",
35
- "@chatsdk-dev/api-client": "0.1.2"
34
+ "@chatsdk-dev/api-client": "0.1.3",
35
+ "@chatsdk-dev/ui": "0.1.3"
36
36
  },
37
37
  "devDependencies": {
38
38
  "@storybook/react": "10.2.19",
@@ -50,9 +50,9 @@
50
50
  "tailwindcss": "^4.2.2",
51
51
  "tsdown": "^0.21.5",
52
52
  "typescript": "5.9.3",
53
- "@chatsdk-dev/tailwind-config": "0.0.0",
53
+ "@chatsdk-dev/eslint-config": "0.0.0",
54
54
  "@chatsdk-dev/typescript-config": "0.0.0",
55
- "@chatsdk-dev/eslint-config": "0.0.0"
55
+ "@chatsdk-dev/tailwind-config": "0.0.0"
56
56
  },
57
57
  "keywords": [
58
58
  "react",