@douglasneuroinformatics/libui 2.0.0-beta.9 → 2.0.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/dist/i18n.d.ts CHANGED
@@ -1,10 +1,13 @@
1
1
  import { i18n as i18n$1 } from 'i18next';
2
2
  import { EmptyObject, ValueOf } from 'type-fest';
3
3
 
4
- declare const defaultNS: "libui";
5
4
  declare const supportedLngs: readonly ["en", "fr"];
6
- type DefaultNS = typeof defaultNS;
7
5
  type Language = (typeof supportedLngs)[number];
6
+ type TranslationsDef = {
7
+ [key: string]: {
8
+ [key: string]: unknown;
9
+ };
10
+ };
8
11
  type TranslatedResource<T = EmptyObject> = {
9
12
  [K in keyof T]: T[K] extends {
10
13
  [key: string]: unknown;
@@ -12,6 +15,334 @@ type TranslatedResource<T = EmptyObject> = {
12
15
  [K in Language]: unknown;
13
16
  } ? ValueOf<T[K]> : TranslatedResource<T[K]> : T[K];
14
17
  };
15
- declare const i18n: i18n$1;
18
+ declare function transformTranslations<T extends {
19
+ [key: string]: any;
20
+ }>(translations: T, locale: string): {
21
+ [key: string]: unknown;
22
+ };
23
+ declare function createResourcesForLanguage<T extends TranslationsDef>(translations: T, locale: Language): { [P in keyof T]: {
24
+ [key: string]: unknown;
25
+ }; };
26
+ declare function createResources<T extends TranslationsDef>(translations: T): {
27
+ en: TranslatedResource<T>;
28
+ fr: TranslatedResource<T>;
29
+ };
30
+ declare const resources: {
31
+ en: TranslatedResource<{
32
+ libui: {
33
+ days: {
34
+ friday: {
35
+ en: string;
36
+ fr: string;
37
+ };
38
+ monday: {
39
+ en: string;
40
+ fr: string;
41
+ };
42
+ saturday: {
43
+ en: string;
44
+ fr: string;
45
+ };
46
+ sunday: {
47
+ en: string;
48
+ fr: string;
49
+ };
50
+ thursday: {
51
+ en: string;
52
+ fr: string;
53
+ };
54
+ tuesday: {
55
+ en: string;
56
+ fr: string;
57
+ };
58
+ wednesday: {
59
+ en: string;
60
+ fr: string;
61
+ };
62
+ };
63
+ form: {
64
+ append: {
65
+ en: string;
66
+ fr: string;
67
+ };
68
+ radioLabels: {
69
+ false: {
70
+ en: string;
71
+ fr: string;
72
+ };
73
+ true: {
74
+ en: string;
75
+ fr: string;
76
+ };
77
+ };
78
+ remove: {
79
+ en: string;
80
+ fr: string;
81
+ };
82
+ required: {
83
+ en: string;
84
+ fr: string;
85
+ };
86
+ reset: {
87
+ en: string;
88
+ fr: string;
89
+ };
90
+ submit: {
91
+ en: string;
92
+ fr: string;
93
+ };
94
+ };
95
+ months: {
96
+ april: {
97
+ en: string;
98
+ fr: string;
99
+ };
100
+ august: {
101
+ en: string;
102
+ fr: string;
103
+ };
104
+ december: {
105
+ en: string;
106
+ fr: string;
107
+ };
108
+ february: {
109
+ en: string;
110
+ fr: string;
111
+ };
112
+ january: {
113
+ en: string;
114
+ fr: string;
115
+ };
116
+ july: {
117
+ en: string;
118
+ fr: string;
119
+ };
120
+ june: {
121
+ en: string;
122
+ fr: string;
123
+ };
124
+ march: {
125
+ en: string;
126
+ fr: string;
127
+ };
128
+ may: {
129
+ en: string;
130
+ fr: string;
131
+ };
132
+ november: {
133
+ en: string;
134
+ fr: string;
135
+ };
136
+ october: {
137
+ en: string;
138
+ fr: string;
139
+ };
140
+ september: {
141
+ en: string;
142
+ fr: string;
143
+ };
144
+ };
145
+ notifications: {
146
+ types: {
147
+ error: {
148
+ en: string;
149
+ fr: string;
150
+ };
151
+ info: {
152
+ en: string;
153
+ fr: string;
154
+ };
155
+ success: {
156
+ en: string;
157
+ fr: string;
158
+ };
159
+ warning: {
160
+ en: string;
161
+ fr: string;
162
+ };
163
+ };
164
+ };
165
+ pagination: {
166
+ info: {
167
+ en: string;
168
+ fr: string;
169
+ };
170
+ next: {
171
+ en: string;
172
+ fr: string;
173
+ };
174
+ previous: {
175
+ en: string;
176
+ fr: string;
177
+ };
178
+ };
179
+ searchBar: {
180
+ placeholder: {
181
+ en: string;
182
+ fr: string;
183
+ };
184
+ };
185
+ };
186
+ }>;
187
+ fr: TranslatedResource<{
188
+ libui: {
189
+ days: {
190
+ friday: {
191
+ en: string;
192
+ fr: string;
193
+ };
194
+ monday: {
195
+ en: string;
196
+ fr: string;
197
+ };
198
+ saturday: {
199
+ en: string;
200
+ fr: string;
201
+ };
202
+ sunday: {
203
+ en: string;
204
+ fr: string;
205
+ };
206
+ thursday: {
207
+ en: string;
208
+ fr: string;
209
+ };
210
+ tuesday: {
211
+ en: string;
212
+ fr: string;
213
+ };
214
+ wednesday: {
215
+ en: string;
216
+ fr: string;
217
+ };
218
+ };
219
+ form: {
220
+ append: {
221
+ en: string;
222
+ fr: string;
223
+ };
224
+ radioLabels: {
225
+ false: {
226
+ en: string;
227
+ fr: string;
228
+ };
229
+ true: {
230
+ en: string;
231
+ fr: string;
232
+ };
233
+ };
234
+ remove: {
235
+ en: string;
236
+ fr: string;
237
+ };
238
+ required: {
239
+ en: string;
240
+ fr: string;
241
+ };
242
+ reset: {
243
+ en: string;
244
+ fr: string;
245
+ };
246
+ submit: {
247
+ en: string;
248
+ fr: string;
249
+ };
250
+ };
251
+ months: {
252
+ april: {
253
+ en: string;
254
+ fr: string;
255
+ };
256
+ august: {
257
+ en: string;
258
+ fr: string;
259
+ };
260
+ december: {
261
+ en: string;
262
+ fr: string;
263
+ };
264
+ february: {
265
+ en: string;
266
+ fr: string;
267
+ };
268
+ january: {
269
+ en: string;
270
+ fr: string;
271
+ };
272
+ july: {
273
+ en: string;
274
+ fr: string;
275
+ };
276
+ june: {
277
+ en: string;
278
+ fr: string;
279
+ };
280
+ march: {
281
+ en: string;
282
+ fr: string;
283
+ };
284
+ may: {
285
+ en: string;
286
+ fr: string;
287
+ };
288
+ november: {
289
+ en: string;
290
+ fr: string;
291
+ };
292
+ october: {
293
+ en: string;
294
+ fr: string;
295
+ };
296
+ september: {
297
+ en: string;
298
+ fr: string;
299
+ };
300
+ };
301
+ notifications: {
302
+ types: {
303
+ error: {
304
+ en: string;
305
+ fr: string;
306
+ };
307
+ info: {
308
+ en: string;
309
+ fr: string;
310
+ };
311
+ success: {
312
+ en: string;
313
+ fr: string;
314
+ };
315
+ warning: {
316
+ en: string;
317
+ fr: string;
318
+ };
319
+ };
320
+ };
321
+ pagination: {
322
+ info: {
323
+ en: string;
324
+ fr: string;
325
+ };
326
+ next: {
327
+ en: string;
328
+ fr: string;
329
+ };
330
+ previous: {
331
+ en: string;
332
+ fr: string;
333
+ };
334
+ };
335
+ searchBar: {
336
+ placeholder: {
337
+ en: string;
338
+ fr: string;
339
+ };
340
+ };
341
+ };
342
+ }>;
343
+ };
344
+ declare const i18n: i18n$1 & {
345
+ addPreInitTranslations<T extends TranslationsDef>(translations: T): void;
346
+ };
16
347
 
17
- export { type DefaultNS, type Language, type TranslatedResource, i18n as default };
348
+ export { type Language, type TranslatedResource, type TranslationsDef, createResources, createResourcesForLanguage, i18n, resources, supportedLngs, transformTranslations };
package/dist/i18n.js CHANGED
@@ -1,6 +1,7 @@
1
1
  // src/i18n.ts
2
2
  import { isPlainObject } from "@douglasneuroinformatics/libjs";
3
3
  import { createInstance } from "i18next";
4
+ import LanguageDetector from "i18next-browser-languagedetector";
4
5
  import { mapValues } from "lodash-es";
5
6
  import { initReactI18next } from "react-i18next";
6
7
 
@@ -139,6 +140,10 @@ var libui_default = {
139
140
  }
140
141
  },
141
142
  pagination: {
143
+ info: {
144
+ en: "Showing {{first}} to {{last}} of {{total}} results",
145
+ fr: "Affichage de {{first}} \xE0 {{last}} sur {{total}} r\xE9sultats"
146
+ },
142
147
  next: {
143
148
  en: "Next",
144
149
  fr: "Suivant"
@@ -157,7 +162,6 @@ var libui_default = {
157
162
  };
158
163
 
159
164
  // src/i18n.ts
160
- var defaultNS = "libui";
161
165
  var supportedLngs = ["en", "fr"];
162
166
  function transformTranslations(translations, locale) {
163
167
  if (!isPlainObject) {
@@ -185,7 +189,6 @@ function createResources(translations) {
185
189
  }
186
190
  var resources = createResources({ libui: libui_default });
187
191
  var i18n = createInstance({
188
- defaultNS,
189
192
  fallbackLng: "en",
190
193
  interpolation: {
191
194
  escapeValue: false
@@ -195,9 +198,22 @@ var i18n = createInstance({
195
198
  returnObjects: true,
196
199
  supportedLngs
197
200
  });
198
- await i18n.use(initReactI18next).init();
199
- var i18n_default = i18n;
201
+ i18n.addPreInitTranslations = function(translations) {
202
+ if (!this.options.resources) {
203
+ console.error("Cannot add additional translations to i18next instance: 'this.options.resources' is undefined");
204
+ return;
205
+ }
206
+ const resources2 = createResources(translations);
207
+ Object.assign(this.options.resources.en, resources2.en);
208
+ Object.assign(this.options.resources.fr, resources2.fr);
209
+ };
210
+ i18n.use(initReactI18next).use(LanguageDetector);
200
211
  export {
201
- i18n_default as default
212
+ createResources,
213
+ createResourcesForLanguage,
214
+ i18n,
215
+ resources,
216
+ supportedLngs,
217
+ transformTranslations
202
218
  };
203
219
  //# sourceMappingURL=i18n.js.map
package/dist/i18n.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/i18n.ts","../src/translations/libui.json"],"sourcesContent":["import { isPlainObject } from '@douglasneuroinformatics/libjs';\nimport { type i18n as I18n, createInstance } from 'i18next';\nimport { mapValues } from 'lodash-es';\nimport { initReactI18next } from 'react-i18next';\nimport type { EmptyObject, ValueOf } from 'type-fest';\n\nimport libui from './translations/libui.json';\n\nconst defaultNS = 'libui' as const;\nconst supportedLngs = ['en', 'fr'] as const;\n\ntype DefaultNS = typeof defaultNS;\ntype Language = (typeof supportedLngs)[number];\n\ntype TranslationsDef = { [key: string]: { [key: string]: unknown } };\n\ntype TranslatedResource<T = EmptyObject> = {\n [K in keyof T]: T[K] extends { [key: string]: unknown }\n ? T[K] extends { [K in Language]: unknown }\n ? ValueOf<T[K]>\n : TranslatedResource<T[K]>\n : T[K];\n};\n\nfunction transformTranslations<T extends { [key: string]: any }>(translations: T, locale: string) {\n if (!isPlainObject) {\n throw new Error('Invalid format of translations: must be plain object');\n }\n const result: { [key: string]: unknown } = {};\n for (const key in translations) {\n const value = translations[key];\n if (Object.hasOwn(value, locale)) {\n result[key] = value[locale as keyof typeof value];\n } else {\n result[key] = transformTranslations(value, locale);\n }\n }\n return result;\n}\n\nfunction createResourcesForLanguage<T extends TranslationsDef>(translations: T, locale: Language) {\n return mapValues(translations, (value) => transformTranslations(value, locale));\n}\n\nfunction createResources<T extends TranslationsDef>(translations: T) {\n return {\n en: createResourcesForLanguage(translations, 'en'),\n fr: createResourcesForLanguage(translations, 'fr')\n } as TranslatedResource<T>;\n}\n\nconst resources = createResources({ libui });\n\nconst i18n = createInstance({\n defaultNS,\n fallbackLng: 'en' satisfies Language,\n interpolation: {\n escapeValue: false\n },\n lng: 'en' satisfies Language,\n resources,\n returnObjects: true,\n supportedLngs\n}) as I18n;\n\nawait i18n.use(initReactI18next).init();\n\nexport default i18n;\n\nexport type { DefaultNS, Language, TranslatedResource };\n","{\n \"days\": {\n \"friday\": {\n \"en\": \"Friday\",\n \"fr\": \"Vendredi\"\n },\n \"monday\": {\n \"en\": \"Monday\",\n \"fr\": \"Lundi\"\n },\n \"saturday\": {\n \"en\": \"Saturday\",\n \"fr\": \"Samedi\"\n },\n \"sunday\": {\n \"en\": \"Sunday\",\n \"fr\": \"Dimanche\"\n },\n \"thursday\": {\n \"en\": \"Thursday\",\n \"fr\": \"Jeudi\"\n },\n \"tuesday\": {\n \"en\": \"Tuesday\",\n \"fr\": \"Mardi\"\n },\n \"wednesday\": {\n \"en\": \"Wednesday\",\n \"fr\": \"Mercredi\"\n }\n },\n \"form\": {\n \"append\": {\n \"en\": \"Append\",\n \"fr\": \"Ajouter\"\n },\n \"radioLabels\": {\n \"false\": {\n \"en\": \"False\",\n \"fr\": \"Faux\"\n },\n \"true\": {\n \"en\": \"True\",\n \"fr\": \"Vrai\"\n }\n },\n \"remove\": {\n \"en\": \"Remove\",\n \"fr\": \"Supprimer\"\n },\n \"required\": {\n \"en\": \"This field is required\",\n \"fr\": \"Ce champ est obligatoire\"\n },\n \"reset\": {\n \"en\": \"Reset\",\n \"fr\": \"Réinitialiser\"\n },\n \"submit\": {\n \"en\": \"Submit\",\n \"fr\": \"Soumettre\"\n }\n },\n \"months\": {\n \"april\": {\n \"en\": \"April\",\n \"fr\": \"Avril\"\n },\n \"august\": {\n \"en\": \"August\",\n \"fr\": \"Août\"\n },\n \"december\": {\n \"en\": \"December\",\n \"fr\": \"Décembre\"\n },\n \"february\": {\n \"en\": \"February\",\n \"fr\": \"Février\"\n },\n \"january\": {\n \"en\": \"January\",\n \"fr\": \"Janvier\"\n },\n \"july\": {\n \"en\": \"July\",\n \"fr\": \"Juillet\"\n },\n \"june\": {\n \"en\": \"June\",\n \"fr\": \"Juin\"\n },\n \"march\": {\n \"en\": \"March\",\n \"fr\": \"Mars\"\n },\n \"may\": {\n \"en\": \"May\",\n \"fr\": \"Mai\"\n },\n \"november\": {\n \"en\": \"November\",\n \"fr\": \"Novembre\"\n },\n \"october\": {\n \"en\": \"October\",\n \"fr\": \"Octobre\"\n },\n \"september\": {\n \"en\": \"September\",\n \"fr\": \"Septembre\"\n }\n },\n \"notifications\": {\n \"types\": {\n \"error\": {\n \"en\": \"Error\",\n \"fr\": \"Erreur\"\n },\n \"info\": {\n \"en\": \"Info\",\n \"fr\": \"Attention\"\n },\n \"success\": {\n \"en\": \"Success\",\n \"fr\": \"Succès\"\n },\n \"warning\": {\n \"en\": \"Warning\",\n \"fr\": \"Avertissement\"\n }\n }\n },\n \"pagination\": {\n \"next\": {\n \"en\": \"Next\",\n \"fr\": \"Suivant\"\n },\n \"previous\": {\n \"en\": \"Previous\",\n \"fr\": \"Précédent\"\n }\n },\n \"searchBar\": {\n \"placeholder\": {\n \"en\": \"Search...\",\n \"fr\": \"Rechercher...\"\n }\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/i18n.ts","../src/translations/libui.json"],"sourcesContent":["import { isPlainObject } from '@douglasneuroinformatics/libjs';\nimport { type i18n as I18n, createInstance } from 'i18next';\nimport LanguageDetector from 'i18next-browser-languagedetector';\nimport { mapValues } from 'lodash-es';\nimport { initReactI18next } from 'react-i18next';\nimport type { EmptyObject, ValueOf } from 'type-fest';\n\nimport libui from './translations/libui.json';\n\nexport const supportedLngs = ['en', 'fr'] as const;\n\nexport type Language = (typeof supportedLngs)[number];\n\nexport type TranslationsDef = { [key: string]: { [key: string]: unknown } };\n\nexport type TranslatedResource<T = EmptyObject> = {\n [K in keyof T]: T[K] extends { [key: string]: unknown }\n ? T[K] extends { [K in Language]: unknown }\n ? ValueOf<T[K]>\n : TranslatedResource<T[K]>\n : T[K];\n};\n\nexport function transformTranslations<T extends { [key: string]: any }>(translations: T, locale: string) {\n if (!isPlainObject) {\n throw new Error('Invalid format of translations: must be plain object');\n }\n const result: { [key: string]: unknown } = {};\n for (const key in translations) {\n const value = translations[key];\n if (Object.hasOwn(value, locale)) {\n result[key] = value[locale as keyof typeof value];\n } else {\n result[key] = transformTranslations(value, locale);\n }\n }\n return result;\n}\n\nexport function createResourcesForLanguage<T extends TranslationsDef>(translations: T, locale: Language) {\n return mapValues(translations, (value) => transformTranslations(value, locale));\n}\n\nexport function createResources<T extends TranslationsDef>(translations: T) {\n return {\n en: createResourcesForLanguage(translations, 'en') as TranslatedResource<T>,\n fr: createResourcesForLanguage(translations, 'fr') as TranslatedResource<T>\n };\n}\n\nexport const resources = createResources({ libui });\n\nconst i18n = createInstance({\n fallbackLng: 'en' satisfies Language,\n interpolation: {\n escapeValue: false\n },\n lng: 'en' satisfies Language,\n resources,\n returnObjects: true,\n supportedLngs\n}) as I18n & {\n addPreInitTranslations<T extends TranslationsDef>(translations: T): void;\n};\n\ni18n.addPreInitTranslations = function (this, translations) {\n if (!this.options.resources) {\n console.error(\"Cannot add additional translations to i18next instance: 'this.options.resources' is undefined\");\n return;\n }\n const resources = createResources(translations);\n Object.assign(this.options.resources.en, resources.en);\n Object.assign(this.options.resources.fr, resources.fr);\n};\n\ni18n.use(initReactI18next).use(LanguageDetector);\n\nexport { i18n };\n","{\n \"days\": {\n \"friday\": {\n \"en\": \"Friday\",\n \"fr\": \"Vendredi\"\n },\n \"monday\": {\n \"en\": \"Monday\",\n \"fr\": \"Lundi\"\n },\n \"saturday\": {\n \"en\": \"Saturday\",\n \"fr\": \"Samedi\"\n },\n \"sunday\": {\n \"en\": \"Sunday\",\n \"fr\": \"Dimanche\"\n },\n \"thursday\": {\n \"en\": \"Thursday\",\n \"fr\": \"Jeudi\"\n },\n \"tuesday\": {\n \"en\": \"Tuesday\",\n \"fr\": \"Mardi\"\n },\n \"wednesday\": {\n \"en\": \"Wednesday\",\n \"fr\": \"Mercredi\"\n }\n },\n \"form\": {\n \"append\": {\n \"en\": \"Append\",\n \"fr\": \"Ajouter\"\n },\n \"radioLabels\": {\n \"false\": {\n \"en\": \"False\",\n \"fr\": \"Faux\"\n },\n \"true\": {\n \"en\": \"True\",\n \"fr\": \"Vrai\"\n }\n },\n \"remove\": {\n \"en\": \"Remove\",\n \"fr\": \"Supprimer\"\n },\n \"required\": {\n \"en\": \"This field is required\",\n \"fr\": \"Ce champ est obligatoire\"\n },\n \"reset\": {\n \"en\": \"Reset\",\n \"fr\": \"Réinitialiser\"\n },\n \"submit\": {\n \"en\": \"Submit\",\n \"fr\": \"Soumettre\"\n }\n },\n \"months\": {\n \"april\": {\n \"en\": \"April\",\n \"fr\": \"Avril\"\n },\n \"august\": {\n \"en\": \"August\",\n \"fr\": \"Août\"\n },\n \"december\": {\n \"en\": \"December\",\n \"fr\": \"Décembre\"\n },\n \"february\": {\n \"en\": \"February\",\n \"fr\": \"Février\"\n },\n \"january\": {\n \"en\": \"January\",\n \"fr\": \"Janvier\"\n },\n \"july\": {\n \"en\": \"July\",\n \"fr\": \"Juillet\"\n },\n \"june\": {\n \"en\": \"June\",\n \"fr\": \"Juin\"\n },\n \"march\": {\n \"en\": \"March\",\n \"fr\": \"Mars\"\n },\n \"may\": {\n \"en\": \"May\",\n \"fr\": \"Mai\"\n },\n \"november\": {\n \"en\": \"November\",\n \"fr\": \"Novembre\"\n },\n \"october\": {\n \"en\": \"October\",\n \"fr\": \"Octobre\"\n },\n \"september\": {\n \"en\": \"September\",\n \"fr\": \"Septembre\"\n }\n },\n \"notifications\": {\n \"types\": {\n \"error\": {\n \"en\": \"Error\",\n \"fr\": \"Erreur\"\n },\n \"info\": {\n \"en\": \"Info\",\n \"fr\": \"Attention\"\n },\n \"success\": {\n \"en\": \"Success\",\n \"fr\": \"Succès\"\n },\n \"warning\": {\n \"en\": \"Warning\",\n \"fr\": \"Avertissement\"\n }\n }\n },\n \"pagination\": {\n \"info\": {\n \"en\": \"Showing {{first}} to {{last}} of {{total}} results\",\n \"fr\": \"Affichage de {{first}} à {{last}} sur {{total}} résultats\"\n },\n \"next\": {\n \"en\": \"Next\",\n \"fr\": \"Suivant\"\n },\n \"previous\": {\n \"en\": \"Previous\",\n \"fr\": \"Précédent\"\n }\n },\n \"searchBar\": {\n \"placeholder\": {\n \"en\": \"Search...\",\n \"fr\": \"Rechercher...\"\n }\n }\n}\n"],"mappings":"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","names":["resources"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@douglasneuroinformatics/libui",
3
3
  "type": "module",
4
- "version": "2.0.0-beta.9",
4
+ "version": "2.0.0",
5
5
  "packageManager": "pnpm@8.15.3",
6
6
  "description": "Generic UI components for DNP projects, built using React and TailwindCSS",
7
7
  "author": {
@@ -12,7 +12,7 @@
12
12
  "homepage": "https://github.com/DouglasNeuroInformatics/libui/#readme",
13
13
  "repository": {
14
14
  "type": "git",
15
- "url": "git+https://github.com/DouglasNeuroInformatics/libui/.git"
15
+ "url": "https://github.com/DouglasNeuroInformatics/libui/.git"
16
16
  },
17
17
  "bugs": {
18
18
  "url": "https://github.com/DouglasNeuroInformatics/libui/issues"