@rovela-ai/sdk 0.13.0 → 0.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"LanguageSwitcher.d.ts","sourceRoot":"","sources":["../../../src/core/i18n/LanguageSwitcher.tsx"],"names":[],"mappings":"AAsBA,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,wEAAwE;IACxE,OAAO,CAAC,EAAE,SAAS,GAAG,MAAM,CAAA;CAC7B;AAED,wBAAgB,gBAAgB,CAAC,EAAE,SAAc,EAAE,OAAmB,EAAE,EAAE,qBAAqB,kDA+C9F"}
1
+ {"version":3,"file":"LanguageSwitcher.d.ts","sourceRoot":"","sources":["../../../src/core/i18n/LanguageSwitcher.tsx"],"names":[],"mappings":"AAsBA,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,wEAAwE;IACxE,OAAO,CAAC,EAAE,SAAS,GAAG,MAAM,CAAA;CAC7B;AAED,wBAAgB,gBAAgB,CAAC,EAAE,SAAc,EAAE,OAAmB,EAAE,EAAE,qBAAqB,kDAqD9F"}
@@ -15,14 +15,20 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
15
15
  import { useCallback } from 'react';
16
16
  import { Globe } from 'lucide-react';
17
17
  import { useStoreSettingsOptional } from '../StoreSettingsProvider';
18
- import { useLocale, useT } from './context';
18
+ import { useLocale, useT, useLocaleConfigFromProvider } from './context';
19
19
  import { resolveStoreLocaleConfig, localePath } from './resolve';
20
20
  import { LOCALE_COOKIE, LOCALE_LABELS } from './types';
21
21
  export function LanguageSwitcher({ className = '', variant = 'compact' }) {
22
22
  const t = useT();
23
23
  const settings = useStoreSettingsOptional()?.settings;
24
24
  const locale = useLocale();
25
- const config = resolveStoreLocaleConfig(settings);
25
+ const providerConfig = useLocaleConfigFromProvider();
26
+ const config = providerConfig.enabledLocales?.length
27
+ ? {
28
+ defaultLocale: providerConfig.defaultLocale ?? resolveStoreLocaleConfig(settings).defaultLocale,
29
+ enabledLocales: providerConfig.enabledLocales,
30
+ }
31
+ : resolveStoreLocaleConfig(settings);
26
32
  const switchTo = useCallback((target) => {
27
33
  try {
28
34
  document.cookie = `${LOCALE_COOKIE}=${target}; path=/; max-age=31536000; samesite=lax`;
@@ -1 +1 @@
1
- {"version":3,"file":"LanguageSwitcher.js","sourceRoot":"","sources":["../../../src/core/i18n/LanguageSwitcher.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AACpC,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAA;AACnE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAoB,MAAM,SAAS,CAAA;AAQxE,MAAM,UAAU,gBAAgB,CAAC,EAAE,SAAS,GAAG,EAAE,EAAE,OAAO,GAAG,SAAS,EAAyB;IAC7F,MAAM,CAAC,GAAG,IAAI,EAAE,CAAA;IAChB,MAAM,QAAQ,GAAG,wBAAwB,EAAE,EAAE,QAAQ,CAAA;IACrD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,MAAM,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAA;IAEjD,MAAM,QAAQ,GAAG,WAAW,CAC1B,CAAC,MAAmB,EAAE,EAAE;QACtB,IAAI,CAAC;YACH,QAAQ,CAAC,MAAM,GAAG,GAAG,aAAa,IAAI,MAAM,0CAA0C,CAAA;QACxF,CAAC;QAAC,MAAM,CAAC;YACP,iEAAiE;QACnE,CAAC;QACD,mEAAmE;QACnE,MAAM,CAAC,QAAQ,CAAC,IAAI;YAClB,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC;gBAClE,MAAM,CAAC,QAAQ,CAAC,MAAM;gBACtB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAA;IACxB,CAAC,EACD,CAAC,MAAM,CAAC,aAAa,CAAC,CACvB,CAAA;IAED,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IAEjD,OAAO,CACL,eAAK,SAAS,EAAE,mCAAmC,SAAS,EAAE,gBAAc,CAAC,CAAC,iBAAiB,CAAC,aAC9F,KAAC,KAAK,IAAC,SAAS,EAAC,+BAA+B,iBAAa,MAAM,GAAG,EACrE,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACnC,gBAAc,SAAS,EAAC,mBAAmB,aACxC,CAAC,GAAG,CAAC,IAAI,eAAM,SAAS,EAAC,+BAA+B,kBAAS,EAClE,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAC1B,QAAQ,EAAE,CAAC,KAAK,MAAM,kBACR,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAC/C,SAAS,EACP,CAAC,KAAK,MAAM;4BACV,CAAC,CAAC,8CAA8C;4BAChD,CAAC,CAAC,+DAA+D,YAGpE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GACpD,KAdA,CAAC,CAeL,CACR,CAAC,IACE,CACP,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"LanguageSwitcher.js","sourceRoot":"","sources":["../../../src/core/i18n/LanguageSwitcher.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AACpC,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAA;AACnE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAA;AACxE,OAAO,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAoB,MAAM,SAAS,CAAA;AAQxE,MAAM,UAAU,gBAAgB,CAAC,EAAE,SAAS,GAAG,EAAE,EAAE,OAAO,GAAG,SAAS,EAAyB;IAC7F,MAAM,CAAC,GAAG,IAAI,EAAE,CAAA;IAChB,MAAM,QAAQ,GAAG,wBAAwB,EAAE,EAAE,QAAQ,CAAA;IACrD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,cAAc,GAAG,2BAA2B,EAAE,CAAA;IACpD,MAAM,MAAM,GAAG,cAAc,CAAC,cAAc,EAAE,MAAM;QAClD,CAAC,CAAC;YACE,aAAa,EAAE,cAAc,CAAC,aAAa,IAAI,wBAAwB,CAAC,QAAQ,CAAC,CAAC,aAAa;YAC/F,cAAc,EAAE,cAAc,CAAC,cAAc;SAC9C;QACH,CAAC,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAA;IAEtC,MAAM,QAAQ,GAAG,WAAW,CAC1B,CAAC,MAAmB,EAAE,EAAE;QACtB,IAAI,CAAC;YACH,QAAQ,CAAC,MAAM,GAAG,GAAG,aAAa,IAAI,MAAM,0CAA0C,CAAA;QACxF,CAAC;QAAC,MAAM,CAAC;YACP,iEAAiE;QACnE,CAAC;QACD,mEAAmE;QACnE,MAAM,CAAC,QAAQ,CAAC,IAAI;YAClB,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC;gBAClE,MAAM,CAAC,QAAQ,CAAC,MAAM;gBACtB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAA;IACxB,CAAC,EACD,CAAC,MAAM,CAAC,aAAa,CAAC,CACvB,CAAA;IAED,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IAEjD,OAAO,CACL,eAAK,SAAS,EAAE,mCAAmC,SAAS,EAAE,gBAAc,CAAC,CAAC,iBAAiB,CAAC,aAC9F,KAAC,KAAK,IAAC,SAAS,EAAC,+BAA+B,iBAAa,MAAM,GAAG,EACrE,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACnC,gBAAc,SAAS,EAAC,mBAAmB,aACxC,CAAC,GAAG,CAAC,IAAI,eAAM,SAAS,EAAC,+BAA+B,kBAAS,EAClE,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAC1B,QAAQ,EAAE,CAAC,KAAK,MAAM,kBACR,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAC/C,SAAS,EACP,CAAC,KAAK,MAAM;4BACV,CAAC,CAAC,8CAA8C;4BAChD,CAAC,CAAC,+DAA+D,YAGpE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GACpD,KAdA,CAAC,CAeL,CACR,CAAC,IACE,CACP,CAAA;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"LocaleLink.d.ts","sourceRoot":"","sources":["../../../src/core/i18n/LocaleLink.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAA2B,KAAK,cAAc,EAAE,MAAM,OAAO,CAAA;AACpE,OAAO,IAAI,MAAM,WAAW,CAAA;AAM5B,qDAAqD;AACrD,wBAAgB,aAAa,IAAI,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAkBxD;AAED,MAAM,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,IAAI,CAAC,CAAA;AAEzD,2EAA2E;AAC3E,eAAO,MAAM,UAAU;;gHAMtB,CAAA"}
1
+ {"version":3,"file":"LocaleLink.d.ts","sourceRoot":"","sources":["../../../src/core/i18n/LocaleLink.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAA2B,KAAK,cAAc,EAAE,MAAM,OAAO,CAAA;AACpE,OAAO,IAAI,MAAM,WAAW,CAAA;AAM5B,qDAAqD;AACrD,wBAAgB,aAAa,IAAI,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAuBxD;AAED,MAAM,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,IAAI,CAAC,CAAA;AAEzD,2EAA2E;AAC3E,eAAO,MAAM,UAAU;;gHAMtB,CAAA"}
@@ -20,14 +20,18 @@ import { jsx as _jsx } from "react/jsx-runtime";
20
20
  import { forwardRef, useCallback } from 'react';
21
21
  import Link from 'next/link';
22
22
  import { useStoreSettingsOptional } from '../StoreSettingsProvider';
23
- import { useLocale } from './context';
23
+ import { useLocale, useLocaleConfigFromProvider } from './context';
24
24
  import { resolveStoreLocaleConfig } from './resolve';
25
25
  import { SUPPORTED_LOCALES } from './types';
26
26
  /** Prefix an internal path for the active locale. */
27
27
  export function useLocalePath() {
28
28
  const locale = useLocale();
29
+ // Server-resolved default from the provider is hydration-safe; the
30
+ // settings-based path is the back-compat fallback (older templates) and
31
+ // is only reliable after the client settings fetch lands.
32
+ const providerConfig = useLocaleConfigFromProvider();
29
33
  const settings = useStoreSettingsOptional()?.settings;
30
- const { defaultLocale } = resolveStoreLocaleConfig(settings);
34
+ const defaultLocale = providerConfig.defaultLocale ?? resolveStoreLocaleConfig(settings).defaultLocale;
31
35
  return useCallback((path) => {
32
36
  if (locale === defaultLocale)
33
37
  return path;
@@ -1 +1 @@
1
- {"version":3,"file":"LocaleLink.js","sourceRoot":"","sources":["../../../src/core/i18n/LocaleLink.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAuB,MAAM,OAAO,CAAA;AACpE,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAA;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAA;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAE3C,qDAAqD;AACrD,MAAM,UAAU,aAAa;IAC3B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,QAAQ,GAAG,wBAAwB,EAAE,EAAE,QAAQ,CAAA;IACrD,MAAM,EAAE,aAAa,EAAE,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAA;IAE5D,OAAO,WAAW,CAChB,CAAC,IAAY,EAAE,EAAE;QACf,IAAI,MAAM,KAAK,aAAa;YAAE,OAAO,IAAI,CAAA;QACzC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAA,CAAC,6BAA6B;QACpE,sDAAsD;QACtD,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAA;QACrE,KAAK,MAAM,CAAC,IAAI,iBAAiB,EAAE,CAAC;YAClC,IAAI,IAAI,KAAK,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAA;QAChE,CAAC;QACD,OAAO,IAAI,MAAM,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;IAChD,CAAC,EACD,CAAC,MAAM,EAAE,aAAa,CAAC,CACxB,CAAA;AACH,CAAC;AAID,2EAA2E;AAC3E,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAClC,SAAS,UAAU,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG;IACxC,MAAM,QAAQ,GAAG,aAAa,EAAE,CAAA;IAChC,MAAM,aAAa,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACtE,OAAO,KAAC,IAAI,IAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa,KAAM,IAAI,GAAI,CAAA;AAC1D,CAAC,CACF,CAAA"}
1
+ {"version":3,"file":"LocaleLink.js","sourceRoot":"","sources":["../../../src/core/i18n/LocaleLink.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAuB,MAAM,OAAO,CAAA;AACpE,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAA;AACnE,OAAO,EAAE,SAAS,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAA;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAA;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAE3C,qDAAqD;AACrD,MAAM,UAAU,aAAa;IAC3B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,mEAAmE;IACnE,wEAAwE;IACxE,0DAA0D;IAC1D,MAAM,cAAc,GAAG,2BAA2B,EAAE,CAAA;IACpD,MAAM,QAAQ,GAAG,wBAAwB,EAAE,EAAE,QAAQ,CAAA;IACrD,MAAM,aAAa,GACjB,cAAc,CAAC,aAAa,IAAI,wBAAwB,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAA;IAElF,OAAO,WAAW,CAChB,CAAC,IAAY,EAAE,EAAE;QACf,IAAI,MAAM,KAAK,aAAa;YAAE,OAAO,IAAI,CAAA;QACzC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAA,CAAC,6BAA6B;QACpE,sDAAsD;QACtD,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAA;QACrE,KAAK,MAAM,CAAC,IAAI,iBAAiB,EAAE,CAAC;YAClC,IAAI,IAAI,KAAK,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAA;QAChE,CAAC;QACD,OAAO,IAAI,MAAM,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;IAChD,CAAC,EACD,CAAC,MAAM,EAAE,aAAa,CAAC,CACxB,CAAA;AACH,CAAC;AAID,2EAA2E;AAC3E,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAClC,SAAS,UAAU,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG;IACxC,MAAM,QAAQ,GAAG,aAAa,EAAE,CAAA;IAChC,MAAM,aAAa,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACtE,OAAO,KAAC,IAAI,IAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa,KAAM,IAAI,GAAI,CAAA;AAC1D,CAAC,CACF,CAAA"}
@@ -15,13 +15,31 @@ import { type StoreLocale } from './types';
15
15
  import { type Translator } from './translate';
16
16
  export interface RovelaLocaleProviderProps {
17
17
  locale: StoreLocale;
18
+ /**
19
+ * Server-resolved store locale config. LOAD-BEARING for non-en-default
20
+ * stores: consumers like `useLocalePath` need `defaultLocale` on the FIRST
21
+ * client render — deriving it from client-fetched store settings leaves a
22
+ * hydration window where a fr-default store resolves as en-default and an
23
+ * immediate redirect strips the /en prefix. Optional for back-compat;
24
+ * without it consumers fall back to the settings-based resolution.
25
+ */
26
+ defaultLocale?: StoreLocale;
27
+ enabledLocales?: StoreLocale[];
18
28
  children: ReactNode;
19
29
  }
20
- export declare function RovelaLocaleProvider({ locale, children }: RovelaLocaleProviderProps): import("react/jsx-runtime").JSX.Element;
30
+ export declare function RovelaLocaleProvider({ locale, defaultLocale, enabledLocales, children, }: RovelaLocaleProviderProps): import("react/jsx-runtime").JSX.Element;
21
31
  /** Current locale — 'en' without a provider (older templates). */
22
32
  export declare function useLocale(): StoreLocale;
23
33
  /** BCP-47 tag for Intl formatting — 'en-US' without a provider. */
24
34
  export declare function useIntlLocale(): string;
35
+ /**
36
+ * Server-resolved locale config from the provider, when supplied. Consumers
37
+ * MUST fall back to settings-based resolution when absent (older templates).
38
+ */
39
+ export declare function useLocaleConfigFromProvider(): {
40
+ defaultLocale?: StoreLocale;
41
+ enabledLocales?: StoreLocale[];
42
+ };
25
43
  /** Bound translator for the current locale. */
26
44
  export declare function useT(): Translator;
27
45
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/core/i18n/context.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAiD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AACrF,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,SAAS,CAAA;AAChB,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,aAAa,CAAA;AAUnD,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,WAAW,CAAA;IACnB,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,wBAAgB,oBAAoB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,yBAAyB,2CAkBnF;AAED,kEAAkE;AAClE,wBAAgB,SAAS,IAAI,WAAW,CAEvC;AAED,mEAAmE;AACnE,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,+CAA+C;AAC/C,wBAAgB,IAAI,IAAI,UAAU,CAGjC"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/core/i18n/context.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAiD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AACrF,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,SAAS,CAAA;AAChB,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,aAAa,CAAA;AAcnD,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,WAAW,CAAA;IACnB;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,WAAW,CAAA;IAC3B,cAAc,CAAC,EAAE,WAAW,EAAE,CAAA;IAC9B,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,wBAAgB,oBAAoB,CAAC,EACnC,MAAM,EACN,aAAa,EACb,cAAc,EACd,QAAQ,GACT,EAAE,yBAAyB,2CAuB3B;AAED,kEAAkE;AAClE,wBAAgB,SAAS,IAAI,WAAW,CAEvC;AAED,mEAAmE;AACnE,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,IAAI;IAC7C,aAAa,CAAC,EAAE,WAAW,CAAA;IAC3B,cAAc,CAAC,EAAE,WAAW,EAAE,CAAA;CAC/B,CAGA;AAED,+CAA+C;AAC/C,wBAAgB,IAAI,IAAI,UAAU,CAGjC"}
@@ -16,8 +16,13 @@ import { createContext, useContext, useEffect, useMemo } from 'react';
16
16
  import { DEFAULT_LOCALE, LOCALE_COOKIE, LOCALE_INTL, } from './types';
17
17
  import { getT } from './translate';
18
18
  const LocaleContext = createContext(null);
19
- export function RovelaLocaleProvider({ locale, children }) {
20
- const value = useMemo(() => ({ locale, intlLocale: LOCALE_INTL[locale] ?? LOCALE_INTL[DEFAULT_LOCALE] }), [locale]);
19
+ export function RovelaLocaleProvider({ locale, defaultLocale, enabledLocales, children, }) {
20
+ const value = useMemo(() => ({
21
+ locale,
22
+ intlLocale: LOCALE_INTL[locale] ?? LOCALE_INTL[DEFAULT_LOCALE],
23
+ defaultLocale,
24
+ enabledLocales,
25
+ }), [locale, defaultLocale, enabledLocales]);
21
26
  // Persist the served locale so the proxy keeps routing this visitor
22
27
  // consistently (first-visit geo redirect lands here; explicit switcher
23
28
  // choices also pass through here on the next render). SameSite=Lax, 1 year.
@@ -39,6 +44,14 @@ export function useLocale() {
39
44
  export function useIntlLocale() {
40
45
  return useContext(LocaleContext)?.intlLocale ?? LOCALE_INTL[DEFAULT_LOCALE];
41
46
  }
47
+ /**
48
+ * Server-resolved locale config from the provider, when supplied. Consumers
49
+ * MUST fall back to settings-based resolution when absent (older templates).
50
+ */
51
+ export function useLocaleConfigFromProvider() {
52
+ const ctx = useContext(LocaleContext);
53
+ return { defaultLocale: ctx?.defaultLocale, enabledLocales: ctx?.enabledLocales };
54
+ }
42
55
  /** Bound translator for the current locale. */
43
56
  export function useT() {
44
57
  const locale = useLocale();
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/core/i18n/context.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAkB,MAAM,OAAO,CAAA;AACrF,OAAO,EACL,cAAc,EACd,aAAa,EACb,WAAW,GAEZ,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,IAAI,EAAmB,MAAM,aAAa,CAAA;AAQnD,MAAM,aAAa,GAAG,aAAa,CAA4B,IAAI,CAAC,CAAA;AAOpE,MAAM,UAAU,oBAAoB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAA6B;IAClF,MAAM,KAAK,GAAG,OAAO,CACnB,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC,EAClF,CAAC,MAAM,CAAC,CACT,CAAA;IAED,oEAAoE;IACpE,uEAAuE;IACvE,4EAA4E;IAC5E,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC;YACH,QAAQ,CAAC,MAAM,GAAG,GAAG,aAAa,IAAI,MAAM,0CAA0C,CAAA;QACxF,CAAC;QAAC,MAAM,CAAC;YACP,wEAAwE;QAC1E,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAEZ,OAAO,KAAC,aAAa,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAA0B,CAAA;AAClF,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,SAAS;IACvB,OAAO,UAAU,CAAC,aAAa,CAAC,EAAE,MAAM,IAAI,cAAc,CAAA;AAC5D,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,aAAa;IAC3B,OAAO,UAAU,CAAC,aAAa,CAAC,EAAE,UAAU,IAAI,WAAW,CAAC,cAAc,CAAC,CAAA;AAC7E,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,IAAI;IAClB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;AAC9C,CAAC"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/core/i18n/context.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAkB,MAAM,OAAO,CAAA;AACrF,OAAO,EACL,cAAc,EACd,aAAa,EACb,WAAW,GAEZ,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,IAAI,EAAmB,MAAM,aAAa,CAAA;AAYnD,MAAM,aAAa,GAAG,aAAa,CAA4B,IAAI,CAAC,CAAA;AAiBpE,MAAM,UAAU,oBAAoB,CAAC,EACnC,MAAM,EACN,aAAa,EACb,cAAc,EACd,QAAQ,GACkB;IAC1B,MAAM,KAAK,GAAG,OAAO,CACnB,GAAG,EAAE,CAAC,CAAC;QACL,MAAM;QACN,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,cAAc,CAAC;QAC9D,aAAa;QACb,cAAc;KACf,CAAC,EACF,CAAC,MAAM,EAAE,aAAa,EAAE,cAAc,CAAC,CACxC,CAAA;IAED,oEAAoE;IACpE,uEAAuE;IACvE,4EAA4E;IAC5E,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC;YACH,QAAQ,CAAC,MAAM,GAAG,GAAG,aAAa,IAAI,MAAM,0CAA0C,CAAA;QACxF,CAAC;QAAC,MAAM,CAAC;YACP,wEAAwE;QAC1E,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAEZ,OAAO,KAAC,aAAa,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAA0B,CAAA;AAClF,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,SAAS;IACvB,OAAO,UAAU,CAAC,aAAa,CAAC,EAAE,MAAM,IAAI,cAAc,CAAA;AAC5D,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,aAAa;IAC3B,OAAO,UAAU,CAAC,aAAa,CAAC,EAAE,UAAU,IAAI,WAAW,CAAC,cAAc,CAAC,CAAA;AAC7E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B;IAIzC,MAAM,GAAG,GAAG,UAAU,CAAC,aAAa,CAAC,CAAA;IACrC,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,EAAE,cAAc,EAAE,CAAA;AACnF,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,IAAI;IAClB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;AAC9C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rovela-ai/sdk",
3
- "version": "0.13.0",
3
+ "version": "0.13.1",
4
4
  "description": "Rovela SDK - Pre-built e-commerce components for AI-powered store generation",
5
5
  "type": "module",
6
6
  "license": "MIT",