@sheet-i18n/react 1.6.1 → 1.6.2-canary.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/README.md CHANGED
@@ -528,11 +528,7 @@ export default function App() {
528
528
  }
529
529
  ```
530
530
 
531
- ## 🌐 Advanced Interpolation Strategies
532
-
533
- sheet-i18n provides advanced interpolation strategies for different rendering environments. These strategies ensure optimal performance and user experience across various deployment scenarios.
534
-
535
- ### 🖥️ Client-Side Rendering (CSR) Interpolation
531
+ ## 🖥️ Persistent Locale Settings
536
532
 
537
533
  For client-side applications, sheet-i18n offers `StorageBasedIntlProvider` with `LocaleStorageManager` to handle **persistent locale settings** and interpolation seamlessly.
538
534
 
@@ -764,6 +760,56 @@ const { t } = useTranslation('userSheet');
764
760
  const translatedText = t.rule('ageRule', { age: 25 }); // 'You are an adult. Your age is 25'
765
761
  ```
766
762
 
763
+ ## 🌐 Monorepo Support
764
+
765
+ ### **Render Prop Support (Monorepo-Friendly)**
766
+
767
+ Both `StorageBasedIntlProvider` and `IntlProvider` accept either regular children
768
+ or a render function. When a function is provided, the current locale is injected
769
+ as the first argument. This is useful in monorepos where:
770
+
771
+ ```text
772
+ ┌───────────────┐ ┌───────────────────────┐
773
+ │ workspace app │ ───────> │ app i18n context │
774
+ └───────────────┘ │ (Store A) │
775
+ └───────────────────────┘
776
+
777
+ ┌───────────────┐ ┌───────────────────────┐
778
+ │ packages/ui │ ───────> │ ui i18n context │
779
+ └───────────────┘ │ (Store B) │
780
+ └───────────────────────┘
781
+
782
+ locale bridge (A -> B)
783
+
784
+ The contexts stay separate (for example, different packages can point to
785
+ different sheets), while the current locale can still be bridged.
786
+ ```
787
+
788
+ ```tsx
789
+ // packages/ui: export its own IntlProvider
790
+ export { IntlProvider as PackageUIIntlProvider } from './src/i18n/i18nContext';
791
+
792
+ // workspace: bridge the locale to the package provider
793
+ import { PackageUIIntlProvider } from '@packages/ui';
794
+ import {
795
+ localeStorageManager,
796
+ StorageBasedIntlProvider,
797
+ } from '@/i18n/i18nContext';
798
+
799
+ export default function LocaleProvider({ children }: PropsWithChildren) {
800
+ return (
801
+ <StorageBasedIntlProvider storageManager={localeStorageManager}>
802
+ // currentLocale: automatically injected
803
+ {(currentLocale) => (
804
+ <PackageUIIntlProvider currentLocale={currentLocale}>
805
+ {children}
806
+ </PackageUIIntlProvider>
807
+ )}
808
+ </StorageBasedIntlProvider>
809
+ );
810
+ }
811
+ ```
812
+
767
813
  ## License 📜
768
814
 
769
815
  This project is licensed under the ISC License. See the LICENSE file for details.
package/dist/index.d.mts CHANGED
@@ -1,2 +1,112 @@
1
- export * from '@sheet-i18n/react-core';
2
- export * from '@sheet-i18n/react-client';
1
+ import { I18nStore } from '@sheet-i18n/core';
2
+ export * from '@sheet-i18n/core';
3
+ import { ObserverManager } from '@sheet-i18n/shared-utils';
4
+ import { MessageDescriptor, IntlShape } from 'react-intl';
5
+ import * as react_jsx_runtime from 'react/jsx-runtime';
6
+
7
+ interface IStorageService<V extends string> {
8
+ getItem(key: string): V;
9
+ setItem(key: string, value: V): boolean;
10
+ removeItem(key: string): boolean;
11
+ clear(): boolean;
12
+ }
13
+ /**
14
+ * locale storage manager
15
+ * implements ILocaleStorageManager (injected StorageService)
16
+ */
17
+ interface ILocaleStorageManager<TSupportedLocales extends readonly string[]> {
18
+ getLocale(): TSupportedLocales[number];
19
+ setLocale(locale: TSupportedLocales[number]): void;
20
+ }
21
+ declare class LocaleStorageManager<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean = false> implements ILocaleStorageManager<TSupportedLocales> {
22
+ private readonly storageService;
23
+ private readonly i18nStore;
24
+ private readonly localeStorageKey;
25
+ observerManager: ObserverManager<TSupportedLocales[number]>;
26
+ constructor(storageService: IStorageService<TSupportedLocales[number]>, i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>, localeStorageKey?: string);
27
+ private initializeCurrentLocale;
28
+ getLocale: () => TSupportedLocales[number];
29
+ setLocale: (locale: TSupportedLocales[number]) => void;
30
+ }
31
+
32
+ type UseIntlParams<D = MessageDescriptor> = Parameters<IntlShape['$t']> extends [D, ...infer R] ? [...R, Omit<D, 'id'>] : never;
33
+ type ExtendedUseIntlParams<D = MessageDescriptor> = UseIntlParams<D> extends [infer A, infer B, ...infer Rest] ? A extends Record<string, infer V> ? [Record<string, V | React.ReactNode>, B, ...Rest] : [A, B, ...Rest] : UseIntlParams<D>;
34
+ type $TParams = Partial<ExtendedUseIntlParams>;
35
+ /**
36
+ * Resolves to keys of a specific sheet title in a localized set,
37
+ * or falls back to `string` if not type-safe or keys resolve to `never`.
38
+ */
39
+ type SafeMessageId<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, TTypeSafe extends boolean> = TTypeSafe extends true ? keyof NonNullable<TLocaleSet[TSupportedLocales[number]]>[TSheetTitle] extends never ? string : keyof NonNullable<TLocaleSet[TSupportedLocales[number]]>[TSheetTitle] : string;
40
+ /**
41
+ * Resolves to valid sheet titles from the locale set
42
+ * or defaults to string if type safety is off or keys are not available.
43
+ */
44
+ type SupportedLocales = readonly string[];
45
+ type LocaleSet = Partial<Record<SupportedLocales[number], Record<string, any>>>;
46
+ type TypeSafe = boolean;
47
+ type SafeSheetTitle<TSupportedLocales extends SupportedLocales, TLocaleSet extends LocaleSet, TTypeSafe extends TypeSafe> = TTypeSafe extends true ? keyof TLocaleSet[TSupportedLocales[number]] extends never ? string : keyof TLocaleSet[TSupportedLocales[number]] : string;
48
+ /**
49
+ * Plugin types
50
+ */
51
+ type RuleKey = string;
52
+ type RuleFn<TSupportedLocales extends SupportedLocales, TLocaleSet extends LocaleSet, TI18nStore extends I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>, TTypeSafe extends TypeSafe, TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>, TValues = any> = (values: TValues, currentLocaleSet: ReturnType<TI18nStore['getCurrentLocaleSet']>) => TMessageId;
53
+ type Plugins<TRules extends Rules = Rules> = {
54
+ rules?: TRules;
55
+ };
56
+ type Rules<TSupportedLocales extends SupportedLocales = SupportedLocales, TLocaleSet extends LocaleSet = LocaleSet, TTypeSafe extends TypeSafe = TypeSafe, TI18nStore extends I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe> = I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>, TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe> = SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe> = SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>> = Record<RuleKey, RuleFn<TSupportedLocales, TLocaleSet, TI18nStore, TTypeSafe, TSheetTitle, TMessageId>>;
57
+
58
+ type GetTranslationReturn<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean, TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>> = {
59
+ t: <TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>, TValues extends $TParams[0], TOpts extends $TParams[1], TDescriptor extends $TParams[2]>(id: TMessageId, values?: TValues, opts?: TOpts, _descriptor?: TDescriptor) => TTypeSafe extends true ? TMessageId : any;
60
+ } & {
61
+ t: {
62
+ dynamic: <TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>, TValues extends $TParams[0], TOpts extends $TParams[1], TDescriptor extends $TParams[2]>(id: string, values?: TValues, opts?: TOpts, _descriptor?: TDescriptor) => TTypeSafe extends true ? string : any;
63
+ promise: <TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>, TValues extends $TParams[0], TOpts extends $TParams[1], TDescriptor extends $TParams[2]>(id: TMessageId, values?: TValues, opts?: TOpts, _descriptor?: TDescriptor) => TTypeSafe extends true ? Promise<TMessageId> : any;
64
+ };
65
+ };
66
+
67
+ type UseTranslationReturn<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Partial<Record<TSupportedLocales[number], Record<string, any>>>>, TTypeSafe extends boolean, TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, TRules extends Rules> = {
68
+ t: <TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>, TValues extends $TParams[0], TOpts extends $TParams[1], TDescriptor extends $TParams[2]>(id: TMessageId, values?: TValues, opts?: TOpts, _descriptor?: TDescriptor) => TTypeSafe extends true ? TMessageId : any;
69
+ } & {
70
+ t: {
71
+ dynamic: <TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>, TValues extends $TParams[0], TOpts extends $TParams[1], TDescriptor extends $TParams[2]>(id: string, values?: TValues, opts?: TOpts, _descriptor?: TDescriptor) => TTypeSafe extends true ? string : any;
72
+ rule: <TRuleKey extends keyof TRules, TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>>(ruleKey: TRuleKey, values?: Parameters<TRules[TRuleKey]>[0]) => TTypeSafe extends true ? TMessageId : any;
73
+ };
74
+ };
75
+
76
+ type IntlProviderProps<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean = false> = {
77
+ i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>;
78
+ currentLocale?: TSupportedLocales[number];
79
+ children: Omit<React.ReactNode, 'bigint'> | ((currentLocale?: TSupportedLocales[number]) => React.ReactNode);
80
+ };
81
+
82
+ declare function useLocaleStorage<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean = false>(localeStorageManager: LocaleStorageManager<TSupportedLocales, TLocaleSet, TTypeSafe>): {
83
+ locale: TSupportedLocales[number] | undefined;
84
+ };
85
+
86
+ interface StorageBasedIntlProviderProps<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean = false> {
87
+ i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>;
88
+ storageManager: LocaleStorageManager<TSupportedLocales, TLocaleSet, TTypeSafe>;
89
+ fallbackUI?: React.ReactNode;
90
+ children: Omit<React.ReactNode, 'bigint'> | ((currentLocale?: TSupportedLocales[number]) => React.ReactNode);
91
+ }
92
+
93
+ declare function createI18nContext<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TRules extends Rules, TTypeSafe extends boolean = false>(i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>, plugins?: Plugins<TRules>): {
94
+ IntlProvider: ({ currentLocale, children, }: Omit<IntlProviderProps<TSupportedLocales, TLocaleSet>, "currentLocale" | "i18nStore"> & {
95
+ currentLocale?: string;
96
+ children?: React.ReactNode;
97
+ }) => react_jsx_runtime.JSX.Element;
98
+ StorageBasedIntlProvider: ({ storageManager, children, }: Omit<StorageBasedIntlProviderProps<TSupportedLocales, TLocaleSet, TTypeSafe>, "i18nStore">) => react_jsx_runtime.JSX.Element;
99
+ useTranslation: <TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>>(sheetTitle: TSheetTitle) => UseTranslationReturn<TSupportedLocales, TLocaleSet, TTypeSafe, TSheetTitle, TRules>;
100
+ getTranslation: <TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>>(sheetTitle: TSheetTitle) => GetTranslationReturn<TSupportedLocales, TLocaleSet, TTypeSafe, TSheetTitle>;
101
+ getLocaleStorageManager: (storageService?: IStorageService<string>) => LocaleStorageManager<TSupportedLocales, TLocaleSet, TTypeSafe>;
102
+ useLocaleStorage: typeof useLocaleStorage;
103
+ };
104
+
105
+ declare class RuleService<TSupportedLocales extends SupportedLocales, TLocaleSet extends LocaleSet, TTypeSafe extends TypeSafe, TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>> {
106
+ private readonly i18nStore;
107
+ constructor(i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>);
108
+ createRule: <TValues extends $TParams[0]>(ruleFn: RuleFn<TSupportedLocales, TLocaleSet, I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>, TTypeSafe, TSheetTitle, TMessageId, TValues>) => (values: TValues) => TMessageId;
109
+ }
110
+ declare const ruleFactory: <TSupportedLocales extends SupportedLocales, TLocaleSet extends LocaleSet, TTypeSafe extends TypeSafe>(i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>) => RuleService<TSupportedLocales, TLocaleSet, TTypeSafe, SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, SafeMessageId<TSupportedLocales, TLocaleSet, SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, TTypeSafe>>;
111
+
112
+ export { type GetTranslationReturn as GetTranslation, LocaleStorageManager, type Plugins, type Rules, type IStorageService as Storage, type StorageBasedIntlProviderProps, type UseTranslationReturn as UseTranslation, createI18nContext, ruleFactory };
package/dist/index.d.ts CHANGED
@@ -1,2 +1,112 @@
1
- export * from '@sheet-i18n/react-core';
2
- export * from '@sheet-i18n/react-client';
1
+ import { I18nStore } from '@sheet-i18n/core';
2
+ export * from '@sheet-i18n/core';
3
+ import { ObserverManager } from '@sheet-i18n/shared-utils';
4
+ import { MessageDescriptor, IntlShape } from 'react-intl';
5
+ import * as react_jsx_runtime from 'react/jsx-runtime';
6
+
7
+ interface IStorageService<V extends string> {
8
+ getItem(key: string): V;
9
+ setItem(key: string, value: V): boolean;
10
+ removeItem(key: string): boolean;
11
+ clear(): boolean;
12
+ }
13
+ /**
14
+ * locale storage manager
15
+ * implements ILocaleStorageManager (injected StorageService)
16
+ */
17
+ interface ILocaleStorageManager<TSupportedLocales extends readonly string[]> {
18
+ getLocale(): TSupportedLocales[number];
19
+ setLocale(locale: TSupportedLocales[number]): void;
20
+ }
21
+ declare class LocaleStorageManager<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean = false> implements ILocaleStorageManager<TSupportedLocales> {
22
+ private readonly storageService;
23
+ private readonly i18nStore;
24
+ private readonly localeStorageKey;
25
+ observerManager: ObserverManager<TSupportedLocales[number]>;
26
+ constructor(storageService: IStorageService<TSupportedLocales[number]>, i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>, localeStorageKey?: string);
27
+ private initializeCurrentLocale;
28
+ getLocale: () => TSupportedLocales[number];
29
+ setLocale: (locale: TSupportedLocales[number]) => void;
30
+ }
31
+
32
+ type UseIntlParams<D = MessageDescriptor> = Parameters<IntlShape['$t']> extends [D, ...infer R] ? [...R, Omit<D, 'id'>] : never;
33
+ type ExtendedUseIntlParams<D = MessageDescriptor> = UseIntlParams<D> extends [infer A, infer B, ...infer Rest] ? A extends Record<string, infer V> ? [Record<string, V | React.ReactNode>, B, ...Rest] : [A, B, ...Rest] : UseIntlParams<D>;
34
+ type $TParams = Partial<ExtendedUseIntlParams>;
35
+ /**
36
+ * Resolves to keys of a specific sheet title in a localized set,
37
+ * or falls back to `string` if not type-safe or keys resolve to `never`.
38
+ */
39
+ type SafeMessageId<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, TTypeSafe extends boolean> = TTypeSafe extends true ? keyof NonNullable<TLocaleSet[TSupportedLocales[number]]>[TSheetTitle] extends never ? string : keyof NonNullable<TLocaleSet[TSupportedLocales[number]]>[TSheetTitle] : string;
40
+ /**
41
+ * Resolves to valid sheet titles from the locale set
42
+ * or defaults to string if type safety is off or keys are not available.
43
+ */
44
+ type SupportedLocales = readonly string[];
45
+ type LocaleSet = Partial<Record<SupportedLocales[number], Record<string, any>>>;
46
+ type TypeSafe = boolean;
47
+ type SafeSheetTitle<TSupportedLocales extends SupportedLocales, TLocaleSet extends LocaleSet, TTypeSafe extends TypeSafe> = TTypeSafe extends true ? keyof TLocaleSet[TSupportedLocales[number]] extends never ? string : keyof TLocaleSet[TSupportedLocales[number]] : string;
48
+ /**
49
+ * Plugin types
50
+ */
51
+ type RuleKey = string;
52
+ type RuleFn<TSupportedLocales extends SupportedLocales, TLocaleSet extends LocaleSet, TI18nStore extends I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>, TTypeSafe extends TypeSafe, TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>, TValues = any> = (values: TValues, currentLocaleSet: ReturnType<TI18nStore['getCurrentLocaleSet']>) => TMessageId;
53
+ type Plugins<TRules extends Rules = Rules> = {
54
+ rules?: TRules;
55
+ };
56
+ type Rules<TSupportedLocales extends SupportedLocales = SupportedLocales, TLocaleSet extends LocaleSet = LocaleSet, TTypeSafe extends TypeSafe = TypeSafe, TI18nStore extends I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe> = I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>, TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe> = SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe> = SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>> = Record<RuleKey, RuleFn<TSupportedLocales, TLocaleSet, TI18nStore, TTypeSafe, TSheetTitle, TMessageId>>;
57
+
58
+ type GetTranslationReturn<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean, TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>> = {
59
+ t: <TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>, TValues extends $TParams[0], TOpts extends $TParams[1], TDescriptor extends $TParams[2]>(id: TMessageId, values?: TValues, opts?: TOpts, _descriptor?: TDescriptor) => TTypeSafe extends true ? TMessageId : any;
60
+ } & {
61
+ t: {
62
+ dynamic: <TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>, TValues extends $TParams[0], TOpts extends $TParams[1], TDescriptor extends $TParams[2]>(id: string, values?: TValues, opts?: TOpts, _descriptor?: TDescriptor) => TTypeSafe extends true ? string : any;
63
+ promise: <TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>, TValues extends $TParams[0], TOpts extends $TParams[1], TDescriptor extends $TParams[2]>(id: TMessageId, values?: TValues, opts?: TOpts, _descriptor?: TDescriptor) => TTypeSafe extends true ? Promise<TMessageId> : any;
64
+ };
65
+ };
66
+
67
+ type UseTranslationReturn<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Partial<Record<TSupportedLocales[number], Record<string, any>>>>, TTypeSafe extends boolean, TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, TRules extends Rules> = {
68
+ t: <TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>, TValues extends $TParams[0], TOpts extends $TParams[1], TDescriptor extends $TParams[2]>(id: TMessageId, values?: TValues, opts?: TOpts, _descriptor?: TDescriptor) => TTypeSafe extends true ? TMessageId : any;
69
+ } & {
70
+ t: {
71
+ dynamic: <TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>, TValues extends $TParams[0], TOpts extends $TParams[1], TDescriptor extends $TParams[2]>(id: string, values?: TValues, opts?: TOpts, _descriptor?: TDescriptor) => TTypeSafe extends true ? string : any;
72
+ rule: <TRuleKey extends keyof TRules, TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>>(ruleKey: TRuleKey, values?: Parameters<TRules[TRuleKey]>[0]) => TTypeSafe extends true ? TMessageId : any;
73
+ };
74
+ };
75
+
76
+ type IntlProviderProps<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean = false> = {
77
+ i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>;
78
+ currentLocale?: TSupportedLocales[number];
79
+ children: Omit<React.ReactNode, 'bigint'> | ((currentLocale?: TSupportedLocales[number]) => React.ReactNode);
80
+ };
81
+
82
+ declare function useLocaleStorage<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean = false>(localeStorageManager: LocaleStorageManager<TSupportedLocales, TLocaleSet, TTypeSafe>): {
83
+ locale: TSupportedLocales[number] | undefined;
84
+ };
85
+
86
+ interface StorageBasedIntlProviderProps<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean = false> {
87
+ i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>;
88
+ storageManager: LocaleStorageManager<TSupportedLocales, TLocaleSet, TTypeSafe>;
89
+ fallbackUI?: React.ReactNode;
90
+ children: Omit<React.ReactNode, 'bigint'> | ((currentLocale?: TSupportedLocales[number]) => React.ReactNode);
91
+ }
92
+
93
+ declare function createI18nContext<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TRules extends Rules, TTypeSafe extends boolean = false>(i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>, plugins?: Plugins<TRules>): {
94
+ IntlProvider: ({ currentLocale, children, }: Omit<IntlProviderProps<TSupportedLocales, TLocaleSet>, "currentLocale" | "i18nStore"> & {
95
+ currentLocale?: string;
96
+ children?: React.ReactNode;
97
+ }) => react_jsx_runtime.JSX.Element;
98
+ StorageBasedIntlProvider: ({ storageManager, children, }: Omit<StorageBasedIntlProviderProps<TSupportedLocales, TLocaleSet, TTypeSafe>, "i18nStore">) => react_jsx_runtime.JSX.Element;
99
+ useTranslation: <TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>>(sheetTitle: TSheetTitle) => UseTranslationReturn<TSupportedLocales, TLocaleSet, TTypeSafe, TSheetTitle, TRules>;
100
+ getTranslation: <TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>>(sheetTitle: TSheetTitle) => GetTranslationReturn<TSupportedLocales, TLocaleSet, TTypeSafe, TSheetTitle>;
101
+ getLocaleStorageManager: (storageService?: IStorageService<string>) => LocaleStorageManager<TSupportedLocales, TLocaleSet, TTypeSafe>;
102
+ useLocaleStorage: typeof useLocaleStorage;
103
+ };
104
+
105
+ declare class RuleService<TSupportedLocales extends SupportedLocales, TLocaleSet extends LocaleSet, TTypeSafe extends TypeSafe, TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>> {
106
+ private readonly i18nStore;
107
+ constructor(i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>);
108
+ createRule: <TValues extends $TParams[0]>(ruleFn: RuleFn<TSupportedLocales, TLocaleSet, I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>, TTypeSafe, TSheetTitle, TMessageId, TValues>) => (values: TValues) => TMessageId;
109
+ }
110
+ declare const ruleFactory: <TSupportedLocales extends SupportedLocales, TLocaleSet extends LocaleSet, TTypeSafe extends TypeSafe>(i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>) => RuleService<TSupportedLocales, TLocaleSet, TTypeSafe, SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, SafeMessageId<TSupportedLocales, TLocaleSet, SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, TTypeSafe>>;
111
+
112
+ export { type GetTranslationReturn as GetTranslation, LocaleStorageManager, type Plugins, type Rules, type IStorageService as Storage, type StorageBasedIntlProviderProps, type UseTranslationReturn as UseTranslation, createI18nContext, ruleFactory };