@senitix/ui 0.4.0 → 0.4.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.
- package/dist/avatar-BT_SPwFW.cjs +18 -0
- package/dist/{avatar-C0aVNCG9.cjs.map → avatar-BT_SPwFW.cjs.map} +1 -1
- package/dist/avatar-C5-ZWIqT.js +305 -0
- package/dist/{avatar-CN6wcrqY.js.map → avatar-C5-ZWIqT.js.map} +1 -1
- package/dist/calendar-BF5drX5u.cjs +12 -0
- package/dist/{calendar-BUm7YrNf.cjs.map → calendar-BF5drX5u.cjs.map} +1 -1
- package/dist/calendar-CUxm1K7J.js +17 -0
- package/dist/{calendar-ChJkFXXr.js.map → calendar-CUxm1K7J.js.map} +1 -1
- package/dist/calendar-D3RWU0_G.cjs +7 -0
- package/dist/{calendar-SwL5isYC.cjs.map → calendar-D3RWU0_G.cjs.map} +1 -1
- package/dist/{calendar-BFWc4IB7.js → calendar-DgnhzEfp.js} +126 -112
- package/dist/{calendar-BFWc4IB7.js.map → calendar-DgnhzEfp.js.map} +1 -1
- package/dist/{card-tMkUxpmW.cjs → card-DISL3sPJ.cjs} +2 -2
- package/dist/{card-tMkUxpmW.cjs.map → card-DISL3sPJ.cjs.map} +1 -1
- package/dist/{card-K4fxyYwE.js → card-fId5vof_.js} +2 -2
- package/dist/{card-K4fxyYwE.js.map → card-fId5vof_.js.map} +1 -1
- package/dist/{checkbox-CpOq5hkT.js → checkbox-BY2zxQVv.js} +5 -5
- package/dist/{checkbox-CpOq5hkT.js.map → checkbox-BY2zxQVv.js.map} +1 -1
- package/dist/checkbox-CL6u7vL6.cjs +2 -0
- package/dist/{checkbox-D7-LQyCl.cjs.map → checkbox-CL6u7vL6.cjs.map} +1 -1
- package/dist/chevron-down-BiUlxZA-.js +14 -0
- package/dist/{chevron-down-DJ1_YIFu.js.map → chevron-down-BiUlxZA-.js.map} +1 -1
- package/dist/chevron-down-Ce0kqXiD.cjs +7 -0
- package/dist/{chevron-down-DHdXqOqK.cjs.map → chevron-down-Ce0kqXiD.cjs.map} +1 -1
- package/dist/chevron-right-BLyGmyaF.js +14 -0
- package/dist/{chevron-right-B3bovvh0.js.map → chevron-right-BLyGmyaF.js.map} +1 -1
- package/dist/chevron-right-Bxf8i4gi.cjs +7 -0
- package/dist/{chevron-right-Dvyd11q0.cjs.map → chevron-right-Bxf8i4gi.cjs.map} +1 -1
- package/dist/chevron-up-BmYZUtrk.js +12 -0
- package/dist/{chevron-up-CGtXOr51.js.map → chevron-up-BmYZUtrk.js.map} +1 -1
- package/dist/chevron-up-C3RClqXD.cjs +7 -0
- package/dist/{chevron-up-B9fuiZhc.cjs.map → chevron-up-C3RClqXD.cjs.map} +1 -1
- package/dist/components/charts/index.cjs.js +1 -1
- package/dist/components/charts/index.es.js +1 -1
- package/dist/components/data-display/index.cjs.js +1 -1
- package/dist/components/data-display/index.es.js +1 -1
- package/dist/components/dnd/index.cjs.js +1 -1
- package/dist/components/dnd/index.es.js +1 -1
- package/dist/components/feedback/index.cjs.js +1 -1
- package/dist/components/feedback/index.es.js +1 -1
- package/dist/components/forms/index.cjs.js +1 -1
- package/dist/components/forms/index.es.js +1 -1
- package/dist/components/layouts/index.cjs.js +1 -1
- package/dist/components/layouts/index.es.js +1 -1
- package/dist/components/navigation/index.cjs.js +1 -1
- package/dist/components/navigation/index.es.js +1 -1
- package/dist/components/ui/index.cjs.js +1 -1
- package/dist/components/ui/index.es.js +13 -13
- package/dist/{createLucideIcon-BbeNo6vq.js → createLucideIcon-BC8wu-bu.js} +25 -1
- package/dist/{createLucideIcon-BbeNo6vq.js.map → createLucideIcon-BC8wu-bu.js.map} +1 -1
- package/dist/createLucideIcon-Cv8nC2E9.cjs +22 -0
- package/dist/{createLucideIcon-i5GEhNMV.cjs.map → createLucideIcon-Cv8nC2E9.cjs.map} +1 -1
- package/dist/ellipsis-6eUne95u.js +16 -0
- package/dist/{ellipsis-CiKEaUNP.js.map → ellipsis-6eUne95u.js.map} +1 -1
- package/dist/ellipsis-DkM3GBF5.cjs +7 -0
- package/dist/{ellipsis-BW2gWki8.cjs.map → ellipsis-DkM3GBF5.cjs.map} +1 -1
- package/dist/file-Cp5UoYUZ.cjs +7 -0
- package/dist/{file-V_hhCUhr.cjs.map → file-Cp5UoYUZ.cjs.map} +1 -1
- package/dist/file-Cw_u_aJB.js +15 -0
- package/dist/{file-wzTXnWqz.js.map → file-Cw_u_aJB.js.map} +1 -1
- package/dist/filter-tags-DoRzXjuY.cjs +48 -0
- package/dist/{filter-tags-DjUaNXHR.cjs.map → filter-tags-DoRzXjuY.cjs.map} +1 -1
- package/dist/{filter-tags-i_I8qV1N.js → filter-tags-zEQmRhEU.js} +353 -299
- package/dist/{filter-tags-i_I8qV1N.js.map → filter-tags-zEQmRhEU.js.map} +1 -1
- package/dist/{full-calendar-7ac2FFU6.js → full-calendar-5Z4JSj8g.js} +1176 -1143
- package/dist/{full-calendar-7ac2FFU6.js.map → full-calendar-5Z4JSj8g.js.map} +1 -1
- package/dist/full-calendar-DjAvCfuE.cjs +23 -0
- package/dist/{full-calendar-Cpeh5xMP.cjs.map → full-calendar-DjAvCfuE.cjs.map} +1 -1
- package/dist/{global-search-h1rVbP2q.js → global-search-BbZfc-VL.js} +514 -486
- package/dist/global-search-BbZfc-VL.js.map +1 -0
- package/dist/global-search-Bd74_wPV.cjs +22 -0
- package/dist/global-search-Bd74_wPV.cjs.map +1 -0
- package/dist/hooks/index.cjs.js +1 -1
- package/dist/hooks/index.es.js +1 -1
- package/dist/index-D2U2F80P.cjs +2 -0
- package/dist/index-D2U2F80P.cjs.map +1 -0
- package/dist/index-DG0KV-sw.cjs +11 -0
- package/dist/{index-CzVK9Zyb.cjs.map → index-DG0KV-sw.cjs.map} +1 -1
- package/dist/{index-Co9o9StL.js → index-Dk_Et2WJ.js} +2 -2
- package/dist/{index-Co9o9StL.js.map → index-Dk_Et2WJ.js.map} +1 -1
- package/dist/{index-CwJPJKOE.js → index-DtaLkIY8.js} +1072 -573
- package/dist/index-DtaLkIY8.js.map +1 -0
- package/dist/index-XnFSmCuh.js +299 -0
- package/dist/{index-l828OqQN.js.map → index-XnFSmCuh.js.map} +1 -1
- package/dist/{index-lT9bLt9X.cjs → index-gVbM3K4f.cjs} +2 -2
- package/dist/{index-lT9bLt9X.cjs.map → index-gVbM3K4f.cjs.map} +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.es.js +23 -23
- package/dist/input-BgPy-4Qu.js +3658 -0
- package/dist/{input-D4AoiWxo.js.map → input-BgPy-4Qu.js.map} +1 -1
- package/dist/input-Cfr2WB-P.cjs +47 -0
- package/dist/{input-CZrckPLk.cjs.map → input-Cfr2WB-P.cjs.map} +1 -1
- package/dist/locale-provider-BojNdf1Y.cjs +2 -0
- package/dist/{locale-provider-DHMwuneF.cjs.map → locale-provider-BojNdf1Y.cjs.map} +1 -1
- package/dist/{locale-provider-DanG6RRG.js → locale-provider-DzBeb-X3.js} +62 -61
- package/dist/{locale-provider-DanG6RRG.js.map → locale-provider-DzBeb-X3.js.map} +1 -1
- package/dist/locale-selector-BD1IWk6X.cjs +22 -0
- package/dist/{locale-selector-Ppe0KTi-.cjs.map → locale-selector-BD1IWk6X.cjs.map} +1 -1
- package/dist/locale-selector-DLRSyVye.js +1772 -0
- package/dist/{locale-selector-xn2GpdP9.js.map → locale-selector-DLRSyVye.js.map} +1 -1
- package/dist/minus-C0uyaz70.cjs +7 -0
- package/dist/{minus-BXBFZSZs.cjs.map → minus-C0uyaz70.cjs.map} +1 -1
- package/dist/minus-CiwV65ZG.js +12 -0
- package/dist/{minus-DvlYtl96.js.map → minus-CiwV65ZG.js.map} +1 -1
- package/dist/{multi-container-C2UpSw5f.js → multi-container-BZia7HCU.js} +181 -164
- package/dist/{multi-container-C2UpSw5f.js.map → multi-container-BZia7HCU.js.map} +1 -1
- package/dist/multi-container-BdNbgtPZ.cjs +7 -0
- package/dist/{multi-container-DMKL8c9B.cjs.map → multi-container-BdNbgtPZ.cjs.map} +1 -1
- package/dist/pipeline-Dh052Dvj.cjs +27 -0
- package/dist/{pipeline-By5_8AFg.cjs.map → pipeline-Dh052Dvj.cjs.map} +1 -1
- package/dist/pipeline-DqWvleNy.js +1076 -0
- package/dist/{pipeline-D-QNSU0U.js.map → pipeline-DqWvleNy.js.map} +1 -1
- package/dist/plus-BsV82JJ5.cjs +7 -0
- package/dist/{plus-8wKRkVu-.cjs.map → plus-BsV82JJ5.cjs.map} +1 -1
- package/dist/plus-DxD6rofl.js +15 -0
- package/dist/{plus-CJD68KQD.js.map → plus-DxD6rofl.js.map} +1 -1
- package/dist/popover-BgLxmm1z.cjs +7 -0
- package/dist/{popover-ivh-plLc.cjs.map → popover-BgLxmm1z.cjs.map} +1 -1
- package/dist/{popover-4V4sGe1U.js → popover-PI9jbhnS.js} +85 -75
- package/dist/{popover-4V4sGe1U.js.map → popover-PI9jbhnS.js.map} +1 -1
- package/dist/progress-CTTt_CP3.js +260 -0
- package/dist/{progress-D5AsrWa6.js.map → progress-CTTt_CP3.js.map} +1 -1
- package/dist/progress-CTWb7X1Q.cjs +37 -0
- package/dist/{progress-CFnuLqnS.cjs.map → progress-CTWb7X1Q.cjs.map} +1 -1
- package/dist/providers/index.cjs.js +1 -1
- package/dist/providers/index.es.js +1 -1
- package/dist/{scroll-area-DQeqDp3Y.js → scroll-area-A3jGu-Ta.js} +302 -280
- package/dist/{scroll-area-DQeqDp3Y.js.map → scroll-area-A3jGu-Ta.js.map} +1 -1
- package/dist/scroll-area-DzDnWIYJ.cjs +12 -0
- package/dist/{scroll-area-DYOiJMXh.cjs.map → scroll-area-DzDnWIYJ.cjs.map} +1 -1
- package/dist/select-BJpZrtep.js +989 -0
- package/dist/{select-C1rNBi6c.js.map → select-BJpZrtep.js.map} +1 -1
- package/dist/select-Ii8HRuXa.cjs +2 -0
- package/dist/{select-m-Mqwxu3.cjs.map → select-Ii8HRuXa.cjs.map} +1 -1
- package/dist/separator-BzcDE0Ei.cjs +2 -0
- package/dist/{separator-DBUivkHq.cjs.map → separator-BzcDE0Ei.cjs.map} +1 -1
- package/dist/{separator-DsfoJx-2.js → separator-DyarVo1-.js} +66 -65
- package/dist/{separator-DsfoJx-2.js.map → separator-DyarVo1-.js.map} +1 -1
- package/dist/{sheet-BVWCpq7E.js → sheet-DPSdOoE6.js} +4 -4
- package/dist/{sheet-BVWCpq7E.js.map → sheet-DPSdOoE6.js.map} +1 -1
- package/dist/{sheet-mKiFLVnK.cjs → sheet-XtjvbEMq.cjs} +2 -2
- package/dist/{sheet-mKiFLVnK.cjs.map → sheet-XtjvbEMq.cjs.map} +1 -1
- package/dist/{skeleton-BmGbfJw3.js → skeleton-Bl6FAxHT.js} +2 -2
- package/dist/{skeleton-BmGbfJw3.js.map → skeleton-Bl6FAxHT.js.map} +1 -1
- package/dist/{skeleton-BSwwYaQU.cjs → skeleton-Cb6MWerF.cjs} +2 -2
- package/dist/{skeleton-BSwwYaQU.cjs.map → skeleton-Cb6MWerF.cjs.map} +1 -1
- package/dist/sortable.esm-5DsiICDg.cjs +6 -0
- package/dist/{sortable.esm-DcQYlXi3.cjs.map → sortable.esm-5DsiICDg.cjs.map} +1 -1
- package/dist/{sortable.esm-Blhf_jh1.js → sortable.esm-Cb8oRBzU.js} +42 -42
- package/dist/{sortable.esm-Blhf_jh1.js.map → sortable.esm-Cb8oRBzU.js.map} +1 -1
- package/dist/sparkline-chart-CeCDeMNk.cjs +102 -0
- package/dist/{sparkline-chart-ca3uTzVK.cjs.map → sparkline-chart-CeCDeMNk.cjs.map} +1 -1
- package/dist/{sparkline-chart-Da-ehDGv.js → sparkline-chart-DUS4CoW_.js} +7799 -9094
- package/dist/{sparkline-chart-Da-ehDGv.js.map → sparkline-chart-DUS4CoW_.js.map} +1 -1
- package/dist/styles.css +1 -0
- package/dist/trending-up-BBjz_E69.cjs +7 -0
- package/dist/{trending-up-D3Nfrhi3.cjs.map → trending-up-BBjz_E69.cjs.map} +1 -1
- package/dist/trending-up-BHFXgLWy.js +15 -0
- package/dist/{trending-up-DPwlYzQb.js.map → trending-up-BHFXgLWy.js.map} +1 -1
- package/dist/{use-formatters-l1_2c8z0.js → use-formatters-Bgj3JA4i.js} +731 -746
- package/dist/{use-formatters-l1_2c8z0.js.map → use-formatters-Bgj3JA4i.js.map} +1 -1
- package/dist/use-formatters-CObUgipW.cjs +2 -0
- package/dist/{use-formatters-d97RVcmg.cjs.map → use-formatters-CObUgipW.cjs.map} +1 -1
- package/dist/utils/index.cjs.js +1 -1
- package/dist/utils/index.es.js +1 -1
- package/dist/welcome-card-CNuEa6Ck.cjs +67 -0
- package/dist/{welcome-card-CPolYl1D.cjs.map → welcome-card-CNuEa6Ck.cjs.map} +1 -1
- package/dist/{welcome-card-CxMJZ8bv.js → welcome-card-Cp6t6G3j.js} +197 -119
- package/dist/{welcome-card-CxMJZ8bv.js.map → welcome-card-Cp6t6G3j.js.map} +1 -1
- package/package.json +14 -12
- package/dist/avatar-C0aVNCG9.cjs +0 -2
- package/dist/avatar-CN6wcrqY.js +0 -288
- package/dist/calendar-BUm7YrNf.cjs +0 -2
- package/dist/calendar-ChJkFXXr.js +0 -11
- package/dist/calendar-SwL5isYC.cjs +0 -2
- package/dist/checkbox-D7-LQyCl.cjs +0 -2
- package/dist/chevron-down-DHdXqOqK.cjs +0 -2
- package/dist/chevron-down-DJ1_YIFu.js +0 -8
- package/dist/chevron-right-B3bovvh0.js +0 -8
- package/dist/chevron-right-Dvyd11q0.cjs +0 -2
- package/dist/chevron-up-B9fuiZhc.cjs +0 -2
- package/dist/chevron-up-CGtXOr51.js +0 -6
- package/dist/createLucideIcon-i5GEhNMV.cjs +0 -2
- package/dist/ellipsis-BW2gWki8.cjs +0 -2
- package/dist/ellipsis-CiKEaUNP.js +0 -10
- package/dist/file-V_hhCUhr.cjs +0 -2
- package/dist/file-wzTXnWqz.js +0 -9
- package/dist/filter-tags-DjUaNXHR.cjs +0 -5
- package/dist/full-calendar-Cpeh5xMP.cjs +0 -8
- package/dist/global-search-UNXjoFlI.cjs +0 -2
- package/dist/global-search-UNXjoFlI.cjs.map +0 -1
- package/dist/global-search-h1rVbP2q.js.map +0 -1
- package/dist/index-CwJPJKOE.js.map +0 -1
- package/dist/index-CzVK9Zyb.cjs +0 -6
- package/dist/index-l828OqQN.js +0 -288
- package/dist/index-lGzB9daF.cjs +0 -2
- package/dist/index-lGzB9daF.cjs.map +0 -1
- package/dist/input-CZrckPLk.cjs +0 -42
- package/dist/input-D4AoiWxo.js +0 -3629
- package/dist/locale-provider-DHMwuneF.cjs +0 -2
- package/dist/locale-selector-Ppe0KTi-.cjs +0 -2
- package/dist/locale-selector-xn2GpdP9.js +0 -1745
- package/dist/minus-BXBFZSZs.cjs +0 -2
- package/dist/minus-DvlYtl96.js +0 -6
- package/dist/multi-container-DMKL8c9B.cjs +0 -2
- package/dist/pipeline-By5_8AFg.cjs +0 -2
- package/dist/pipeline-D-QNSU0U.js +0 -1036
- package/dist/plus-8wKRkVu-.cjs +0 -2
- package/dist/plus-CJD68KQD.js +0 -9
- package/dist/popover-ivh-plLc.cjs +0 -2
- package/dist/progress-CFnuLqnS.cjs +0 -7
- package/dist/progress-D5AsrWa6.js +0 -222
- package/dist/scroll-area-DYOiJMXh.cjs +0 -2
- package/dist/select-C1rNBi6c.js +0 -974
- package/dist/select-m-Mqwxu3.cjs +0 -2
- package/dist/separator-DBUivkHq.cjs +0 -2
- package/dist/sortable.esm-DcQYlXi3.cjs +0 -6
- package/dist/sparkline-chart-ca3uTzVK.cjs +0 -68
- package/dist/trending-up-D3Nfrhi3.cjs +0 -2
- package/dist/trending-up-DPwlYzQb.js +0 -9
- package/dist/ui.css +0 -1
- package/dist/use-formatters-d97RVcmg.cjs +0 -2
- package/dist/welcome-card-CPolYl1D.cjs +0 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as U } from "react/jsx-runtime";
|
|
2
|
-
import * as
|
|
2
|
+
import * as i from "react";
|
|
3
3
|
const n = {
|
|
4
4
|
short: {
|
|
5
5
|
"tr-TR": "dd.MM.yyyy",
|
|
@@ -242,11 +242,11 @@ const n = {
|
|
|
242
242
|
rtl: !0
|
|
243
243
|
}
|
|
244
244
|
};
|
|
245
|
-
function z(e,
|
|
246
|
-
return n[
|
|
245
|
+
function z(e, m = "short") {
|
|
246
|
+
return n[m][e] || n[m]["en-US"];
|
|
247
247
|
}
|
|
248
|
-
function I(e,
|
|
249
|
-
return t[
|
|
248
|
+
function I(e, m = "short") {
|
|
249
|
+
return t[m][e] || t[m]["en-US"];
|
|
250
250
|
}
|
|
251
251
|
function G(e) {
|
|
252
252
|
return h[e] || h["en-US"];
|
|
@@ -258,7 +258,8 @@ function $() {
|
|
|
258
258
|
return Object.keys(h);
|
|
259
259
|
}
|
|
260
260
|
function J(e) {
|
|
261
|
-
|
|
261
|
+
var m;
|
|
262
|
+
return ((m = h[e]) == null ? void 0 : m.rtl) === !0;
|
|
262
263
|
}
|
|
263
264
|
const f = {
|
|
264
265
|
USD: { code: "USD", symbol: "$", name: "US Dollar", position: "before", decimals: 2 },
|
|
@@ -311,13 +312,13 @@ const f = {
|
|
|
311
312
|
function B(e) {
|
|
312
313
|
return f[e];
|
|
313
314
|
}
|
|
314
|
-
function W(e,
|
|
315
|
-
const u = B(
|
|
315
|
+
function W(e, m, l) {
|
|
316
|
+
const u = B(m);
|
|
316
317
|
if (!u)
|
|
317
318
|
return e.toString();
|
|
318
|
-
const
|
|
319
|
-
minimumFractionDigits:
|
|
320
|
-
maximumFractionDigits:
|
|
319
|
+
const c = u.decimals ?? 2, y = e.toLocaleString(l, {
|
|
320
|
+
minimumFractionDigits: c,
|
|
321
|
+
maximumFractionDigits: c
|
|
321
322
|
});
|
|
322
323
|
return u.position === "before" ? `${u.symbol}${y}` : `${y} ${u.symbol}`;
|
|
323
324
|
}
|
|
@@ -836,53 +837,53 @@ const k = {
|
|
|
836
837
|
"ko-KR": { decimal: ".", thousand: "," },
|
|
837
838
|
"ar-SA": { decimal: ".", thousand: "," }
|
|
838
839
|
};
|
|
839
|
-
function
|
|
840
|
-
const
|
|
840
|
+
function r(e) {
|
|
841
|
+
const m = h[e], l = f[m.defaultCurrency];
|
|
841
842
|
return {
|
|
842
843
|
locale: e,
|
|
843
|
-
currency:
|
|
844
|
-
currencySymbol:
|
|
844
|
+
currency: m.defaultCurrency,
|
|
845
|
+
currencySymbol: (l == null ? void 0 : l.symbol) || "$",
|
|
845
846
|
dateFormat: n.short[e],
|
|
846
847
|
timeFormat: t.short[e],
|
|
847
848
|
numberFormat: K[e],
|
|
848
849
|
translations: k[e] || k["en-US"],
|
|
849
|
-
rtl:
|
|
850
|
+
rtl: m.rtl
|
|
850
851
|
};
|
|
851
852
|
}
|
|
852
853
|
const g = {
|
|
853
|
-
"en-US":
|
|
854
|
-
"en-GB":
|
|
855
|
-
"tr-TR":
|
|
856
|
-
"de-DE":
|
|
857
|
-
"fr-FR":
|
|
858
|
-
"es-ES":
|
|
859
|
-
"it-IT":
|
|
860
|
-
"pt-BR":
|
|
861
|
-
"nl-NL":
|
|
862
|
-
"pl-PL":
|
|
863
|
-
"ru-RU":
|
|
864
|
-
"ja-JP":
|
|
865
|
-
"zh-CN":
|
|
866
|
-
"ko-KR":
|
|
867
|
-
"ar-SA":
|
|
868
|
-
}, L =
|
|
854
|
+
"en-US": r("en-US"),
|
|
855
|
+
"en-GB": r("en-GB"),
|
|
856
|
+
"tr-TR": r("tr-TR"),
|
|
857
|
+
"de-DE": r("de-DE"),
|
|
858
|
+
"fr-FR": r("fr-FR"),
|
|
859
|
+
"es-ES": r("es-ES"),
|
|
860
|
+
"it-IT": r("it-IT"),
|
|
861
|
+
"pt-BR": r("pt-BR"),
|
|
862
|
+
"nl-NL": r("nl-NL"),
|
|
863
|
+
"pl-PL": r("pl-PL"),
|
|
864
|
+
"ru-RU": r("ru-RU"),
|
|
865
|
+
"ja-JP": r("ja-JP"),
|
|
866
|
+
"zh-CN": r("zh-CN"),
|
|
867
|
+
"ko-KR": r("ko-KR"),
|
|
868
|
+
"ar-SA": r("ar-SA")
|
|
869
|
+
}, L = i.createContext(void 0);
|
|
869
870
|
function Y({
|
|
870
871
|
children: e,
|
|
871
|
-
defaultLocale:
|
|
872
|
-
config:
|
|
872
|
+
defaultLocale: m = "en-US",
|
|
873
|
+
config: l,
|
|
873
874
|
translations: u
|
|
874
875
|
}) {
|
|
875
|
-
const [
|
|
876
|
-
const a = g[
|
|
876
|
+
const [c, y] = i.useState(() => {
|
|
877
|
+
const a = g[m] || g["en-US"];
|
|
877
878
|
return {
|
|
878
879
|
...a,
|
|
879
|
-
...
|
|
880
|
+
...l,
|
|
880
881
|
translations: {
|
|
881
882
|
...a.translations,
|
|
882
883
|
...u
|
|
883
884
|
}
|
|
884
885
|
};
|
|
885
|
-
}), S =
|
|
886
|
+
}), S = i.useCallback((a) => {
|
|
886
887
|
const o = g[a] || g["en-US"];
|
|
887
888
|
y((s) => ({
|
|
888
889
|
...o,
|
|
@@ -891,24 +892,24 @@ function Y({
|
|
|
891
892
|
...s.translations
|
|
892
893
|
}
|
|
893
894
|
}));
|
|
894
|
-
}, []), R =
|
|
895
|
+
}, []), R = i.useCallback((a) => {
|
|
895
896
|
const o = f[a];
|
|
896
897
|
o && y((s) => ({
|
|
897
898
|
...s,
|
|
898
899
|
currency: a,
|
|
899
900
|
currencySymbol: o.symbol
|
|
900
901
|
}));
|
|
901
|
-
}, []), C =
|
|
902
|
+
}, []), C = i.useCallback((a) => {
|
|
902
903
|
y((o) => ({
|
|
903
904
|
...o,
|
|
904
905
|
dateFormat: a
|
|
905
906
|
}));
|
|
906
|
-
}, []), D =
|
|
907
|
+
}, []), D = i.useCallback((a) => {
|
|
907
908
|
y((o) => ({
|
|
908
909
|
...o,
|
|
909
910
|
timeFormat: a
|
|
910
911
|
}));
|
|
911
|
-
}, []), H =
|
|
912
|
+
}, []), H = i.useCallback((a) => {
|
|
912
913
|
y((o) => ({
|
|
913
914
|
...o,
|
|
914
915
|
translations: {
|
|
@@ -916,7 +917,7 @@ function Y({
|
|
|
916
917
|
...a
|
|
917
918
|
}
|
|
918
919
|
}));
|
|
919
|
-
}, []), T =
|
|
920
|
+
}, []), T = i.useCallback((a) => {
|
|
920
921
|
y((o) => ({
|
|
921
922
|
...o,
|
|
922
923
|
...a,
|
|
@@ -925,34 +926,34 @@ function Y({
|
|
|
925
926
|
...a.translations
|
|
926
927
|
}
|
|
927
928
|
}));
|
|
928
|
-
}, []), p =
|
|
929
|
+
}, []), p = i.useCallback(
|
|
929
930
|
(a) => {
|
|
930
|
-
const { decimal: o, thousand: s } =
|
|
931
|
+
const { decimal: o, thousand: s } = c.numberFormat, d = a.toFixed(2).split(".");
|
|
931
932
|
return d[0] = d[0].replace(/\B(?=(\d{3})+(?!\d))/g, s), d.join(o);
|
|
932
933
|
},
|
|
933
|
-
[
|
|
934
|
-
), v =
|
|
934
|
+
[c.numberFormat]
|
|
935
|
+
), v = i.useCallback(
|
|
935
936
|
(a, o) => {
|
|
936
|
-
const s = o ||
|
|
937
|
+
const s = o || c.currency, d = f[s];
|
|
937
938
|
if (!d)
|
|
938
939
|
return p(a);
|
|
939
|
-
const M = d.decimals ?? 2, { decimal: E, thousand: A } =
|
|
940
|
+
const M = d.decimals ?? 2, { decimal: E, thousand: A } = c.numberFormat, b = a.toFixed(M).split(".");
|
|
940
941
|
b[0] = b[0].replace(/\B(?=(\d{3})+(?!\d))/g, A);
|
|
941
942
|
const N = M > 0 ? b.join(E) : b[0];
|
|
942
943
|
return d.position === "before" ? `${d.symbol}${N}` : `${N} ${d.symbol}`;
|
|
943
944
|
},
|
|
944
|
-
[
|
|
945
|
-
), P =
|
|
945
|
+
[c.currency, c.numberFormat, p]
|
|
946
|
+
), P = i.useCallback(
|
|
946
947
|
(a, o) => {
|
|
947
|
-
let s =
|
|
948
|
+
let s = c.translations[a] || a;
|
|
948
949
|
return o && Object.entries(o).forEach(([d, M]) => {
|
|
949
950
|
s = s.replace(`{${d}}`, String(M));
|
|
950
951
|
}), s;
|
|
951
952
|
},
|
|
952
|
-
[
|
|
953
|
-
), F =
|
|
953
|
+
[c.translations]
|
|
954
|
+
), F = i.useMemo(
|
|
954
955
|
() => ({
|
|
955
|
-
config:
|
|
956
|
+
config: c,
|
|
956
957
|
setLocale: S,
|
|
957
958
|
setCurrency: R,
|
|
958
959
|
setDateFormat: C,
|
|
@@ -963,12 +964,12 @@ function Y({
|
|
|
963
964
|
formatCurrency: v,
|
|
964
965
|
t: P
|
|
965
966
|
}),
|
|
966
|
-
[
|
|
967
|
+
[c, S, R, C, D, H, T, p, v, P]
|
|
967
968
|
);
|
|
968
969
|
return /* @__PURE__ */ U(L.Provider, { value: F, children: e });
|
|
969
970
|
}
|
|
970
971
|
function Z() {
|
|
971
|
-
const e =
|
|
972
|
+
const e = i.useContext(L);
|
|
972
973
|
return e === void 0 ? {
|
|
973
974
|
config: g["en-US"],
|
|
974
975
|
setLocale: () => {
|
|
@@ -983,9 +984,9 @@ function Z() {
|
|
|
983
984
|
},
|
|
984
985
|
updateConfig: () => {
|
|
985
986
|
},
|
|
986
|
-
formatNumber: (
|
|
987
|
-
formatCurrency: (
|
|
988
|
-
t: (
|
|
987
|
+
formatNumber: (l) => l.toLocaleString("en-US"),
|
|
988
|
+
formatCurrency: (l) => `$${l.toLocaleString("en-US", { minimumFractionDigits: 2 })}`,
|
|
989
|
+
t: (l) => l
|
|
989
990
|
} : e;
|
|
990
991
|
}
|
|
991
992
|
export {
|
|
@@ -1009,4 +1010,4 @@ export {
|
|
|
1009
1010
|
t,
|
|
1010
1011
|
Z as u
|
|
1011
1012
|
};
|
|
1012
|
-
//# sourceMappingURL=locale-provider-
|
|
1013
|
+
//# sourceMappingURL=locale-provider-DzBeb-X3.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locale-provider-DanG6RRG.js","sources":["../src/lib/date-formats.ts","../src/lib/currencies.ts","../src/providers/locale-provider.tsx"],"sourcesContent":["export type SupportedLocale =\n | 'tr-TR'\n | 'en-US'\n | 'en-GB'\n | 'de-DE'\n | 'fr-FR'\n | 'es-ES'\n | 'it-IT'\n | 'pt-BR'\n | 'nl-NL'\n | 'pl-PL'\n | 'ru-RU'\n | 'ja-JP'\n | 'zh-CN'\n | 'ko-KR'\n | 'ar-SA'\n\nexport type DateFormatType = 'short' | 'long' | 'withTime' | 'relative'\nexport type TimeFormatType = 'short' | 'long'\n\nexport const dateFormats: Record<DateFormatType, Record<SupportedLocale, string>> = {\n short: {\n 'tr-TR': 'dd.MM.yyyy',\n 'en-US': 'MM/dd/yyyy',\n 'en-GB': 'dd/MM/yyyy',\n 'de-DE': 'dd.MM.yyyy',\n 'fr-FR': 'dd/MM/yyyy',\n 'es-ES': 'dd/MM/yyyy',\n 'it-IT': 'dd/MM/yyyy',\n 'pt-BR': 'dd/MM/yyyy',\n 'nl-NL': 'dd-MM-yyyy',\n 'pl-PL': 'dd.MM.yyyy',\n 'ru-RU': 'dd.MM.yyyy',\n 'ja-JP': 'yyyy/MM/dd',\n 'zh-CN': 'yyyy-MM-dd',\n 'ko-KR': 'yyyy.MM.dd',\n 'ar-SA': 'dd/MM/yyyy',\n },\n long: {\n 'tr-TR': 'd MMMM yyyy',\n 'en-US': 'MMMM d, yyyy',\n 'en-GB': 'd MMMM yyyy',\n 'de-DE': 'd. MMMM yyyy',\n 'fr-FR': 'd MMMM yyyy',\n 'es-ES': 'd de MMMM de yyyy',\n 'it-IT': 'd MMMM yyyy',\n 'pt-BR': 'd de MMMM de yyyy',\n 'nl-NL': 'd MMMM yyyy',\n 'pl-PL': 'd MMMM yyyy',\n 'ru-RU': 'd MMMM yyyy г.',\n 'ja-JP': 'yyyy年M月d日',\n 'zh-CN': 'yyyy年M月d日',\n 'ko-KR': 'yyyy년 M월 d일',\n 'ar-SA': 'd MMMM yyyy',\n },\n withTime: {\n 'tr-TR': 'dd.MM.yyyy HH:mm',\n 'en-US': 'MM/dd/yyyy hh:mm a',\n 'en-GB': 'dd/MM/yyyy HH:mm',\n 'de-DE': 'dd.MM.yyyy HH:mm',\n 'fr-FR': 'dd/MM/yyyy HH:mm',\n 'es-ES': 'dd/MM/yyyy HH:mm',\n 'it-IT': 'dd/MM/yyyy HH:mm',\n 'pt-BR': 'dd/MM/yyyy HH:mm',\n 'nl-NL': 'dd-MM-yyyy HH:mm',\n 'pl-PL': 'dd.MM.yyyy HH:mm',\n 'ru-RU': 'dd.MM.yyyy HH:mm',\n 'ja-JP': 'yyyy/MM/dd HH:mm',\n 'zh-CN': 'yyyy-MM-dd HH:mm',\n 'ko-KR': 'yyyy.MM.dd HH:mm',\n 'ar-SA': 'dd/MM/yyyy hh:mm a',\n },\n relative: {\n 'tr-TR': 'relative',\n 'en-US': 'relative',\n 'en-GB': 'relative',\n 'de-DE': 'relative',\n 'fr-FR': 'relative',\n 'es-ES': 'relative',\n 'it-IT': 'relative',\n 'pt-BR': 'relative',\n 'nl-NL': 'relative',\n 'pl-PL': 'relative',\n 'ru-RU': 'relative',\n 'ja-JP': 'relative',\n 'zh-CN': 'relative',\n 'ko-KR': 'relative',\n 'ar-SA': 'relative',\n },\n}\n\nexport const timeFormats: Record<TimeFormatType, Record<SupportedLocale, string>> = {\n short: {\n 'tr-TR': 'HH:mm',\n 'en-US': 'hh:mm a',\n 'en-GB': 'HH:mm',\n 'de-DE': 'HH:mm',\n 'fr-FR': 'HH:mm',\n 'es-ES': 'HH:mm',\n 'it-IT': 'HH:mm',\n 'pt-BR': 'HH:mm',\n 'nl-NL': 'HH:mm',\n 'pl-PL': 'HH:mm',\n 'ru-RU': 'HH:mm',\n 'ja-JP': 'HH:mm',\n 'zh-CN': 'HH:mm',\n 'ko-KR': 'HH:mm',\n 'ar-SA': 'hh:mm a',\n },\n long: {\n 'tr-TR': 'HH:mm:ss',\n 'en-US': 'hh:mm:ss a',\n 'en-GB': 'HH:mm:ss',\n 'de-DE': 'HH:mm:ss',\n 'fr-FR': 'HH:mm:ss',\n 'es-ES': 'HH:mm:ss',\n 'it-IT': 'HH:mm:ss',\n 'pt-BR': 'HH:mm:ss',\n 'nl-NL': 'HH:mm:ss',\n 'pl-PL': 'HH:mm:ss',\n 'ru-RU': 'HH:mm:ss',\n 'ja-JP': 'HH:mm:ss',\n 'zh-CN': 'HH:mm:ss',\n 'ko-KR': 'HH:mm:ss',\n 'ar-SA': 'hh:mm:ss a',\n },\n}\n\nexport interface LocaleInfo {\n code: SupportedLocale\n name: string\n nativeName: string\n flag: string\n defaultCurrency: string\n dateFormat: string\n timeFormat: string\n rtl?: boolean\n}\n\nexport const locales: Record<SupportedLocale, LocaleInfo> = {\n 'tr-TR': {\n code: 'tr-TR',\n name: 'Turkish',\n nativeName: 'Türkçe',\n flag: '🇹🇷',\n defaultCurrency: 'TRY',\n dateFormat: dateFormats.short['tr-TR'],\n timeFormat: timeFormats.short['tr-TR'],\n },\n 'en-US': {\n code: 'en-US',\n name: 'English (US)',\n nativeName: 'English (US)',\n flag: '🇺🇸',\n defaultCurrency: 'USD',\n dateFormat: dateFormats.short['en-US'],\n timeFormat: timeFormats.short['en-US'],\n },\n 'en-GB': {\n code: 'en-GB',\n name: 'English (UK)',\n nativeName: 'English (UK)',\n flag: '🇬🇧',\n defaultCurrency: 'GBP',\n dateFormat: dateFormats.short['en-GB'],\n timeFormat: timeFormats.short['en-GB'],\n },\n 'de-DE': {\n code: 'de-DE',\n name: 'German',\n nativeName: 'Deutsch',\n flag: '🇩🇪',\n defaultCurrency: 'EUR',\n dateFormat: dateFormats.short['de-DE'],\n timeFormat: timeFormats.short['de-DE'],\n },\n 'fr-FR': {\n code: 'fr-FR',\n name: 'French',\n nativeName: 'Français',\n flag: '🇫🇷',\n defaultCurrency: 'EUR',\n dateFormat: dateFormats.short['fr-FR'],\n timeFormat: timeFormats.short['fr-FR'],\n },\n 'es-ES': {\n code: 'es-ES',\n name: 'Spanish',\n nativeName: 'Español',\n flag: '🇪🇸',\n defaultCurrency: 'EUR',\n dateFormat: dateFormats.short['es-ES'],\n timeFormat: timeFormats.short['es-ES'],\n },\n 'it-IT': {\n code: 'it-IT',\n name: 'Italian',\n nativeName: 'Italiano',\n flag: '🇮🇹',\n defaultCurrency: 'EUR',\n dateFormat: dateFormats.short['it-IT'],\n timeFormat: timeFormats.short['it-IT'],\n },\n 'pt-BR': {\n code: 'pt-BR',\n name: 'Portuguese (Brazil)',\n nativeName: 'Português (Brasil)',\n flag: '🇧🇷',\n defaultCurrency: 'BRL',\n dateFormat: dateFormats.short['pt-BR'],\n timeFormat: timeFormats.short['pt-BR'],\n },\n 'nl-NL': {\n code: 'nl-NL',\n name: 'Dutch',\n nativeName: 'Nederlands',\n flag: '🇳🇱',\n defaultCurrency: 'EUR',\n dateFormat: dateFormats.short['nl-NL'],\n timeFormat: timeFormats.short['nl-NL'],\n },\n 'pl-PL': {\n code: 'pl-PL',\n name: 'Polish',\n nativeName: 'Polski',\n flag: '🇵🇱',\n defaultCurrency: 'PLN',\n dateFormat: dateFormats.short['pl-PL'],\n timeFormat: timeFormats.short['pl-PL'],\n },\n 'ru-RU': {\n code: 'ru-RU',\n name: 'Russian',\n nativeName: 'Русский',\n flag: '🇷🇺',\n defaultCurrency: 'RUB',\n dateFormat: dateFormats.short['ru-RU'],\n timeFormat: timeFormats.short['ru-RU'],\n },\n 'ja-JP': {\n code: 'ja-JP',\n name: 'Japanese',\n nativeName: '日本語',\n flag: '🇯🇵',\n defaultCurrency: 'JPY',\n dateFormat: dateFormats.short['ja-JP'],\n timeFormat: timeFormats.short['ja-JP'],\n },\n 'zh-CN': {\n code: 'zh-CN',\n name: 'Chinese (Simplified)',\n nativeName: '中文',\n flag: '🇨🇳',\n defaultCurrency: 'CNY',\n dateFormat: dateFormats.short['zh-CN'],\n timeFormat: timeFormats.short['zh-CN'],\n },\n 'ko-KR': {\n code: 'ko-KR',\n name: 'Korean',\n nativeName: '한국어',\n flag: '🇰🇷',\n defaultCurrency: 'KRW',\n dateFormat: dateFormats.short['ko-KR'],\n timeFormat: timeFormats.short['ko-KR'],\n },\n 'ar-SA': {\n code: 'ar-SA',\n name: 'Arabic',\n nativeName: 'العربية',\n flag: '🇸🇦',\n defaultCurrency: 'SAR',\n dateFormat: dateFormats.short['ar-SA'],\n timeFormat: timeFormats.short['ar-SA'],\n rtl: true,\n },\n}\n\nexport function getDateFormat(locale: SupportedLocale, type: DateFormatType = 'short'): string {\n return dateFormats[type][locale] || dateFormats[type]['en-US']\n}\n\nexport function getTimeFormat(locale: SupportedLocale, type: TimeFormatType = 'short'): string {\n return timeFormats[type][locale] || timeFormats[type]['en-US']\n}\n\nexport function getLocaleInfo(locale: SupportedLocale): LocaleInfo {\n return locales[locale] || locales['en-US']\n}\n\nexport function getAllLocales(): LocaleInfo[] {\n return Object.values(locales)\n}\n\nexport function getSupportedLocaleCodes(): SupportedLocale[] {\n return Object.keys(locales) as SupportedLocale[]\n}\n\nexport function isRTLLocale(locale: SupportedLocale): boolean {\n return locales[locale]?.rtl === true\n}\n","export interface Currency {\n code: string\n symbol: string\n name: string\n position: 'before' | 'after'\n decimals?: number\n}\n\nexport const currencies: Record<string, Currency> = {\n USD: { code: 'USD', symbol: '$', name: 'US Dollar', position: 'before', decimals: 2 },\n EUR: { code: 'EUR', symbol: '€', name: 'Euro', position: 'before', decimals: 2 },\n GBP: { code: 'GBP', symbol: '£', name: 'British Pound', position: 'before', decimals: 2 },\n TRY: { code: 'TRY', symbol: '₺', name: 'Turkish Lira', position: 'before', decimals: 2 },\n JPY: { code: 'JPY', symbol: '¥', name: 'Japanese Yen', position: 'before', decimals: 0 },\n CNY: { code: 'CNY', symbol: '¥', name: 'Chinese Yuan', position: 'before', decimals: 2 },\n KRW: { code: 'KRW', symbol: '₩', name: 'Korean Won', position: 'before', decimals: 0 },\n INR: { code: 'INR', symbol: '₹', name: 'Indian Rupee', position: 'before', decimals: 2 },\n BRL: { code: 'BRL', symbol: 'R$', name: 'Brazilian Real', position: 'before', decimals: 2 },\n RUB: { code: 'RUB', symbol: '₽', name: 'Russian Ruble', position: 'after', decimals: 2 },\n AUD: { code: 'AUD', symbol: 'A$', name: 'Australian Dollar', position: 'before', decimals: 2 },\n CAD: { code: 'CAD', symbol: 'C$', name: 'Canadian Dollar', position: 'before', decimals: 2 },\n CHF: { code: 'CHF', symbol: 'Fr', name: 'Swiss Franc', position: 'before', decimals: 2 },\n SEK: { code: 'SEK', symbol: 'kr', name: 'Swedish Krona', position: 'after', decimals: 2 },\n NOK: { code: 'NOK', symbol: 'kr', name: 'Norwegian Krone', position: 'after', decimals: 2 },\n DKK: { code: 'DKK', symbol: 'kr', name: 'Danish Krone', position: 'after', decimals: 2 },\n PLN: { code: 'PLN', symbol: 'zł', name: 'Polish Zloty', position: 'after', decimals: 2 },\n MXN: { code: 'MXN', symbol: '$', name: 'Mexican Peso', position: 'before', decimals: 2 },\n SGD: { code: 'SGD', symbol: 'S$', name: 'Singapore Dollar', position: 'before', decimals: 2 },\n HKD: { code: 'HKD', symbol: 'HK$', name: 'Hong Kong Dollar', position: 'before', decimals: 2 },\n AED: { code: 'AED', symbol: 'د.إ', name: 'UAE Dirham', position: 'before', decimals: 2 },\n SAR: { code: 'SAR', symbol: '﷼', name: 'Saudi Riyal', position: 'after', decimals: 2 },\n NZD: { code: 'NZD', symbol: 'NZ$', name: 'New Zealand Dollar', position: 'before', decimals: 2 },\n ZAR: { code: 'ZAR', symbol: 'R', name: 'South African Rand', position: 'before', decimals: 2 },\n THB: { code: 'THB', symbol: '฿', name: 'Thai Baht', position: 'before', decimals: 2 },\n IDR: { code: 'IDR', symbol: 'Rp', name: 'Indonesian Rupiah', position: 'before', decimals: 0 },\n MYR: { code: 'MYR', symbol: 'RM', name: 'Malaysian Ringgit', position: 'before', decimals: 2 },\n PHP: { code: 'PHP', symbol: '₱', name: 'Philippine Peso', position: 'before', decimals: 2 },\n VND: { code: 'VND', symbol: '₫', name: 'Vietnamese Dong', position: 'after', decimals: 0 },\n CZK: { code: 'CZK', symbol: 'Kč', name: 'Czech Koruna', position: 'after', decimals: 2 },\n HUF: { code: 'HUF', symbol: 'Ft', name: 'Hungarian Forint', position: 'after', decimals: 0 },\n ILS: { code: 'ILS', symbol: '₪', name: 'Israeli Shekel', position: 'before', decimals: 2 },\n CLP: { code: 'CLP', symbol: '$', name: 'Chilean Peso', position: 'before', decimals: 0 },\n COP: { code: 'COP', symbol: '$', name: 'Colombian Peso', position: 'before', decimals: 0 },\n ARS: { code: 'ARS', symbol: '$', name: 'Argentine Peso', position: 'before', decimals: 2 },\n PEN: { code: 'PEN', symbol: 'S/', name: 'Peruvian Sol', position: 'before', decimals: 2 },\n EGP: { code: 'EGP', symbol: 'E£', name: 'Egyptian Pound', position: 'before', decimals: 2 },\n NGN: { code: 'NGN', symbol: '₦', name: 'Nigerian Naira', position: 'before', decimals: 2 },\n PKR: { code: 'PKR', symbol: '₨', name: 'Pakistani Rupee', position: 'before', decimals: 2 },\n BDT: { code: 'BDT', symbol: '৳', name: 'Bangladeshi Taka', position: 'before', decimals: 2 },\n UAH: { code: 'UAH', symbol: '₴', name: 'Ukrainian Hryvnia', position: 'after', decimals: 2 },\n RON: { code: 'RON', symbol: 'lei', name: 'Romanian Leu', position: 'after', decimals: 2 },\n BGN: { code: 'BGN', symbol: 'лв', name: 'Bulgarian Lev', position: 'after', decimals: 2 },\n HRK: { code: 'HRK', symbol: 'kn', name: 'Croatian Kuna', position: 'after', decimals: 2 },\n ISK: { code: 'ISK', symbol: 'kr', name: 'Icelandic Krona', position: 'after', decimals: 0 },\n TWD: { code: 'TWD', symbol: 'NT$', name: 'Taiwan Dollar', position: 'before', decimals: 0 },\n} as const\n\nexport type CurrencyCode = keyof typeof currencies\n\nexport function getCurrency(code: string): Currency | undefined {\n return currencies[code]\n}\n\nexport function formatCurrency(\n amount: number,\n currencyCode: string,\n locale?: string\n): string {\n const currency = getCurrency(currencyCode)\n if (!currency) {\n return amount.toString()\n }\n\n const decimals = currency.decimals ?? 2\n const formattedAmount = amount.toLocaleString(locale, {\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n })\n\n if (currency.position === 'before') {\n return `${currency.symbol}${formattedAmount}`\n }\n return `${formattedAmount} ${currency.symbol}`\n}\n\nexport function getAllCurrencies(): Currency[] {\n return Object.values(currencies)\n}\n\nexport function getCurrencyCodes(): string[] {\n return Object.keys(currencies)\n}\n","import * as React from 'react'\nimport { type SupportedLocale, locales, dateFormats, timeFormats } from '@/lib/date-formats'\nimport { currencies, type CurrencyCode, type Currency } from '@/lib/currencies'\n\nexport interface NumberFormatConfig {\n decimal: string\n thousand: string\n}\n\nexport interface LocaleConfig {\n locale: SupportedLocale\n currency: CurrencyCode\n currencySymbol: string\n dateFormat: string\n timeFormat: string\n numberFormat: NumberFormatConfig\n translations: Record<string, string>\n rtl?: boolean\n}\n\nconst defaultTranslations: Record<string, Record<string, string>> = {\n 'en-US': {\n 'common.save': 'Save',\n 'common.cancel': 'Cancel',\n 'common.delete': 'Delete',\n 'common.edit': 'Edit',\n 'common.create': 'Create',\n 'common.search': 'Search',\n 'common.filter': 'Filter',\n 'common.export': 'Export',\n 'common.import': 'Import',\n 'common.loading': 'Loading...',\n 'common.noData': 'No data available',\n 'common.confirm': 'Confirm',\n 'common.close': 'Close',\n 'common.yes': 'Yes',\n 'common.no': 'No',\n 'common.all': 'All',\n 'common.none': 'None',\n 'common.select': 'Select',\n 'common.selectAll': 'Select all',\n 'common.clearAll': 'Clear all',\n 'common.apply': 'Apply',\n 'common.reset': 'Reset',\n 'common.more': 'More',\n 'common.less': 'Less',\n 'common.viewAll': 'View all',\n 'common.showMore': 'Show more',\n 'common.showLess': 'Show less',\n 'common.total': 'Total',\n 'common.items': 'Items',\n 'table.rowsPerPage': 'Rows per page',\n 'table.of': 'of',\n 'table.page': 'Page',\n 'table.noResults': 'No results found',\n 'table.columns': 'Columns',\n 'form.required': 'This field is required',\n 'form.invalidEmail': 'Invalid email address',\n 'form.invalidPhone': 'Invalid phone number',\n 'form.minLength': 'Minimum {min} characters required',\n 'form.maxLength': 'Maximum {max} characters allowed',\n 'date.today': 'Today',\n 'date.yesterday': 'Yesterday',\n 'date.tomorrow': 'Tomorrow',\n 'date.thisWeek': 'This week',\n 'date.lastWeek': 'Last week',\n 'date.thisMonth': 'This month',\n 'date.lastMonth': 'Last month',\n 'notifications.success': 'Success',\n 'notifications.error': 'Error',\n 'notifications.warning': 'Warning',\n 'notifications.info': 'Info',\n 'deal.probability': 'Probability',\n 'deal.value': 'Value',\n 'deal.stage': 'Stage',\n 'deal.closeDate': 'Close Date',\n 'pipeline.moveTo': 'Move to',\n 'pipeline.stages': 'Stages',\n 'locale.selectLanguage': 'Select language',\n 'locale.selectCurrency': 'Select currency',\n 'calendar.today': 'Today',\n 'calendar.month': 'Month',\n 'calendar.week': 'Week',\n 'calendar.day': 'Day',\n 'calendar.agenda': 'Agenda',\n 'calendar.allDay': 'All day',\n 'calendar.noEvents': 'No events scheduled for this month',\n 'calendar.more': '+{count} more',\n 'calendar.viewDetails': 'View Details',\n 'date.selectDate': 'Pick a date',\n 'time.selectTime': 'Select time',\n 'time.hours': 'Hours',\n 'time.minutes': 'Minutes',\n 'time.period': 'Period',\n 'status.active': 'Active',\n 'status.inactive': 'Inactive',\n 'status.pending': 'Pending',\n 'status.completed': 'Completed',\n 'status.cancelled': 'Cancelled',\n },\n 'tr-TR': {\n 'common.save': 'Kaydet',\n 'common.cancel': 'İptal',\n 'common.delete': 'Sil',\n 'common.edit': 'Düzenle',\n 'common.create': 'Oluştur',\n 'common.search': 'Ara',\n 'common.filter': 'Filtrele',\n 'common.export': 'Dışa Aktar',\n 'common.import': 'İçe Aktar',\n 'common.loading': 'Yükleniyor...',\n 'common.noData': 'Veri bulunamadı',\n 'common.confirm': 'Onayla',\n 'common.close': 'Kapat',\n 'common.yes': 'Evet',\n 'common.no': 'Hayır',\n 'common.all': 'Tümü',\n 'common.none': 'Hiçbiri',\n 'common.select': 'Seç',\n 'common.selectAll': 'Tümünü seç',\n 'common.clearAll': 'Tümünü temizle',\n 'common.apply': 'Uygula',\n 'common.reset': 'Sıfırla',\n 'common.more': 'Daha fazla',\n 'common.less': 'Daha az',\n 'common.viewAll': 'Tümünü gör',\n 'common.showMore': 'Daha fazla göster',\n 'common.showLess': 'Daha az göster',\n 'common.total': 'Toplam',\n 'common.items': 'Öğeler',\n 'table.rowsPerPage': 'Sayfa başına satır',\n 'table.of': '/',\n 'table.page': 'Sayfa',\n 'table.noResults': 'Sonuç bulunamadı',\n 'table.columns': 'Sütunlar',\n 'form.required': 'Bu alan zorunludur',\n 'form.invalidEmail': 'Geçersiz e-posta adresi',\n 'form.invalidPhone': 'Geçersiz telefon numarası',\n 'form.minLength': 'En az {min} karakter gerekli',\n 'form.maxLength': 'En fazla {max} karakter girilebilir',\n 'date.today': 'Bugün',\n 'date.yesterday': 'Dün',\n 'date.tomorrow': 'Yarın',\n 'date.thisWeek': 'Bu hafta',\n 'date.lastWeek': 'Geçen hafta',\n 'date.thisMonth': 'Bu ay',\n 'date.lastMonth': 'Geçen ay',\n 'notifications.success': 'Başarılı',\n 'notifications.error': 'Hata',\n 'notifications.warning': 'Uyarı',\n 'notifications.info': 'Bilgi',\n 'deal.probability': 'Olasılık',\n 'deal.value': 'Değer',\n 'deal.stage': 'Aşama',\n 'deal.closeDate': 'Kapanış Tarihi',\n 'pipeline.moveTo': 'Taşı',\n 'pipeline.stages': 'Aşamalar',\n 'locale.selectLanguage': 'Dil seçin',\n 'locale.selectCurrency': 'Para birimi seçin',\n 'calendar.today': 'Bugün',\n 'calendar.month': 'Ay',\n 'calendar.week': 'Hafta',\n 'calendar.day': 'Gün',\n 'calendar.agenda': 'Ajanda',\n 'calendar.allDay': 'Tüm gün',\n 'calendar.noEvents': 'Bu ay için planlanmış etkinlik yok',\n 'calendar.more': '+{count} daha',\n 'calendar.viewDetails': 'Detayları Gör',\n 'date.selectDate': 'Tarih seçin',\n 'time.selectTime': 'Saat seçin',\n 'time.hours': 'Saat',\n 'time.minutes': 'Dakika',\n 'time.period': 'Dönem',\n 'status.active': 'Aktif',\n 'status.inactive': 'Pasif',\n 'status.pending': 'Beklemede',\n 'status.completed': 'Tamamlandı',\n 'status.cancelled': 'İptal Edildi',\n },\n 'de-DE': {\n 'common.save': 'Speichern',\n 'common.cancel': 'Abbrechen',\n 'common.delete': 'Löschen',\n 'common.edit': 'Bearbeiten',\n 'common.create': 'Erstellen',\n 'common.search': 'Suchen',\n 'common.filter': 'Filtern',\n 'common.loading': 'Laden...',\n 'common.noData': 'Keine Daten verfügbar',\n 'common.confirm': 'Bestätigen',\n 'common.close': 'Schließen',\n 'common.yes': 'Ja',\n 'common.no': 'Nein',\n 'common.total': 'Gesamt',\n 'common.items': 'Elemente',\n 'locale.selectLanguage': 'Sprache wählen',\n 'locale.selectCurrency': 'Währung wählen',\n 'calendar.today': 'Heute',\n 'calendar.month': 'Monat',\n 'calendar.week': 'Woche',\n 'calendar.day': 'Tag',\n 'calendar.agenda': 'Agenda',\n 'calendar.allDay': 'Ganztägig',\n 'calendar.noEvents': 'Keine Termine für diesen Monat',\n 'date.selectDate': 'Datum auswählen',\n 'time.selectTime': 'Zeit auswählen',\n 'time.hours': 'Stunden',\n 'time.minutes': 'Minuten',\n 'time.period': 'Zeitraum',\n },\n 'fr-FR': {\n 'common.save': 'Enregistrer',\n 'common.cancel': 'Annuler',\n 'common.delete': 'Supprimer',\n 'common.edit': 'Modifier',\n 'common.create': 'Créer',\n 'common.search': 'Rechercher',\n 'common.filter': 'Filtrer',\n 'common.loading': 'Chargement...',\n 'common.noData': 'Aucune donnée disponible',\n 'common.confirm': 'Confirmer',\n 'common.close': 'Fermer',\n 'common.yes': 'Oui',\n 'common.no': 'Non',\n 'common.total': 'Total',\n 'common.items': 'Éléments',\n 'locale.selectLanguage': 'Sélectionner la langue',\n 'locale.selectCurrency': 'Sélectionner la devise',\n 'calendar.today': \"Aujourd'hui\",\n 'calendar.month': 'Mois',\n 'calendar.week': 'Semaine',\n 'calendar.day': 'Jour',\n 'calendar.agenda': 'Agenda',\n 'calendar.allDay': 'Toute la journée',\n 'calendar.noEvents': 'Aucun événement prévu ce mois-ci',\n 'date.selectDate': 'Choisir une date',\n 'time.selectTime': 'Sélectionner l\\'heure',\n 'time.hours': 'Heures',\n 'time.minutes': 'Minutes',\n 'time.period': 'Période',\n },\n 'es-ES': {\n 'common.save': 'Guardar',\n 'common.cancel': 'Cancelar',\n 'common.delete': 'Eliminar',\n 'common.edit': 'Editar',\n 'common.create': 'Crear',\n 'common.search': 'Buscar',\n 'common.filter': 'Filtrar',\n 'common.loading': 'Cargando...',\n 'common.noData': 'No hay datos disponibles',\n 'common.confirm': 'Confirmar',\n 'common.close': 'Cerrar',\n 'common.yes': 'Sí',\n 'common.no': 'No',\n 'common.total': 'Total',\n 'common.items': 'Elementos',\n 'locale.selectLanguage': 'Seleccionar idioma',\n 'locale.selectCurrency': 'Seleccionar moneda',\n 'calendar.today': 'Hoy',\n 'calendar.month': 'Mes',\n 'calendar.week': 'Semana',\n 'calendar.day': 'Día',\n 'calendar.agenda': 'Agenda',\n 'calendar.allDay': 'Todo el día',\n 'calendar.noEvents': 'No hay eventos programados este mes',\n 'date.selectDate': 'Seleccionar fecha',\n 'time.selectTime': 'Seleccionar hora',\n 'time.hours': 'Horas',\n 'time.minutes': 'Minutos',\n 'time.period': 'Período',\n },\n 'it-IT': {\n 'common.save': 'Salva',\n 'common.cancel': 'Annulla',\n 'common.delete': 'Elimina',\n 'common.edit': 'Modifica',\n 'common.create': 'Crea',\n 'common.search': 'Cerca',\n 'common.loading': 'Caricamento...',\n 'common.total': 'Totale',\n 'common.items': 'Elementi',\n 'locale.selectLanguage': 'Seleziona lingua',\n 'locale.selectCurrency': 'Seleziona valuta',\n 'calendar.today': 'Oggi',\n 'calendar.month': 'Mese',\n 'calendar.week': 'Settimana',\n 'calendar.day': 'Giorno',\n 'calendar.agenda': 'Agenda',\n 'calendar.allDay': 'Tutto il giorno',\n 'date.selectDate': 'Seleziona data',\n 'time.selectTime': 'Seleziona ora',\n 'time.hours': 'Ore',\n 'time.minutes': 'Minuti',\n 'time.period': 'Periodo',\n },\n 'pt-BR': {\n 'common.save': 'Salvar',\n 'common.cancel': 'Cancelar',\n 'common.delete': 'Excluir',\n 'common.edit': 'Editar',\n 'common.create': 'Criar',\n 'common.search': 'Pesquisar',\n 'common.loading': 'Carregando...',\n 'common.total': 'Total',\n 'common.items': 'Itens',\n 'locale.selectLanguage': 'Selecionar idioma',\n 'locale.selectCurrency': 'Selecionar moeda',\n 'calendar.today': 'Hoje',\n 'calendar.month': 'Mês',\n 'calendar.week': 'Semana',\n 'calendar.day': 'Dia',\n 'calendar.agenda': 'Agenda',\n 'calendar.allDay': 'Dia inteiro',\n 'date.selectDate': 'Selecionar data',\n 'time.selectTime': 'Selecionar hora',\n 'time.hours': 'Horas',\n 'time.minutes': 'Minutos',\n 'time.period': 'Período',\n },\n 'nl-NL': {\n 'common.save': 'Opslaan',\n 'common.cancel': 'Annuleren',\n 'common.delete': 'Verwijderen',\n 'common.edit': 'Bewerken',\n 'common.create': 'Maken',\n 'common.search': 'Zoeken',\n 'common.loading': 'Laden...',\n 'common.total': 'Totaal',\n 'common.items': 'Items',\n 'locale.selectLanguage': 'Taal selecteren',\n 'locale.selectCurrency': 'Valuta selecteren',\n 'calendar.today': 'Vandaag',\n 'calendar.month': 'Maand',\n 'calendar.week': 'Week',\n 'calendar.day': 'Dag',\n 'calendar.agenda': 'Agenda',\n 'calendar.allDay': 'Hele dag',\n 'date.selectDate': 'Datum kiezen',\n 'time.selectTime': 'Tijd selecteren',\n 'time.hours': 'Uren',\n 'time.minutes': 'Minuten',\n 'time.period': 'Periode',\n },\n 'pl-PL': {\n 'common.save': 'Zapisz',\n 'common.cancel': 'Anuluj',\n 'common.delete': 'Usuń',\n 'common.edit': 'Edytuj',\n 'common.create': 'Utwórz',\n 'common.search': 'Szukaj',\n 'common.loading': 'Ładowanie...',\n 'common.total': 'Suma',\n 'common.items': 'Elementy',\n 'locale.selectLanguage': 'Wybierz język',\n 'locale.selectCurrency': 'Wybierz walutę',\n 'calendar.today': 'Dziś',\n 'calendar.month': 'Miesiąc',\n 'calendar.week': 'Tydzień',\n 'calendar.day': 'Dzień',\n 'calendar.agenda': 'Agenda',\n 'calendar.allDay': 'Cały dzień',\n 'date.selectDate': 'Wybierz datę',\n 'time.selectTime': 'Wybierz czas',\n 'time.hours': 'Godziny',\n 'time.minutes': 'Minuty',\n 'time.period': 'Okres',\n },\n 'ru-RU': {\n 'common.save': 'Сохранить',\n 'common.cancel': 'Отмена',\n 'common.delete': 'Удалить',\n 'common.edit': 'Редактировать',\n 'common.create': 'Создать',\n 'common.search': 'Поиск',\n 'common.loading': 'Загрузка...',\n 'common.total': 'Всего',\n 'common.items': 'Элементы',\n 'locale.selectLanguage': 'Выбрать язык',\n 'locale.selectCurrency': 'Выбрать валюту',\n 'calendar.today': 'Сегодня',\n 'calendar.month': 'Месяц',\n 'calendar.week': 'Неделя',\n 'calendar.day': 'День',\n 'calendar.agenda': 'Повестка',\n 'calendar.allDay': 'Весь день',\n 'date.selectDate': 'Выберите дату',\n 'time.selectTime': 'Выберите время',\n 'time.hours': 'Часы',\n 'time.minutes': 'Минуты',\n 'time.period': 'Период',\n },\n 'ja-JP': {\n 'common.save': '保存',\n 'common.cancel': 'キャンセル',\n 'common.delete': '削除',\n 'common.edit': '編集',\n 'common.create': '作成',\n 'common.search': '検索',\n 'common.loading': '読み込み中...',\n 'common.total': '合計',\n 'common.items': 'アイテム',\n 'locale.selectLanguage': '言語を選択',\n 'locale.selectCurrency': '通貨を選択',\n 'calendar.today': '今日',\n 'calendar.month': '月',\n 'calendar.week': '週',\n 'calendar.day': '日',\n 'calendar.agenda': '予定表',\n 'calendar.allDay': '終日',\n 'date.selectDate': '日付を選択',\n 'time.selectTime': '時刻を選択',\n 'time.hours': '時',\n 'time.minutes': '分',\n 'time.period': '時間帯',\n },\n 'zh-CN': {\n 'common.save': '保存',\n 'common.cancel': '取消',\n 'common.delete': '删除',\n 'common.edit': '编辑',\n 'common.create': '创建',\n 'common.search': '搜索',\n 'common.loading': '加载中...',\n 'common.total': '总计',\n 'common.items': '项目',\n 'locale.selectLanguage': '选择语言',\n 'locale.selectCurrency': '选择货币',\n 'calendar.today': '今天',\n 'calendar.month': '月',\n 'calendar.week': '周',\n 'calendar.day': '日',\n 'calendar.agenda': '日程',\n 'calendar.allDay': '全天',\n 'date.selectDate': '选择日期',\n 'time.selectTime': '选择时间',\n 'time.hours': '小时',\n 'time.minutes': '分钟',\n 'time.period': '时段',\n },\n 'ko-KR': {\n 'common.save': '저장',\n 'common.cancel': '취소',\n 'common.delete': '삭제',\n 'common.edit': '편집',\n 'common.create': '만들기',\n 'common.search': '검색',\n 'common.loading': '로딩 중...',\n 'common.total': '합계',\n 'common.items': '항목',\n 'locale.selectLanguage': '언어 선택',\n 'locale.selectCurrency': '통화 선택',\n 'calendar.today': '오늘',\n 'calendar.month': '월',\n 'calendar.week': '주',\n 'calendar.day': '일',\n 'calendar.agenda': '일정',\n 'calendar.allDay': '종일',\n 'date.selectDate': '날짜 선택',\n 'time.selectTime': '시간 선택',\n 'time.hours': '시',\n 'time.minutes': '분',\n 'time.period': '오전/오후',\n },\n 'ar-SA': {\n 'common.save': 'حفظ',\n 'common.cancel': 'إلغاء',\n 'common.delete': 'حذف',\n 'common.edit': 'تعديل',\n 'common.create': 'إنشاء',\n 'common.search': 'بحث',\n 'common.loading': 'جاري التحميل...',\n 'common.total': 'المجموع',\n 'common.items': 'العناصر',\n 'locale.selectLanguage': 'اختر اللغة',\n 'locale.selectCurrency': 'اختر العملة',\n 'calendar.today': 'اليوم',\n 'calendar.month': 'شهر',\n 'calendar.week': 'أسبوع',\n 'calendar.day': 'يوم',\n 'calendar.agenda': 'جدول الأعمال',\n 'calendar.allDay': 'طوال اليوم',\n 'date.selectDate': 'اختر التاريخ',\n 'time.selectTime': 'اختر الوقت',\n 'time.hours': 'ساعات',\n 'time.minutes': 'دقائق',\n 'time.period': 'الفترة',\n },\n 'en-GB': {\n 'common.save': 'Save',\n 'common.cancel': 'Cancel',\n 'common.delete': 'Delete',\n 'common.edit': 'Edit',\n 'common.create': 'Create',\n 'common.search': 'Search',\n 'common.loading': 'Loading...',\n 'common.total': 'Total',\n 'common.items': 'Items',\n 'locale.selectLanguage': 'Select language',\n 'locale.selectCurrency': 'Select currency',\n 'calendar.today': 'Today',\n 'calendar.month': 'Month',\n 'calendar.week': 'Week',\n 'calendar.day': 'Day',\n 'calendar.agenda': 'Agenda',\n 'calendar.allDay': 'All day',\n 'date.selectDate': 'Pick a date',\n 'time.selectTime': 'Select time',\n 'time.hours': 'Hours',\n 'time.minutes': 'Minutes',\n 'time.period': 'Period',\n },\n}\n\nconst numberFormats: Record<SupportedLocale, NumberFormatConfig> = {\n 'en-US': { decimal: '.', thousand: ',' },\n 'en-GB': { decimal: '.', thousand: ',' },\n 'tr-TR': { decimal: ',', thousand: '.' },\n 'de-DE': { decimal: ',', thousand: '.' },\n 'fr-FR': { decimal: ',', thousand: ' ' },\n 'es-ES': { decimal: ',', thousand: '.' },\n 'it-IT': { decimal: ',', thousand: '.' },\n 'pt-BR': { decimal: ',', thousand: '.' },\n 'nl-NL': { decimal: ',', thousand: '.' },\n 'pl-PL': { decimal: ',', thousand: ' ' },\n 'ru-RU': { decimal: ',', thousand: ' ' },\n 'ja-JP': { decimal: '.', thousand: ',' },\n 'zh-CN': { decimal: '.', thousand: ',' },\n 'ko-KR': { decimal: '.', thousand: ',' },\n 'ar-SA': { decimal: '.', thousand: ',' },\n}\n\nfunction createLocaleConfig(locale: SupportedLocale): LocaleConfig {\n const localeInfo = locales[locale]\n const currencyInfo = currencies[localeInfo.defaultCurrency] as Currency\n\n return {\n locale,\n currency: localeInfo.defaultCurrency as CurrencyCode,\n currencySymbol: currencyInfo?.symbol || '$',\n dateFormat: dateFormats.short[locale],\n timeFormat: timeFormats.short[locale],\n numberFormat: numberFormats[locale],\n translations: defaultTranslations[locale] || defaultTranslations['en-US'],\n rtl: localeInfo.rtl,\n }\n}\n\nconst defaultLocaleConfigs: Record<SupportedLocale, LocaleConfig> = {\n 'en-US': createLocaleConfig('en-US'),\n 'en-GB': createLocaleConfig('en-GB'),\n 'tr-TR': createLocaleConfig('tr-TR'),\n 'de-DE': createLocaleConfig('de-DE'),\n 'fr-FR': createLocaleConfig('fr-FR'),\n 'es-ES': createLocaleConfig('es-ES'),\n 'it-IT': createLocaleConfig('it-IT'),\n 'pt-BR': createLocaleConfig('pt-BR'),\n 'nl-NL': createLocaleConfig('nl-NL'),\n 'pl-PL': createLocaleConfig('pl-PL'),\n 'ru-RU': createLocaleConfig('ru-RU'),\n 'ja-JP': createLocaleConfig('ja-JP'),\n 'zh-CN': createLocaleConfig('zh-CN'),\n 'ko-KR': createLocaleConfig('ko-KR'),\n 'ar-SA': createLocaleConfig('ar-SA'),\n}\n\ninterface LocaleContextValue {\n config: LocaleConfig\n setLocale: (locale: SupportedLocale) => void\n setCurrency: (currencyCode: CurrencyCode) => void\n setDateFormat: (format: string) => void\n setTimeFormat: (format: string) => void\n updateTranslations: (translations: Record<string, string>) => void\n updateConfig: (config: Partial<LocaleConfig>) => void\n formatNumber: (value: number) => string\n formatCurrency: (value: number, currencyCode?: CurrencyCode) => string\n t: (key: string, params?: Record<string, string | number>) => string\n}\n\nconst LocaleContext = React.createContext<LocaleContextValue | undefined>(undefined)\n\nexport interface LocaleProviderProps {\n children: React.ReactNode\n defaultLocale?: SupportedLocale\n config?: Partial<LocaleConfig>\n translations?: Record<string, string>\n}\n\nexport function LocaleProvider({\n children,\n defaultLocale = 'en-US',\n config: customConfig,\n translations: customTranslations,\n}: LocaleProviderProps) {\n const [config, setConfig] = React.useState<LocaleConfig>(() => {\n const baseConfig = defaultLocaleConfigs[defaultLocale] || defaultLocaleConfigs['en-US']\n return {\n ...baseConfig,\n ...customConfig,\n translations: {\n ...baseConfig.translations,\n ...customTranslations,\n },\n }\n })\n\n const setLocale = React.useCallback((locale: SupportedLocale) => {\n const baseConfig = defaultLocaleConfigs[locale] || defaultLocaleConfigs['en-US']\n setConfig((prev) => ({\n ...baseConfig,\n translations: {\n ...baseConfig.translations,\n ...prev.translations,\n },\n }))\n }, [])\n\n const setCurrency = React.useCallback((currencyCode: CurrencyCode) => {\n const currencyInfo = currencies[currencyCode]\n if (currencyInfo) {\n setConfig((prev) => ({\n ...prev,\n currency: currencyCode,\n currencySymbol: currencyInfo.symbol,\n }))\n }\n }, [])\n\n const setDateFormat = React.useCallback((format: string) => {\n setConfig((prev) => ({\n ...prev,\n dateFormat: format,\n }))\n }, [])\n\n const setTimeFormat = React.useCallback((format: string) => {\n setConfig((prev) => ({\n ...prev,\n timeFormat: format,\n }))\n }, [])\n\n const updateTranslations = React.useCallback((translations: Record<string, string>) => {\n setConfig((prev) => ({\n ...prev,\n translations: {\n ...prev.translations,\n ...translations,\n },\n }))\n }, [])\n\n const updateConfig = React.useCallback((newConfig: Partial<LocaleConfig>) => {\n setConfig((prev) => ({\n ...prev,\n ...newConfig,\n translations: {\n ...prev.translations,\n ...newConfig.translations,\n },\n }))\n }, [])\n\n const formatNumber = React.useCallback(\n (value: number): string => {\n const { decimal, thousand } = config.numberFormat\n const parts = value.toFixed(2).split('.')\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousand)\n return parts.join(decimal)\n },\n [config.numberFormat]\n )\n\n const formatCurrency = React.useCallback(\n (value: number, currencyCode?: CurrencyCode): string => {\n const code = currencyCode || config.currency\n const currencyInfo = currencies[code]\n if (!currencyInfo) {\n return formatNumber(value)\n }\n\n const decimals = currencyInfo.decimals ?? 2\n const { decimal, thousand } = config.numberFormat\n const parts = value.toFixed(decimals).split('.')\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousand)\n const formattedValue = decimals > 0 ? parts.join(decimal) : parts[0]\n\n if (currencyInfo.position === 'before') {\n return `${currencyInfo.symbol}${formattedValue}`\n }\n return `${formattedValue} ${currencyInfo.symbol}`\n },\n [config.currency, config.numberFormat, formatNumber]\n )\n\n const t = React.useCallback(\n (key: string, params?: Record<string, string | number>): string => {\n let translation = config.translations[key] || key\n if (params) {\n Object.entries(params).forEach(([paramKey, paramValue]) => {\n translation = translation.replace(`{${paramKey}}`, String(paramValue))\n })\n }\n return translation\n },\n [config.translations]\n )\n\n const value = React.useMemo(\n () => ({\n config,\n setLocale,\n setCurrency,\n setDateFormat,\n setTimeFormat,\n updateTranslations,\n updateConfig,\n formatNumber,\n formatCurrency,\n t,\n }),\n [config, setLocale, setCurrency, setDateFormat, setTimeFormat, updateTranslations, updateConfig, formatNumber, formatCurrency, t]\n )\n\n return <LocaleContext.Provider value={value}>{children}</LocaleContext.Provider>\n}\n\nexport function useLocale() {\n const context = React.useContext(LocaleContext)\n if (context === undefined) {\n const defaultConfig = defaultLocaleConfigs['en-US']\n return {\n config: defaultConfig,\n setLocale: () => {},\n setCurrency: () => {},\n setDateFormat: () => {},\n setTimeFormat: () => {},\n updateTranslations: () => {},\n updateConfig: () => {},\n formatNumber: (value: number) => value.toLocaleString('en-US'),\n formatCurrency: (value: number) => `$${value.toLocaleString('en-US', { minimumFractionDigits: 2 })}`,\n t: (key: string) => key,\n }\n }\n return context\n}\n\nexport { LocaleContext, defaultLocaleConfigs, defaultTranslations }\nexport type { SupportedLocale, CurrencyCode }\n"],"names":["dateFormats","timeFormats","locales","getDateFormat","locale","type","getTimeFormat","getLocaleInfo","getAllLocales","getSupportedLocaleCodes","isRTLLocale","currencies","getCurrency","code","formatCurrency","amount","currencyCode","currency","decimals","formattedAmount","getAllCurrencies","getCurrencyCodes","defaultTranslations","numberFormats","createLocaleConfig","localeInfo","currencyInfo","defaultLocaleConfigs","LocaleContext","React","LocaleProvider","children","defaultLocale","customConfig","customTranslations","config","setConfig","baseConfig","setLocale","prev","setCurrency","setDateFormat","format","setTimeFormat","updateTranslations","translations","updateConfig","newConfig","formatNumber","value","decimal","thousand","parts","formattedValue","t","key","params","translation","paramKey","paramValue","jsx","useLocale","context"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"locale-provider-DzBeb-X3.js","sources":["../src/lib/date-formats.ts","../src/lib/currencies.ts","../src/providers/locale-provider.tsx"],"sourcesContent":["export type SupportedLocale =\n | 'tr-TR'\n | 'en-US'\n | 'en-GB'\n | 'de-DE'\n | 'fr-FR'\n | 'es-ES'\n | 'it-IT'\n | 'pt-BR'\n | 'nl-NL'\n | 'pl-PL'\n | 'ru-RU'\n | 'ja-JP'\n | 'zh-CN'\n | 'ko-KR'\n | 'ar-SA'\n\nexport type DateFormatType = 'short' | 'long' | 'withTime' | 'relative'\nexport type TimeFormatType = 'short' | 'long'\n\nexport const dateFormats: Record<DateFormatType, Record<SupportedLocale, string>> = {\n short: {\n 'tr-TR': 'dd.MM.yyyy',\n 'en-US': 'MM/dd/yyyy',\n 'en-GB': 'dd/MM/yyyy',\n 'de-DE': 'dd.MM.yyyy',\n 'fr-FR': 'dd/MM/yyyy',\n 'es-ES': 'dd/MM/yyyy',\n 'it-IT': 'dd/MM/yyyy',\n 'pt-BR': 'dd/MM/yyyy',\n 'nl-NL': 'dd-MM-yyyy',\n 'pl-PL': 'dd.MM.yyyy',\n 'ru-RU': 'dd.MM.yyyy',\n 'ja-JP': 'yyyy/MM/dd',\n 'zh-CN': 'yyyy-MM-dd',\n 'ko-KR': 'yyyy.MM.dd',\n 'ar-SA': 'dd/MM/yyyy',\n },\n long: {\n 'tr-TR': 'd MMMM yyyy',\n 'en-US': 'MMMM d, yyyy',\n 'en-GB': 'd MMMM yyyy',\n 'de-DE': 'd. MMMM yyyy',\n 'fr-FR': 'd MMMM yyyy',\n 'es-ES': 'd de MMMM de yyyy',\n 'it-IT': 'd MMMM yyyy',\n 'pt-BR': 'd de MMMM de yyyy',\n 'nl-NL': 'd MMMM yyyy',\n 'pl-PL': 'd MMMM yyyy',\n 'ru-RU': 'd MMMM yyyy г.',\n 'ja-JP': 'yyyy年M月d日',\n 'zh-CN': 'yyyy年M月d日',\n 'ko-KR': 'yyyy년 M월 d일',\n 'ar-SA': 'd MMMM yyyy',\n },\n withTime: {\n 'tr-TR': 'dd.MM.yyyy HH:mm',\n 'en-US': 'MM/dd/yyyy hh:mm a',\n 'en-GB': 'dd/MM/yyyy HH:mm',\n 'de-DE': 'dd.MM.yyyy HH:mm',\n 'fr-FR': 'dd/MM/yyyy HH:mm',\n 'es-ES': 'dd/MM/yyyy HH:mm',\n 'it-IT': 'dd/MM/yyyy HH:mm',\n 'pt-BR': 'dd/MM/yyyy HH:mm',\n 'nl-NL': 'dd-MM-yyyy HH:mm',\n 'pl-PL': 'dd.MM.yyyy HH:mm',\n 'ru-RU': 'dd.MM.yyyy HH:mm',\n 'ja-JP': 'yyyy/MM/dd HH:mm',\n 'zh-CN': 'yyyy-MM-dd HH:mm',\n 'ko-KR': 'yyyy.MM.dd HH:mm',\n 'ar-SA': 'dd/MM/yyyy hh:mm a',\n },\n relative: {\n 'tr-TR': 'relative',\n 'en-US': 'relative',\n 'en-GB': 'relative',\n 'de-DE': 'relative',\n 'fr-FR': 'relative',\n 'es-ES': 'relative',\n 'it-IT': 'relative',\n 'pt-BR': 'relative',\n 'nl-NL': 'relative',\n 'pl-PL': 'relative',\n 'ru-RU': 'relative',\n 'ja-JP': 'relative',\n 'zh-CN': 'relative',\n 'ko-KR': 'relative',\n 'ar-SA': 'relative',\n },\n}\n\nexport const timeFormats: Record<TimeFormatType, Record<SupportedLocale, string>> = {\n short: {\n 'tr-TR': 'HH:mm',\n 'en-US': 'hh:mm a',\n 'en-GB': 'HH:mm',\n 'de-DE': 'HH:mm',\n 'fr-FR': 'HH:mm',\n 'es-ES': 'HH:mm',\n 'it-IT': 'HH:mm',\n 'pt-BR': 'HH:mm',\n 'nl-NL': 'HH:mm',\n 'pl-PL': 'HH:mm',\n 'ru-RU': 'HH:mm',\n 'ja-JP': 'HH:mm',\n 'zh-CN': 'HH:mm',\n 'ko-KR': 'HH:mm',\n 'ar-SA': 'hh:mm a',\n },\n long: {\n 'tr-TR': 'HH:mm:ss',\n 'en-US': 'hh:mm:ss a',\n 'en-GB': 'HH:mm:ss',\n 'de-DE': 'HH:mm:ss',\n 'fr-FR': 'HH:mm:ss',\n 'es-ES': 'HH:mm:ss',\n 'it-IT': 'HH:mm:ss',\n 'pt-BR': 'HH:mm:ss',\n 'nl-NL': 'HH:mm:ss',\n 'pl-PL': 'HH:mm:ss',\n 'ru-RU': 'HH:mm:ss',\n 'ja-JP': 'HH:mm:ss',\n 'zh-CN': 'HH:mm:ss',\n 'ko-KR': 'HH:mm:ss',\n 'ar-SA': 'hh:mm:ss a',\n },\n}\n\nexport interface LocaleInfo {\n code: SupportedLocale\n name: string\n nativeName: string\n flag: string\n defaultCurrency: string\n dateFormat: string\n timeFormat: string\n rtl?: boolean\n}\n\nexport const locales: Record<SupportedLocale, LocaleInfo> = {\n 'tr-TR': {\n code: 'tr-TR',\n name: 'Turkish',\n nativeName: 'Türkçe',\n flag: '🇹🇷',\n defaultCurrency: 'TRY',\n dateFormat: dateFormats.short['tr-TR'],\n timeFormat: timeFormats.short['tr-TR'],\n },\n 'en-US': {\n code: 'en-US',\n name: 'English (US)',\n nativeName: 'English (US)',\n flag: '🇺🇸',\n defaultCurrency: 'USD',\n dateFormat: dateFormats.short['en-US'],\n timeFormat: timeFormats.short['en-US'],\n },\n 'en-GB': {\n code: 'en-GB',\n name: 'English (UK)',\n nativeName: 'English (UK)',\n flag: '🇬🇧',\n defaultCurrency: 'GBP',\n dateFormat: dateFormats.short['en-GB'],\n timeFormat: timeFormats.short['en-GB'],\n },\n 'de-DE': {\n code: 'de-DE',\n name: 'German',\n nativeName: 'Deutsch',\n flag: '🇩🇪',\n defaultCurrency: 'EUR',\n dateFormat: dateFormats.short['de-DE'],\n timeFormat: timeFormats.short['de-DE'],\n },\n 'fr-FR': {\n code: 'fr-FR',\n name: 'French',\n nativeName: 'Français',\n flag: '🇫🇷',\n defaultCurrency: 'EUR',\n dateFormat: dateFormats.short['fr-FR'],\n timeFormat: timeFormats.short['fr-FR'],\n },\n 'es-ES': {\n code: 'es-ES',\n name: 'Spanish',\n nativeName: 'Español',\n flag: '🇪🇸',\n defaultCurrency: 'EUR',\n dateFormat: dateFormats.short['es-ES'],\n timeFormat: timeFormats.short['es-ES'],\n },\n 'it-IT': {\n code: 'it-IT',\n name: 'Italian',\n nativeName: 'Italiano',\n flag: '🇮🇹',\n defaultCurrency: 'EUR',\n dateFormat: dateFormats.short['it-IT'],\n timeFormat: timeFormats.short['it-IT'],\n },\n 'pt-BR': {\n code: 'pt-BR',\n name: 'Portuguese (Brazil)',\n nativeName: 'Português (Brasil)',\n flag: '🇧🇷',\n defaultCurrency: 'BRL',\n dateFormat: dateFormats.short['pt-BR'],\n timeFormat: timeFormats.short['pt-BR'],\n },\n 'nl-NL': {\n code: 'nl-NL',\n name: 'Dutch',\n nativeName: 'Nederlands',\n flag: '🇳🇱',\n defaultCurrency: 'EUR',\n dateFormat: dateFormats.short['nl-NL'],\n timeFormat: timeFormats.short['nl-NL'],\n },\n 'pl-PL': {\n code: 'pl-PL',\n name: 'Polish',\n nativeName: 'Polski',\n flag: '🇵🇱',\n defaultCurrency: 'PLN',\n dateFormat: dateFormats.short['pl-PL'],\n timeFormat: timeFormats.short['pl-PL'],\n },\n 'ru-RU': {\n code: 'ru-RU',\n name: 'Russian',\n nativeName: 'Русский',\n flag: '🇷🇺',\n defaultCurrency: 'RUB',\n dateFormat: dateFormats.short['ru-RU'],\n timeFormat: timeFormats.short['ru-RU'],\n },\n 'ja-JP': {\n code: 'ja-JP',\n name: 'Japanese',\n nativeName: '日本語',\n flag: '🇯🇵',\n defaultCurrency: 'JPY',\n dateFormat: dateFormats.short['ja-JP'],\n timeFormat: timeFormats.short['ja-JP'],\n },\n 'zh-CN': {\n code: 'zh-CN',\n name: 'Chinese (Simplified)',\n nativeName: '中文',\n flag: '🇨🇳',\n defaultCurrency: 'CNY',\n dateFormat: dateFormats.short['zh-CN'],\n timeFormat: timeFormats.short['zh-CN'],\n },\n 'ko-KR': {\n code: 'ko-KR',\n name: 'Korean',\n nativeName: '한국어',\n flag: '🇰🇷',\n defaultCurrency: 'KRW',\n dateFormat: dateFormats.short['ko-KR'],\n timeFormat: timeFormats.short['ko-KR'],\n },\n 'ar-SA': {\n code: 'ar-SA',\n name: 'Arabic',\n nativeName: 'العربية',\n flag: '🇸🇦',\n defaultCurrency: 'SAR',\n dateFormat: dateFormats.short['ar-SA'],\n timeFormat: timeFormats.short['ar-SA'],\n rtl: true,\n },\n}\n\nexport function getDateFormat(locale: SupportedLocale, type: DateFormatType = 'short'): string {\n return dateFormats[type][locale] || dateFormats[type]['en-US']\n}\n\nexport function getTimeFormat(locale: SupportedLocale, type: TimeFormatType = 'short'): string {\n return timeFormats[type][locale] || timeFormats[type]['en-US']\n}\n\nexport function getLocaleInfo(locale: SupportedLocale): LocaleInfo {\n return locales[locale] || locales['en-US']\n}\n\nexport function getAllLocales(): LocaleInfo[] {\n return Object.values(locales)\n}\n\nexport function getSupportedLocaleCodes(): SupportedLocale[] {\n return Object.keys(locales) as SupportedLocale[]\n}\n\nexport function isRTLLocale(locale: SupportedLocale): boolean {\n return locales[locale]?.rtl === true\n}\n","export interface Currency {\n code: string\n symbol: string\n name: string\n position: 'before' | 'after'\n decimals?: number\n}\n\nexport const currencies: Record<string, Currency> = {\n USD: { code: 'USD', symbol: '$', name: 'US Dollar', position: 'before', decimals: 2 },\n EUR: { code: 'EUR', symbol: '€', name: 'Euro', position: 'before', decimals: 2 },\n GBP: { code: 'GBP', symbol: '£', name: 'British Pound', position: 'before', decimals: 2 },\n TRY: { code: 'TRY', symbol: '₺', name: 'Turkish Lira', position: 'before', decimals: 2 },\n JPY: { code: 'JPY', symbol: '¥', name: 'Japanese Yen', position: 'before', decimals: 0 },\n CNY: { code: 'CNY', symbol: '¥', name: 'Chinese Yuan', position: 'before', decimals: 2 },\n KRW: { code: 'KRW', symbol: '₩', name: 'Korean Won', position: 'before', decimals: 0 },\n INR: { code: 'INR', symbol: '₹', name: 'Indian Rupee', position: 'before', decimals: 2 },\n BRL: { code: 'BRL', symbol: 'R$', name: 'Brazilian Real', position: 'before', decimals: 2 },\n RUB: { code: 'RUB', symbol: '₽', name: 'Russian Ruble', position: 'after', decimals: 2 },\n AUD: { code: 'AUD', symbol: 'A$', name: 'Australian Dollar', position: 'before', decimals: 2 },\n CAD: { code: 'CAD', symbol: 'C$', name: 'Canadian Dollar', position: 'before', decimals: 2 },\n CHF: { code: 'CHF', symbol: 'Fr', name: 'Swiss Franc', position: 'before', decimals: 2 },\n SEK: { code: 'SEK', symbol: 'kr', name: 'Swedish Krona', position: 'after', decimals: 2 },\n NOK: { code: 'NOK', symbol: 'kr', name: 'Norwegian Krone', position: 'after', decimals: 2 },\n DKK: { code: 'DKK', symbol: 'kr', name: 'Danish Krone', position: 'after', decimals: 2 },\n PLN: { code: 'PLN', symbol: 'zł', name: 'Polish Zloty', position: 'after', decimals: 2 },\n MXN: { code: 'MXN', symbol: '$', name: 'Mexican Peso', position: 'before', decimals: 2 },\n SGD: { code: 'SGD', symbol: 'S$', name: 'Singapore Dollar', position: 'before', decimals: 2 },\n HKD: { code: 'HKD', symbol: 'HK$', name: 'Hong Kong Dollar', position: 'before', decimals: 2 },\n AED: { code: 'AED', symbol: 'د.إ', name: 'UAE Dirham', position: 'before', decimals: 2 },\n SAR: { code: 'SAR', symbol: '﷼', name: 'Saudi Riyal', position: 'after', decimals: 2 },\n NZD: { code: 'NZD', symbol: 'NZ$', name: 'New Zealand Dollar', position: 'before', decimals: 2 },\n ZAR: { code: 'ZAR', symbol: 'R', name: 'South African Rand', position: 'before', decimals: 2 },\n THB: { code: 'THB', symbol: '฿', name: 'Thai Baht', position: 'before', decimals: 2 },\n IDR: { code: 'IDR', symbol: 'Rp', name: 'Indonesian Rupiah', position: 'before', decimals: 0 },\n MYR: { code: 'MYR', symbol: 'RM', name: 'Malaysian Ringgit', position: 'before', decimals: 2 },\n PHP: { code: 'PHP', symbol: '₱', name: 'Philippine Peso', position: 'before', decimals: 2 },\n VND: { code: 'VND', symbol: '₫', name: 'Vietnamese Dong', position: 'after', decimals: 0 },\n CZK: { code: 'CZK', symbol: 'Kč', name: 'Czech Koruna', position: 'after', decimals: 2 },\n HUF: { code: 'HUF', symbol: 'Ft', name: 'Hungarian Forint', position: 'after', decimals: 0 },\n ILS: { code: 'ILS', symbol: '₪', name: 'Israeli Shekel', position: 'before', decimals: 2 },\n CLP: { code: 'CLP', symbol: '$', name: 'Chilean Peso', position: 'before', decimals: 0 },\n COP: { code: 'COP', symbol: '$', name: 'Colombian Peso', position: 'before', decimals: 0 },\n ARS: { code: 'ARS', symbol: '$', name: 'Argentine Peso', position: 'before', decimals: 2 },\n PEN: { code: 'PEN', symbol: 'S/', name: 'Peruvian Sol', position: 'before', decimals: 2 },\n EGP: { code: 'EGP', symbol: 'E£', name: 'Egyptian Pound', position: 'before', decimals: 2 },\n NGN: { code: 'NGN', symbol: '₦', name: 'Nigerian Naira', position: 'before', decimals: 2 },\n PKR: { code: 'PKR', symbol: '₨', name: 'Pakistani Rupee', position: 'before', decimals: 2 },\n BDT: { code: 'BDT', symbol: '৳', name: 'Bangladeshi Taka', position: 'before', decimals: 2 },\n UAH: { code: 'UAH', symbol: '₴', name: 'Ukrainian Hryvnia', position: 'after', decimals: 2 },\n RON: { code: 'RON', symbol: 'lei', name: 'Romanian Leu', position: 'after', decimals: 2 },\n BGN: { code: 'BGN', symbol: 'лв', name: 'Bulgarian Lev', position: 'after', decimals: 2 },\n HRK: { code: 'HRK', symbol: 'kn', name: 'Croatian Kuna', position: 'after', decimals: 2 },\n ISK: { code: 'ISK', symbol: 'kr', name: 'Icelandic Krona', position: 'after', decimals: 0 },\n TWD: { code: 'TWD', symbol: 'NT$', name: 'Taiwan Dollar', position: 'before', decimals: 0 },\n} as const\n\nexport type CurrencyCode = keyof typeof currencies\n\nexport function getCurrency(code: string): Currency | undefined {\n return currencies[code]\n}\n\nexport function formatCurrency(\n amount: number,\n currencyCode: string,\n locale?: string\n): string {\n const currency = getCurrency(currencyCode)\n if (!currency) {\n return amount.toString()\n }\n\n const decimals = currency.decimals ?? 2\n const formattedAmount = amount.toLocaleString(locale, {\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n })\n\n if (currency.position === 'before') {\n return `${currency.symbol}${formattedAmount}`\n }\n return `${formattedAmount} ${currency.symbol}`\n}\n\nexport function getAllCurrencies(): Currency[] {\n return Object.values(currencies)\n}\n\nexport function getCurrencyCodes(): string[] {\n return Object.keys(currencies)\n}\n","import * as React from 'react'\nimport { type SupportedLocale, locales, dateFormats, timeFormats } from '@/lib/date-formats'\nimport { currencies, type CurrencyCode, type Currency } from '@/lib/currencies'\n\nexport interface NumberFormatConfig {\n decimal: string\n thousand: string\n}\n\nexport interface LocaleConfig {\n locale: SupportedLocale\n currency: CurrencyCode\n currencySymbol: string\n dateFormat: string\n timeFormat: string\n numberFormat: NumberFormatConfig\n translations: Record<string, string>\n rtl?: boolean\n}\n\nconst defaultTranslations: Record<string, Record<string, string>> = {\n 'en-US': {\n 'common.save': 'Save',\n 'common.cancel': 'Cancel',\n 'common.delete': 'Delete',\n 'common.edit': 'Edit',\n 'common.create': 'Create',\n 'common.search': 'Search',\n 'common.filter': 'Filter',\n 'common.export': 'Export',\n 'common.import': 'Import',\n 'common.loading': 'Loading...',\n 'common.noData': 'No data available',\n 'common.confirm': 'Confirm',\n 'common.close': 'Close',\n 'common.yes': 'Yes',\n 'common.no': 'No',\n 'common.all': 'All',\n 'common.none': 'None',\n 'common.select': 'Select',\n 'common.selectAll': 'Select all',\n 'common.clearAll': 'Clear all',\n 'common.apply': 'Apply',\n 'common.reset': 'Reset',\n 'common.more': 'More',\n 'common.less': 'Less',\n 'common.viewAll': 'View all',\n 'common.showMore': 'Show more',\n 'common.showLess': 'Show less',\n 'common.total': 'Total',\n 'common.items': 'Items',\n 'table.rowsPerPage': 'Rows per page',\n 'table.of': 'of',\n 'table.page': 'Page',\n 'table.noResults': 'No results found',\n 'table.columns': 'Columns',\n 'form.required': 'This field is required',\n 'form.invalidEmail': 'Invalid email address',\n 'form.invalidPhone': 'Invalid phone number',\n 'form.minLength': 'Minimum {min} characters required',\n 'form.maxLength': 'Maximum {max} characters allowed',\n 'date.today': 'Today',\n 'date.yesterday': 'Yesterday',\n 'date.tomorrow': 'Tomorrow',\n 'date.thisWeek': 'This week',\n 'date.lastWeek': 'Last week',\n 'date.thisMonth': 'This month',\n 'date.lastMonth': 'Last month',\n 'notifications.success': 'Success',\n 'notifications.error': 'Error',\n 'notifications.warning': 'Warning',\n 'notifications.info': 'Info',\n 'deal.probability': 'Probability',\n 'deal.value': 'Value',\n 'deal.stage': 'Stage',\n 'deal.closeDate': 'Close Date',\n 'pipeline.moveTo': 'Move to',\n 'pipeline.stages': 'Stages',\n 'locale.selectLanguage': 'Select language',\n 'locale.selectCurrency': 'Select currency',\n 'calendar.today': 'Today',\n 'calendar.month': 'Month',\n 'calendar.week': 'Week',\n 'calendar.day': 'Day',\n 'calendar.agenda': 'Agenda',\n 'calendar.allDay': 'All day',\n 'calendar.noEvents': 'No events scheduled for this month',\n 'calendar.more': '+{count} more',\n 'calendar.viewDetails': 'View Details',\n 'date.selectDate': 'Pick a date',\n 'time.selectTime': 'Select time',\n 'time.hours': 'Hours',\n 'time.minutes': 'Minutes',\n 'time.period': 'Period',\n 'status.active': 'Active',\n 'status.inactive': 'Inactive',\n 'status.pending': 'Pending',\n 'status.completed': 'Completed',\n 'status.cancelled': 'Cancelled',\n },\n 'tr-TR': {\n 'common.save': 'Kaydet',\n 'common.cancel': 'İptal',\n 'common.delete': 'Sil',\n 'common.edit': 'Düzenle',\n 'common.create': 'Oluştur',\n 'common.search': 'Ara',\n 'common.filter': 'Filtrele',\n 'common.export': 'Dışa Aktar',\n 'common.import': 'İçe Aktar',\n 'common.loading': 'Yükleniyor...',\n 'common.noData': 'Veri bulunamadı',\n 'common.confirm': 'Onayla',\n 'common.close': 'Kapat',\n 'common.yes': 'Evet',\n 'common.no': 'Hayır',\n 'common.all': 'Tümü',\n 'common.none': 'Hiçbiri',\n 'common.select': 'Seç',\n 'common.selectAll': 'Tümünü seç',\n 'common.clearAll': 'Tümünü temizle',\n 'common.apply': 'Uygula',\n 'common.reset': 'Sıfırla',\n 'common.more': 'Daha fazla',\n 'common.less': 'Daha az',\n 'common.viewAll': 'Tümünü gör',\n 'common.showMore': 'Daha fazla göster',\n 'common.showLess': 'Daha az göster',\n 'common.total': 'Toplam',\n 'common.items': 'Öğeler',\n 'table.rowsPerPage': 'Sayfa başına satır',\n 'table.of': '/',\n 'table.page': 'Sayfa',\n 'table.noResults': 'Sonuç bulunamadı',\n 'table.columns': 'Sütunlar',\n 'form.required': 'Bu alan zorunludur',\n 'form.invalidEmail': 'Geçersiz e-posta adresi',\n 'form.invalidPhone': 'Geçersiz telefon numarası',\n 'form.minLength': 'En az {min} karakter gerekli',\n 'form.maxLength': 'En fazla {max} karakter girilebilir',\n 'date.today': 'Bugün',\n 'date.yesterday': 'Dün',\n 'date.tomorrow': 'Yarın',\n 'date.thisWeek': 'Bu hafta',\n 'date.lastWeek': 'Geçen hafta',\n 'date.thisMonth': 'Bu ay',\n 'date.lastMonth': 'Geçen ay',\n 'notifications.success': 'Başarılı',\n 'notifications.error': 'Hata',\n 'notifications.warning': 'Uyarı',\n 'notifications.info': 'Bilgi',\n 'deal.probability': 'Olasılık',\n 'deal.value': 'Değer',\n 'deal.stage': 'Aşama',\n 'deal.closeDate': 'Kapanış Tarihi',\n 'pipeline.moveTo': 'Taşı',\n 'pipeline.stages': 'Aşamalar',\n 'locale.selectLanguage': 'Dil seçin',\n 'locale.selectCurrency': 'Para birimi seçin',\n 'calendar.today': 'Bugün',\n 'calendar.month': 'Ay',\n 'calendar.week': 'Hafta',\n 'calendar.day': 'Gün',\n 'calendar.agenda': 'Ajanda',\n 'calendar.allDay': 'Tüm gün',\n 'calendar.noEvents': 'Bu ay için planlanmış etkinlik yok',\n 'calendar.more': '+{count} daha',\n 'calendar.viewDetails': 'Detayları Gör',\n 'date.selectDate': 'Tarih seçin',\n 'time.selectTime': 'Saat seçin',\n 'time.hours': 'Saat',\n 'time.minutes': 'Dakika',\n 'time.period': 'Dönem',\n 'status.active': 'Aktif',\n 'status.inactive': 'Pasif',\n 'status.pending': 'Beklemede',\n 'status.completed': 'Tamamlandı',\n 'status.cancelled': 'İptal Edildi',\n },\n 'de-DE': {\n 'common.save': 'Speichern',\n 'common.cancel': 'Abbrechen',\n 'common.delete': 'Löschen',\n 'common.edit': 'Bearbeiten',\n 'common.create': 'Erstellen',\n 'common.search': 'Suchen',\n 'common.filter': 'Filtern',\n 'common.loading': 'Laden...',\n 'common.noData': 'Keine Daten verfügbar',\n 'common.confirm': 'Bestätigen',\n 'common.close': 'Schließen',\n 'common.yes': 'Ja',\n 'common.no': 'Nein',\n 'common.total': 'Gesamt',\n 'common.items': 'Elemente',\n 'locale.selectLanguage': 'Sprache wählen',\n 'locale.selectCurrency': 'Währung wählen',\n 'calendar.today': 'Heute',\n 'calendar.month': 'Monat',\n 'calendar.week': 'Woche',\n 'calendar.day': 'Tag',\n 'calendar.agenda': 'Agenda',\n 'calendar.allDay': 'Ganztägig',\n 'calendar.noEvents': 'Keine Termine für diesen Monat',\n 'date.selectDate': 'Datum auswählen',\n 'time.selectTime': 'Zeit auswählen',\n 'time.hours': 'Stunden',\n 'time.minutes': 'Minuten',\n 'time.period': 'Zeitraum',\n },\n 'fr-FR': {\n 'common.save': 'Enregistrer',\n 'common.cancel': 'Annuler',\n 'common.delete': 'Supprimer',\n 'common.edit': 'Modifier',\n 'common.create': 'Créer',\n 'common.search': 'Rechercher',\n 'common.filter': 'Filtrer',\n 'common.loading': 'Chargement...',\n 'common.noData': 'Aucune donnée disponible',\n 'common.confirm': 'Confirmer',\n 'common.close': 'Fermer',\n 'common.yes': 'Oui',\n 'common.no': 'Non',\n 'common.total': 'Total',\n 'common.items': 'Éléments',\n 'locale.selectLanguage': 'Sélectionner la langue',\n 'locale.selectCurrency': 'Sélectionner la devise',\n 'calendar.today': \"Aujourd'hui\",\n 'calendar.month': 'Mois',\n 'calendar.week': 'Semaine',\n 'calendar.day': 'Jour',\n 'calendar.agenda': 'Agenda',\n 'calendar.allDay': 'Toute la journée',\n 'calendar.noEvents': 'Aucun événement prévu ce mois-ci',\n 'date.selectDate': 'Choisir une date',\n 'time.selectTime': 'Sélectionner l\\'heure',\n 'time.hours': 'Heures',\n 'time.minutes': 'Minutes',\n 'time.period': 'Période',\n },\n 'es-ES': {\n 'common.save': 'Guardar',\n 'common.cancel': 'Cancelar',\n 'common.delete': 'Eliminar',\n 'common.edit': 'Editar',\n 'common.create': 'Crear',\n 'common.search': 'Buscar',\n 'common.filter': 'Filtrar',\n 'common.loading': 'Cargando...',\n 'common.noData': 'No hay datos disponibles',\n 'common.confirm': 'Confirmar',\n 'common.close': 'Cerrar',\n 'common.yes': 'Sí',\n 'common.no': 'No',\n 'common.total': 'Total',\n 'common.items': 'Elementos',\n 'locale.selectLanguage': 'Seleccionar idioma',\n 'locale.selectCurrency': 'Seleccionar moneda',\n 'calendar.today': 'Hoy',\n 'calendar.month': 'Mes',\n 'calendar.week': 'Semana',\n 'calendar.day': 'Día',\n 'calendar.agenda': 'Agenda',\n 'calendar.allDay': 'Todo el día',\n 'calendar.noEvents': 'No hay eventos programados este mes',\n 'date.selectDate': 'Seleccionar fecha',\n 'time.selectTime': 'Seleccionar hora',\n 'time.hours': 'Horas',\n 'time.minutes': 'Minutos',\n 'time.period': 'Período',\n },\n 'it-IT': {\n 'common.save': 'Salva',\n 'common.cancel': 'Annulla',\n 'common.delete': 'Elimina',\n 'common.edit': 'Modifica',\n 'common.create': 'Crea',\n 'common.search': 'Cerca',\n 'common.loading': 'Caricamento...',\n 'common.total': 'Totale',\n 'common.items': 'Elementi',\n 'locale.selectLanguage': 'Seleziona lingua',\n 'locale.selectCurrency': 'Seleziona valuta',\n 'calendar.today': 'Oggi',\n 'calendar.month': 'Mese',\n 'calendar.week': 'Settimana',\n 'calendar.day': 'Giorno',\n 'calendar.agenda': 'Agenda',\n 'calendar.allDay': 'Tutto il giorno',\n 'date.selectDate': 'Seleziona data',\n 'time.selectTime': 'Seleziona ora',\n 'time.hours': 'Ore',\n 'time.minutes': 'Minuti',\n 'time.period': 'Periodo',\n },\n 'pt-BR': {\n 'common.save': 'Salvar',\n 'common.cancel': 'Cancelar',\n 'common.delete': 'Excluir',\n 'common.edit': 'Editar',\n 'common.create': 'Criar',\n 'common.search': 'Pesquisar',\n 'common.loading': 'Carregando...',\n 'common.total': 'Total',\n 'common.items': 'Itens',\n 'locale.selectLanguage': 'Selecionar idioma',\n 'locale.selectCurrency': 'Selecionar moeda',\n 'calendar.today': 'Hoje',\n 'calendar.month': 'Mês',\n 'calendar.week': 'Semana',\n 'calendar.day': 'Dia',\n 'calendar.agenda': 'Agenda',\n 'calendar.allDay': 'Dia inteiro',\n 'date.selectDate': 'Selecionar data',\n 'time.selectTime': 'Selecionar hora',\n 'time.hours': 'Horas',\n 'time.minutes': 'Minutos',\n 'time.period': 'Período',\n },\n 'nl-NL': {\n 'common.save': 'Opslaan',\n 'common.cancel': 'Annuleren',\n 'common.delete': 'Verwijderen',\n 'common.edit': 'Bewerken',\n 'common.create': 'Maken',\n 'common.search': 'Zoeken',\n 'common.loading': 'Laden...',\n 'common.total': 'Totaal',\n 'common.items': 'Items',\n 'locale.selectLanguage': 'Taal selecteren',\n 'locale.selectCurrency': 'Valuta selecteren',\n 'calendar.today': 'Vandaag',\n 'calendar.month': 'Maand',\n 'calendar.week': 'Week',\n 'calendar.day': 'Dag',\n 'calendar.agenda': 'Agenda',\n 'calendar.allDay': 'Hele dag',\n 'date.selectDate': 'Datum kiezen',\n 'time.selectTime': 'Tijd selecteren',\n 'time.hours': 'Uren',\n 'time.minutes': 'Minuten',\n 'time.period': 'Periode',\n },\n 'pl-PL': {\n 'common.save': 'Zapisz',\n 'common.cancel': 'Anuluj',\n 'common.delete': 'Usuń',\n 'common.edit': 'Edytuj',\n 'common.create': 'Utwórz',\n 'common.search': 'Szukaj',\n 'common.loading': 'Ładowanie...',\n 'common.total': 'Suma',\n 'common.items': 'Elementy',\n 'locale.selectLanguage': 'Wybierz język',\n 'locale.selectCurrency': 'Wybierz walutę',\n 'calendar.today': 'Dziś',\n 'calendar.month': 'Miesiąc',\n 'calendar.week': 'Tydzień',\n 'calendar.day': 'Dzień',\n 'calendar.agenda': 'Agenda',\n 'calendar.allDay': 'Cały dzień',\n 'date.selectDate': 'Wybierz datę',\n 'time.selectTime': 'Wybierz czas',\n 'time.hours': 'Godziny',\n 'time.minutes': 'Minuty',\n 'time.period': 'Okres',\n },\n 'ru-RU': {\n 'common.save': 'Сохранить',\n 'common.cancel': 'Отмена',\n 'common.delete': 'Удалить',\n 'common.edit': 'Редактировать',\n 'common.create': 'Создать',\n 'common.search': 'Поиск',\n 'common.loading': 'Загрузка...',\n 'common.total': 'Всего',\n 'common.items': 'Элементы',\n 'locale.selectLanguage': 'Выбрать язык',\n 'locale.selectCurrency': 'Выбрать валюту',\n 'calendar.today': 'Сегодня',\n 'calendar.month': 'Месяц',\n 'calendar.week': 'Неделя',\n 'calendar.day': 'День',\n 'calendar.agenda': 'Повестка',\n 'calendar.allDay': 'Весь день',\n 'date.selectDate': 'Выберите дату',\n 'time.selectTime': 'Выберите время',\n 'time.hours': 'Часы',\n 'time.minutes': 'Минуты',\n 'time.period': 'Период',\n },\n 'ja-JP': {\n 'common.save': '保存',\n 'common.cancel': 'キャンセル',\n 'common.delete': '削除',\n 'common.edit': '編集',\n 'common.create': '作成',\n 'common.search': '検索',\n 'common.loading': '読み込み中...',\n 'common.total': '合計',\n 'common.items': 'アイテム',\n 'locale.selectLanguage': '言語を選択',\n 'locale.selectCurrency': '通貨を選択',\n 'calendar.today': '今日',\n 'calendar.month': '月',\n 'calendar.week': '週',\n 'calendar.day': '日',\n 'calendar.agenda': '予定表',\n 'calendar.allDay': '終日',\n 'date.selectDate': '日付を選択',\n 'time.selectTime': '時刻を選択',\n 'time.hours': '時',\n 'time.minutes': '分',\n 'time.period': '時間帯',\n },\n 'zh-CN': {\n 'common.save': '保存',\n 'common.cancel': '取消',\n 'common.delete': '删除',\n 'common.edit': '编辑',\n 'common.create': '创建',\n 'common.search': '搜索',\n 'common.loading': '加载中...',\n 'common.total': '总计',\n 'common.items': '项目',\n 'locale.selectLanguage': '选择语言',\n 'locale.selectCurrency': '选择货币',\n 'calendar.today': '今天',\n 'calendar.month': '月',\n 'calendar.week': '周',\n 'calendar.day': '日',\n 'calendar.agenda': '日程',\n 'calendar.allDay': '全天',\n 'date.selectDate': '选择日期',\n 'time.selectTime': '选择时间',\n 'time.hours': '小时',\n 'time.minutes': '分钟',\n 'time.period': '时段',\n },\n 'ko-KR': {\n 'common.save': '저장',\n 'common.cancel': '취소',\n 'common.delete': '삭제',\n 'common.edit': '편집',\n 'common.create': '만들기',\n 'common.search': '검색',\n 'common.loading': '로딩 중...',\n 'common.total': '합계',\n 'common.items': '항목',\n 'locale.selectLanguage': '언어 선택',\n 'locale.selectCurrency': '통화 선택',\n 'calendar.today': '오늘',\n 'calendar.month': '월',\n 'calendar.week': '주',\n 'calendar.day': '일',\n 'calendar.agenda': '일정',\n 'calendar.allDay': '종일',\n 'date.selectDate': '날짜 선택',\n 'time.selectTime': '시간 선택',\n 'time.hours': '시',\n 'time.minutes': '분',\n 'time.period': '오전/오후',\n },\n 'ar-SA': {\n 'common.save': 'حفظ',\n 'common.cancel': 'إلغاء',\n 'common.delete': 'حذف',\n 'common.edit': 'تعديل',\n 'common.create': 'إنشاء',\n 'common.search': 'بحث',\n 'common.loading': 'جاري التحميل...',\n 'common.total': 'المجموع',\n 'common.items': 'العناصر',\n 'locale.selectLanguage': 'اختر اللغة',\n 'locale.selectCurrency': 'اختر العملة',\n 'calendar.today': 'اليوم',\n 'calendar.month': 'شهر',\n 'calendar.week': 'أسبوع',\n 'calendar.day': 'يوم',\n 'calendar.agenda': 'جدول الأعمال',\n 'calendar.allDay': 'طوال اليوم',\n 'date.selectDate': 'اختر التاريخ',\n 'time.selectTime': 'اختر الوقت',\n 'time.hours': 'ساعات',\n 'time.minutes': 'دقائق',\n 'time.period': 'الفترة',\n },\n 'en-GB': {\n 'common.save': 'Save',\n 'common.cancel': 'Cancel',\n 'common.delete': 'Delete',\n 'common.edit': 'Edit',\n 'common.create': 'Create',\n 'common.search': 'Search',\n 'common.loading': 'Loading...',\n 'common.total': 'Total',\n 'common.items': 'Items',\n 'locale.selectLanguage': 'Select language',\n 'locale.selectCurrency': 'Select currency',\n 'calendar.today': 'Today',\n 'calendar.month': 'Month',\n 'calendar.week': 'Week',\n 'calendar.day': 'Day',\n 'calendar.agenda': 'Agenda',\n 'calendar.allDay': 'All day',\n 'date.selectDate': 'Pick a date',\n 'time.selectTime': 'Select time',\n 'time.hours': 'Hours',\n 'time.minutes': 'Minutes',\n 'time.period': 'Period',\n },\n}\n\nconst numberFormats: Record<SupportedLocale, NumberFormatConfig> = {\n 'en-US': { decimal: '.', thousand: ',' },\n 'en-GB': { decimal: '.', thousand: ',' },\n 'tr-TR': { decimal: ',', thousand: '.' },\n 'de-DE': { decimal: ',', thousand: '.' },\n 'fr-FR': { decimal: ',', thousand: ' ' },\n 'es-ES': { decimal: ',', thousand: '.' },\n 'it-IT': { decimal: ',', thousand: '.' },\n 'pt-BR': { decimal: ',', thousand: '.' },\n 'nl-NL': { decimal: ',', thousand: '.' },\n 'pl-PL': { decimal: ',', thousand: ' ' },\n 'ru-RU': { decimal: ',', thousand: ' ' },\n 'ja-JP': { decimal: '.', thousand: ',' },\n 'zh-CN': { decimal: '.', thousand: ',' },\n 'ko-KR': { decimal: '.', thousand: ',' },\n 'ar-SA': { decimal: '.', thousand: ',' },\n}\n\nfunction createLocaleConfig(locale: SupportedLocale): LocaleConfig {\n const localeInfo = locales[locale]\n const currencyInfo = currencies[localeInfo.defaultCurrency] as Currency\n\n return {\n locale,\n currency: localeInfo.defaultCurrency as CurrencyCode,\n currencySymbol: currencyInfo?.symbol || '$',\n dateFormat: dateFormats.short[locale],\n timeFormat: timeFormats.short[locale],\n numberFormat: numberFormats[locale],\n translations: defaultTranslations[locale] || defaultTranslations['en-US'],\n rtl: localeInfo.rtl,\n }\n}\n\nconst defaultLocaleConfigs: Record<SupportedLocale, LocaleConfig> = {\n 'en-US': createLocaleConfig('en-US'),\n 'en-GB': createLocaleConfig('en-GB'),\n 'tr-TR': createLocaleConfig('tr-TR'),\n 'de-DE': createLocaleConfig('de-DE'),\n 'fr-FR': createLocaleConfig('fr-FR'),\n 'es-ES': createLocaleConfig('es-ES'),\n 'it-IT': createLocaleConfig('it-IT'),\n 'pt-BR': createLocaleConfig('pt-BR'),\n 'nl-NL': createLocaleConfig('nl-NL'),\n 'pl-PL': createLocaleConfig('pl-PL'),\n 'ru-RU': createLocaleConfig('ru-RU'),\n 'ja-JP': createLocaleConfig('ja-JP'),\n 'zh-CN': createLocaleConfig('zh-CN'),\n 'ko-KR': createLocaleConfig('ko-KR'),\n 'ar-SA': createLocaleConfig('ar-SA'),\n}\n\ninterface LocaleContextValue {\n config: LocaleConfig\n setLocale: (locale: SupportedLocale) => void\n setCurrency: (currencyCode: CurrencyCode) => void\n setDateFormat: (format: string) => void\n setTimeFormat: (format: string) => void\n updateTranslations: (translations: Record<string, string>) => void\n updateConfig: (config: Partial<LocaleConfig>) => void\n formatNumber: (value: number) => string\n formatCurrency: (value: number, currencyCode?: CurrencyCode) => string\n t: (key: string, params?: Record<string, string | number>) => string\n}\n\nconst LocaleContext = React.createContext<LocaleContextValue | undefined>(undefined)\n\nexport interface LocaleProviderProps {\n children: React.ReactNode\n defaultLocale?: SupportedLocale\n config?: Partial<LocaleConfig>\n translations?: Record<string, string>\n}\n\nexport function LocaleProvider({\n children,\n defaultLocale = 'en-US',\n config: customConfig,\n translations: customTranslations,\n}: LocaleProviderProps) {\n const [config, setConfig] = React.useState<LocaleConfig>(() => {\n const baseConfig = defaultLocaleConfigs[defaultLocale] || defaultLocaleConfigs['en-US']\n return {\n ...baseConfig,\n ...customConfig,\n translations: {\n ...baseConfig.translations,\n ...customTranslations,\n },\n }\n })\n\n const setLocale = React.useCallback((locale: SupportedLocale) => {\n const baseConfig = defaultLocaleConfigs[locale] || defaultLocaleConfigs['en-US']\n setConfig((prev) => ({\n ...baseConfig,\n translations: {\n ...baseConfig.translations,\n ...prev.translations,\n },\n }))\n }, [])\n\n const setCurrency = React.useCallback((currencyCode: CurrencyCode) => {\n const currencyInfo = currencies[currencyCode]\n if (currencyInfo) {\n setConfig((prev) => ({\n ...prev,\n currency: currencyCode,\n currencySymbol: currencyInfo.symbol,\n }))\n }\n }, [])\n\n const setDateFormat = React.useCallback((format: string) => {\n setConfig((prev) => ({\n ...prev,\n dateFormat: format,\n }))\n }, [])\n\n const setTimeFormat = React.useCallback((format: string) => {\n setConfig((prev) => ({\n ...prev,\n timeFormat: format,\n }))\n }, [])\n\n const updateTranslations = React.useCallback((translations: Record<string, string>) => {\n setConfig((prev) => ({\n ...prev,\n translations: {\n ...prev.translations,\n ...translations,\n },\n }))\n }, [])\n\n const updateConfig = React.useCallback((newConfig: Partial<LocaleConfig>) => {\n setConfig((prev) => ({\n ...prev,\n ...newConfig,\n translations: {\n ...prev.translations,\n ...newConfig.translations,\n },\n }))\n }, [])\n\n const formatNumber = React.useCallback(\n (value: number): string => {\n const { decimal, thousand } = config.numberFormat\n const parts = value.toFixed(2).split('.')\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousand)\n return parts.join(decimal)\n },\n [config.numberFormat]\n )\n\n const formatCurrency = React.useCallback(\n (value: number, currencyCode?: CurrencyCode): string => {\n const code = currencyCode || config.currency\n const currencyInfo = currencies[code]\n if (!currencyInfo) {\n return formatNumber(value)\n }\n\n const decimals = currencyInfo.decimals ?? 2\n const { decimal, thousand } = config.numberFormat\n const parts = value.toFixed(decimals).split('.')\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousand)\n const formattedValue = decimals > 0 ? parts.join(decimal) : parts[0]\n\n if (currencyInfo.position === 'before') {\n return `${currencyInfo.symbol}${formattedValue}`\n }\n return `${formattedValue} ${currencyInfo.symbol}`\n },\n [config.currency, config.numberFormat, formatNumber]\n )\n\n const t = React.useCallback(\n (key: string, params?: Record<string, string | number>): string => {\n let translation = config.translations[key] || key\n if (params) {\n Object.entries(params).forEach(([paramKey, paramValue]) => {\n translation = translation.replace(`{${paramKey}}`, String(paramValue))\n })\n }\n return translation\n },\n [config.translations]\n )\n\n const value = React.useMemo(\n () => ({\n config,\n setLocale,\n setCurrency,\n setDateFormat,\n setTimeFormat,\n updateTranslations,\n updateConfig,\n formatNumber,\n formatCurrency,\n t,\n }),\n [config, setLocale, setCurrency, setDateFormat, setTimeFormat, updateTranslations, updateConfig, formatNumber, formatCurrency, t]\n )\n\n return <LocaleContext.Provider value={value}>{children}</LocaleContext.Provider>\n}\n\nexport function useLocale() {\n const context = React.useContext(LocaleContext)\n if (context === undefined) {\n const defaultConfig = defaultLocaleConfigs['en-US']\n return {\n config: defaultConfig,\n setLocale: () => {},\n setCurrency: () => {},\n setDateFormat: () => {},\n setTimeFormat: () => {},\n updateTranslations: () => {},\n updateConfig: () => {},\n formatNumber: (value: number) => value.toLocaleString('en-US'),\n formatCurrency: (value: number) => `$${value.toLocaleString('en-US', { minimumFractionDigits: 2 })}`,\n t: (key: string) => key,\n }\n }\n return context\n}\n\nexport { LocaleContext, defaultLocaleConfigs, defaultTranslations }\nexport type { SupportedLocale, CurrencyCode }\n"],"names":["dateFormats","timeFormats","locales","getDateFormat","locale","type","getTimeFormat","getLocaleInfo","getAllLocales","getSupportedLocaleCodes","isRTLLocale","_a","currencies","getCurrency","code","formatCurrency","amount","currencyCode","currency","decimals","formattedAmount","getAllCurrencies","getCurrencyCodes","defaultTranslations","numberFormats","createLocaleConfig","localeInfo","currencyInfo","defaultLocaleConfigs","LocaleContext","React","LocaleProvider","children","defaultLocale","customConfig","customTranslations","config","setConfig","baseConfig","setLocale","prev","setCurrency","setDateFormat","format","setTimeFormat","updateTranslations","translations","updateConfig","newConfig","formatNumber","value","decimal","thousand","parts","formattedValue","t","key","params","translation","paramKey","paramValue","jsx","useLocale","context"],"mappings":"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"}
|