@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.
Files changed (223) hide show
  1. package/dist/avatar-BT_SPwFW.cjs +18 -0
  2. package/dist/{avatar-C0aVNCG9.cjs.map → avatar-BT_SPwFW.cjs.map} +1 -1
  3. package/dist/avatar-C5-ZWIqT.js +305 -0
  4. package/dist/{avatar-CN6wcrqY.js.map → avatar-C5-ZWIqT.js.map} +1 -1
  5. package/dist/calendar-BF5drX5u.cjs +12 -0
  6. package/dist/{calendar-BUm7YrNf.cjs.map → calendar-BF5drX5u.cjs.map} +1 -1
  7. package/dist/calendar-CUxm1K7J.js +17 -0
  8. package/dist/{calendar-ChJkFXXr.js.map → calendar-CUxm1K7J.js.map} +1 -1
  9. package/dist/calendar-D3RWU0_G.cjs +7 -0
  10. package/dist/{calendar-SwL5isYC.cjs.map → calendar-D3RWU0_G.cjs.map} +1 -1
  11. package/dist/{calendar-BFWc4IB7.js → calendar-DgnhzEfp.js} +126 -112
  12. package/dist/{calendar-BFWc4IB7.js.map → calendar-DgnhzEfp.js.map} +1 -1
  13. package/dist/{card-tMkUxpmW.cjs → card-DISL3sPJ.cjs} +2 -2
  14. package/dist/{card-tMkUxpmW.cjs.map → card-DISL3sPJ.cjs.map} +1 -1
  15. package/dist/{card-K4fxyYwE.js → card-fId5vof_.js} +2 -2
  16. package/dist/{card-K4fxyYwE.js.map → card-fId5vof_.js.map} +1 -1
  17. package/dist/{checkbox-CpOq5hkT.js → checkbox-BY2zxQVv.js} +5 -5
  18. package/dist/{checkbox-CpOq5hkT.js.map → checkbox-BY2zxQVv.js.map} +1 -1
  19. package/dist/checkbox-CL6u7vL6.cjs +2 -0
  20. package/dist/{checkbox-D7-LQyCl.cjs.map → checkbox-CL6u7vL6.cjs.map} +1 -1
  21. package/dist/chevron-down-BiUlxZA-.js +14 -0
  22. package/dist/{chevron-down-DJ1_YIFu.js.map → chevron-down-BiUlxZA-.js.map} +1 -1
  23. package/dist/chevron-down-Ce0kqXiD.cjs +7 -0
  24. package/dist/{chevron-down-DHdXqOqK.cjs.map → chevron-down-Ce0kqXiD.cjs.map} +1 -1
  25. package/dist/chevron-right-BLyGmyaF.js +14 -0
  26. package/dist/{chevron-right-B3bovvh0.js.map → chevron-right-BLyGmyaF.js.map} +1 -1
  27. package/dist/chevron-right-Bxf8i4gi.cjs +7 -0
  28. package/dist/{chevron-right-Dvyd11q0.cjs.map → chevron-right-Bxf8i4gi.cjs.map} +1 -1
  29. package/dist/chevron-up-BmYZUtrk.js +12 -0
  30. package/dist/{chevron-up-CGtXOr51.js.map → chevron-up-BmYZUtrk.js.map} +1 -1
  31. package/dist/chevron-up-C3RClqXD.cjs +7 -0
  32. package/dist/{chevron-up-B9fuiZhc.cjs.map → chevron-up-C3RClqXD.cjs.map} +1 -1
  33. package/dist/components/charts/index.cjs.js +1 -1
  34. package/dist/components/charts/index.es.js +1 -1
  35. package/dist/components/data-display/index.cjs.js +1 -1
  36. package/dist/components/data-display/index.es.js +1 -1
  37. package/dist/components/dnd/index.cjs.js +1 -1
  38. package/dist/components/dnd/index.es.js +1 -1
  39. package/dist/components/feedback/index.cjs.js +1 -1
  40. package/dist/components/feedback/index.es.js +1 -1
  41. package/dist/components/forms/index.cjs.js +1 -1
  42. package/dist/components/forms/index.es.js +1 -1
  43. package/dist/components/layouts/index.cjs.js +1 -1
  44. package/dist/components/layouts/index.es.js +1 -1
  45. package/dist/components/navigation/index.cjs.js +1 -1
  46. package/dist/components/navigation/index.es.js +1 -1
  47. package/dist/components/ui/index.cjs.js +1 -1
  48. package/dist/components/ui/index.es.js +13 -13
  49. package/dist/{createLucideIcon-BbeNo6vq.js → createLucideIcon-BC8wu-bu.js} +25 -1
  50. package/dist/{createLucideIcon-BbeNo6vq.js.map → createLucideIcon-BC8wu-bu.js.map} +1 -1
  51. package/dist/createLucideIcon-Cv8nC2E9.cjs +22 -0
  52. package/dist/{createLucideIcon-i5GEhNMV.cjs.map → createLucideIcon-Cv8nC2E9.cjs.map} +1 -1
  53. package/dist/ellipsis-6eUne95u.js +16 -0
  54. package/dist/{ellipsis-CiKEaUNP.js.map → ellipsis-6eUne95u.js.map} +1 -1
  55. package/dist/ellipsis-DkM3GBF5.cjs +7 -0
  56. package/dist/{ellipsis-BW2gWki8.cjs.map → ellipsis-DkM3GBF5.cjs.map} +1 -1
  57. package/dist/file-Cp5UoYUZ.cjs +7 -0
  58. package/dist/{file-V_hhCUhr.cjs.map → file-Cp5UoYUZ.cjs.map} +1 -1
  59. package/dist/file-Cw_u_aJB.js +15 -0
  60. package/dist/{file-wzTXnWqz.js.map → file-Cw_u_aJB.js.map} +1 -1
  61. package/dist/filter-tags-DoRzXjuY.cjs +48 -0
  62. package/dist/{filter-tags-DjUaNXHR.cjs.map → filter-tags-DoRzXjuY.cjs.map} +1 -1
  63. package/dist/{filter-tags-i_I8qV1N.js → filter-tags-zEQmRhEU.js} +353 -299
  64. package/dist/{filter-tags-i_I8qV1N.js.map → filter-tags-zEQmRhEU.js.map} +1 -1
  65. package/dist/{full-calendar-7ac2FFU6.js → full-calendar-5Z4JSj8g.js} +1176 -1143
  66. package/dist/{full-calendar-7ac2FFU6.js.map → full-calendar-5Z4JSj8g.js.map} +1 -1
  67. package/dist/full-calendar-DjAvCfuE.cjs +23 -0
  68. package/dist/{full-calendar-Cpeh5xMP.cjs.map → full-calendar-DjAvCfuE.cjs.map} +1 -1
  69. package/dist/{global-search-h1rVbP2q.js → global-search-BbZfc-VL.js} +514 -486
  70. package/dist/global-search-BbZfc-VL.js.map +1 -0
  71. package/dist/global-search-Bd74_wPV.cjs +22 -0
  72. package/dist/global-search-Bd74_wPV.cjs.map +1 -0
  73. package/dist/hooks/index.cjs.js +1 -1
  74. package/dist/hooks/index.es.js +1 -1
  75. package/dist/index-D2U2F80P.cjs +2 -0
  76. package/dist/index-D2U2F80P.cjs.map +1 -0
  77. package/dist/index-DG0KV-sw.cjs +11 -0
  78. package/dist/{index-CzVK9Zyb.cjs.map → index-DG0KV-sw.cjs.map} +1 -1
  79. package/dist/{index-Co9o9StL.js → index-Dk_Et2WJ.js} +2 -2
  80. package/dist/{index-Co9o9StL.js.map → index-Dk_Et2WJ.js.map} +1 -1
  81. package/dist/{index-CwJPJKOE.js → index-DtaLkIY8.js} +1072 -573
  82. package/dist/index-DtaLkIY8.js.map +1 -0
  83. package/dist/index-XnFSmCuh.js +299 -0
  84. package/dist/{index-l828OqQN.js.map → index-XnFSmCuh.js.map} +1 -1
  85. package/dist/{index-lT9bLt9X.cjs → index-gVbM3K4f.cjs} +2 -2
  86. package/dist/{index-lT9bLt9X.cjs.map → index-gVbM3K4f.cjs.map} +1 -1
  87. package/dist/index.cjs.js +1 -1
  88. package/dist/index.es.js +23 -23
  89. package/dist/input-BgPy-4Qu.js +3658 -0
  90. package/dist/{input-D4AoiWxo.js.map → input-BgPy-4Qu.js.map} +1 -1
  91. package/dist/input-Cfr2WB-P.cjs +47 -0
  92. package/dist/{input-CZrckPLk.cjs.map → input-Cfr2WB-P.cjs.map} +1 -1
  93. package/dist/locale-provider-BojNdf1Y.cjs +2 -0
  94. package/dist/{locale-provider-DHMwuneF.cjs.map → locale-provider-BojNdf1Y.cjs.map} +1 -1
  95. package/dist/{locale-provider-DanG6RRG.js → locale-provider-DzBeb-X3.js} +62 -61
  96. package/dist/{locale-provider-DanG6RRG.js.map → locale-provider-DzBeb-X3.js.map} +1 -1
  97. package/dist/locale-selector-BD1IWk6X.cjs +22 -0
  98. package/dist/{locale-selector-Ppe0KTi-.cjs.map → locale-selector-BD1IWk6X.cjs.map} +1 -1
  99. package/dist/locale-selector-DLRSyVye.js +1772 -0
  100. package/dist/{locale-selector-xn2GpdP9.js.map → locale-selector-DLRSyVye.js.map} +1 -1
  101. package/dist/minus-C0uyaz70.cjs +7 -0
  102. package/dist/{minus-BXBFZSZs.cjs.map → minus-C0uyaz70.cjs.map} +1 -1
  103. package/dist/minus-CiwV65ZG.js +12 -0
  104. package/dist/{minus-DvlYtl96.js.map → minus-CiwV65ZG.js.map} +1 -1
  105. package/dist/{multi-container-C2UpSw5f.js → multi-container-BZia7HCU.js} +181 -164
  106. package/dist/{multi-container-C2UpSw5f.js.map → multi-container-BZia7HCU.js.map} +1 -1
  107. package/dist/multi-container-BdNbgtPZ.cjs +7 -0
  108. package/dist/{multi-container-DMKL8c9B.cjs.map → multi-container-BdNbgtPZ.cjs.map} +1 -1
  109. package/dist/pipeline-Dh052Dvj.cjs +27 -0
  110. package/dist/{pipeline-By5_8AFg.cjs.map → pipeline-Dh052Dvj.cjs.map} +1 -1
  111. package/dist/pipeline-DqWvleNy.js +1076 -0
  112. package/dist/{pipeline-D-QNSU0U.js.map → pipeline-DqWvleNy.js.map} +1 -1
  113. package/dist/plus-BsV82JJ5.cjs +7 -0
  114. package/dist/{plus-8wKRkVu-.cjs.map → plus-BsV82JJ5.cjs.map} +1 -1
  115. package/dist/plus-DxD6rofl.js +15 -0
  116. package/dist/{plus-CJD68KQD.js.map → plus-DxD6rofl.js.map} +1 -1
  117. package/dist/popover-BgLxmm1z.cjs +7 -0
  118. package/dist/{popover-ivh-plLc.cjs.map → popover-BgLxmm1z.cjs.map} +1 -1
  119. package/dist/{popover-4V4sGe1U.js → popover-PI9jbhnS.js} +85 -75
  120. package/dist/{popover-4V4sGe1U.js.map → popover-PI9jbhnS.js.map} +1 -1
  121. package/dist/progress-CTTt_CP3.js +260 -0
  122. package/dist/{progress-D5AsrWa6.js.map → progress-CTTt_CP3.js.map} +1 -1
  123. package/dist/progress-CTWb7X1Q.cjs +37 -0
  124. package/dist/{progress-CFnuLqnS.cjs.map → progress-CTWb7X1Q.cjs.map} +1 -1
  125. package/dist/providers/index.cjs.js +1 -1
  126. package/dist/providers/index.es.js +1 -1
  127. package/dist/{scroll-area-DQeqDp3Y.js → scroll-area-A3jGu-Ta.js} +302 -280
  128. package/dist/{scroll-area-DQeqDp3Y.js.map → scroll-area-A3jGu-Ta.js.map} +1 -1
  129. package/dist/scroll-area-DzDnWIYJ.cjs +12 -0
  130. package/dist/{scroll-area-DYOiJMXh.cjs.map → scroll-area-DzDnWIYJ.cjs.map} +1 -1
  131. package/dist/select-BJpZrtep.js +989 -0
  132. package/dist/{select-C1rNBi6c.js.map → select-BJpZrtep.js.map} +1 -1
  133. package/dist/select-Ii8HRuXa.cjs +2 -0
  134. package/dist/{select-m-Mqwxu3.cjs.map → select-Ii8HRuXa.cjs.map} +1 -1
  135. package/dist/separator-BzcDE0Ei.cjs +2 -0
  136. package/dist/{separator-DBUivkHq.cjs.map → separator-BzcDE0Ei.cjs.map} +1 -1
  137. package/dist/{separator-DsfoJx-2.js → separator-DyarVo1-.js} +66 -65
  138. package/dist/{separator-DsfoJx-2.js.map → separator-DyarVo1-.js.map} +1 -1
  139. package/dist/{sheet-BVWCpq7E.js → sheet-DPSdOoE6.js} +4 -4
  140. package/dist/{sheet-BVWCpq7E.js.map → sheet-DPSdOoE6.js.map} +1 -1
  141. package/dist/{sheet-mKiFLVnK.cjs → sheet-XtjvbEMq.cjs} +2 -2
  142. package/dist/{sheet-mKiFLVnK.cjs.map → sheet-XtjvbEMq.cjs.map} +1 -1
  143. package/dist/{skeleton-BmGbfJw3.js → skeleton-Bl6FAxHT.js} +2 -2
  144. package/dist/{skeleton-BmGbfJw3.js.map → skeleton-Bl6FAxHT.js.map} +1 -1
  145. package/dist/{skeleton-BSwwYaQU.cjs → skeleton-Cb6MWerF.cjs} +2 -2
  146. package/dist/{skeleton-BSwwYaQU.cjs.map → skeleton-Cb6MWerF.cjs.map} +1 -1
  147. package/dist/sortable.esm-5DsiICDg.cjs +6 -0
  148. package/dist/{sortable.esm-DcQYlXi3.cjs.map → sortable.esm-5DsiICDg.cjs.map} +1 -1
  149. package/dist/{sortable.esm-Blhf_jh1.js → sortable.esm-Cb8oRBzU.js} +42 -42
  150. package/dist/{sortable.esm-Blhf_jh1.js.map → sortable.esm-Cb8oRBzU.js.map} +1 -1
  151. package/dist/sparkline-chart-CeCDeMNk.cjs +102 -0
  152. package/dist/{sparkline-chart-ca3uTzVK.cjs.map → sparkline-chart-CeCDeMNk.cjs.map} +1 -1
  153. package/dist/{sparkline-chart-Da-ehDGv.js → sparkline-chart-DUS4CoW_.js} +7799 -9094
  154. package/dist/{sparkline-chart-Da-ehDGv.js.map → sparkline-chart-DUS4CoW_.js.map} +1 -1
  155. package/dist/styles.css +1 -0
  156. package/dist/trending-up-BBjz_E69.cjs +7 -0
  157. package/dist/{trending-up-D3Nfrhi3.cjs.map → trending-up-BBjz_E69.cjs.map} +1 -1
  158. package/dist/trending-up-BHFXgLWy.js +15 -0
  159. package/dist/{trending-up-DPwlYzQb.js.map → trending-up-BHFXgLWy.js.map} +1 -1
  160. package/dist/{use-formatters-l1_2c8z0.js → use-formatters-Bgj3JA4i.js} +731 -746
  161. package/dist/{use-formatters-l1_2c8z0.js.map → use-formatters-Bgj3JA4i.js.map} +1 -1
  162. package/dist/use-formatters-CObUgipW.cjs +2 -0
  163. package/dist/{use-formatters-d97RVcmg.cjs.map → use-formatters-CObUgipW.cjs.map} +1 -1
  164. package/dist/utils/index.cjs.js +1 -1
  165. package/dist/utils/index.es.js +1 -1
  166. package/dist/welcome-card-CNuEa6Ck.cjs +67 -0
  167. package/dist/{welcome-card-CPolYl1D.cjs.map → welcome-card-CNuEa6Ck.cjs.map} +1 -1
  168. package/dist/{welcome-card-CxMJZ8bv.js → welcome-card-Cp6t6G3j.js} +197 -119
  169. package/dist/{welcome-card-CxMJZ8bv.js.map → welcome-card-Cp6t6G3j.js.map} +1 -1
  170. package/package.json +14 -12
  171. package/dist/avatar-C0aVNCG9.cjs +0 -2
  172. package/dist/avatar-CN6wcrqY.js +0 -288
  173. package/dist/calendar-BUm7YrNf.cjs +0 -2
  174. package/dist/calendar-ChJkFXXr.js +0 -11
  175. package/dist/calendar-SwL5isYC.cjs +0 -2
  176. package/dist/checkbox-D7-LQyCl.cjs +0 -2
  177. package/dist/chevron-down-DHdXqOqK.cjs +0 -2
  178. package/dist/chevron-down-DJ1_YIFu.js +0 -8
  179. package/dist/chevron-right-B3bovvh0.js +0 -8
  180. package/dist/chevron-right-Dvyd11q0.cjs +0 -2
  181. package/dist/chevron-up-B9fuiZhc.cjs +0 -2
  182. package/dist/chevron-up-CGtXOr51.js +0 -6
  183. package/dist/createLucideIcon-i5GEhNMV.cjs +0 -2
  184. package/dist/ellipsis-BW2gWki8.cjs +0 -2
  185. package/dist/ellipsis-CiKEaUNP.js +0 -10
  186. package/dist/file-V_hhCUhr.cjs +0 -2
  187. package/dist/file-wzTXnWqz.js +0 -9
  188. package/dist/filter-tags-DjUaNXHR.cjs +0 -5
  189. package/dist/full-calendar-Cpeh5xMP.cjs +0 -8
  190. package/dist/global-search-UNXjoFlI.cjs +0 -2
  191. package/dist/global-search-UNXjoFlI.cjs.map +0 -1
  192. package/dist/global-search-h1rVbP2q.js.map +0 -1
  193. package/dist/index-CwJPJKOE.js.map +0 -1
  194. package/dist/index-CzVK9Zyb.cjs +0 -6
  195. package/dist/index-l828OqQN.js +0 -288
  196. package/dist/index-lGzB9daF.cjs +0 -2
  197. package/dist/index-lGzB9daF.cjs.map +0 -1
  198. package/dist/input-CZrckPLk.cjs +0 -42
  199. package/dist/input-D4AoiWxo.js +0 -3629
  200. package/dist/locale-provider-DHMwuneF.cjs +0 -2
  201. package/dist/locale-selector-Ppe0KTi-.cjs +0 -2
  202. package/dist/locale-selector-xn2GpdP9.js +0 -1745
  203. package/dist/minus-BXBFZSZs.cjs +0 -2
  204. package/dist/minus-DvlYtl96.js +0 -6
  205. package/dist/multi-container-DMKL8c9B.cjs +0 -2
  206. package/dist/pipeline-By5_8AFg.cjs +0 -2
  207. package/dist/pipeline-D-QNSU0U.js +0 -1036
  208. package/dist/plus-8wKRkVu-.cjs +0 -2
  209. package/dist/plus-CJD68KQD.js +0 -9
  210. package/dist/popover-ivh-plLc.cjs +0 -2
  211. package/dist/progress-CFnuLqnS.cjs +0 -7
  212. package/dist/progress-D5AsrWa6.js +0 -222
  213. package/dist/scroll-area-DYOiJMXh.cjs +0 -2
  214. package/dist/select-C1rNBi6c.js +0 -974
  215. package/dist/select-m-Mqwxu3.cjs +0 -2
  216. package/dist/separator-DBUivkHq.cjs +0 -2
  217. package/dist/sortable.esm-DcQYlXi3.cjs +0 -6
  218. package/dist/sparkline-chart-ca3uTzVK.cjs +0 -68
  219. package/dist/trending-up-D3Nfrhi3.cjs +0 -2
  220. package/dist/trending-up-DPwlYzQb.js +0 -9
  221. package/dist/ui.css +0 -1
  222. package/dist/use-formatters-d97RVcmg.cjs +0 -2
  223. 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 c from "react";
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, r = "short") {
246
- return n[r][e] || n[r]["en-US"];
245
+ function z(e, m = "short") {
246
+ return n[m][e] || n[m]["en-US"];
247
247
  }
248
- function I(e, r = "short") {
249
- return t[r][e] || t[r]["en-US"];
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
- return h[e]?.rtl === !0;
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, r, i) {
315
- const u = B(r);
315
+ function W(e, m, l) {
316
+ const u = B(m);
316
317
  if (!u)
317
318
  return e.toString();
318
- const l = u.decimals ?? 2, y = e.toLocaleString(i, {
319
- minimumFractionDigits: l,
320
- maximumFractionDigits: l
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 m(e) {
840
- const r = h[e], i = f[r.defaultCurrency];
840
+ function r(e) {
841
+ const m = h[e], l = f[m.defaultCurrency];
841
842
  return {
842
843
  locale: e,
843
- currency: r.defaultCurrency,
844
- currencySymbol: i?.symbol || "$",
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: r.rtl
850
+ rtl: m.rtl
850
851
  };
851
852
  }
852
853
  const g = {
853
- "en-US": m("en-US"),
854
- "en-GB": m("en-GB"),
855
- "tr-TR": m("tr-TR"),
856
- "de-DE": m("de-DE"),
857
- "fr-FR": m("fr-FR"),
858
- "es-ES": m("es-ES"),
859
- "it-IT": m("it-IT"),
860
- "pt-BR": m("pt-BR"),
861
- "nl-NL": m("nl-NL"),
862
- "pl-PL": m("pl-PL"),
863
- "ru-RU": m("ru-RU"),
864
- "ja-JP": m("ja-JP"),
865
- "zh-CN": m("zh-CN"),
866
- "ko-KR": m("ko-KR"),
867
- "ar-SA": m("ar-SA")
868
- }, L = c.createContext(void 0);
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: r = "en-US",
872
- config: i,
872
+ defaultLocale: m = "en-US",
873
+ config: l,
873
874
  translations: u
874
875
  }) {
875
- const [l, y] = c.useState(() => {
876
- const a = g[r] || g["en-US"];
876
+ const [c, y] = i.useState(() => {
877
+ const a = g[m] || g["en-US"];
877
878
  return {
878
879
  ...a,
879
- ...i,
880
+ ...l,
880
881
  translations: {
881
882
  ...a.translations,
882
883
  ...u
883
884
  }
884
885
  };
885
- }), S = c.useCallback((a) => {
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 = c.useCallback((a) => {
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 = c.useCallback((a) => {
902
+ }, []), C = i.useCallback((a) => {
902
903
  y((o) => ({
903
904
  ...o,
904
905
  dateFormat: a
905
906
  }));
906
- }, []), D = c.useCallback((a) => {
907
+ }, []), D = i.useCallback((a) => {
907
908
  y((o) => ({
908
909
  ...o,
909
910
  timeFormat: a
910
911
  }));
911
- }, []), H = c.useCallback((a) => {
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 = c.useCallback((a) => {
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 = c.useCallback(
929
+ }, []), p = i.useCallback(
929
930
  (a) => {
930
- const { decimal: o, thousand: s } = l.numberFormat, d = a.toFixed(2).split(".");
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
- [l.numberFormat]
934
- ), v = c.useCallback(
934
+ [c.numberFormat]
935
+ ), v = i.useCallback(
935
936
  (a, o) => {
936
- const s = o || l.currency, d = f[s];
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 } = l.numberFormat, b = a.toFixed(M).split(".");
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
- [l.currency, l.numberFormat, p]
945
- ), P = c.useCallback(
945
+ [c.currency, c.numberFormat, p]
946
+ ), P = i.useCallback(
946
947
  (a, o) => {
947
- let s = l.translations[a] || a;
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
- [l.translations]
953
- ), F = c.useMemo(
953
+ [c.translations]
954
+ ), F = i.useMemo(
954
955
  () => ({
955
- config: l,
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
- [l, S, R, C, D, H, T, p, v, P]
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 = c.useContext(L);
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: (i) => i.toLocaleString("en-US"),
987
- formatCurrency: (i) => `$${i.toLocaleString("en-US", { minimumFractionDigits: 2 })}`,
988
- t: (i) => i
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-DanG6RRG.js.map
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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"}