@techzyapp/ui-library 1.0.4 → 1.0.8

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 (378) hide show
  1. package/dist/{Alert-BQpA48PY.js → Alert-BL8hDdEl.js} +3 -3
  2. package/dist/{Alert-BQpA48PY.js.map → Alert-BL8hDdEl.js.map} +1 -1
  3. package/dist/{Alert-DKIjM-9x.cjs → Alert-C9yBIMq0.cjs} +2 -2
  4. package/dist/{Alert-DKIjM-9x.cjs.map → Alert-C9yBIMq0.cjs.map} +1 -1
  5. package/dist/{Breadcrumbs-Bx5UgwDy.js → Breadcrumbs-BC_QSlJZ.js} +3 -3
  6. package/dist/{Breadcrumbs-Bx5UgwDy.js.map → Breadcrumbs-BC_QSlJZ.js.map} +1 -1
  7. package/dist/{Breadcrumbs-CHONper7.cjs → Breadcrumbs-DhBx2UgK.cjs} +2 -2
  8. package/dist/{Breadcrumbs-CHONper7.cjs.map → Breadcrumbs-DhBx2UgK.cjs.map} +1 -1
  9. package/dist/{Button-DhEv0YFk.js → Button-BT8XmR_T.js} +2 -2
  10. package/dist/{Button-DhEv0YFk.js.map → Button-BT8XmR_T.js.map} +1 -1
  11. package/dist/{Button-D4bfVNNa.cjs → Button-C_HPI97g.cjs} +2 -2
  12. package/dist/{Button-D4bfVNNa.cjs.map → Button-C_HPI97g.cjs.map} +1 -1
  13. package/dist/{Calendar-Bh317SaV.js → Calendar-B9mXn_zD.js} +3 -3
  14. package/dist/{Calendar-Bh317SaV.js.map → Calendar-B9mXn_zD.js.map} +1 -1
  15. package/dist/{Calendar-C8uNezI-.cjs → Calendar-CCCife5b.cjs} +2 -2
  16. package/dist/{Calendar-C8uNezI-.cjs.map → Calendar-CCCife5b.cjs.map} +1 -1
  17. package/dist/{Card-DzClqJuu.js → Card-DHPAefzg.js} +2 -2
  18. package/dist/{Card-DzClqJuu.js.map → Card-DHPAefzg.js.map} +1 -1
  19. package/dist/{Card-CfyaerZZ.cjs → Card-DfVntHqn.cjs} +2 -2
  20. package/dist/{Card-CfyaerZZ.cjs.map → Card-DfVntHqn.cjs.map} +1 -1
  21. package/dist/{Chip-DSrdXLBU.cjs → Chip-BoHt3WYS.cjs} +2 -2
  22. package/dist/{Chip-DSrdXLBU.cjs.map → Chip-BoHt3WYS.cjs.map} +1 -1
  23. package/dist/{Chip-Cfo0v3Z8.js → Chip-DX3QECcs.js} +2 -2
  24. package/dist/{Chip-Cfo0v3Z8.js.map → Chip-DX3QECcs.js.map} +1 -1
  25. package/dist/{CodeBlock-BWxQyKRo.js → CodeBlock-CPWEOym2.js} +3 -3
  26. package/dist/{CodeBlock-BWxQyKRo.js.map → CodeBlock-CPWEOym2.js.map} +1 -1
  27. package/dist/{CodeBlock-CgXOjKS-.cjs → CodeBlock-DKhIGQBg.cjs} +2 -2
  28. package/dist/{CodeBlock-CgXOjKS-.cjs.map → CodeBlock-DKhIGQBg.cjs.map} +1 -1
  29. package/dist/{Col-D2TfZKiM.js → Col-B51RlwWP.js} +2 -2
  30. package/dist/{Col-D2TfZKiM.js.map → Col-B51RlwWP.js.map} +1 -1
  31. package/dist/{Col-R5mAy8T9.cjs → Col-BdQeyKEX.cjs} +2 -2
  32. package/dist/{Col-R5mAy8T9.cjs.map → Col-BdQeyKEX.cjs.map} +1 -1
  33. package/dist/{ColorPicker-2udt1ORM.js → ColorPicker-2qD8vZkR.js} +3 -3
  34. package/dist/{ColorPicker-2udt1ORM.js.map → ColorPicker-2qD8vZkR.js.map} +1 -1
  35. package/dist/{ColorPicker-BwmaXCOy.cjs → ColorPicker-BAJWvC3h.cjs} +2 -2
  36. package/dist/{ColorPicker-BwmaXCOy.cjs.map → ColorPicker-BAJWvC3h.cjs.map} +1 -1
  37. package/dist/{ColorPickerPanel-ByB1mLSi.cjs → ColorPickerPanel-CkB2pNnX.cjs} +2 -2
  38. package/dist/{ColorPickerPanel-ByB1mLSi.cjs.map → ColorPickerPanel-CkB2pNnX.cjs.map} +1 -1
  39. package/dist/{ColorPickerPanel-BM9OwDDE.js → ColorPickerPanel-CovWDIRt.js} +2 -2
  40. package/dist/{ColorPickerPanel-BM9OwDDE.js.map → ColorPickerPanel-CovWDIRt.js.map} +1 -1
  41. package/dist/ConfigProvider-DFy6pL-C.cjs +2 -0
  42. package/dist/ConfigProvider-DFy6pL-C.cjs.map +1 -0
  43. package/dist/ConfigProvider-sEZzNTeU.js +296 -0
  44. package/dist/ConfigProvider-sEZzNTeU.js.map +1 -0
  45. package/dist/DashedButton-DeiALUPA.js +59 -0
  46. package/dist/DashedButton-DeiALUPA.js.map +1 -0
  47. package/dist/DashedButton-q7AOqKUE.cjs +2 -0
  48. package/dist/DashedButton-q7AOqKUE.cjs.map +1 -0
  49. package/dist/{DatePicker-WM9TC6L_.js → DatePicker-BVHriq5B.js} +4 -4
  50. package/dist/{DatePicker-WM9TC6L_.js.map → DatePicker-BVHriq5B.js.map} +1 -1
  51. package/dist/{DatePicker-DF4Epkn8.cjs → DatePicker-TLaQ3ZyB.cjs} +2 -2
  52. package/dist/{DatePicker-DF4Epkn8.cjs.map → DatePicker-TLaQ3ZyB.cjs.map} +1 -1
  53. package/dist/{DateTimePicker-DBtcWK0F.js → DateTimePicker-BWxsgyGB.js} +7 -7
  54. package/dist/{DateTimePicker-DBtcWK0F.js.map → DateTimePicker-BWxsgyGB.js.map} +1 -1
  55. package/dist/{DateTimePicker-C557OjBU.cjs → DateTimePicker-Dq2jJ2yb.cjs} +2 -2
  56. package/dist/{DateTimePicker-C557OjBU.cjs.map → DateTimePicker-Dq2jJ2yb.cjs.map} +1 -1
  57. package/dist/{Dropdown-DKAXue5_.js → Dropdown-FfkmluRu.js} +2 -2
  58. package/dist/{Dropdown-DKAXue5_.js.map → Dropdown-FfkmluRu.js.map} +1 -1
  59. package/dist/{Dropdown-DygP50OB.cjs → Dropdown-Ui7h2TGd.cjs} +2 -2
  60. package/dist/{Dropdown-DygP50OB.cjs.map → Dropdown-Ui7h2TGd.cjs.map} +1 -1
  61. package/dist/{EmptyState-CCCpZ-ZA.cjs → EmptyState-B2WgeL-H.cjs} +2 -2
  62. package/dist/{EmptyState-CCCpZ-ZA.cjs.map → EmptyState-B2WgeL-H.cjs.map} +1 -1
  63. package/dist/{EmptyState-CetM49vk.js → EmptyState-D8eUxb8v.js} +2 -2
  64. package/dist/{EmptyState-CetM49vk.js.map → EmptyState-D8eUxb8v.js.map} +1 -1
  65. package/dist/{FileUploader-VtmmwUFE.js → FileUploader-I0G-2WSe.js} +5 -5
  66. package/dist/{FileUploader-VtmmwUFE.js.map → FileUploader-I0G-2WSe.js.map} +1 -1
  67. package/dist/{FileUploader-B4TJHyoi.cjs → FileUploader-qsnWX-i5.cjs} +2 -2
  68. package/dist/{FileUploader-B4TJHyoi.cjs.map → FileUploader-qsnWX-i5.cjs.map} +1 -1
  69. package/dist/{Flag-EPZOrH-U.cjs → Flag-Bxl1Pa9m.cjs} +2 -2
  70. package/dist/{Flag-EPZOrH-U.cjs.map → Flag-Bxl1Pa9m.cjs.map} +1 -1
  71. package/dist/{Flag-BWCX6oSR.js → Flag-CvIo_Eqp.js} +2 -2
  72. package/dist/{Flag-BWCX6oSR.js.map → Flag-CvIo_Eqp.js.map} +1 -1
  73. package/dist/Flex-BFn4P1tJ.js +52 -0
  74. package/dist/Flex-BFn4P1tJ.js.map +1 -0
  75. package/dist/Flex-C6tHC8n7.cjs +2 -0
  76. package/dist/Flex-C6tHC8n7.cjs.map +1 -0
  77. package/dist/{FullscreenToggle-DDKN5n8B.cjs → FullscreenToggle-CEOkPSLp.cjs} +2 -2
  78. package/dist/{FullscreenToggle-DDKN5n8B.cjs.map → FullscreenToggle-CEOkPSLp.cjs.map} +1 -1
  79. package/dist/{FullscreenToggle-oWzYqUPH.js → FullscreenToggle-CRMGYmB8.js} +3 -3
  80. package/dist/{FullscreenToggle-oWzYqUPH.js.map → FullscreenToggle-CRMGYmB8.js.map} +1 -1
  81. package/dist/Grid-5k6dy-F5.js +26 -0
  82. package/dist/Grid-5k6dy-F5.js.map +1 -0
  83. package/dist/Grid-frN0D9lR.cjs +2 -0
  84. package/dist/Grid-frN0D9lR.cjs.map +1 -0
  85. package/dist/{IconButton-CBusrDa9.js → IconButton-BZ2jJn_T.js} +2 -2
  86. package/dist/{IconButton-CBusrDa9.js.map → IconButton-BZ2jJn_T.js.map} +1 -1
  87. package/dist/{IconButton-D6TenQZ_.cjs → IconButton-ChUfK0pG.cjs} +2 -2
  88. package/dist/{IconButton-D6TenQZ_.cjs.map → IconButton-ChUfK0pG.cjs.map} +1 -1
  89. package/dist/{List-CNz2M3-q.cjs → List-ChXO0Hz-.cjs} +2 -2
  90. package/dist/{List-CNz2M3-q.cjs.map → List-ChXO0Hz-.cjs.map} +1 -1
  91. package/dist/{List-BHgFI9Ll.js → List-LqbfF6gU.js} +2 -2
  92. package/dist/{List-BHgFI9Ll.js.map → List-LqbfF6gU.js.map} +1 -1
  93. package/dist/{ListItem-B4yqZR-Z.js → ListItem-B4Upc0Hy.js} +2 -2
  94. package/dist/{ListItem-B4yqZR-Z.js.map → ListItem-B4Upc0Hy.js.map} +1 -1
  95. package/dist/{ListItem-RH-D-Wey.cjs → ListItem-DWQorRxG.cjs} +2 -2
  96. package/dist/{ListItem-RH-D-Wey.cjs.map → ListItem-DWQorRxG.cjs.map} +1 -1
  97. package/dist/{Loader-C4JoXOyA.js → Loader-DFlpw5Zc.js} +2 -2
  98. package/dist/{Loader-C4JoXOyA.js.map → Loader-DFlpw5Zc.js.map} +1 -1
  99. package/dist/{Loader-D1MtlQOH.cjs → Loader-plA9fgHf.cjs} +2 -2
  100. package/dist/{Loader-D1MtlQOH.cjs.map → Loader-plA9fgHf.cjs.map} +1 -1
  101. package/dist/Masonry-BObKcPmo.js +82 -0
  102. package/dist/Masonry-BObKcPmo.js.map +1 -0
  103. package/dist/Masonry-BVphuk2X.cjs +2 -0
  104. package/dist/Masonry-BVphuk2X.cjs.map +1 -0
  105. package/dist/{Modal-B2YSCVVt.cjs → Modal-BaieUdge.cjs} +2 -2
  106. package/dist/{Modal-B2YSCVVt.cjs.map → Modal-BaieUdge.cjs.map} +1 -1
  107. package/dist/{Modal-BuaPDlKV.js → Modal-CRH_i5uU.js} +3 -3
  108. package/dist/{Modal-BuaPDlKV.js.map → Modal-CRH_i5uU.js.map} +1 -1
  109. package/dist/{MultiSelect-BGRT_B60.js → MultiSelect-BmkzNHTE.js} +6 -6
  110. package/dist/{MultiSelect-BGRT_B60.js.map → MultiSelect-BmkzNHTE.js.map} +1 -1
  111. package/dist/{MultiSelect-CSJKSWpA.cjs → MultiSelect-Cb-N8GIs.cjs} +2 -2
  112. package/dist/{MultiSelect-CSJKSWpA.cjs.map → MultiSelect-Cb-N8GIs.cjs.map} +1 -1
  113. package/dist/{NumberField-DBvhSQCw.js → NumberField-D71JI2Wv.js} +3 -3
  114. package/dist/{NumberField-DBvhSQCw.js.map → NumberField-D71JI2Wv.js.map} +1 -1
  115. package/dist/{NumberField-DBpO-Z_7.cjs → NumberField-DBwNn3-f.cjs} +2 -2
  116. package/dist/{NumberField-DBpO-Z_7.cjs.map → NumberField-DBwNn3-f.cjs.map} +1 -1
  117. package/dist/{OtpField-BUBYyorC.cjs → OtpField-C-SiHxKa.cjs} +2 -2
  118. package/dist/{OtpField-BUBYyorC.cjs.map → OtpField-C-SiHxKa.cjs.map} +1 -1
  119. package/dist/{OtpField-CTq-CUbF.js → OtpField-DOz-JmuX.js} +2 -2
  120. package/dist/{OtpField-CTq-CUbF.js.map → OtpField-DOz-JmuX.js.map} +1 -1
  121. package/dist/{PageLayout-DddzYw2B.js → PageLayout-BIdgUKsN.js} +2 -2
  122. package/dist/{PageLayout-DddzYw2B.js.map → PageLayout-BIdgUKsN.js.map} +1 -1
  123. package/dist/{PageLayout-Dfbjw6jD.cjs → PageLayout-qF5ThZKO.cjs} +2 -2
  124. package/dist/{PageLayout-Dfbjw6jD.cjs.map → PageLayout-qF5ThZKO.cjs.map} +1 -1
  125. package/dist/PageNotFound-CsgH9tY0.js +39 -0
  126. package/dist/PageNotFound-CsgH9tY0.js.map +1 -0
  127. package/dist/PageNotFound-DObWgQ0Z.cjs +2 -0
  128. package/dist/PageNotFound-DObWgQ0Z.cjs.map +1 -0
  129. package/dist/{Pagination-CN9V8M5C.js → Pagination-Kj7ZDi3N.js} +2 -2
  130. package/dist/{Pagination-CN9V8M5C.js.map → Pagination-Kj7ZDi3N.js.map} +1 -1
  131. package/dist/{Pagination-DRwTLPh8.cjs → Pagination-S3hENjDy.cjs} +2 -2
  132. package/dist/{Pagination-DRwTLPh8.cjs.map → Pagination-S3hENjDy.cjs.map} +1 -1
  133. package/dist/{RemoveDialog-ClyZKyUG.cjs → RemoveDialog-BZ0gUf1p.cjs} +2 -2
  134. package/dist/{RemoveDialog-ClyZKyUG.cjs.map → RemoveDialog-BZ0gUf1p.cjs.map} +1 -1
  135. package/dist/{RemoveDialog-Bvt6sH79.js → RemoveDialog-D9a0GttZ.js} +4 -4
  136. package/dist/{RemoveDialog-Bvt6sH79.js.map → RemoveDialog-D9a0GttZ.js.map} +1 -1
  137. package/dist/{RichTextEditor-CAYt1Zm1.cjs → RichTextEditor-BX6twJ9D.cjs} +2 -2
  138. package/dist/{RichTextEditor-CAYt1Zm1.cjs.map → RichTextEditor-BX6twJ9D.cjs.map} +1 -1
  139. package/dist/{RichTextEditor-BTx8Py3I.js → RichTextEditor-D05Czeif.js} +9 -9
  140. package/dist/{RichTextEditor-BTx8Py3I.js.map → RichTextEditor-D05Czeif.js.map} +1 -1
  141. package/dist/RootLayout-BR_pPr3d.cjs +2 -0
  142. package/dist/RootLayout-BR_pPr3d.cjs.map +1 -0
  143. package/dist/{RootLayout-DCpfuFWF.js → RootLayout-CgI03ZNA.js} +16 -16
  144. package/dist/RootLayout-CgI03ZNA.js.map +1 -0
  145. package/dist/{Select-PbTyxB1Q.js → Select-BZPA2Ytp.js} +5 -5
  146. package/dist/{Select-PbTyxB1Q.js.map → Select-BZPA2Ytp.js.map} +1 -1
  147. package/dist/{Select-_6WogC0u.cjs → Select-Dpl8dq_9.cjs} +2 -2
  148. package/dist/{Select-_6WogC0u.cjs.map → Select-Dpl8dq_9.cjs.map} +1 -1
  149. package/dist/{Sidebar-AaIlRzgk.cjs → Sidebar-6SAObU0u.cjs} +2 -2
  150. package/dist/{Sidebar-AaIlRzgk.cjs.map → Sidebar-6SAObU0u.cjs.map} +1 -1
  151. package/dist/{Sidebar-DRCs2ygZ.js → Sidebar-DEBW6lDA.js} +7 -5
  152. package/dist/{Sidebar-DRCs2ygZ.js.map → Sidebar-DEBW6lDA.js.map} +1 -1
  153. package/dist/{SpeedDial-DgFj16BQ.js → SpeedDial-C3PnANAx.js} +2 -2
  154. package/dist/{SpeedDial-DgFj16BQ.js.map → SpeedDial-C3PnANAx.js.map} +1 -1
  155. package/dist/{SpeedDial-C4jxIXTr.cjs → SpeedDial-Dex0rF2z.cjs} +2 -2
  156. package/dist/{SpeedDial-C4jxIXTr.cjs.map → SpeedDial-Dex0rF2z.cjs.map} +1 -1
  157. package/dist/{Stepper-COKAyN1L.js → Stepper-0e90ZJaw.js} +2 -2
  158. package/dist/{Stepper-COKAyN1L.js.map → Stepper-0e90ZJaw.js.map} +1 -1
  159. package/dist/{Stepper-7pPEBRLI.cjs → Stepper-yKwUaxOU.cjs} +2 -2
  160. package/dist/{Stepper-7pPEBRLI.cjs.map → Stepper-yKwUaxOU.cjs.map} +1 -1
  161. package/dist/{Table-BeOumGng.cjs → Table-BekBXEnW.cjs} +2 -2
  162. package/dist/{Table-BeOumGng.cjs.map → Table-BekBXEnW.cjs.map} +1 -1
  163. package/dist/{Table-BjPLvMbf.js → Table-KEOUL2u3.js} +174 -174
  164. package/dist/{Table-BjPLvMbf.js.map → Table-KEOUL2u3.js.map} +1 -1
  165. package/dist/{Tabs--DDM-zKe.js → Tabs-BHk2B50R.js} +2 -2
  166. package/dist/{Tabs--DDM-zKe.js.map → Tabs-BHk2B50R.js.map} +1 -1
  167. package/dist/{Tabs-BZcMnjdC.cjs → Tabs-DYUS945Y.cjs} +2 -2
  168. package/dist/{Tabs-BZcMnjdC.cjs.map → Tabs-DYUS945Y.cjs.map} +1 -1
  169. package/dist/{TagsField-BTJcZS9P.js → TagsField-BkC5OmIT.js} +4 -4
  170. package/dist/{TagsField-BTJcZS9P.js.map → TagsField-BkC5OmIT.js.map} +1 -1
  171. package/dist/{TagsField-kknWiJZZ.cjs → TagsField-DKh9SbG5.cjs} +2 -2
  172. package/dist/{TagsField-kknWiJZZ.cjs.map → TagsField-DKh9SbG5.cjs.map} +1 -1
  173. package/dist/{TextField-DMI1X09n.js → TextField-12HcFD7u.js} +3 -3
  174. package/dist/{TextField-DMI1X09n.js.map → TextField-12HcFD7u.js.map} +1 -1
  175. package/dist/{TextField-BPefnD5M.cjs → TextField-C9cPPP-B.cjs} +2 -2
  176. package/dist/{TextField-BPefnD5M.cjs.map → TextField-C9cPPP-B.cjs.map} +1 -1
  177. package/dist/{ThemeToggle-DTal3RX5.cjs → ThemeToggle-DIXVvqZ7.cjs} +2 -2
  178. package/dist/{ThemeToggle-DTal3RX5.cjs.map → ThemeToggle-DIXVvqZ7.cjs.map} +1 -1
  179. package/dist/{ThemeToggle-Deh9j8pm.js → ThemeToggle-DUtDXl1Z.js} +3 -3
  180. package/dist/{ThemeToggle-Deh9j8pm.js.map → ThemeToggle-DUtDXl1Z.js.map} +1 -1
  181. package/dist/{TimeColumns-BCNmu4b_.js → TimeColumns-BLhP81oI.js} +2 -2
  182. package/dist/{TimeColumns-BCNmu4b_.js.map → TimeColumns-BLhP81oI.js.map} +1 -1
  183. package/dist/{TimeColumns-Duh4DcYJ.cjs → TimeColumns-CgjyPGjs.cjs} +2 -2
  184. package/dist/{TimeColumns-Duh4DcYJ.cjs.map → TimeColumns-CgjyPGjs.cjs.map} +1 -1
  185. package/dist/{TimePicker-3JgvK2on.js → TimePicker-CJWjGVqT.js} +5 -5
  186. package/dist/{TimePicker-3JgvK2on.js.map → TimePicker-CJWjGVqT.js.map} +1 -1
  187. package/dist/{TimePicker-CfGrCH9T.cjs → TimePicker-CNAXFtJa.cjs} +2 -2
  188. package/dist/{TimePicker-CfGrCH9T.cjs.map → TimePicker-CNAXFtJa.cjs.map} +1 -1
  189. package/dist/{Toaster-D-eG1xv7.js → Toaster-B3Mut6eM.js} +2 -2
  190. package/dist/{Toaster-D-eG1xv7.js.map → Toaster-B3Mut6eM.js.map} +1 -1
  191. package/dist/{Toaster-Bk5GtPjX.cjs → Toaster-CYt_Hvlh.cjs} +2 -2
  192. package/dist/{Toaster-Bk5GtPjX.cjs.map → Toaster-CYt_Hvlh.cjs.map} +1 -1
  193. package/dist/{TranslatedFields-CI0F9bHw.js → TranslatedFields-BEaS1esD.js} +3 -3
  194. package/dist/{TranslatedFields-CI0F9bHw.js.map → TranslatedFields-BEaS1esD.js.map} +1 -1
  195. package/dist/{TranslatedFields-DT3bYse6.cjs → TranslatedFields-DshwXj6d.cjs} +2 -2
  196. package/dist/{TranslatedFields-DT3bYse6.cjs.map → TranslatedFields-DshwXj6d.cjs.map} +1 -1
  197. package/dist/{UserCard-BhqtX1vU.js → UserCard-Dve-LOSB.js} +3 -3
  198. package/dist/{UserCard-BhqtX1vU.js.map → UserCard-Dve-LOSB.js.map} +1 -1
  199. package/dist/{UserCard-OlLeyyS0.cjs → UserCard-sIguy8Jp.cjs} +2 -2
  200. package/dist/{UserCard-OlLeyyS0.cjs.map → UserCard-sIguy8Jp.cjs.map} +1 -1
  201. package/dist/breakpoints-BbDakdqF.js +50 -0
  202. package/dist/breakpoints-BbDakdqF.js.map +1 -0
  203. package/dist/breakpoints-Dpnh6BbG.cjs +2 -0
  204. package/dist/breakpoints-Dpnh6BbG.cjs.map +1 -0
  205. package/dist/components/Alert/index.cjs +1 -1
  206. package/dist/components/Alert/index.js +1 -1
  207. package/dist/components/Breadcrumbs/index.cjs +1 -1
  208. package/dist/components/Breadcrumbs/index.js +1 -1
  209. package/dist/components/Button/index.cjs +1 -1
  210. package/dist/components/Button/index.js +1 -1
  211. package/dist/components/Card/index.cjs +1 -1
  212. package/dist/components/Card/index.js +1 -1
  213. package/dist/components/Chip/index.cjs +1 -1
  214. package/dist/components/Chip/index.js +1 -1
  215. package/dist/components/CodeBlock/index.cjs +1 -1
  216. package/dist/components/CodeBlock/index.js +1 -1
  217. package/dist/components/ColorPicker/index.cjs +1 -1
  218. package/dist/components/ColorPicker/index.js +1 -1
  219. package/dist/components/DashedButton/DashedButton.d.cts +33 -0
  220. package/dist/components/DashedButton/DashedButton.d.ts +33 -0
  221. package/dist/components/DashedButton/index.cjs +2 -0
  222. package/dist/components/DashedButton/index.cjs.map +1 -0
  223. package/dist/components/DashedButton/index.d.cts +2 -0
  224. package/dist/components/DashedButton/index.d.ts +2 -0
  225. package/dist/components/DashedButton/index.js +6 -0
  226. package/dist/components/DashedButton/index.js.map +1 -0
  227. package/dist/components/DatePicker/index.cjs +1 -1
  228. package/dist/components/DatePicker/index.js +1 -1
  229. package/dist/components/DateTimePicker/index.cjs +1 -1
  230. package/dist/components/DateTimePicker/index.js +1 -1
  231. package/dist/components/Dropdown/index.cjs +1 -1
  232. package/dist/components/Dropdown/index.js +1 -1
  233. package/dist/components/EmptyState/index.cjs +1 -1
  234. package/dist/components/EmptyState/index.js +1 -1
  235. package/dist/components/FileUploader/index.cjs +1 -1
  236. package/dist/components/FileUploader/index.js +1 -1
  237. package/dist/components/Flag/index.cjs +1 -1
  238. package/dist/components/Flag/index.js +1 -1
  239. package/dist/components/Flex/Flex.d.cts +16 -13
  240. package/dist/components/Flex/Flex.d.ts +16 -13
  241. package/dist/components/Flex/Grid.d.cts +11 -9
  242. package/dist/components/Flex/Grid.d.ts +11 -9
  243. package/dist/components/Flex/index.cjs +1 -1
  244. package/dist/components/Flex/index.js +3 -3
  245. package/dist/components/FullscreenToggle/index.cjs +1 -1
  246. package/dist/components/FullscreenToggle/index.js +1 -1
  247. package/dist/components/IconButton/index.cjs +1 -1
  248. package/dist/components/IconButton/index.js +1 -1
  249. package/dist/components/List/index.cjs +1 -1
  250. package/dist/components/List/index.js +2 -2
  251. package/dist/components/Loader/index.cjs +1 -1
  252. package/dist/components/Loader/index.js +1 -1
  253. package/dist/components/Masonry/Masonry.d.cts +11 -11
  254. package/dist/components/Masonry/Masonry.d.ts +11 -11
  255. package/dist/components/Masonry/index.cjs +1 -1
  256. package/dist/components/Masonry/index.js +1 -1
  257. package/dist/components/Modal/index.cjs +1 -1
  258. package/dist/components/Modal/index.js +1 -1
  259. package/dist/components/MultiSelect/index.cjs +1 -1
  260. package/dist/components/MultiSelect/index.js +1 -1
  261. package/dist/components/NumberField/index.cjs +1 -1
  262. package/dist/components/NumberField/index.js +1 -1
  263. package/dist/components/OtpField/index.cjs +1 -1
  264. package/dist/components/OtpField/index.js +1 -1
  265. package/dist/components/PageLayout/index.cjs +1 -1
  266. package/dist/components/PageLayout/index.js +1 -1
  267. package/dist/components/PageNotFound/PageNotFound.d.cts +34 -0
  268. package/dist/components/PageNotFound/PageNotFound.d.ts +34 -0
  269. package/dist/components/PageNotFound/index.cjs +2 -0
  270. package/dist/components/PageNotFound/index.cjs.map +1 -0
  271. package/dist/components/PageNotFound/index.d.cts +2 -0
  272. package/dist/components/PageNotFound/index.d.ts +2 -0
  273. package/dist/components/PageNotFound/index.js +6 -0
  274. package/dist/components/PageNotFound/index.js.map +1 -0
  275. package/dist/components/Pagination/index.cjs +1 -1
  276. package/dist/components/Pagination/index.js +1 -1
  277. package/dist/components/RemoveDialog/index.cjs +1 -1
  278. package/dist/components/RemoveDialog/index.js +1 -1
  279. package/dist/components/RichTextEditor/index.cjs +1 -1
  280. package/dist/components/RichTextEditor/index.js +1 -1
  281. package/dist/components/RootLayout/index.cjs +1 -1
  282. package/dist/components/RootLayout/index.js +1 -1
  283. package/dist/components/Select/index.cjs +1 -1
  284. package/dist/components/Select/index.js +1 -1
  285. package/dist/components/Sidebar/index.cjs +1 -1
  286. package/dist/components/Sidebar/index.js +1 -1
  287. package/dist/components/SpeedDial/index.cjs +1 -1
  288. package/dist/components/SpeedDial/index.js +1 -1
  289. package/dist/components/Stepper/index.cjs +1 -1
  290. package/dist/components/Stepper/index.js +1 -1
  291. package/dist/components/Table/index.cjs +1 -1
  292. package/dist/components/Table/index.js +1 -1
  293. package/dist/components/Tabs/index.cjs +1 -1
  294. package/dist/components/Tabs/index.js +1 -1
  295. package/dist/components/TagsField/index.cjs +1 -1
  296. package/dist/components/TagsField/index.js +1 -1
  297. package/dist/components/TextField/index.cjs +1 -1
  298. package/dist/components/TextField/index.js +1 -1
  299. package/dist/components/ThemeToggle/index.cjs +1 -1
  300. package/dist/components/ThemeToggle/index.js +1 -1
  301. package/dist/components/TimePicker/index.cjs +1 -1
  302. package/dist/components/TimePicker/index.js +1 -1
  303. package/dist/components/Toast/index.cjs +1 -1
  304. package/dist/components/Toast/index.js +1 -1
  305. package/dist/components/TranslatedFields/index.cjs +1 -1
  306. package/dist/components/TranslatedFields/index.js +1 -1
  307. package/dist/components/UserCard/index.cjs +1 -1
  308. package/dist/components/UserCard/index.js +1 -1
  309. package/dist/components/index.d.cts +2 -0
  310. package/dist/components/index.d.ts +2 -0
  311. package/dist/entries/components.cjs +1 -1
  312. package/dist/entries/components.js +130 -126
  313. package/dist/entries/components.js.map +1 -1
  314. package/dist/entries/hooks.cjs +1 -1
  315. package/dist/entries/hooks.d.cts +1 -1
  316. package/dist/entries/hooks.d.ts +1 -1
  317. package/dist/entries/hooks.js +4 -3
  318. package/dist/entries/i18n.cjs +1 -1
  319. package/dist/entries/i18n.js +2 -2
  320. package/dist/entries/theme.cjs +1 -1
  321. package/dist/entries/theme.d.cts +2 -2
  322. package/dist/entries/theme.d.ts +2 -2
  323. package/dist/entries/theme.js +16 -14
  324. package/dist/hooks/index.d.cts +1 -1
  325. package/dist/hooks/index.d.ts +1 -1
  326. package/dist/hooks/useMediaQuery.d.cts +21 -8
  327. package/dist/hooks/useMediaQuery.d.ts +21 -8
  328. package/dist/i18n/messages.d.cts +3 -0
  329. package/dist/i18n/messages.d.ts +3 -0
  330. package/dist/index.cjs +1 -1
  331. package/dist/index.css +1 -1
  332. package/dist/index.js +183 -176
  333. package/dist/index.js.map +1 -1
  334. package/dist/messages-BJiUtJ2E.cjs +36 -0
  335. package/dist/messages-BJiUtJ2E.cjs.map +1 -0
  336. package/dist/{messages-C-zecFBE.js → messages-CVISEA5N.js} +37 -16
  337. package/dist/messages-CVISEA5N.js.map +1 -0
  338. package/dist/theme/ConfigProvider.d.cts +9 -0
  339. package/dist/theme/ConfigProvider.d.ts +9 -0
  340. package/dist/theme/breakpoints.d.cts +48 -13
  341. package/dist/theme/breakpoints.d.ts +48 -13
  342. package/dist/theme/index.d.cts +2 -2
  343. package/dist/theme/index.d.ts +2 -2
  344. package/dist/useMediaQuery-CHMrI6Dy.cjs +2 -0
  345. package/dist/useMediaQuery-CHMrI6Dy.cjs.map +1 -0
  346. package/dist/useMediaQuery-DrDUrkmJ.js +32 -0
  347. package/dist/useMediaQuery-DrDUrkmJ.js.map +1 -0
  348. package/package.json +1 -1
  349. package/dist/ConfigProvider-2c94kUOk.js +0 -291
  350. package/dist/ConfigProvider-2c94kUOk.js.map +0 -1
  351. package/dist/ConfigProvider-ByOFXVyP.cjs +0 -2
  352. package/dist/ConfigProvider-ByOFXVyP.cjs.map +0 -1
  353. package/dist/Flex-Bj3mMF5A.js +0 -50
  354. package/dist/Flex-Bj3mMF5A.js.map +0 -1
  355. package/dist/Flex-CqL3Ghda.cjs +0 -2
  356. package/dist/Flex-CqL3Ghda.cjs.map +0 -1
  357. package/dist/Grid-Bw95bKkJ.cjs +0 -2
  358. package/dist/Grid-Bw95bKkJ.cjs.map +0 -1
  359. package/dist/Grid-CY-syhTX.js +0 -24
  360. package/dist/Grid-CY-syhTX.js.map +0 -1
  361. package/dist/Masonry-BTvtDdnt.js +0 -104
  362. package/dist/Masonry-BTvtDdnt.js.map +0 -1
  363. package/dist/Masonry-Bl1Mlzqw.cjs +0 -2
  364. package/dist/Masonry-Bl1Mlzqw.cjs.map +0 -1
  365. package/dist/RootLayout-Cp-9CVjP.cjs +0 -2
  366. package/dist/RootLayout-Cp-9CVjP.cjs.map +0 -1
  367. package/dist/RootLayout-DCpfuFWF.js.map +0 -1
  368. package/dist/breakpoints-BNPC2_Te.cjs +0 -2
  369. package/dist/breakpoints-BNPC2_Te.cjs.map +0 -1
  370. package/dist/breakpoints-o3dzSzrU.js +0 -12
  371. package/dist/breakpoints-o3dzSzrU.js.map +0 -1
  372. package/dist/messages-C-zecFBE.js.map +0 -1
  373. package/dist/messages-Cy-qK5xU.cjs +0 -36
  374. package/dist/messages-Cy-qK5xU.cjs.map +0 -1
  375. package/dist/useMediaQuery-BCsNfMA1.cjs +0 -2
  376. package/dist/useMediaQuery-BCsNfMA1.cjs.map +0 -1
  377. package/dist/useMediaQuery-_1EcFoC5.js +0 -17
  378. package/dist/useMediaQuery-_1EcFoC5.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages-CVISEA5N.js","sources":["../src/i18n/locales/en.ts","../src/i18n/locales/ka.ts","../src/i18n/locales/es.ts","../src/i18n/locales/de.ts","../src/i18n/locales/it.ts","../src/i18n/locales/fr.ts","../src/i18n/locales/ru.ts","../src/i18n/messages.ts"],"sourcesContent":["import type { Messages } from '../messages'\n\n/**\n * English — the **complete** baseline every other language falls back to, per key. When you add a new\n * key to the `Messages` interface (in `../messages`), fill it here first; the type makes this file the\n * one catalog that must stay exhaustive (the others are `Partial` and fall back here).\n */\nexport const EN_MESSAGES: Messages = {\n 'common.close': 'Close',\n 'common.cancel': 'Cancel',\n 'common.confirm': 'Confirm',\n 'common.delete': 'Delete',\n 'common.remove': 'Remove',\n 'common.loading': 'Loading…',\n 'common.clear': 'Clear',\n 'common.apply': 'Apply',\n 'common.search': 'Search…',\n 'common.all': 'All',\n 'common.any': 'Any',\n 'common.yes': 'Yes',\n 'common.no': 'No',\n 'common.save': 'Save',\n 'common.insert': 'Insert',\n 'common.update': 'Update',\n 'common.done': 'Done',\n 'common.min': 'Min',\n 'common.max': 'Max',\n 'common.from': 'From',\n 'common.to': 'To',\n 'select.placeholder': 'Select…',\n 'select.noOptions': 'No options',\n 'select.clear': 'Clear selection',\n 'multiSelect.clearAll': 'Clear all',\n 'pagination.previous': 'Go to previous page',\n 'pagination.next': 'Go to next page',\n 'pagination.first': 'Go to first page',\n 'pagination.last': 'Go to last page',\n 'pagination.page': 'Go to page {page}',\n 'emptyState.title': 'No Results Found',\n 'notFound.title': 'Page Not Found',\n 'notFound.description': \"The page you're looking for doesn't exist or may have moved.\",\n 'notFound.action': 'Back to Home',\n 'userCard.signOut': 'Sign out',\n 'textField.fieldAction': 'Field action',\n 'textField.showPassword': 'Show password',\n 'textField.hidePassword': 'Hide password',\n 'textField.capsLock': 'Caps Lock is on',\n 'textField.strengthWeak': 'Weak',\n 'textField.strengthMedium': 'Medium',\n 'textField.strengthStrong': 'Strong',\n 'numberField.decrease': 'Decrease',\n 'numberField.increase': 'Increase',\n 'otpField.digit': 'Digit {index} of {total}',\n 'breadcrumbs.label': 'Breadcrumb',\n 'breadcrumbs.home': 'Home',\n 'themeToggle.label': 'Toggle color theme',\n 'fullscreenToggle.label': 'Toggle fullscreen',\n 'loader.label': 'Loading',\n 'tagsField.add': 'Add tag',\n 'removeDialog.title': 'Remove',\n 'removeDialog.message': 'Are you sure you want to delete?',\n 'colorPicker.pick': 'Pick a color',\n 'colorPicker.value': 'Color value',\n 'colorPicker.noColor': 'No color',\n 'colorPicker.saturation': 'Saturation and brightness',\n 'colorPicker.hue': 'Hue',\n 'colorPicker.opacity': 'Opacity',\n 'datePicker.clear': 'Clear date',\n 'datePicker.open': 'Open calendar',\n 'calendar.prevMonth': 'Previous month',\n 'calendar.nextMonth': 'Next month',\n 'timePicker.clear': 'Clear time',\n 'timePicker.open': 'Open time picker',\n 'dateTimePicker.clear': 'Clear value',\n 'dateTimePicker.open': 'Open date and time picker',\n 'dateTimePicker.label': 'Date and time',\n 'dateTimePicker.dateTab': 'Date',\n 'dateTimePicker.timeTab': 'Time',\n 'table.export': 'Export',\n 'table.sendOnEmail': 'Send On Email',\n 'table.sort': 'Sort',\n 'table.sortBy': 'Sort By',\n 'table.filters': 'Filters',\n 'table.filtersDescription': 'Narrow the table by the fields below.',\n 'table.dragHandle': 'Drag to reorder',\n 'table.range': '{from}–{to} of {total}',\n 'table.rowsPerPage': 'Rows per page',\n 'calendar.month0': 'January',\n 'calendar.month1': 'February',\n 'calendar.month2': 'March',\n 'calendar.month3': 'April',\n 'calendar.month4': 'May',\n 'calendar.month5': 'June',\n 'calendar.month6': 'July',\n 'calendar.month7': 'August',\n 'calendar.month8': 'September',\n 'calendar.month9': 'October',\n 'calendar.month10': 'November',\n 'calendar.month11': 'December',\n 'calendar.weekday0': 'Su',\n 'calendar.weekday1': 'Mo',\n 'calendar.weekday2': 'Tu',\n 'calendar.weekday3': 'We',\n 'calendar.weekday4': 'Th',\n 'calendar.weekday5': 'Fr',\n 'calendar.weekday6': 'Sa',\n 'calendar.selectYear': 'Select year',\n 'time.hour': 'Hour',\n 'time.minute': 'Minute',\n 'time.second': 'Second',\n 'time.meridiem': 'AM/PM',\n 'time.am': 'AM',\n 'time.pm': 'PM',\n 'settings.themeTitle': 'Theme',\n 'settings.themeDesc': 'Switch between the light and dark theme.',\n 'settings.light': 'Light',\n 'settings.lightDesc': 'Bright theme',\n 'settings.dark': 'Dark',\n 'settings.darkDesc': 'Dim theme',\n 'settings.languageDesc': 'Choose the admin panel language — saved for next time.',\n 'settings.accentTitle': 'Accent Color',\n 'settings.accentDesc':\n \"Pick an accent for each theme — it's saved and restored next time you open the panel.\",\n 'settings.lightTheme': 'Light theme',\n 'settings.darkTheme': 'Dark theme',\n 'settings.accentDefault': 'Default ({color})',\n 'settings.fontTitle': 'Font',\n 'settings.fontDesc':\n 'Pick a preset or type any Google Font — applied app-wide and saved for next time.',\n 'settings.fontFamily': 'Font family',\n 'settings.fontSearch': 'Search or type any Google Font…',\n 'settings.fontDefault': '{font} (Default)',\n 'settings.headerTitle': 'Header',\n 'settings.headerDesc':\n 'Keep the header fixed on scroll, or let it scroll away — saved for next time.',\n 'settings.scrollable': 'Scrollable',\n 'settings.scrollableDesc': 'Scrolls away',\n 'settings.fixed': 'Fixed',\n 'settings.fixedDesc': 'Stays on scroll',\n 'rte.placeholder': 'Write something…',\n 'rte.formatting': 'Formatting',\n 'rte.undo': 'Undo',\n 'rte.redo': 'Redo',\n 'rte.fontSize': 'Font size',\n 'rte.textColor': 'Text color',\n 'rte.bold': 'Bold',\n 'rte.italic': 'Italic',\n 'rte.underline': 'Underline',\n 'rte.bulletList': 'Bullet list',\n 'rte.numberedList': 'Numbered list',\n 'rte.quote': 'Quote',\n 'rte.alignLeft': 'Align left',\n 'rte.alignCenter': 'Align center',\n 'rte.alignRight': 'Align right',\n 'rte.link': 'Insert link',\n 'rte.insertImage': 'Insert image',\n 'rte.insertVideo': 'Insert video',\n 'rte.uploadImage': 'Upload image',\n 'rte.imageByUrl': 'By URL',\n 'rte.imageError': 'Could not add the image. Please try again.',\n 'rte.linkTitle': 'Insert Link',\n 'rte.linkUrl': 'Link URL',\n 'rte.imageTitle': 'Insert Image',\n 'rte.imageUrl': 'Image URL',\n 'rte.videoTitle': 'Insert Video',\n 'rte.videoUrl': 'Video URL',\n 'rte.videoUrlPlaceholder': 'YouTube, Vimeo, or a direct file URL',\n 'rte.embeddedVideo': 'Embedded video',\n 'fileUploader.choose': 'Choose a file',\n 'fileUploader.dropSuffix': 'or drag & drop it here',\n 'fileUploader.uploaded': 'Uploaded',\n 'fileUploader.hintUpToOne': 'Up to {count} file',\n 'fileUploader.hintUpToMany': 'Up to {count} files',\n 'fileUploader.hintMax': 'Max {size} each',\n 'fileUploader.exceedsLimit': 'Exceeds {size} limit',\n 'fileUploader.download': 'Download {name}',\n 'fileUploader.remove': 'Remove {name}',\n 'fileUploader.crop': 'Crop {name}',\n 'fileUploader.editAlt': 'Edit alt text for {name}',\n 'fileUploader.preview': 'Preview {name}',\n 'fileUploader.closePreview': 'Close preview',\n 'fileUploader.duplicate': 'Some files are already added',\n 'fileUploader.wrongTypeOne': '\"{name}\" has an unsupported file type',\n 'fileUploader.wrongTypeMany': '{count} files have an unsupported type',\n 'fileUploader.tooLargeOne': '\"{name}\" exceeds the {size} limit',\n 'fileUploader.tooLargeMany': '{count} files exceed the {size} limit',\n 'fileUploader.cropTitle': 'Crop image',\n 'fileUploader.altTitle': 'Alt text',\n 'fileUploader.cropHint': 'Drag to select the area to keep',\n 'fileUploader.altPlaceholder': 'Describe the image for screen readers…',\n 'fileUploader.cropError':\n 'Couldn’t crop this image — it may be served cross-origin without CORS.',\n 'codeBlock.copy': 'Copy code',\n 'codeBlock.copied': 'Copied!',\n 'sidebar.searchPages': 'Search pages',\n 'account.label': 'Account',\n 'settings.label': 'Settings',\n 'language.label': 'Language',\n}\n\n/** Flag for the English (US) UI language — rendered beside the language in the header switcher. */\nexport const EN_FLAG = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 480\">\n <path fill=\"#bd3d44\" d=\"M0 0h640v480H0\"/>\n <path stroke=\"#fff\" stroke-width=\"37\" d=\"M0 55.3h640M0 129h640M0 203h640M0 277h640M0 351h640M0 425h640\"/>\n <path fill=\"#192f5d\" d=\"M0 0h364.8v258.5H0\"/>\n <marker id=\"us-a\" markerHeight=\"30\" markerWidth=\"30\">\n <path fill=\"#fff\" d=\"m14 0 9 27L0 10h28L5 27z\"/>\n </marker>\n <path fill=\"none\" marker-mid=\"url(#us-a)\" d=\"m0 0 16 11h61 61 61 61 60L47 37h61 61 60 61L16 63h61 61 61 61 60L47 89h61 61 60 61L16 115h61 61 61 61 60L47 141h61 61 60 61L16 166h61 61 61 61 60L47 192h61 61 60 61L16 218h61 61 61 61 60z\"/>\n</svg>`\n","import type { MessageCatalog } from '../messages'\n\n/**\n * Georgian — shipped built-in (the maintainer's language). A `MessageCatalog` (`Partial<Messages>`),\n * so any key it omits falls back to English (`en.ts`) at resolve time.\n */\nexport const KA_MESSAGES: MessageCatalog = {\n 'common.close': 'დახურვა',\n 'common.cancel': 'გაუქმება',\n 'common.confirm': 'დადასტურება',\n 'common.delete': 'წაშლა',\n 'common.remove': 'მოცილება',\n 'common.loading': 'იტვირთება…',\n 'common.clear': 'გასუფთავება',\n 'common.apply': 'გამოყენება',\n 'common.search': 'ძებნა…',\n 'common.all': 'ყველა',\n 'common.any': 'ნებისმიერი',\n 'common.yes': 'დიახ',\n 'common.no': 'არა',\n 'common.save': 'შენახვა',\n 'common.insert': 'ჩასმა',\n 'common.update': 'განახლება',\n 'common.done': 'მზადაა',\n 'common.min': 'მინ.',\n 'common.max': 'მაქს.',\n 'common.from': 'დან',\n 'common.to': 'მდე',\n 'select.placeholder': 'აირჩიეთ…',\n 'select.noOptions': 'ვარიანტები არ არის',\n 'select.clear': 'არჩევანის გასუფთავება',\n 'multiSelect.clearAll': 'ყველას გასუფთავება',\n 'pagination.previous': 'წინა გვერდი',\n 'pagination.next': 'შემდეგი გვერდი',\n 'pagination.first': 'პირველი გვერდი',\n 'pagination.last': 'ბოლო გვერდი',\n 'pagination.page': 'გვერდი {page}',\n 'emptyState.title': 'შედეგები ვერ მოიძებნა',\n 'notFound.title': 'გვერდი ვერ მოიძებნა',\n 'notFound.description': 'თქვენ მიერ მოთხოვნილი გვერდი არ არსებობს ან გადატანილია.',\n 'notFound.action': 'მთავარ გვერდზე დაბრუნება',\n 'userCard.signOut': 'გასვლა',\n 'textField.fieldAction': 'ველის მოქმედება',\n 'textField.showPassword': 'პაროლის ჩვენება',\n 'textField.hidePassword': 'პაროლის დამალვა',\n 'textField.capsLock': 'Caps Lock ჩართულია',\n 'textField.strengthWeak': 'სუსტი',\n 'textField.strengthMedium': 'საშუალო',\n 'textField.strengthStrong': 'ძლიერი',\n 'numberField.decrease': 'შემცირება',\n 'numberField.increase': 'გაზრდა',\n 'otpField.digit': 'ციფრი {index} / {total}',\n 'breadcrumbs.label': 'ნავიგაცია',\n 'breadcrumbs.home': 'მთავარი',\n 'themeToggle.label': 'თემის გადართვა',\n 'fullscreenToggle.label': 'სრულ ეკრანზე გადართვა',\n 'loader.label': 'იტვირთება',\n 'tagsField.add': 'ჭდის დამატება',\n 'removeDialog.title': 'წაშლა',\n 'removeDialog.message': 'დარწმუნებული ხართ, რომ გსურთ წაშლა?',\n 'colorPicker.pick': 'აირჩიეთ ფერი',\n 'colorPicker.value': 'ფერის მნიშვნელობა',\n 'colorPicker.noColor': 'ფერის გარეშე',\n 'colorPicker.saturation': 'გაჯერება და სიკაშკაშე',\n 'colorPicker.hue': 'ტონი',\n 'colorPicker.opacity': 'გამჭვირვალობა',\n 'datePicker.clear': 'თარიღის გასუფთავება',\n 'datePicker.open': 'კალენდრის გახსნა',\n 'calendar.prevMonth': 'წინა თვე',\n 'calendar.nextMonth': 'შემდეგი თვე',\n 'timePicker.clear': 'დროის გასუფთავება',\n 'timePicker.open': 'დროის ამრჩევის გახსნა',\n 'dateTimePicker.clear': 'მნიშვნელობის გასუფთავება',\n 'dateTimePicker.open': 'თარიღისა და დროის ამრჩევის გახსნა',\n 'dateTimePicker.label': 'თარიღი და დრო',\n 'dateTimePicker.dateTab': 'თარიღი',\n 'dateTimePicker.timeTab': 'დრო',\n 'table.export': 'ექსპორტი',\n 'table.sendOnEmail': 'ელფოსტაზე გაგზავნა',\n 'table.sort': 'დახარისხება',\n 'table.sortBy': 'დახარისხება',\n 'table.filters': 'ფილტრები',\n 'table.filtersDescription': 'დაფილტრეთ ცხრილი ქვემოთ მოცემული ველებით.',\n 'table.dragHandle': 'გადასათრევად ჩავიჭიდე',\n 'table.range': '{from}–{to} / {total}',\n 'table.rowsPerPage': 'სტრიქონი გვერდზე',\n 'calendar.month0': 'იანვარი',\n 'calendar.month1': 'თებერვალი',\n 'calendar.month2': 'მარტი',\n 'calendar.month3': 'აპრილი',\n 'calendar.month4': 'მაისი',\n 'calendar.month5': 'ივნისი',\n 'calendar.month6': 'ივლისი',\n 'calendar.month7': 'აგვისტო',\n 'calendar.month8': 'სექტემბერი',\n 'calendar.month9': 'ოქტომბერი',\n 'calendar.month10': 'ნოემბერი',\n 'calendar.month11': 'დეკემბერი',\n 'calendar.weekday0': 'კვ',\n 'calendar.weekday1': 'ორ',\n 'calendar.weekday2': 'სა',\n 'calendar.weekday3': 'ოთ',\n 'calendar.weekday4': 'ხუ',\n 'calendar.weekday5': 'პა',\n 'calendar.weekday6': 'შა',\n 'calendar.selectYear': 'აირჩიეთ წელი',\n 'time.hour': 'საათი',\n 'time.minute': 'წუთი',\n 'time.second': 'წამი',\n 'time.meridiem': 'AM/PM',\n 'time.am': 'AM',\n 'time.pm': 'PM',\n 'settings.themeTitle': 'თემა',\n 'settings.themeDesc': 'გადართეთ ღია და მუქ თემას შორის.',\n 'settings.light': 'ღია',\n 'settings.lightDesc': 'ნათელი თემა',\n 'settings.dark': 'მუქი',\n 'settings.darkDesc': 'ბნელი თემა',\n 'settings.languageDesc': 'აირჩიეთ ადმინ პანელის ენა — შენახული შემდეგისთვის.',\n 'settings.accentTitle': 'აქცენტის ფერი',\n 'settings.accentDesc': 'აირჩიეთ აქცენტი თითოეული თემისთვის — ინახება და აღდგება შემდეგ ჯერზე.',\n 'settings.lightTheme': 'ღია თემა',\n 'settings.darkTheme': 'მუქი თემა',\n 'settings.accentDefault': 'ნაგულისხმევი ({color})',\n 'settings.fontTitle': 'შრიფტი',\n 'settings.fontDesc': 'აირჩიეთ presetი ან აკრიფეთ ნებისმიერი Google Font — გამოიყენება ყველგან.',\n 'settings.fontFamily': 'შრიფტის ოჯახი',\n 'settings.fontSearch': 'მოძებნეთ ან აკრიფეთ ნებისმიერი Google Font…',\n 'settings.fontDefault': '{font} (ნაგულისხმევი)',\n 'settings.headerTitle': 'ჰედერი',\n 'settings.headerDesc':\n 'ჰედერი დააფიქსირეთ სქროლზე, ან დაუშვით რომ გაქრეს — შენახული შემდეგისთვის.',\n 'settings.scrollable': 'მოძრავი',\n 'settings.scrollableDesc': 'სქროლზე ქრება',\n 'settings.fixed': 'ფიქსირებული',\n 'settings.fixedDesc': 'სქროლზე რჩება',\n 'rte.placeholder': 'დაწერეთ რაიმე…',\n 'rte.formatting': 'ფორმატირება',\n 'rte.undo': 'დაბრუნება',\n 'rte.redo': 'გამეორება',\n 'rte.fontSize': 'შრიფტის ზომა',\n 'rte.textColor': 'ტექსტის ფერი',\n 'rte.bold': 'მუქი',\n 'rte.italic': 'დახრილი',\n 'rte.underline': 'ხაზგასმული',\n 'rte.bulletList': 'მარკირებული სია',\n 'rte.numberedList': 'ნუმერირებული სია',\n 'rte.quote': 'ციტატა',\n 'rte.alignLeft': 'მარცხნივ სწორება',\n 'rte.alignCenter': 'ცენტრში სწორება',\n 'rte.alignRight': 'მარჯვნივ სწორება',\n 'rte.link': 'ბმულის ჩასმა',\n 'rte.insertImage': 'სურათის ჩასმა',\n 'rte.insertVideo': 'ვიდეოს ჩასმა',\n 'rte.uploadImage': 'სურათის ატვირთვა',\n 'rte.imageByUrl': 'URL-ით',\n 'rte.imageError': 'სურათის დამატება ვერ მოხერხდა. სცადეთ ხელახლა.',\n 'rte.linkTitle': 'ბმულის ჩასმა',\n 'rte.linkUrl': 'ბმულის URL',\n 'rte.imageTitle': 'სურათის ჩასმა',\n 'rte.imageUrl': 'სურათის URL',\n 'rte.videoTitle': 'ვიდეოს ჩასმა',\n 'rte.videoUrl': 'ვიდეოს URL',\n 'rte.videoUrlPlaceholder': 'YouTube, Vimeo, ან პირდაპირი ფაილის URL',\n 'rte.embeddedVideo': 'ჩართული ვიდეო',\n 'fileUploader.choose': 'აირჩიეთ ფაილი',\n 'fileUploader.dropSuffix': 'ან ჩააგდეთ აქ',\n 'fileUploader.uploaded': 'ატვირთულია',\n 'fileUploader.hintUpToOne': 'არაუმეტეს {count} ფაილისა',\n 'fileUploader.hintUpToMany': 'არაუმეტეს {count} ფაილისა',\n 'fileUploader.hintMax': 'მაქს. {size} თითო',\n 'fileUploader.exceedsLimit': 'აჭარბებს {size} ლიმიტს',\n 'fileUploader.download': 'ჩამოტვირთვა: {name}',\n 'fileUploader.remove': 'წაშლა: {name}',\n 'fileUploader.crop': 'ჭრა: {name}',\n 'fileUploader.editAlt': 'alt-ტექსტის რედაქტირება: {name}',\n 'fileUploader.preview': 'გადახედვა: {name}',\n 'fileUploader.closePreview': 'გადახედვის დახურვა',\n 'fileUploader.duplicate': 'ზოგიერთი ფაილი უკვე დამატებულია',\n 'fileUploader.wrongTypeOne': '„{name}\"-ს აქვს მხარდაუჭერელი ტიპი',\n 'fileUploader.wrongTypeMany': '{count} ფაილს აქვს მხარდაუჭერელი ტიპი',\n 'fileUploader.tooLargeOne': '„{name}\" აჭარბებს {size} ლიმიტს',\n 'fileUploader.tooLargeMany': '{count} ფაილი აჭარბებს {size} ლიმიტს',\n 'fileUploader.cropTitle': 'სურათის ჭრა',\n 'fileUploader.altTitle': 'Alt ტექსტი',\n 'fileUploader.cropHint': 'გადაათრიეთ დასატოვებელი არის მოსანიშნად',\n 'fileUploader.altPlaceholder': 'აღწერეთ სურათი ეკრანის წამკითხველისთვის…',\n 'fileUploader.cropError': 'სურათის ჭრა ვერ მოხერხდა — შესაძლოა cross-origin იყოს CORS-ის გარეშე.',\n 'codeBlock.copy': 'კოდის კოპირება',\n 'codeBlock.copied': 'დაკოპირდა!',\n 'sidebar.searchPages': 'გვერდების ძებნა',\n 'account.label': 'ანგარიში',\n 'settings.label': 'პარამეტრები',\n 'language.label': 'ენა',\n}\n\n/** Flag for the Georgian UI language — rendered beside the language in the header switcher. */\nexport const KA_FLAG = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 480\">\n <path fill=\"#fff\" d=\"M0 0h640v480H0z\"/>\n <path fill=\"red\" d=\"M272 0h96v480h-96z\"/>\n <path fill=\"red\" d=\"M0 192h640v96H0z\"/>\n <path fill=\"red\" fill-rule=\"evenodd\" d=\"M146.8 373.1c1-16.8 4-31.1 4-31.1s-9.8 1-14.8 1-14.8-1-14.8-1 3 14.3 4 31.2c-16.9-1-31.2-4-31.2-4s1 7.4 1 14.8-1 14.8-1 14.8 14.3-3 31.2-4c-1 16.9-4 31.2-4 31.2s7.4-1 14.8-1 14.8 1 14.8 1-3-14.3-4-31.2c16.9 1 31.2 4 31.2 4s-1-9.8-1-14.8 1-14.8 1-14.8-14.3 3-31.1 4zm368-288c1-16.8 4-31.1 4-31.1s-9.8 1-14.8 1-14.8-1-14.8-1 3 14.3 4 31.1c-16.9-1-31.2-3.9-31.2-3.9s1 7.4 1 14.8-1 14.8-1 14.8 14.3-3 31.2-4c-1 16.9-4 31.2-4 31.2s7.4-1 14.8-1 14.8 1 14.8 1-3-14.3-4-31.1c16.9 1 31.2 4 31.2 4s-1-10-1-14.9 1-14.8 1-14.8-14.3 3-31.2 4zm-368 0c1-16.8 4-31.1 4-31.1s-9.8 1-14.8 1-14.8-1-14.8-1 3 14.3 4 31.2c-16.9-1-31.2-4-31.2-4s1 7.4 1 14.8-1 14.8-1 14.8 14.3-3 31.2-4c-1 16.9-4 31.2-4 31.2s7.4-1 14.8-1 14.8 1 14.8 1-3-14.3-4-31.2c16.9 1 31.2 4 31.2 4s-1-9.8-1-14.8 1-14.8 1-14.8-14.3 3-31.1 4zm368 288c1-16.8 4-31.1 4-31.1s-9.8 1-14.8 1-14.8-1-14.8-1 3 14.3 4 31.2c-16.9-1-31.2-4-31.2-4s1 7.4 1 14.8-1 14.8-1 14.8 14.3-3 31.2-4c-1 16.9-4 31.2-4 31.2s7.4-1 14.8-1 14.8 1 14.8 1-3-14.3-4-31.2c16.9 1 31.2 4 31.2 4s-1-9.8-1-14.8 1-14.8 1-14.8-14.3 3-31.2 4z\"/>\n</svg>`\n","import type { MessageCatalog } from '../messages'\n\n/** Spanish — translated from the English baseline (`en.ts`); omitted keys fall back to English. */\nexport const ES_MESSAGES: MessageCatalog = {\n 'common.close': 'Cerrar',\n 'common.cancel': 'Cancelar',\n 'common.confirm': 'Confirmar',\n 'common.delete': 'Eliminar',\n 'common.remove': 'Quitar',\n 'common.loading': 'Cargando…',\n 'common.clear': 'Borrar',\n 'common.apply': 'Aplicar',\n 'common.search': 'Buscar…',\n 'common.all': 'Todos',\n 'common.any': 'Cualquiera',\n 'common.yes': 'Sí',\n 'common.no': 'No',\n 'common.save': 'Guardar',\n 'common.insert': 'Insertar',\n 'common.update': 'Actualizar',\n 'common.done': 'Listo',\n 'common.min': 'Mín',\n 'common.max': 'Máx',\n 'common.from': 'Desde',\n 'common.to': 'Hasta',\n 'select.placeholder': 'Seleccionar…',\n 'select.noOptions': 'Sin opciones',\n 'select.clear': 'Borrar selección',\n 'multiSelect.clearAll': 'Borrar todo',\n 'pagination.previous': 'Ir a la página anterior',\n 'pagination.next': 'Ir a la página siguiente',\n 'pagination.first': 'Ir a la primera página',\n 'pagination.last': 'Ir a la última página',\n 'pagination.page': 'Ir a la página {page}',\n 'emptyState.title': 'No se encontraron resultados',\n 'notFound.title': 'Página no encontrada',\n 'notFound.description': 'La página que buscas no existe o puede haberse movido.',\n 'notFound.action': 'Volver al inicio',\n 'userCard.signOut': 'Cerrar sesión',\n 'textField.fieldAction': 'Acción del campo',\n 'textField.showPassword': 'Mostrar contraseña',\n 'textField.hidePassword': 'Ocultar contraseña',\n 'textField.capsLock': 'Bloq Mayús está activado',\n 'textField.strengthWeak': 'Débil',\n 'textField.strengthMedium': 'Media',\n 'textField.strengthStrong': 'Fuerte',\n 'numberField.decrease': 'Disminuir',\n 'numberField.increase': 'Aumentar',\n 'otpField.digit': 'Dígito {index} de {total}',\n 'breadcrumbs.label': 'Ruta de navegación',\n 'breadcrumbs.home': 'Inicio',\n 'themeToggle.label': 'Cambiar tema de color',\n 'fullscreenToggle.label': 'Alternar pantalla completa',\n 'loader.label': 'Cargando',\n 'tagsField.add': 'Añadir etiqueta',\n 'removeDialog.title': 'Quitar',\n 'removeDialog.message': '¿Seguro que quieres eliminar?',\n 'colorPicker.pick': 'Elegir un color',\n 'colorPicker.value': 'Valor de color',\n 'colorPicker.noColor': 'Sin color',\n 'colorPicker.saturation': 'Saturación y brillo',\n 'colorPicker.hue': 'Tono',\n 'colorPicker.opacity': 'Opacidad',\n 'datePicker.clear': 'Borrar fecha',\n 'datePicker.open': 'Abrir calendario',\n 'calendar.prevMonth': 'Mes anterior',\n 'calendar.nextMonth': 'Mes siguiente',\n 'timePicker.clear': 'Borrar hora',\n 'timePicker.open': 'Abrir selector de hora',\n 'dateTimePicker.clear': 'Borrar valor',\n 'dateTimePicker.open': 'Abrir selector de fecha y hora',\n 'dateTimePicker.label': 'Fecha y hora',\n 'dateTimePicker.dateTab': 'Fecha',\n 'dateTimePicker.timeTab': 'Hora',\n 'table.export': 'Exportar',\n 'table.sendOnEmail': 'Enviar por correo',\n 'table.sort': 'Ordenar',\n 'table.sortBy': 'Ordenar por',\n 'table.filters': 'Filtros',\n 'table.filtersDescription': 'Filtra la tabla con los campos de abajo.',\n 'table.dragHandle': 'Arrastra para reordenar',\n 'table.range': '{from}–{to} de {total}',\n 'table.rowsPerPage': 'Filas por página',\n 'calendar.month0': 'Enero',\n 'calendar.month1': 'Febrero',\n 'calendar.month2': 'Marzo',\n 'calendar.month3': 'Abril',\n 'calendar.month4': 'Mayo',\n 'calendar.month5': 'Junio',\n 'calendar.month6': 'Julio',\n 'calendar.month7': 'Agosto',\n 'calendar.month8': 'Septiembre',\n 'calendar.month9': 'Octubre',\n 'calendar.month10': 'Noviembre',\n 'calendar.month11': 'Diciembre',\n 'calendar.weekday0': 'Do',\n 'calendar.weekday1': 'Lu',\n 'calendar.weekday2': 'Ma',\n 'calendar.weekday3': 'Mi',\n 'calendar.weekday4': 'Ju',\n 'calendar.weekday5': 'Vi',\n 'calendar.weekday6': 'Sá',\n 'calendar.selectYear': 'Seleccionar año',\n 'time.hour': 'Hora',\n 'time.minute': 'Minuto',\n 'time.second': 'Segundo',\n 'time.meridiem': 'AM/PM',\n 'time.am': 'AM',\n 'time.pm': 'PM',\n 'settings.themeTitle': 'Tema',\n 'settings.themeDesc': 'Cambia entre el tema claro y oscuro.',\n 'settings.light': 'Claro',\n 'settings.lightDesc': 'Tema luminoso',\n 'settings.dark': 'Oscuro',\n 'settings.darkDesc': 'Tema tenue',\n 'settings.languageDesc': 'Elige el idioma del panel — se guarda para la próxima vez.',\n 'settings.accentTitle': 'Color de acento',\n 'settings.accentDesc':\n 'Elige un acento para cada tema — se guarda y se restaura la próxima vez que abras el panel.',\n 'settings.lightTheme': 'Tema claro',\n 'settings.darkTheme': 'Tema oscuro',\n 'settings.accentDefault': 'Predeterminado ({color})',\n 'settings.fontTitle': 'Fuente',\n 'settings.fontDesc':\n 'Elige una predefinida o escribe cualquier Google Font — se aplica en toda la app y se guarda.',\n 'settings.fontFamily': 'Familia tipográfica',\n 'settings.fontSearch': 'Busca o escribe cualquier Google Font…',\n 'settings.fontDefault': '{font} (predeterminada)',\n 'settings.headerTitle': 'Encabezado',\n 'settings.headerDesc':\n 'Mantén el encabezado fijo al desplazar, o deja que se desplace — se guarda para la próxima vez.',\n 'settings.scrollable': 'Desplazable',\n 'settings.scrollableDesc': 'Se desplaza',\n 'settings.fixed': 'Fijo',\n 'settings.fixedDesc': 'Permanece al desplazar',\n 'rte.placeholder': 'Escribe algo…',\n 'rte.formatting': 'Formato',\n 'rte.undo': 'Deshacer',\n 'rte.redo': 'Rehacer',\n 'rte.fontSize': 'Tamaño de fuente',\n 'rte.textColor': 'Color del texto',\n 'rte.bold': 'Negrita',\n 'rte.italic': 'Cursiva',\n 'rte.underline': 'Subrayado',\n 'rte.bulletList': 'Lista con viñetas',\n 'rte.numberedList': 'Lista numerada',\n 'rte.quote': 'Cita',\n 'rte.alignLeft': 'Alinear a la izquierda',\n 'rte.alignCenter': 'Centrar',\n 'rte.alignRight': 'Alinear a la derecha',\n 'rte.link': 'Insertar enlace',\n 'rte.insertImage': 'Insertar imagen',\n 'rte.insertVideo': 'Insertar vídeo',\n 'rte.uploadImage': 'Subir imagen',\n 'rte.imageByUrl': 'Por URL',\n 'rte.imageError': 'No se pudo añadir la imagen. Inténtalo de nuevo.',\n 'rte.linkTitle': 'Insertar enlace',\n 'rte.linkUrl': 'URL del enlace',\n 'rte.imageTitle': 'Insertar imagen',\n 'rte.imageUrl': 'URL de la imagen',\n 'rte.videoTitle': 'Insertar vídeo',\n 'rte.videoUrl': 'URL del vídeo',\n 'rte.videoUrlPlaceholder': 'YouTube, Vimeo o la URL de un archivo directo',\n 'rte.embeddedVideo': 'Vídeo insertado',\n 'fileUploader.choose': 'Elegir un archivo',\n 'fileUploader.dropSuffix': 'o arrástralo y suéltalo aquí',\n 'fileUploader.uploaded': 'Subido',\n 'fileUploader.hintUpToOne': 'Hasta {count} archivo',\n 'fileUploader.hintUpToMany': 'Hasta {count} archivos',\n 'fileUploader.hintMax': 'Máx. {size} cada uno',\n 'fileUploader.exceedsLimit': 'Supera el límite de {size}',\n 'fileUploader.download': 'Descargar {name}',\n 'fileUploader.remove': 'Quitar {name}',\n 'fileUploader.crop': 'Recortar {name}',\n 'fileUploader.editAlt': 'Editar texto alternativo de {name}',\n 'fileUploader.preview': 'Vista previa de {name}',\n 'fileUploader.closePreview': 'Cerrar vista previa',\n 'fileUploader.duplicate': 'Algunos archivos ya se han añadido',\n 'fileUploader.wrongTypeOne': '«{name}» tiene un tipo de archivo no admitido',\n 'fileUploader.wrongTypeMany': '{count} archivos tienen un tipo no admitido',\n 'fileUploader.tooLargeOne': '«{name}» supera el límite de {size}',\n 'fileUploader.tooLargeMany': '{count} archivos superan el límite de {size}',\n 'fileUploader.cropTitle': 'Recortar imagen',\n 'fileUploader.altTitle': 'Texto alternativo',\n 'fileUploader.cropHint': 'Arrastra para seleccionar el área que quieres conservar',\n 'fileUploader.altPlaceholder': 'Describe la imagen para lectores de pantalla…',\n 'fileUploader.cropError':\n 'No se pudo recortar esta imagen — puede servirse desde otro origen sin CORS.',\n 'codeBlock.copy': 'Copiar código',\n 'codeBlock.copied': '¡Copiado!',\n 'sidebar.searchPages': 'Buscar páginas',\n 'account.label': 'Cuenta',\n 'settings.label': 'Ajustes',\n 'language.label': 'Idioma',\n}\n\n/** Flag for the Spanish UI language — rendered beside the language in the header switcher. */\nexport const ES_FLAG = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 480\">\n <path fill=\"#AA151B\" d=\"M0 0h640v480H0z\"/>\n <path fill=\"#F1BF00\" d=\"M0 120h640v240H0z\"/>\n</svg>`\n","import type { MessageCatalog } from '../messages'\n\n/** German — translated from the English baseline (`en.ts`); omitted keys fall back to English. */\nexport const DE_MESSAGES: MessageCatalog = {\n 'common.close': 'Schließen',\n 'common.cancel': 'Abbrechen',\n 'common.confirm': 'Bestätigen',\n 'common.delete': 'Löschen',\n 'common.remove': 'Entfernen',\n 'common.loading': 'Wird geladen…',\n 'common.clear': 'Leeren',\n 'common.apply': 'Anwenden',\n 'common.search': 'Suchen…',\n 'common.all': 'Alle',\n 'common.any': 'Beliebig',\n 'common.yes': 'Ja',\n 'common.no': 'Nein',\n 'common.save': 'Speichern',\n 'common.insert': 'Einfügen',\n 'common.update': 'Aktualisieren',\n 'common.done': 'Fertig',\n 'common.min': 'Min',\n 'common.max': 'Max',\n 'common.from': 'Von',\n 'common.to': 'Bis',\n 'select.placeholder': 'Auswählen…',\n 'select.noOptions': 'Keine Optionen',\n 'select.clear': 'Auswahl aufheben',\n 'multiSelect.clearAll': 'Alle entfernen',\n 'pagination.previous': 'Zur vorherigen Seite',\n 'pagination.next': 'Zur nächsten Seite',\n 'pagination.first': 'Zur ersten Seite',\n 'pagination.last': 'Zur letzten Seite',\n 'pagination.page': 'Zu Seite {page}',\n 'emptyState.title': 'Keine Ergebnisse gefunden',\n 'notFound.title': 'Seite nicht gefunden',\n 'notFound.description':\n 'Die gesuchte Seite existiert nicht oder wurde möglicherweise verschoben.',\n 'notFound.action': 'Zurück zur Startseite',\n 'userCard.signOut': 'Abmelden',\n 'textField.fieldAction': 'Feldaktion',\n 'textField.showPassword': 'Passwort anzeigen',\n 'textField.hidePassword': 'Passwort verbergen',\n 'textField.capsLock': 'Feststelltaste ist aktiviert',\n 'textField.strengthWeak': 'Schwach',\n 'textField.strengthMedium': 'Mittel',\n 'textField.strengthStrong': 'Stark',\n 'numberField.decrease': 'Verringern',\n 'numberField.increase': 'Erhöhen',\n 'otpField.digit': 'Ziffer {index} von {total}',\n 'breadcrumbs.label': 'Navigationspfad',\n 'breadcrumbs.home': 'Startseite',\n 'themeToggle.label': 'Farbschema umschalten',\n 'fullscreenToggle.label': 'Vollbild umschalten',\n 'loader.label': 'Wird geladen',\n 'tagsField.add': 'Tag hinzufügen',\n 'removeDialog.title': 'Entfernen',\n 'removeDialog.message': 'Möchten Sie wirklich löschen?',\n 'colorPicker.pick': 'Farbe auswählen',\n 'colorPicker.value': 'Farbwert',\n 'colorPicker.noColor': 'Keine Farbe',\n 'colorPicker.saturation': 'Sättigung und Helligkeit',\n 'colorPicker.hue': 'Farbton',\n 'colorPicker.opacity': 'Deckkraft',\n 'datePicker.clear': 'Datum löschen',\n 'datePicker.open': 'Kalender öffnen',\n 'calendar.prevMonth': 'Voriger Monat',\n 'calendar.nextMonth': 'Nächster Monat',\n 'timePicker.clear': 'Uhrzeit löschen',\n 'timePicker.open': 'Uhrzeitauswahl öffnen',\n 'dateTimePicker.clear': 'Wert löschen',\n 'dateTimePicker.open': 'Datums- und Uhrzeitauswahl öffnen',\n 'dateTimePicker.label': 'Datum und Uhrzeit',\n 'dateTimePicker.dateTab': 'Datum',\n 'dateTimePicker.timeTab': 'Uhrzeit',\n 'table.export': 'Exportieren',\n 'table.sendOnEmail': 'Per E-Mail senden',\n 'table.sort': 'Sortieren',\n 'table.sortBy': 'Sortieren nach',\n 'table.filters': 'Filter',\n 'table.filtersDescription': 'Grenzen Sie die Tabelle mit den folgenden Feldern ein.',\n 'table.dragHandle': 'Zum Umsortieren ziehen',\n 'table.range': '{from}–{to} von {total}',\n 'table.rowsPerPage': 'Zeilen pro Seite',\n 'calendar.month0': 'Januar',\n 'calendar.month1': 'Februar',\n 'calendar.month2': 'März',\n 'calendar.month3': 'April',\n 'calendar.month4': 'Mai',\n 'calendar.month5': 'Juni',\n 'calendar.month6': 'Juli',\n 'calendar.month7': 'August',\n 'calendar.month8': 'September',\n 'calendar.month9': 'Oktober',\n 'calendar.month10': 'November',\n 'calendar.month11': 'Dezember',\n 'calendar.weekday0': 'So',\n 'calendar.weekday1': 'Mo',\n 'calendar.weekday2': 'Di',\n 'calendar.weekday3': 'Mi',\n 'calendar.weekday4': 'Do',\n 'calendar.weekday5': 'Fr',\n 'calendar.weekday6': 'Sa',\n 'calendar.selectYear': 'Jahr auswählen',\n 'time.hour': 'Stunde',\n 'time.minute': 'Minute',\n 'time.second': 'Sekunde',\n 'time.meridiem': 'AM/PM',\n 'time.am': 'AM',\n 'time.pm': 'PM',\n 'settings.themeTitle': 'Design',\n 'settings.themeDesc': 'Zwischen hellem und dunklem Design wechseln.',\n 'settings.light': 'Hell',\n 'settings.lightDesc': 'Helles Design',\n 'settings.dark': 'Dunkel',\n 'settings.darkDesc': 'Gedämpftes Design',\n 'settings.languageDesc':\n 'Wählen Sie die Sprache des Admin-Panels — wird für das nächste Mal gespeichert.',\n 'settings.accentTitle': 'Akzentfarbe',\n 'settings.accentDesc':\n 'Wählen Sie einen Akzent für jedes Design — er wird gespeichert und beim nächsten Öffnen wiederhergestellt.',\n 'settings.lightTheme': 'Helles Design',\n 'settings.darkTheme': 'Dunkles Design',\n 'settings.accentDefault': 'Standard ({color})',\n 'settings.fontTitle': 'Schriftart',\n 'settings.fontDesc':\n 'Wählen Sie eine Vorgabe oder geben Sie eine beliebige Google Font ein — gilt app-weit und wird gespeichert.',\n 'settings.fontFamily': 'Schriftfamilie',\n 'settings.fontSearch': 'Suchen oder beliebige Google Font eingeben…',\n 'settings.fontDefault': '{font} (Standard)',\n 'settings.headerTitle': 'Kopfzeile',\n 'settings.headerDesc':\n 'Kopfzeile beim Scrollen fixieren oder mitscrollen lassen — wird für das nächste Mal gespeichert.',\n 'settings.scrollable': 'Scrollend',\n 'settings.scrollableDesc': 'Scrollt mit',\n 'settings.fixed': 'Fixiert',\n 'settings.fixedDesc': 'Bleibt beim Scrollen',\n 'rte.placeholder': 'Schreiben Sie etwas…',\n 'rte.formatting': 'Formatierung',\n 'rte.undo': 'Rückgängig',\n 'rte.redo': 'Wiederholen',\n 'rte.fontSize': 'Schriftgröße',\n 'rte.textColor': 'Textfarbe',\n 'rte.bold': 'Fett',\n 'rte.italic': 'Kursiv',\n 'rte.underline': 'Unterstrichen',\n 'rte.bulletList': 'Aufzählung',\n 'rte.numberedList': 'Nummerierte Liste',\n 'rte.quote': 'Zitat',\n 'rte.alignLeft': 'Linksbündig',\n 'rte.alignCenter': 'Zentriert',\n 'rte.alignRight': 'Rechtsbündig',\n 'rte.link': 'Link einfügen',\n 'rte.insertImage': 'Bild einfügen',\n 'rte.insertVideo': 'Video einfügen',\n 'rte.uploadImage': 'Bild hochladen',\n 'rte.imageByUrl': 'Über URL',\n 'rte.imageError': 'Das Bild konnte nicht hinzugefügt werden. Bitte versuchen Sie es erneut.',\n 'rte.linkTitle': 'Link einfügen',\n 'rte.linkUrl': 'Link-URL',\n 'rte.imageTitle': 'Bild einfügen',\n 'rte.imageUrl': 'Bild-URL',\n 'rte.videoTitle': 'Video einfügen',\n 'rte.videoUrl': 'Video-URL',\n 'rte.videoUrlPlaceholder': 'YouTube, Vimeo oder eine direkte Datei-URL',\n 'rte.embeddedVideo': 'Eingebettetes Video',\n 'fileUploader.choose': 'Datei auswählen',\n 'fileUploader.dropSuffix': 'oder hierher ziehen und ablegen',\n 'fileUploader.uploaded': 'Hochgeladen',\n 'fileUploader.hintUpToOne': 'Bis zu {count} Datei',\n 'fileUploader.hintUpToMany': 'Bis zu {count} Dateien',\n 'fileUploader.hintMax': 'Max. {size} pro Datei',\n 'fileUploader.exceedsLimit': 'Überschreitet das Limit von {size}',\n 'fileUploader.download': '{name} herunterladen',\n 'fileUploader.remove': '{name} entfernen',\n 'fileUploader.crop': '{name} zuschneiden',\n 'fileUploader.editAlt': 'Alt-Text für {name} bearbeiten',\n 'fileUploader.preview': 'Vorschau von {name}',\n 'fileUploader.closePreview': 'Vorschau schließen',\n 'fileUploader.duplicate': 'Einige Dateien wurden bereits hinzugefügt',\n 'fileUploader.wrongTypeOne': '„{name}“ hat einen nicht unterstützten Dateityp',\n 'fileUploader.wrongTypeMany': '{count} Dateien haben einen nicht unterstützten Typ',\n 'fileUploader.tooLargeOne': '„{name}“ überschreitet das Limit von {size}',\n 'fileUploader.tooLargeMany': '{count} Dateien überschreiten das Limit von {size}',\n 'fileUploader.cropTitle': 'Bild zuschneiden',\n 'fileUploader.altTitle': 'Alt-Text',\n 'fileUploader.cropHint': 'Ziehen Sie, um den zu behaltenden Bereich auszuwählen',\n 'fileUploader.altPlaceholder': 'Beschreiben Sie das Bild für Screenreader…',\n 'fileUploader.cropError':\n 'Dieses Bild konnte nicht zugeschnitten werden — es wird möglicherweise ohne CORS von einer anderen Domain geladen.',\n 'codeBlock.copy': 'Code kopieren',\n 'codeBlock.copied': 'Kopiert!',\n 'sidebar.searchPages': 'Seiten suchen',\n 'account.label': 'Konto',\n 'settings.label': 'Einstellungen',\n 'language.label': 'Sprache',\n}\n\n/** Flag for the German UI language — rendered beside the language in the header switcher. */\nexport const DE_FLAG = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 480\">\n <path fill=\"#fc0\" d=\"M0 320h640v160H0z\"/>\n <path fill=\"#000001\" d=\"M0 0h640v160H0z\"/>\n <path fill=\"red\" d=\"M0 160h640v160H0z\"/>\n</svg>`\n","import type { MessageCatalog } from '../messages'\n\n/** Italian — translated from the English baseline (`en.ts`); omitted keys fall back to English. */\nexport const IT_MESSAGES: MessageCatalog = {\n 'common.close': 'Chiudi',\n 'common.cancel': 'Annulla',\n 'common.confirm': 'Conferma',\n 'common.delete': 'Elimina',\n 'common.remove': 'Rimuovi',\n 'common.loading': 'Caricamento…',\n 'common.clear': 'Cancella',\n 'common.apply': 'Applica',\n 'common.search': 'Cerca…',\n 'common.all': 'Tutti',\n 'common.any': 'Qualsiasi',\n 'common.yes': 'Sì',\n 'common.no': 'No',\n 'common.save': 'Salva',\n 'common.insert': 'Inserisci',\n 'common.update': 'Aggiorna',\n 'common.done': 'Fatto',\n 'common.min': 'Min',\n 'common.max': 'Max',\n 'common.from': 'Da',\n 'common.to': 'A',\n 'select.placeholder': 'Seleziona…',\n 'select.noOptions': 'Nessuna opzione',\n 'select.clear': 'Cancella selezione',\n 'multiSelect.clearAll': 'Cancella tutto',\n 'pagination.previous': 'Vai alla pagina precedente',\n 'pagination.next': 'Vai alla pagina successiva',\n 'pagination.first': 'Vai alla prima pagina',\n 'pagination.last': 'Vai all’ultima pagina',\n 'pagination.page': 'Vai alla pagina {page}',\n 'emptyState.title': 'Nessun risultato trovato',\n 'notFound.title': 'Pagina non trovata',\n 'notFound.description':\n 'La pagina che stai cercando non esiste o potrebbe essere stata spostata.',\n 'notFound.action': 'Torna alla home',\n 'userCard.signOut': 'Esci',\n 'textField.fieldAction': 'Azione campo',\n 'textField.showPassword': 'Mostra password',\n 'textField.hidePassword': 'Nascondi password',\n 'textField.capsLock': 'Bloc Maiusc è attivo',\n 'textField.strengthWeak': 'Debole',\n 'textField.strengthMedium': 'Media',\n 'textField.strengthStrong': 'Forte',\n 'numberField.decrease': 'Diminuisci',\n 'numberField.increase': 'Aumenta',\n 'otpField.digit': 'Cifra {index} di {total}',\n 'breadcrumbs.label': 'Percorso di navigazione',\n 'breadcrumbs.home': 'Home',\n 'themeToggle.label': 'Cambia tema colore',\n 'fullscreenToggle.label': 'Attiva/disattiva schermo intero',\n 'loader.label': 'Caricamento',\n 'tagsField.add': 'Aggiungi tag',\n 'removeDialog.title': 'Rimuovi',\n 'removeDialog.message': 'Sei sicuro di voler eliminare?',\n 'colorPicker.pick': 'Scegli un colore',\n 'colorPicker.value': 'Valore colore',\n 'colorPicker.noColor': 'Nessun colore',\n 'colorPicker.saturation': 'Saturazione e luminosità',\n 'colorPicker.hue': 'Tonalità',\n 'colorPicker.opacity': 'Opacità',\n 'datePicker.clear': 'Cancella data',\n 'datePicker.open': 'Apri calendario',\n 'calendar.prevMonth': 'Mese precedente',\n 'calendar.nextMonth': 'Mese successivo',\n 'timePicker.clear': 'Cancella ora',\n 'timePicker.open': 'Apri selettore ora',\n 'dateTimePicker.clear': 'Cancella valore',\n 'dateTimePicker.open': 'Apri selettore data e ora',\n 'dateTimePicker.label': 'Data e ora',\n 'dateTimePicker.dateTab': 'Data',\n 'dateTimePicker.timeTab': 'Ora',\n 'table.export': 'Esporta',\n 'table.sendOnEmail': 'Invia via email',\n 'table.sort': 'Ordina',\n 'table.sortBy': 'Ordina per',\n 'table.filters': 'Filtri',\n 'table.filtersDescription': 'Restringi la tabella con i campi qui sotto.',\n 'table.dragHandle': 'Trascina per riordinare',\n 'table.range': '{from}–{to} di {total}',\n 'table.rowsPerPage': 'Righe per pagina',\n 'calendar.month0': 'Gennaio',\n 'calendar.month1': 'Febbraio',\n 'calendar.month2': 'Marzo',\n 'calendar.month3': 'Aprile',\n 'calendar.month4': 'Maggio',\n 'calendar.month5': 'Giugno',\n 'calendar.month6': 'Luglio',\n 'calendar.month7': 'Agosto',\n 'calendar.month8': 'Settembre',\n 'calendar.month9': 'Ottobre',\n 'calendar.month10': 'Novembre',\n 'calendar.month11': 'Dicembre',\n 'calendar.weekday0': 'Do',\n 'calendar.weekday1': 'Lu',\n 'calendar.weekday2': 'Ma',\n 'calendar.weekday3': 'Me',\n 'calendar.weekday4': 'Gi',\n 'calendar.weekday5': 'Ve',\n 'calendar.weekday6': 'Sa',\n 'calendar.selectYear': 'Seleziona anno',\n 'time.hour': 'Ora',\n 'time.minute': 'Minuto',\n 'time.second': 'Secondo',\n 'time.meridiem': 'AM/PM',\n 'time.am': 'AM',\n 'time.pm': 'PM',\n 'settings.themeTitle': 'Tema',\n 'settings.themeDesc': 'Passa dal tema chiaro a quello scuro.',\n 'settings.light': 'Chiaro',\n 'settings.lightDesc': 'Tema luminoso',\n 'settings.dark': 'Scuro',\n 'settings.darkDesc': 'Tema attenuato',\n 'settings.languageDesc': 'Scegli la lingua del pannello — salvata per la prossima volta.',\n 'settings.accentTitle': 'Colore accento',\n 'settings.accentDesc':\n 'Scegli un accento per ogni tema — viene salvato e ripristinato alla prossima apertura del pannello.',\n 'settings.lightTheme': 'Tema chiaro',\n 'settings.darkTheme': 'Tema scuro',\n 'settings.accentDefault': 'Predefinito ({color})',\n 'settings.fontTitle': 'Carattere',\n 'settings.fontDesc':\n 'Scegli un preset o digita un Google Font qualsiasi — applicato a tutta l’app e salvato.',\n 'settings.fontFamily': 'Famiglia di caratteri',\n 'settings.fontSearch': 'Cerca o digita un Google Font qualsiasi…',\n 'settings.fontDefault': '{font} (predefinito)',\n 'settings.headerTitle': 'Intestazione',\n 'settings.headerDesc':\n 'Mantieni l’intestazione fissa allo scorrimento o lasciala scorrere — salvato per la prossima volta.',\n 'settings.scrollable': 'Scorrevole',\n 'settings.scrollableDesc': 'Scorre via',\n 'settings.fixed': 'Fissa',\n 'settings.fixedDesc': 'Resta allo scorrimento',\n 'rte.placeholder': 'Scrivi qualcosa…',\n 'rte.formatting': 'Formattazione',\n 'rte.undo': 'Annulla',\n 'rte.redo': 'Ripeti',\n 'rte.fontSize': 'Dimensione carattere',\n 'rte.textColor': 'Colore testo',\n 'rte.bold': 'Grassetto',\n 'rte.italic': 'Corsivo',\n 'rte.underline': 'Sottolineato',\n 'rte.bulletList': 'Elenco puntato',\n 'rte.numberedList': 'Elenco numerato',\n 'rte.quote': 'Citazione',\n 'rte.alignLeft': 'Allinea a sinistra',\n 'rte.alignCenter': 'Allinea al centro',\n 'rte.alignRight': 'Allinea a destra',\n 'rte.link': 'Inserisci link',\n 'rte.insertImage': 'Inserisci immagine',\n 'rte.insertVideo': 'Inserisci video',\n 'rte.uploadImage': 'Carica immagine',\n 'rte.imageByUrl': 'Tramite URL',\n 'rte.imageError': 'Impossibile aggiungere l’immagine. Riprova.',\n 'rte.linkTitle': 'Inserisci link',\n 'rte.linkUrl': 'URL del link',\n 'rte.imageTitle': 'Inserisci immagine',\n 'rte.imageUrl': 'URL dell’immagine',\n 'rte.videoTitle': 'Inserisci video',\n 'rte.videoUrl': 'URL del video',\n 'rte.videoUrlPlaceholder': 'YouTube, Vimeo o l’URL di un file diretto',\n 'rte.embeddedVideo': 'Video incorporato',\n 'fileUploader.choose': 'Scegli un file',\n 'fileUploader.dropSuffix': 'o trascinalo qui',\n 'fileUploader.uploaded': 'Caricato',\n 'fileUploader.hintUpToOne': 'Fino a {count} file',\n 'fileUploader.hintUpToMany': 'Fino a {count} file',\n 'fileUploader.hintMax': 'Max {size} ciascuno',\n 'fileUploader.exceedsLimit': 'Supera il limite di {size}',\n 'fileUploader.download': 'Scarica {name}',\n 'fileUploader.remove': 'Rimuovi {name}',\n 'fileUploader.crop': 'Ritaglia {name}',\n 'fileUploader.editAlt': 'Modifica testo alternativo per {name}',\n 'fileUploader.preview': 'Anteprima di {name}',\n 'fileUploader.closePreview': 'Chiudi anteprima',\n 'fileUploader.duplicate': 'Alcuni file sono già stati aggiunti',\n 'fileUploader.wrongTypeOne': '«{name}» ha un tipo di file non supportato',\n 'fileUploader.wrongTypeMany': '{count} file hanno un tipo non supportato',\n 'fileUploader.tooLargeOne': '«{name}» supera il limite di {size}',\n 'fileUploader.tooLargeMany': '{count} file superano il limite di {size}',\n 'fileUploader.cropTitle': 'Ritaglia immagine',\n 'fileUploader.altTitle': 'Testo alternativo',\n 'fileUploader.cropHint': 'Trascina per selezionare l’area da mantenere',\n 'fileUploader.altPlaceholder': 'Descrivi l’immagine per i lettori di schermo…',\n 'fileUploader.cropError':\n 'Impossibile ritagliare questa immagine — potrebbe essere servita da un’altra origine senza CORS.',\n 'codeBlock.copy': 'Copia codice',\n 'codeBlock.copied': 'Copiato!',\n 'sidebar.searchPages': 'Cerca pagine',\n 'account.label': 'Account',\n 'settings.label': 'Impostazioni',\n 'language.label': 'Lingua',\n}\n\n/** Flag for the Italian UI language — rendered beside the language in the header switcher. */\nexport const IT_FLAG = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 480\">\n <g fill-rule=\"evenodd\" stroke-width=\"1pt\">\n <path fill=\"#fff\" d=\"M0 0h640v480H0z\"/>\n <path fill=\"#009246\" d=\"M0 0h213.3v480H0z\"/>\n <path fill=\"#ce2b37\" d=\"M426.7 0H640v480H426.7z\"/>\n </g>\n</svg>`\n","import type { MessageCatalog } from '../messages'\n\n/** French — translated from the English baseline (`en.ts`); omitted keys fall back to English. */\nexport const FR_MESSAGES: MessageCatalog = {\n 'common.close': 'Fermer',\n 'common.cancel': 'Annuler',\n 'common.confirm': 'Confirmer',\n 'common.delete': 'Supprimer',\n 'common.remove': 'Retirer',\n 'common.loading': 'Chargement…',\n 'common.clear': 'Effacer',\n 'common.apply': 'Appliquer',\n 'common.search': 'Rechercher…',\n 'common.all': 'Tous',\n 'common.any': 'Peu importe',\n 'common.yes': 'Oui',\n 'common.no': 'Non',\n 'common.save': 'Enregistrer',\n 'common.insert': 'Insérer',\n 'common.update': 'Mettre à jour',\n 'common.done': 'Terminé',\n 'common.min': 'Min',\n 'common.max': 'Max',\n 'common.from': 'De',\n 'common.to': 'À',\n 'select.placeholder': 'Sélectionner…',\n 'select.noOptions': 'Aucune option',\n 'select.clear': 'Effacer la sélection',\n 'multiSelect.clearAll': 'Tout effacer',\n 'pagination.previous': 'Aller à la page précédente',\n 'pagination.next': 'Aller à la page suivante',\n 'pagination.first': 'Aller à la première page',\n 'pagination.last': 'Aller à la dernière page',\n 'pagination.page': 'Aller à la page {page}',\n 'emptyState.title': 'Aucun résultat trouvé',\n 'notFound.title': 'Page introuvable',\n 'notFound.description': \"La page que vous recherchez n'existe pas ou a peut-être été déplacée.\",\n 'notFound.action': \"Retour à l'accueil\",\n 'userCard.signOut': 'Se déconnecter',\n 'textField.fieldAction': 'Action du champ',\n 'textField.showPassword': 'Afficher le mot de passe',\n 'textField.hidePassword': 'Masquer le mot de passe',\n 'textField.capsLock': 'Verr. Maj est activé',\n 'textField.strengthWeak': 'Faible',\n 'textField.strengthMedium': 'Moyen',\n 'textField.strengthStrong': 'Fort',\n 'numberField.decrease': 'Diminuer',\n 'numberField.increase': 'Augmenter',\n 'otpField.digit': 'Chiffre {index} sur {total}',\n 'breadcrumbs.label': 'Fil d’Ariane',\n 'breadcrumbs.home': 'Accueil',\n 'themeToggle.label': 'Changer le thème de couleur',\n 'fullscreenToggle.label': 'Basculer en plein écran',\n 'loader.label': 'Chargement',\n 'tagsField.add': 'Ajouter une étiquette',\n 'removeDialog.title': 'Retirer',\n 'removeDialog.message': 'Voulez-vous vraiment supprimer ?',\n 'colorPicker.pick': 'Choisir une couleur',\n 'colorPicker.value': 'Valeur de couleur',\n 'colorPicker.noColor': 'Aucune couleur',\n 'colorPicker.saturation': 'Saturation et luminosité',\n 'colorPicker.hue': 'Teinte',\n 'colorPicker.opacity': 'Opacité',\n 'datePicker.clear': 'Effacer la date',\n 'datePicker.open': 'Ouvrir le calendrier',\n 'calendar.prevMonth': 'Mois précédent',\n 'calendar.nextMonth': 'Mois suivant',\n 'timePicker.clear': 'Effacer l’heure',\n 'timePicker.open': 'Ouvrir le sélecteur d’heure',\n 'dateTimePicker.clear': 'Effacer la valeur',\n 'dateTimePicker.open': 'Ouvrir le sélecteur de date et d’heure',\n 'dateTimePicker.label': 'Date et heure',\n 'dateTimePicker.dateTab': 'Date',\n 'dateTimePicker.timeTab': 'Heure',\n 'table.export': 'Exporter',\n 'table.sendOnEmail': 'Envoyer par e-mail',\n 'table.sort': 'Trier',\n 'table.sortBy': 'Trier par',\n 'table.filters': 'Filtres',\n 'table.filtersDescription': 'Affinez le tableau avec les champs ci-dessous.',\n 'table.dragHandle': 'Glisser pour réorganiser',\n 'table.range': '{from}–{to} sur {total}',\n 'table.rowsPerPage': 'Lignes par page',\n 'calendar.month0': 'Janvier',\n 'calendar.month1': 'Février',\n 'calendar.month2': 'Mars',\n 'calendar.month3': 'Avril',\n 'calendar.month4': 'Mai',\n 'calendar.month5': 'Juin',\n 'calendar.month6': 'Juillet',\n 'calendar.month7': 'Août',\n 'calendar.month8': 'Septembre',\n 'calendar.month9': 'Octobre',\n 'calendar.month10': 'Novembre',\n 'calendar.month11': 'Décembre',\n 'calendar.weekday0': 'Di',\n 'calendar.weekday1': 'Lu',\n 'calendar.weekday2': 'Ma',\n 'calendar.weekday3': 'Me',\n 'calendar.weekday4': 'Je',\n 'calendar.weekday5': 'Ve',\n 'calendar.weekday6': 'Sa',\n 'calendar.selectYear': 'Sélectionner l’année',\n 'time.hour': 'Heure',\n 'time.minute': 'Minute',\n 'time.second': 'Seconde',\n 'time.meridiem': 'AM/PM',\n 'time.am': 'AM',\n 'time.pm': 'PM',\n 'settings.themeTitle': 'Thème',\n 'settings.themeDesc': 'Basculez entre le thème clair et sombre.',\n 'settings.light': 'Clair',\n 'settings.lightDesc': 'Thème lumineux',\n 'settings.dark': 'Sombre',\n 'settings.darkDesc': 'Thème tamisé',\n 'settings.languageDesc': 'Choisissez la langue du panneau — enregistrée pour la prochaine fois.',\n 'settings.accentTitle': 'Couleur d’accent',\n 'settings.accentDesc':\n 'Choisissez un accent pour chaque thème — il est enregistré et restauré à la prochaine ouverture du panneau.',\n 'settings.lightTheme': 'Thème clair',\n 'settings.darkTheme': 'Thème sombre',\n 'settings.accentDefault': 'Par défaut ({color})',\n 'settings.fontTitle': 'Police',\n 'settings.fontDesc':\n 'Choisissez un préréglage ou saisissez n’importe quelle Google Font — appliquée à toute l’app et enregistrée.',\n 'settings.fontFamily': 'Famille de police',\n 'settings.fontSearch': 'Recherchez ou saisissez n’importe quelle Google Font…',\n 'settings.fontDefault': '{font} (par défaut)',\n 'settings.headerTitle': 'En-tête',\n 'settings.headerDesc':\n 'Gardez l’en-tête fixe au défilement, ou laissez-le défiler — enregistré pour la prochaine fois.',\n 'settings.scrollable': 'Défilant',\n 'settings.scrollableDesc': 'Défile',\n 'settings.fixed': 'Fixe',\n 'settings.fixedDesc': 'Reste au défilement',\n 'rte.placeholder': 'Écrivez quelque chose…',\n 'rte.formatting': 'Mise en forme',\n 'rte.undo': 'Annuler',\n 'rte.redo': 'Rétablir',\n 'rte.fontSize': 'Taille de police',\n 'rte.textColor': 'Couleur du texte',\n 'rte.bold': 'Gras',\n 'rte.italic': 'Italique',\n 'rte.underline': 'Souligné',\n 'rte.bulletList': 'Liste à puces',\n 'rte.numberedList': 'Liste numérotée',\n 'rte.quote': 'Citation',\n 'rte.alignLeft': 'Aligner à gauche',\n 'rte.alignCenter': 'Centrer',\n 'rte.alignRight': 'Aligner à droite',\n 'rte.link': 'Insérer un lien',\n 'rte.insertImage': 'Insérer une image',\n 'rte.insertVideo': 'Insérer une vidéo',\n 'rte.uploadImage': 'Importer une image',\n 'rte.imageByUrl': 'Par URL',\n 'rte.imageError': 'Impossible d’ajouter l’image. Veuillez réessayer.',\n 'rte.linkTitle': 'Insérer un lien',\n 'rte.linkUrl': 'URL du lien',\n 'rte.imageTitle': 'Insérer une image',\n 'rte.imageUrl': 'URL de l’image',\n 'rte.videoTitle': 'Insérer une vidéo',\n 'rte.videoUrl': 'URL de la vidéo',\n 'rte.videoUrlPlaceholder': 'YouTube, Vimeo ou l’URL d’un fichier direct',\n 'rte.embeddedVideo': 'Vidéo intégrée',\n 'fileUploader.choose': 'Choisir un fichier',\n 'fileUploader.dropSuffix': 'ou glissez-déposez-le ici',\n 'fileUploader.uploaded': 'Importé',\n 'fileUploader.hintUpToOne': 'Jusqu’à {count} fichier',\n 'fileUploader.hintUpToMany': 'Jusqu’à {count} fichiers',\n 'fileUploader.hintMax': '{size} max. chacun',\n 'fileUploader.exceedsLimit': 'Dépasse la limite de {size}',\n 'fileUploader.download': 'Télécharger {name}',\n 'fileUploader.remove': 'Retirer {name}',\n 'fileUploader.crop': 'Rogner {name}',\n 'fileUploader.editAlt': 'Modifier le texte alternatif de {name}',\n 'fileUploader.preview': 'Aperçu de {name}',\n 'fileUploader.closePreview': 'Fermer l’aperçu',\n 'fileUploader.duplicate': 'Certains fichiers sont déjà ajoutés',\n 'fileUploader.wrongTypeOne': '« {name} » a un type de fichier non pris en charge',\n 'fileUploader.wrongTypeMany': '{count} fichiers ont un type non pris en charge',\n 'fileUploader.tooLargeOne': '« {name} » dépasse la limite de {size}',\n 'fileUploader.tooLargeMany': '{count} fichiers dépassent la limite de {size}',\n 'fileUploader.cropTitle': 'Rogner l’image',\n 'fileUploader.altTitle': 'Texte alternatif',\n 'fileUploader.cropHint': 'Faites glisser pour sélectionner la zone à conserver',\n 'fileUploader.altPlaceholder': 'Décrivez l’image pour les lecteurs d’écran…',\n 'fileUploader.cropError':\n 'Impossible de rogner cette image — elle est peut-être servie depuis une autre origine sans CORS.',\n 'codeBlock.copy': 'Copier le code',\n 'codeBlock.copied': 'Copié !',\n 'sidebar.searchPages': 'Rechercher des pages',\n 'account.label': 'Compte',\n 'settings.label': 'Paramètres',\n 'language.label': 'Langue',\n}\n\n/** Flag for the French UI language — rendered beside the language in the header switcher. */\nexport const FR_FLAG = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 480\">\n <path fill=\"#000091\" d=\"M0 0h213.3v480H0z\"/>\n <path fill=\"#fff\" d=\"M213.3 0h213.4v480H213.3z\"/>\n <path fill=\"#e1000f\" d=\"M426.7 0H640v480H426.7z\"/>\n</svg>`\n","import type { MessageCatalog } from '../messages'\n\n/** Russian — translated from the English baseline (`en.ts`); omitted keys fall back to English. */\nexport const RU_MESSAGES: MessageCatalog = {\n 'common.close': 'Закрыть',\n 'common.cancel': 'Отмена',\n 'common.confirm': 'Подтвердить',\n 'common.delete': 'Удалить',\n 'common.remove': 'Убрать',\n 'common.loading': 'Загрузка…',\n 'common.clear': 'Очистить',\n 'common.apply': 'Применить',\n 'common.search': 'Поиск…',\n 'common.all': 'Все',\n 'common.any': 'Любой',\n 'common.yes': 'Да',\n 'common.no': 'Нет',\n 'common.save': 'Сохранить',\n 'common.insert': 'Вставить',\n 'common.update': 'Обновить',\n 'common.done': 'Готово',\n 'common.min': 'Мин',\n 'common.max': 'Макс',\n 'common.from': 'От',\n 'common.to': 'До',\n 'select.placeholder': 'Выберите…',\n 'select.noOptions': 'Нет вариантов',\n 'select.clear': 'Очистить выбор',\n 'multiSelect.clearAll': 'Очистить всё',\n 'pagination.previous': 'Перейти на предыдущую страницу',\n 'pagination.next': 'Перейти на следующую страницу',\n 'pagination.first': 'Перейти на первую страницу',\n 'pagination.last': 'Перейти на последнюю страницу',\n 'pagination.page': 'Перейти на страницу {page}',\n 'emptyState.title': 'Ничего не найдено',\n 'notFound.title': 'Страница не найдена',\n 'notFound.description': 'Запрашиваемая страница не существует или была перемещена.',\n 'notFound.action': 'На главную',\n 'userCard.signOut': 'Выйти',\n 'textField.fieldAction': 'Действие поля',\n 'textField.showPassword': 'Показать пароль',\n 'textField.hidePassword': 'Скрыть пароль',\n 'textField.capsLock': 'Включён Caps Lock',\n 'textField.strengthWeak': 'Слабый',\n 'textField.strengthMedium': 'Средний',\n 'textField.strengthStrong': 'Надёжный',\n 'numberField.decrease': 'Уменьшить',\n 'numberField.increase': 'Увеличить',\n 'otpField.digit': 'Цифра {index} из {total}',\n 'breadcrumbs.label': 'Хлебные крошки',\n 'breadcrumbs.home': 'Главная',\n 'themeToggle.label': 'Переключить цветовую тему',\n 'fullscreenToggle.label': 'Полноэкранный режим',\n 'loader.label': 'Загрузка',\n 'tagsField.add': 'Добавить тег',\n 'removeDialog.title': 'Убрать',\n 'removeDialog.message': 'Вы уверены, что хотите удалить?',\n 'colorPicker.pick': 'Выберите цвет',\n 'colorPicker.value': 'Значение цвета',\n 'colorPicker.noColor': 'Без цвета',\n 'colorPicker.saturation': 'Насыщенность и яркость',\n 'colorPicker.hue': 'Оттенок',\n 'colorPicker.opacity': 'Прозрачность',\n 'datePicker.clear': 'Очистить дату',\n 'datePicker.open': 'Открыть календарь',\n 'calendar.prevMonth': 'Предыдущий месяц',\n 'calendar.nextMonth': 'Следующий месяц',\n 'timePicker.clear': 'Очистить время',\n 'timePicker.open': 'Открыть выбор времени',\n 'dateTimePicker.clear': 'Очистить значение',\n 'dateTimePicker.open': 'Открыть выбор даты и времени',\n 'dateTimePicker.label': 'Дата и время',\n 'dateTimePicker.dateTab': 'Дата',\n 'dateTimePicker.timeTab': 'Время',\n 'table.export': 'Экспорт',\n 'table.sendOnEmail': 'Отправить на почту',\n 'table.sort': 'Сортировка',\n 'table.sortBy': 'Сортировать по',\n 'table.filters': 'Фильтры',\n 'table.filtersDescription': 'Уточните таблицу по полям ниже.',\n 'table.dragHandle': 'Перетащите для изменения порядка',\n 'table.range': '{from}–{to} из {total}',\n 'table.rowsPerPage': 'Строк на странице',\n 'calendar.month0': 'Январь',\n 'calendar.month1': 'Февраль',\n 'calendar.month2': 'Март',\n 'calendar.month3': 'Апрель',\n 'calendar.month4': 'Май',\n 'calendar.month5': 'Июнь',\n 'calendar.month6': 'Июль',\n 'calendar.month7': 'Август',\n 'calendar.month8': 'Сентябрь',\n 'calendar.month9': 'Октябрь',\n 'calendar.month10': 'Ноябрь',\n 'calendar.month11': 'Декабрь',\n 'calendar.weekday0': 'Вс',\n 'calendar.weekday1': 'Пн',\n 'calendar.weekday2': 'Вт',\n 'calendar.weekday3': 'Ср',\n 'calendar.weekday4': 'Чт',\n 'calendar.weekday5': 'Пт',\n 'calendar.weekday6': 'Сб',\n 'calendar.selectYear': 'Выберите год',\n 'time.hour': 'Часы',\n 'time.minute': 'Минуты',\n 'time.second': 'Секунды',\n 'time.meridiem': 'AM/PM',\n 'time.am': 'AM',\n 'time.pm': 'PM',\n 'settings.themeTitle': 'Тема',\n 'settings.themeDesc': 'Переключение между светлой и тёмной темой.',\n 'settings.light': 'Светлая',\n 'settings.lightDesc': 'Светлая тема',\n 'settings.dark': 'Тёмная',\n 'settings.darkDesc': 'Приглушённая тема',\n 'settings.languageDesc': 'Выберите язык панели — сохранится на будущее.',\n 'settings.accentTitle': 'Акцентный цвет',\n 'settings.accentDesc':\n 'Выберите акцент для каждой темы — он сохранится и восстановится при следующем открытии панели.',\n 'settings.lightTheme': 'Светлая тема',\n 'settings.darkTheme': 'Тёмная тема',\n 'settings.accentDefault': 'По умолчанию ({color})',\n 'settings.fontTitle': 'Шрифт',\n 'settings.fontDesc':\n 'Выберите пресет или введите любой Google Font — применяется во всём приложении и сохраняется.',\n 'settings.fontFamily': 'Семейство шрифтов',\n 'settings.fontSearch': 'Найдите или введите любой Google Font…',\n 'settings.fontDefault': '{font} (по умолчанию)',\n 'settings.headerTitle': 'Шапка',\n 'settings.headerDesc':\n 'Закрепите шапку при прокрутке или дайте ей прокручиваться — сохранится на будущее.',\n 'settings.scrollable': 'Прокручиваемая',\n 'settings.scrollableDesc': 'Прокручивается',\n 'settings.fixed': 'Закреплённая',\n 'settings.fixedDesc': 'Остаётся при прокрутке',\n 'rte.placeholder': 'Напишите что-нибудь…',\n 'rte.formatting': 'Форматирование',\n 'rte.undo': 'Отменить',\n 'rte.redo': 'Повторить',\n 'rte.fontSize': 'Размер шрифта',\n 'rte.textColor': 'Цвет текста',\n 'rte.bold': 'Полужирный',\n 'rte.italic': 'Курсив',\n 'rte.underline': 'Подчёркнутый',\n 'rte.bulletList': 'Маркированный список',\n 'rte.numberedList': 'Нумерованный список',\n 'rte.quote': 'Цитата',\n 'rte.alignLeft': 'По левому краю',\n 'rte.alignCenter': 'По центру',\n 'rte.alignRight': 'По правому краю',\n 'rte.link': 'Вставить ссылку',\n 'rte.insertImage': 'Вставить изображение',\n 'rte.insertVideo': 'Вставить видео',\n 'rte.uploadImage': 'Загрузить изображение',\n 'rte.imageByUrl': 'По URL',\n 'rte.imageError': 'Не удалось добавить изображение. Попробуйте ещё раз.',\n 'rte.linkTitle': 'Вставить ссылку',\n 'rte.linkUrl': 'URL ссылки',\n 'rte.imageTitle': 'Вставить изображение',\n 'rte.imageUrl': 'URL изображения',\n 'rte.videoTitle': 'Вставить видео',\n 'rte.videoUrl': 'URL видео',\n 'rte.videoUrlPlaceholder': 'YouTube, Vimeo или прямая ссылка на файл',\n 'rte.embeddedVideo': 'Встроенное видео',\n 'fileUploader.choose': 'Выберите файл',\n 'fileUploader.dropSuffix': 'или перетащите его сюда',\n 'fileUploader.uploaded': 'Загружено',\n 'fileUploader.hintUpToOne': 'До {count} файла',\n 'fileUploader.hintUpToMany': 'До {count} файлов',\n 'fileUploader.hintMax': 'Макс. {size} каждый',\n 'fileUploader.exceedsLimit': 'Превышает лимит {size}',\n 'fileUploader.download': 'Скачать {name}',\n 'fileUploader.remove': 'Убрать {name}',\n 'fileUploader.crop': 'Обрезать {name}',\n 'fileUploader.editAlt': 'Изменить альт-текст для {name}',\n 'fileUploader.preview': 'Предпросмотр {name}',\n 'fileUploader.closePreview': 'Закрыть предпросмотр',\n 'fileUploader.duplicate': 'Некоторые файлы уже добавлены',\n 'fileUploader.wrongTypeOne': '«{name}» имеет неподдерживаемый тип файла',\n 'fileUploader.wrongTypeMany': '{count} файлов имеют неподдерживаемый тип',\n 'fileUploader.tooLargeOne': '«{name}» превышает лимит {size}',\n 'fileUploader.tooLargeMany': '{count} файлов превышают лимит {size}',\n 'fileUploader.cropTitle': 'Обрезать изображение',\n 'fileUploader.altTitle': 'Альт-текст',\n 'fileUploader.cropHint': 'Перетащите, чтобы выбрать область для сохранения',\n 'fileUploader.altPlaceholder': 'Опишите изображение для программ чтения с экрана…',\n 'fileUploader.cropError':\n 'Не удалось обрезать это изображение — возможно, оно загружается с другого домена без CORS.',\n 'codeBlock.copy': 'Копировать код',\n 'codeBlock.copied': 'Скопировано!',\n 'sidebar.searchPages': 'Поиск страниц',\n 'account.label': 'Аккаунт',\n 'settings.label': 'Настройки',\n 'language.label': 'Язык',\n}\n\n/** Flag for the Russian UI language — rendered beside the language in the header switcher. */\nexport const RU_FLAG = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 480\">\n <path fill=\"#fff\" d=\"M0 0h640v160H0z\"/>\n <path fill=\"#0039a6\" d=\"M0 160h640v160H0z\"/>\n <path fill=\"#d52b1e\" d=\"M0 320h640v160H0z\"/>\n</svg>`\n","/**\n * The library's own static UI strings, shipped **pre-translated** so a consuming app gets a localized\n * admin panel with zero setup — it just lists the languages in `config.i18n`. This is deliberately a\n * tiny, dependency-free layer (no i18next): the string set is small and fixed, resolved by a plain\n * `createTranslator`. Apps translate their **own** content however they like (react-i18next, …); this\n * only covers the library's built-in labels.\n *\n * This module owns the **types + resolution logic**; the actual per-language catalogs live one file\n * each under `./locales/` (`en.ts`, `ka.ts`, …), so the file stays small as languages are added.\n * **To add a string:** add its key to the `Messages` interface below, fill it in `./locales/en.ts`\n * (the complete baseline), and translate it in the other catalogs you can. **To add a language:** drop\n * a `./locales/<base>.ts` (a `MessageCatalog`) and register it in `BUILTIN_MESSAGES`. Any language the\n * library doesn't ship can still be supplied by the consumer via `config.i18n.messages`, falling back\n * to English per key. `{name}` tokens are interpolated from the `vars` passed to `t`.\n */\nimport { EN_MESSAGES, EN_FLAG } from './locales/en'\nimport { KA_MESSAGES, KA_FLAG } from './locales/ka'\nimport { ES_MESSAGES, ES_FLAG } from './locales/es'\nimport { DE_MESSAGES, DE_FLAG } from './locales/de'\nimport { IT_MESSAGES, IT_FLAG } from './locales/it'\nimport { FR_MESSAGES, FR_FLAG } from './locales/fr'\nimport { RU_MESSAGES, RU_FLAG } from './locales/ru'\n\n// re-exported so `EN_MESSAGES` stays importable from `../i18n/messages` (its original home)\nexport { EN_MESSAGES }\n\nexport interface Messages {\n // shared / reused across components\n 'common.close': string\n 'common.cancel': string\n 'common.confirm': string\n 'common.delete': string\n 'common.remove': string\n 'common.loading': string\n 'common.clear': string\n 'common.apply': string\n 'common.search': string\n 'common.all': string\n 'common.any': string\n 'common.yes': string\n 'common.no': string\n 'common.save': string\n 'common.insert': string\n 'common.update': string\n 'common.done': string\n 'common.min': string\n 'common.max': string\n 'common.from': string\n 'common.to': string\n // Select / MultiSelect\n 'select.placeholder': string\n 'select.noOptions': string\n 'select.clear': string\n 'multiSelect.clearAll': string\n // Pagination\n 'pagination.previous': string\n 'pagination.next': string\n 'pagination.first': string\n 'pagination.last': string\n 'pagination.page': string\n // misc components\n 'emptyState.title': string\n 'notFound.title': string\n 'notFound.description': string\n 'notFound.action': string\n 'userCard.signOut': string\n 'textField.fieldAction': string\n 'textField.showPassword': string\n 'textField.hidePassword': string\n 'textField.capsLock': string\n 'textField.strengthWeak': string\n 'textField.strengthMedium': string\n 'textField.strengthStrong': string\n 'numberField.decrease': string\n 'numberField.increase': string\n 'otpField.digit': string\n 'breadcrumbs.label': string\n 'breadcrumbs.home': string\n 'themeToggle.label': string\n 'fullscreenToggle.label': string\n 'loader.label': string\n 'tagsField.add': string\n // RemoveDialog\n 'removeDialog.title': string\n 'removeDialog.message': string\n // ColorPicker\n 'colorPicker.pick': string\n 'colorPicker.value': string\n 'colorPicker.noColor': string\n 'colorPicker.saturation': string\n 'colorPicker.hue': string\n 'colorPicker.opacity': string\n // date / time pickers\n 'datePicker.clear': string\n 'datePicker.open': string\n 'calendar.prevMonth': string\n 'calendar.nextMonth': string\n 'timePicker.clear': string\n 'timePicker.open': string\n 'dateTimePicker.clear': string\n 'dateTimePicker.open': string\n 'dateTimePicker.label': string\n 'dateTimePicker.dateTab': string\n 'dateTimePicker.timeTab': string\n // Table\n 'table.export': string\n 'table.sendOnEmail': string\n 'table.sort': string\n 'table.sortBy': string\n 'table.filters': string\n 'table.filtersDescription': string\n 'table.dragHandle': string\n 'table.range': string\n 'table.rowsPerPage': string\n // calendar — full month names (0–11) + short weekday labels (0 = Sunday … 6 = Saturday)\n 'calendar.month0': string\n 'calendar.month1': string\n 'calendar.month2': string\n 'calendar.month3': string\n 'calendar.month4': string\n 'calendar.month5': string\n 'calendar.month6': string\n 'calendar.month7': string\n 'calendar.month8': string\n 'calendar.month9': string\n 'calendar.month10': string\n 'calendar.month11': string\n 'calendar.weekday0': string\n 'calendar.weekday1': string\n 'calendar.weekday2': string\n 'calendar.weekday3': string\n 'calendar.weekday4': string\n 'calendar.weekday5': string\n 'calendar.weekday6': string\n 'calendar.selectYear': string\n // time columns\n 'time.hour': string\n 'time.minute': string\n 'time.second': string\n 'time.meridiem': string\n 'time.am': string\n 'time.pm': string\n // SettingsDrawer\n 'settings.themeTitle': string\n 'settings.themeDesc': string\n 'settings.light': string\n 'settings.lightDesc': string\n 'settings.dark': string\n 'settings.darkDesc': string\n 'settings.languageDesc': string\n 'settings.accentTitle': string\n 'settings.accentDesc': string\n 'settings.lightTheme': string\n 'settings.darkTheme': string\n 'settings.accentDefault': string\n 'settings.fontTitle': string\n 'settings.fontDesc': string\n 'settings.fontFamily': string\n 'settings.fontSearch': string\n 'settings.fontDefault': string\n 'settings.headerTitle': string\n 'settings.headerDesc': string\n 'settings.scrollable': string\n 'settings.scrollableDesc': string\n 'settings.fixed': string\n 'settings.fixedDesc': string\n // RichTextEditor\n 'rte.placeholder': string\n 'rte.formatting': string\n 'rte.undo': string\n 'rte.redo': string\n 'rte.fontSize': string\n 'rte.textColor': string\n 'rte.bold': string\n 'rte.italic': string\n 'rte.underline': string\n 'rte.bulletList': string\n 'rte.numberedList': string\n 'rte.quote': string\n 'rte.alignLeft': string\n 'rte.alignCenter': string\n 'rte.alignRight': string\n 'rte.link': string\n 'rte.insertImage': string\n 'rte.insertVideo': string\n 'rte.uploadImage': string\n 'rte.imageByUrl': string\n 'rte.imageError': string\n 'rte.linkTitle': string\n 'rte.linkUrl': string\n 'rte.imageTitle': string\n 'rte.imageUrl': string\n 'rte.videoTitle': string\n 'rte.videoUrl': string\n 'rte.videoUrlPlaceholder': string\n 'rte.embeddedVideo': string\n // FileUploader\n 'fileUploader.choose': string\n 'fileUploader.dropSuffix': string\n 'fileUploader.uploaded': string\n 'fileUploader.hintUpToOne': string\n 'fileUploader.hintUpToMany': string\n 'fileUploader.hintMax': string\n 'fileUploader.exceedsLimit': string\n 'fileUploader.download': string\n 'fileUploader.remove': string\n 'fileUploader.crop': string\n 'fileUploader.editAlt': string\n 'fileUploader.preview': string\n 'fileUploader.closePreview': string\n 'fileUploader.duplicate': string\n 'fileUploader.wrongTypeOne': string\n 'fileUploader.wrongTypeMany': string\n 'fileUploader.tooLargeOne': string\n 'fileUploader.tooLargeMany': string\n 'fileUploader.cropTitle': string\n 'fileUploader.altTitle': string\n 'fileUploader.cropHint': string\n 'fileUploader.altPlaceholder': string\n 'fileUploader.cropError': string\n // CodeBlock\n 'codeBlock.copy': string\n 'codeBlock.copied': string\n // Sidebar / shell\n 'sidebar.searchPages': string\n 'account.label': string\n 'settings.label': string\n 'language.label': string\n}\n\n/** A message key (autocompleted + checked by `t`). */\nexport type MessageKey = keyof Messages\n/** A (possibly partial) catalog for one language. */\nexport type MessageCatalog = Partial<Messages>\n/** Consumer-supplied catalogs, keyed by language code (`'ka-GE'`) or base language (`'ka'`). */\nexport type MessageOverrides = Record<string, MessageCatalog>\n\n/** Built-in catalogs the library ships, keyed by **base** language code. */\nexport const BUILTIN_MESSAGES: Record<string, MessageCatalog> = {\n en: EN_MESSAGES,\n ka: KA_MESSAGES,\n es: ES_MESSAGES,\n de: DE_MESSAGES,\n it: IT_MESSAGES,\n fr: FR_MESSAGES,\n ru: RU_MESSAGES,\n}\n\n/**\n * Built-in flag SVGs (raw markup strings), keyed by **base** language code — shown beside each language\n * in the header switcher. A language with no flag here simply renders without one; each locale ships its\n * own flag from its `./locales/<base>.ts` file. (Coverage grows alongside the catalogs.)\n */\nexport const BUILTIN_FLAGS: Record<string, string> = {\n en: EN_FLAG,\n ka: KA_FLAG,\n es: ES_FLAG,\n de: DE_FLAG,\n it: IT_FLAG,\n fr: FR_FLAG,\n ru: RU_FLAG,\n}\n\n/** Base language of a locale code — `'ka-GE'` → `'ka'`. */\nconst baseLang = (locale: string): string => locale.split('-')[0].toLowerCase()\n\n/** The built-in flag SVG markup for a locale code (matched by base language), or `undefined` if none. */\nexport function flagFor(locale: string): string | undefined {\n return BUILTIN_FLAGS[baseLang(locale)]\n}\n\n/** A bound translator: `t('key')`, with optional `{name}` interpolation. */\nexport type Translator = (key: MessageKey, vars?: Record<string, string | number>) => string\n\n/**\n * Build a translator for `locale`. Resolution per key: consumer override (exact code, then base) →\n * built-in catalog for the base language → English baseline → the key itself. `{name}` tokens in the\n * resolved string are replaced from `vars`.\n */\nexport function createTranslator(locale: string, overrides?: MessageOverrides): Translator {\n const b = baseLang(locale)\n const consumer: MessageCatalog = { ...overrides?.[b], ...overrides?.[locale] }\n const builtin = BUILTIN_MESSAGES[b] ?? {}\n return (key, vars) => {\n const raw = consumer[key] ?? builtin[key] ?? EN_MESSAGES[key] ?? key\n return vars ? raw.replace(/\\{(\\w+)\\}/g, (_, k) => String(vars[k] ?? `{${k}}`)) : raw\n }\n}\n\n/**\n * Catalogs for the **consuming app's own** UI strings (used by `useTranslations()`), keyed by language\n * code or base language (`'ka-GE'` or `'ka'`), then by an arbitrary string key the app chooses. Unlike\n * {@link MessageOverrides} (which overrides the library's fixed `Messages`), these keys are free-form —\n * this is how an app localizes its own copy (section titles, labels) through the same language switcher.\n */\nexport type AppMessages = Record<string, Record<string, string>>\n\n/** A translator over the app's own `AppMessages` — any string key, optional `{name}` interpolation. */\nexport type AppTranslator = (key: string, vars?: Record<string, string | number>) => string\n\n/**\n * Build a translator over the consuming app's own `AppMessages` for `locale`. Resolution per key: exact\n * code → base language → English (`'en'`) → the key itself (so a missing translation renders the key\n * visibly rather than blank). `{name}` tokens are interpolated from `vars`. Powers `useTranslations()`.\n */\nexport function createAppTranslator(locale: string, appMessages?: AppMessages): AppTranslator {\n const b = baseLang(locale)\n const src = appMessages ?? {}\n return (key, vars) => {\n const raw = src[locale]?.[key] ?? src[b]?.[key] ?? src.en?.[key] ?? key\n return vars ? raw.replace(/\\{(\\w+)\\}/g, (_, k) => String(vars[k] ?? `{${k}}`)) : raw\n }\n}\n"],"names":["EN_MESSAGES","EN_FLAG","KA_MESSAGES","KA_FLAG","ES_MESSAGES","ES_FLAG","DE_MESSAGES","DE_FLAG","IT_MESSAGES","IT_FLAG","FR_MESSAGES","FR_FLAG","RU_MESSAGES","RU_FLAG","BUILTIN_MESSAGES","BUILTIN_FLAGS","baseLang","locale","flagFor","createTranslator","overrides","b","consumer","builtin","key","vars","raw","_","k","createAppTranslator","appMessages","src","_a","_b","_c"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { type ReactNode } from 'react';
2
2
  import { type ThemePalette } from './applyTheme';
3
+ import { type Breakpoint } from './breakpoints';
3
4
  import { type AppMessages, type AppTranslator, type MessageOverrides, type Translator } from '../i18n/messages';
4
5
  export type ThemeMode = 'light' | 'dark';
5
6
  export interface ThemeColors {
@@ -27,6 +28,14 @@ export interface ThemeConfig {
27
28
  * `Inter`. A non-preset family is loaded on demand at runtime.
28
29
  */
29
30
  fontFamily?: string;
31
+ /**
32
+ * Override the shared responsive **breakpoint** bounds (px, max-width). Keys are fixed
33
+ * (`xxs`/`xs`/`sm`/`md`/`lg`/`xl`/`xxl`); pass any subset — the rest keep their defaults. Drives the
34
+ * **JS** responsive layer (`useMediaQuery` tokens, `Flex`/`Grid`/`Masonry` responsive props); note
35
+ * component CSS `@media` rules are compiled and don't follow a runtime override. E.g.
36
+ * `breakpoints: { md: 1200, xl: 1600 }`.
37
+ */
38
+ breakpoints?: Partial<Record<Breakpoint, number>>;
30
39
  }
31
40
  /**
32
41
  * The configurable key / param **names** the library's components read — grouped under `Config.keys`
@@ -1,5 +1,6 @@
1
1
  import { type ReactNode } from 'react';
2
2
  import { type ThemePalette } from './applyTheme';
3
+ import { type Breakpoint } from './breakpoints';
3
4
  import { type AppMessages, type AppTranslator, type MessageOverrides, type Translator } from '../i18n/messages';
4
5
  export type ThemeMode = 'light' | 'dark';
5
6
  export interface ThemeColors {
@@ -27,6 +28,14 @@ export interface ThemeConfig {
27
28
  * `Inter`. A non-preset family is loaded on demand at runtime.
28
29
  */
29
30
  fontFamily?: string;
31
+ /**
32
+ * Override the shared responsive **breakpoint** bounds (px, max-width). Keys are fixed
33
+ * (`xxs`/`xs`/`sm`/`md`/`lg`/`xl`/`xxl`); pass any subset — the rest keep their defaults. Drives the
34
+ * **JS** responsive layer (`useMediaQuery` tokens, `Flex`/`Grid`/`Masonry` responsive props); note
35
+ * component CSS `@media` rules are compiled and don't follow a runtime override. E.g.
36
+ * `breakpoints: { md: 1200, xl: 1600 }`.
37
+ */
38
+ breakpoints?: Partial<Record<Breakpoint, number>>;
30
39
  }
31
40
  /**
32
41
  * The configurable key / param **names** the library's components read — grouped under `Config.keys`
@@ -1,20 +1,55 @@
1
1
  /**
2
- * The library's shared responsive breakpoints — the single source of truth for width thresholds.
2
+ * The library's shared responsive breakpoints — the single source of truth for width thresholds, so
3
+ * every responsive check (JS + component props) keys off the same sizes.
3
4
  *
4
- * Mobile-first **min-width** values in px. `xs` is the base (`0`); the two values the component CSS
5
- * already keys off (`≤575.98px` phones, `≤1279.98px` tablet/overlay) line up with `sm` (576) and `xl`
6
- * (1280), so this scale is a superset of what the styles already use rather than a new set. Consume
7
- * these instead of hardcoding pixel thresholds, and derive the `Breakpoint` type from here rather than
8
- * re-listing the keys locally.
5
+ * **Desktop-first / max-width** model: each key is the **upper bound** (in px) of that band `sm` means
6
+ * "screens **at most** `1023.98px` wide" (tablet-landscape-and-down), matching `useMediaQuery('sm')`
7
+ * `(max-width: 1023.98px)`. `xxs` is the small-phone bound; anything wider than `xxl` (>1919.98) is the
8
+ * large-desktop base. The `.98` avoids overlap with the next band's integer start
9
+ * (576 / 768 / 1024 / 1280 / 1440 / 1680 / 1920). `xxs` (575.98) matches the phone tweaks the component
10
+ * CSS already keys off, so the two stay in sync.
9
11
  */
10
12
  export declare const BREAKPOINTS: {
11
- readonly xs: 0;
12
- readonly sm: 576;
13
- readonly md: 768;
14
- readonly lg: 992;
15
- readonly xl: 1280;
13
+ readonly xxs: 575.98;
14
+ readonly xs: 767.98;
15
+ readonly sm: 1023.98;
16
+ readonly md: 1279.98;
17
+ readonly lg: 1439.98;
18
+ readonly xl: 1679.98;
19
+ readonly xxl: 1919.98;
16
20
  };
17
- /** A responsive breakpoint key (`'xs' | 'sm' | 'md' | 'lg' | 'xl'`). */
21
+ /** A responsive breakpoint key (`'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl'`). */
18
22
  export type Breakpoint = keyof typeof BREAKPOINTS;
19
- /** Breakpoint keys in ascending (mobile-first) order. */
23
+ /** Breakpoint keys ascending (narrowest → widest). */
20
24
  export declare const BREAKPOINT_ORDER: readonly Breakpoint[];
25
+ /**
26
+ * A value that may vary by breakpoint — either a single value or a **desktop-first** map keyed by
27
+ * breakpoint (e.g. `{ xs: 1, md: 3 }`): each entry applies at that breakpoint's max-width and below,
28
+ * until a smaller one overrides; the largest defined key is the base for anything wider.
29
+ */
30
+ export type Responsive<T> = T | Partial<Record<Breakpoint, T>>;
31
+ /**
32
+ * Build the media-query string for a breakpoint, using the **active** bounds (see the config store
33
+ * below). `down` (default) → `(max-width: <bound>px)` (that band and narrower); `up` →
34
+ * `(min-width: <next whole px>px)` (wider than the band).
35
+ */
36
+ export declare function breakpointQuery(bp: Breakpoint, direction?: 'down' | 'up'): string;
37
+ /** The live breakpoint bounds (defaults merged with any `config.theme.breakpoints` override). */
38
+ export declare function getBreakpoints(): Record<Breakpoint, number>;
39
+ /** A version counter that bumps on every change — feeds `useSyncExternalStore` for reactive reads. */
40
+ export declare function getBreakpointsVersion(): number;
41
+ /** Subscribe to override changes (used by `useMediaQuery` so token queries re-resolve live). */
42
+ export declare function subscribeBreakpoints(cb: () => void): () => void;
43
+ /**
44
+ * Override the pixel bounds of (some) breakpoints — keys stay fixed, so pass any subset. `undefined` /
45
+ * empty resets to the built-in defaults. `ConfigProvider` calls this from `config.theme.breakpoints`;
46
+ * a no-op when nothing actually changed.
47
+ */
48
+ export declare function setBreakpoints(overrides?: Partial<Record<Breakpoint, number>>): void;
49
+ /**
50
+ * Resolve a possibly-responsive value against the currently matching breakpoints (a `{ bp: boolean }`
51
+ * map of max-width matches). A plain value passes through; a breakpoint map is **desktop-first** — the
52
+ * value of the **smallest matching** breakpoint wins (the tightest band the viewport falls into),
53
+ * falling back to the **largest defined** key when none match (screens wider than every defined bound).
54
+ */
55
+ export declare function resolveResponsive<T>(value: Responsive<T>, matches: Record<Breakpoint, boolean>): T | undefined;
@@ -1,20 +1,55 @@
1
1
  /**
2
- * The library's shared responsive breakpoints — the single source of truth for width thresholds.
2
+ * The library's shared responsive breakpoints — the single source of truth for width thresholds, so
3
+ * every responsive check (JS + component props) keys off the same sizes.
3
4
  *
4
- * Mobile-first **min-width** values in px. `xs` is the base (`0`); the two values the component CSS
5
- * already keys off (`≤575.98px` phones, `≤1279.98px` tablet/overlay) line up with `sm` (576) and `xl`
6
- * (1280), so this scale is a superset of what the styles already use rather than a new set. Consume
7
- * these instead of hardcoding pixel thresholds, and derive the `Breakpoint` type from here rather than
8
- * re-listing the keys locally.
5
+ * **Desktop-first / max-width** model: each key is the **upper bound** (in px) of that band `sm` means
6
+ * "screens **at most** `1023.98px` wide" (tablet-landscape-and-down), matching `useMediaQuery('sm')`
7
+ * `(max-width: 1023.98px)`. `xxs` is the small-phone bound; anything wider than `xxl` (>1919.98) is the
8
+ * large-desktop base. The `.98` avoids overlap with the next band's integer start
9
+ * (576 / 768 / 1024 / 1280 / 1440 / 1680 / 1920). `xxs` (575.98) matches the phone tweaks the component
10
+ * CSS already keys off, so the two stay in sync.
9
11
  */
10
12
  export declare const BREAKPOINTS: {
11
- readonly xs: 0;
12
- readonly sm: 576;
13
- readonly md: 768;
14
- readonly lg: 992;
15
- readonly xl: 1280;
13
+ readonly xxs: 575.98;
14
+ readonly xs: 767.98;
15
+ readonly sm: 1023.98;
16
+ readonly md: 1279.98;
17
+ readonly lg: 1439.98;
18
+ readonly xl: 1679.98;
19
+ readonly xxl: 1919.98;
16
20
  };
17
- /** A responsive breakpoint key (`'xs' | 'sm' | 'md' | 'lg' | 'xl'`). */
21
+ /** A responsive breakpoint key (`'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl'`). */
18
22
  export type Breakpoint = keyof typeof BREAKPOINTS;
19
- /** Breakpoint keys in ascending (mobile-first) order. */
23
+ /** Breakpoint keys ascending (narrowest → widest). */
20
24
  export declare const BREAKPOINT_ORDER: readonly Breakpoint[];
25
+ /**
26
+ * A value that may vary by breakpoint — either a single value or a **desktop-first** map keyed by
27
+ * breakpoint (e.g. `{ xs: 1, md: 3 }`): each entry applies at that breakpoint's max-width and below,
28
+ * until a smaller one overrides; the largest defined key is the base for anything wider.
29
+ */
30
+ export type Responsive<T> = T | Partial<Record<Breakpoint, T>>;
31
+ /**
32
+ * Build the media-query string for a breakpoint, using the **active** bounds (see the config store
33
+ * below). `down` (default) → `(max-width: <bound>px)` (that band and narrower); `up` →
34
+ * `(min-width: <next whole px>px)` (wider than the band).
35
+ */
36
+ export declare function breakpointQuery(bp: Breakpoint, direction?: 'down' | 'up'): string;
37
+ /** The live breakpoint bounds (defaults merged with any `config.theme.breakpoints` override). */
38
+ export declare function getBreakpoints(): Record<Breakpoint, number>;
39
+ /** A version counter that bumps on every change — feeds `useSyncExternalStore` for reactive reads. */
40
+ export declare function getBreakpointsVersion(): number;
41
+ /** Subscribe to override changes (used by `useMediaQuery` so token queries re-resolve live). */
42
+ export declare function subscribeBreakpoints(cb: () => void): () => void;
43
+ /**
44
+ * Override the pixel bounds of (some) breakpoints — keys stay fixed, so pass any subset. `undefined` /
45
+ * empty resets to the built-in defaults. `ConfigProvider` calls this from `config.theme.breakpoints`;
46
+ * a no-op when nothing actually changed.
47
+ */
48
+ export declare function setBreakpoints(overrides?: Partial<Record<Breakpoint, number>>): void;
49
+ /**
50
+ * Resolve a possibly-responsive value against the currently matching breakpoints (a `{ bp: boolean }`
51
+ * map of max-width matches). A plain value passes through; a breakpoint map is **desktop-first** — the
52
+ * value of the **smallest matching** breakpoint wins (the tightest band the viewport falls into),
53
+ * falling back to the **largest defined** key when none match (screens wider than every defined bound).
54
+ */
55
+ export declare function resolveResponsive<T>(value: Responsive<T>, matches: Record<Breakpoint, boolean>): T | undefined;
@@ -1,7 +1,7 @@
1
1
  export { applyTheme } from './applyTheme';
2
2
  export type { ThemePalette, ThemeColor } from './applyTheme';
3
- export { BREAKPOINTS, BREAKPOINT_ORDER } from './breakpoints';
4
- export type { Breakpoint } from './breakpoints';
3
+ export { BREAKPOINTS, BREAKPOINT_ORDER, breakpointQuery, resolveResponsive } from './breakpoints';
4
+ export type { Breakpoint, Responsive } from './breakpoints';
5
5
  export { ConfigProvider, useTheme, useLocales, useTranslationsNamespace, useTabsQueryKey, useNestedTabQueryKey, useStepQueryKey, useTableQueryConfig, useHeaderConfig, useT, useTranslations, useLanguage, DEFAULT_TABS_QUERY_KEY, DEFAULT_NESTED_TAB_QUERY_KEY, DEFAULT_STEP_QUERY_KEY, DEFAULT_FONT_FAMILY, } from './ConfigProvider';
6
6
  export type { Config, ThemeConfig, ThemeColors, ThemeMode, ConfigProviderProps, LocaleConfig, KeysConfig, TableConfig, TableQueryConfig, HeaderConfig, HeaderUser, I18nConfig, } from './ConfigProvider';
7
7
  export type { Messages, MessageKey, MessageCatalog, MessageOverrides, Translator, AppMessages, AppTranslator, } from '../i18n/messages';
@@ -1,7 +1,7 @@
1
1
  export { applyTheme } from './applyTheme';
2
2
  export type { ThemePalette, ThemeColor } from './applyTheme';
3
- export { BREAKPOINTS, BREAKPOINT_ORDER } from './breakpoints';
4
- export type { Breakpoint } from './breakpoints';
3
+ export { BREAKPOINTS, BREAKPOINT_ORDER, breakpointQuery, resolveResponsive } from './breakpoints';
4
+ export type { Breakpoint, Responsive } from './breakpoints';
5
5
  export { ConfigProvider, useTheme, useLocales, useTranslationsNamespace, useTabsQueryKey, useNestedTabQueryKey, useStepQueryKey, useTableQueryConfig, useHeaderConfig, useT, useTranslations, useLanguage, DEFAULT_TABS_QUERY_KEY, DEFAULT_NESTED_TAB_QUERY_KEY, DEFAULT_STEP_QUERY_KEY, DEFAULT_FONT_FAMILY, } from './ConfigProvider';
6
6
  export type { Config, ThemeConfig, ThemeColors, ThemeMode, ConfigProviderProps, LocaleConfig, KeysConfig, TableConfig, TableQueryConfig, HeaderConfig, HeaderUser, I18nConfig, } from './ConfigProvider';
7
7
  export type { Messages, MessageKey, MessageCatalog, MessageOverrides, Translator, AppMessages, AppTranslator, } from '../i18n/messages';
@@ -0,0 +1,2 @@
1
+ "use strict";const i=require("react"),t=require("./breakpoints-Dpnh6BbG.cjs"),l=n=>n in t.BREAKPOINTS;function e(n,o="down"){i.useSyncExternalStore(t.subscribeBreakpoints,t.getBreakpointsVersion,()=>0);const s=l(n)?t.breakpointQuery(n,o):n,c=i.useCallback(r=>{if(typeof window>"u"||!window.matchMedia)return()=>{};const a=window.matchMedia(s);return a.addEventListener("change",r),()=>a.removeEventListener("change",r)},[s]),d=()=>typeof window<"u"&&window.matchMedia?window.matchMedia(s).matches:!1,u=()=>!1;return i.useSyncExternalStore(c,d,u)}function x(){return{xxs:e("xxs"),xs:e("xs"),sm:e("sm"),md:e("md"),lg:e("lg"),xl:e("xl"),xxl:e("xxl")}}exports.useBreakpointMatches=x;exports.useMediaQuery=e;
2
+ //# sourceMappingURL=useMediaQuery-CHMrI6Dy.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMediaQuery-CHMrI6Dy.cjs","sources":["../src/hooks/useMediaQuery.ts"],"sourcesContent":["import { useCallback, useSyncExternalStore } from 'react'\nimport {\n BREAKPOINTS,\n breakpointQuery,\n getBreakpointsVersion,\n subscribeBreakpoints,\n type Breakpoint,\n} from '../theme/breakpoints'\n\nconst isBreakpoint = (value: string): value is Breakpoint => value in BREAKPOINTS\n\n/**\n * Subscribe to a media query and get whether it currently matches, re-rendering when it flips. Built on\n * `useSyncExternalStore`, so on the client the first render already has the correct value (no flash),\n * and it's **SSR-safe** — returns `false` on the server / where `matchMedia` is unavailable. Use this\n * instead of hand-rolling `window.matchMedia` + effects.\n *\n * Pass either a **raw media query** (`'(max-width: 640px)'`, `'(prefers-color-scheme: dark)'`) **or a\n * shared `Breakpoint` token** — a token resolves against the library's breakpoints (§ `BREAKPOINTS`),\n * defaulting to **`down`** (max-width): `useMediaQuery('sm')` → `(max-width: 959.98px)` = tablet-and-down.\n * Pass `direction: 'up'` for the min-width side.\n *\n * @example\n * const isMobile = useMediaQuery('xs') // ≤ 767.98px\n * const isTablet = useMediaQuery('sm') // ≤ 959.98px\n * const isDesktopUp = useMediaQuery('md', 'up') // ≥ 1280px\n * const isDark = useMediaQuery('(prefers-color-scheme: dark)')\n */\nexport function useMediaQuery(query: string, direction: 'down' | 'up' = 'down'): boolean {\n // re-render when the active breakpoints change (a `config.theme.breakpoints` override) so a token\n // query re-resolves; harmless for raw-string queries (the store only fires on an actual override)\n useSyncExternalStore(subscribeBreakpoints, getBreakpointsVersion, () => 0)\n const resolved = isBreakpoint(query) ? breakpointQuery(query, direction) : query\n\n const subscribe = useCallback(\n (onStoreChange: () => void) => {\n if (typeof window === 'undefined' || !window.matchMedia) return () => {}\n const mql = window.matchMedia(resolved)\n mql.addEventListener('change', onStoreChange)\n return () => mql.removeEventListener('change', onStoreChange)\n },\n [resolved],\n )\n const getSnapshot = () =>\n typeof window !== 'undefined' && window.matchMedia ? window.matchMedia(resolved).matches : false\n // the server can't know the viewport — assume the query doesn't match (matches the CSR-first default)\n const getServerSnapshot = () => false\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot)\n}\n\n/**\n * The current **max-width match** for every breakpoint — `{ xs, sm, md, lg, xl }` where each is `true`\n * when the viewport is at most that breakpoint's bound. Feeds `resolveResponsive` so components can\n * turn a responsive prop map into a concrete value. A fixed set of `useMediaQuery` calls (stable hook\n * order), each SSR-safe.\n */\nexport function useBreakpointMatches(): Record<Breakpoint, boolean> {\n // explicit, fixed set of calls (stable hook order) — one per breakpoint, all max-width (\"down\")\n return {\n xxs: useMediaQuery('xxs'),\n xs: useMediaQuery('xs'),\n sm: useMediaQuery('sm'),\n md: useMediaQuery('md'),\n lg: useMediaQuery('lg'),\n xl: useMediaQuery('xl'),\n xxl: useMediaQuery('xxl'),\n }\n}\n"],"names":["isBreakpoint","value","BREAKPOINTS","useMediaQuery","query","direction","useSyncExternalStore","subscribeBreakpoints","getBreakpointsVersion","resolved","breakpointQuery","subscribe","useCallback","onStoreChange","mql","getSnapshot","getServerSnapshot","useBreakpointMatches"],"mappings":"8EASMA,EAAgBC,GAAuCA,KAASC,EAAAA,YAmB/D,SAASC,EAAcC,EAAeC,EAA2B,OAAiB,CAGvFC,EAAAA,qBAAqBC,EAAAA,qBAAsBC,wBAAuB,IAAM,CAAC,EACzE,MAAMC,EAAWT,EAAaI,CAAK,EAAIM,EAAAA,gBAAgBN,EAAOC,CAAS,EAAID,EAErEO,EAAYC,EAAAA,YACfC,GAA8B,CAC7B,GAAI,OAAO,OAAW,KAAe,CAAC,OAAO,iBAAmB,IAAM,CAAC,EACvE,MAAMC,EAAM,OAAO,WAAWL,CAAQ,EACtC,OAAAK,EAAI,iBAAiB,SAAUD,CAAa,EACrC,IAAMC,EAAI,oBAAoB,SAAUD,CAAa,CAC9D,EACA,CAACJ,CAAQ,CAAA,EAELM,EAAc,IAClB,OAAO,OAAW,KAAe,OAAO,WAAa,OAAO,WAAWN,CAAQ,EAAE,QAAU,GAEvFO,EAAoB,IAAM,GAChC,OAAOV,uBAAqBK,EAAWI,EAAaC,CAAiB,CACvE,CAQO,SAASC,GAAoD,CAElE,MAAO,CACL,IAAKd,EAAc,KAAK,EACxB,GAAIA,EAAc,IAAI,EACtB,GAAIA,EAAc,IAAI,EACtB,GAAIA,EAAc,IAAI,EACtB,GAAIA,EAAc,IAAI,EACtB,GAAIA,EAAc,IAAI,EACtB,IAAKA,EAAc,KAAK,CAAA,CAE5B"}
@@ -0,0 +1,32 @@
1
+ import { useSyncExternalStore as o, useCallback as d } from "react";
2
+ import { s as c, g as m, b as u, B as p } from "./breakpoints-BbDakdqF.js";
3
+ const x = (n) => n in p;
4
+ function e(n, i = "down") {
5
+ o(c, m, () => 0);
6
+ const s = x(n) ? u(n, i) : n, r = d(
7
+ (t) => {
8
+ if (typeof window > "u" || !window.matchMedia) return () => {
9
+ };
10
+ const a = window.matchMedia(s);
11
+ return a.addEventListener("change", t), () => a.removeEventListener("change", t);
12
+ },
13
+ [s]
14
+ );
15
+ return o(r, () => typeof window < "u" && window.matchMedia ? window.matchMedia(s).matches : !1, () => !1);
16
+ }
17
+ function g() {
18
+ return {
19
+ xxs: e("xxs"),
20
+ xs: e("xs"),
21
+ sm: e("sm"),
22
+ md: e("md"),
23
+ lg: e("lg"),
24
+ xl: e("xl"),
25
+ xxl: e("xxl")
26
+ };
27
+ }
28
+ export {
29
+ e as a,
30
+ g as u
31
+ };
32
+ //# sourceMappingURL=useMediaQuery-DrDUrkmJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMediaQuery-DrDUrkmJ.js","sources":["../src/hooks/useMediaQuery.ts"],"sourcesContent":["import { useCallback, useSyncExternalStore } from 'react'\nimport {\n BREAKPOINTS,\n breakpointQuery,\n getBreakpointsVersion,\n subscribeBreakpoints,\n type Breakpoint,\n} from '../theme/breakpoints'\n\nconst isBreakpoint = (value: string): value is Breakpoint => value in BREAKPOINTS\n\n/**\n * Subscribe to a media query and get whether it currently matches, re-rendering when it flips. Built on\n * `useSyncExternalStore`, so on the client the first render already has the correct value (no flash),\n * and it's **SSR-safe** — returns `false` on the server / where `matchMedia` is unavailable. Use this\n * instead of hand-rolling `window.matchMedia` + effects.\n *\n * Pass either a **raw media query** (`'(max-width: 640px)'`, `'(prefers-color-scheme: dark)'`) **or a\n * shared `Breakpoint` token** — a token resolves against the library's breakpoints (§ `BREAKPOINTS`),\n * defaulting to **`down`** (max-width): `useMediaQuery('sm')` → `(max-width: 959.98px)` = tablet-and-down.\n * Pass `direction: 'up'` for the min-width side.\n *\n * @example\n * const isMobile = useMediaQuery('xs') // ≤ 767.98px\n * const isTablet = useMediaQuery('sm') // ≤ 959.98px\n * const isDesktopUp = useMediaQuery('md', 'up') // ≥ 1280px\n * const isDark = useMediaQuery('(prefers-color-scheme: dark)')\n */\nexport function useMediaQuery(query: string, direction: 'down' | 'up' = 'down'): boolean {\n // re-render when the active breakpoints change (a `config.theme.breakpoints` override) so a token\n // query re-resolves; harmless for raw-string queries (the store only fires on an actual override)\n useSyncExternalStore(subscribeBreakpoints, getBreakpointsVersion, () => 0)\n const resolved = isBreakpoint(query) ? breakpointQuery(query, direction) : query\n\n const subscribe = useCallback(\n (onStoreChange: () => void) => {\n if (typeof window === 'undefined' || !window.matchMedia) return () => {}\n const mql = window.matchMedia(resolved)\n mql.addEventListener('change', onStoreChange)\n return () => mql.removeEventListener('change', onStoreChange)\n },\n [resolved],\n )\n const getSnapshot = () =>\n typeof window !== 'undefined' && window.matchMedia ? window.matchMedia(resolved).matches : false\n // the server can't know the viewport — assume the query doesn't match (matches the CSR-first default)\n const getServerSnapshot = () => false\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot)\n}\n\n/**\n * The current **max-width match** for every breakpoint — `{ xs, sm, md, lg, xl }` where each is `true`\n * when the viewport is at most that breakpoint's bound. Feeds `resolveResponsive` so components can\n * turn a responsive prop map into a concrete value. A fixed set of `useMediaQuery` calls (stable hook\n * order), each SSR-safe.\n */\nexport function useBreakpointMatches(): Record<Breakpoint, boolean> {\n // explicit, fixed set of calls (stable hook order) — one per breakpoint, all max-width (\"down\")\n return {\n xxs: useMediaQuery('xxs'),\n xs: useMediaQuery('xs'),\n sm: useMediaQuery('sm'),\n md: useMediaQuery('md'),\n lg: useMediaQuery('lg'),\n xl: useMediaQuery('xl'),\n xxl: useMediaQuery('xxl'),\n }\n}\n"],"names":["isBreakpoint","value","BREAKPOINTS","useMediaQuery","query","direction","useSyncExternalStore","subscribeBreakpoints","getBreakpointsVersion","resolved","breakpointQuery","subscribe","useCallback","onStoreChange","mql","useBreakpointMatches"],"mappings":";;AASA,MAAMA,IAAe,CAACC,MAAuCA,KAASC;AAmB/D,SAASC,EAAcC,GAAeC,IAA2B,QAAiB;AAGvF,EAAAC,EAAqBC,GAAsBC,GAAuB,MAAM,CAAC;AACzE,QAAMC,IAAWT,EAAaI,CAAK,IAAIM,EAAgBN,GAAOC,CAAS,IAAID,GAErEO,IAAYC;AAAA,IAChB,CAACC,MAA8B;AAC7B,UAAI,OAAO,SAAW,OAAe,CAAC,OAAO,mBAAmB,MAAM;AAAA,MAAC;AACvE,YAAMC,IAAM,OAAO,WAAWL,CAAQ;AACtC,aAAAK,EAAI,iBAAiB,UAAUD,CAAa,GACrC,MAAMC,EAAI,oBAAoB,UAAUD,CAAa;AAAA,IAC9D;AAAA,IACA,CAACJ,CAAQ;AAAA,EAAA;AAMX,SAAOH,EAAqBK,GAJR,MAClB,OAAO,SAAW,OAAe,OAAO,aAAa,OAAO,WAAWF,CAAQ,EAAE,UAAU,IAEnE,MAAM,EACqC;AACvE;AAQO,SAASM,IAAoD;AAElE,SAAO;AAAA,IACL,KAAKZ,EAAc,KAAK;AAAA,IACxB,IAAIA,EAAc,IAAI;AAAA,IACtB,IAAIA,EAAc,IAAI;AAAA,IACtB,IAAIA,EAAc,IAAI;AAAA,IACtB,IAAIA,EAAc,IAAI;AAAA,IACtB,IAAIA,EAAc,IAAI;AAAA,IACtB,KAAKA,EAAc,KAAK;AAAA,EAAA;AAE5B;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@techzyapp/ui-library",
3
- "version": "1.0.4",
3
+ "version": "1.0.8",
4
4
  "description": "Techzy UI — reusable React component library for admin panels.",
5
5
  "type": "module",
6
6
  "license": "MIT",