@maxal_studio/kratosjs-react 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (529) hide show
  1. package/README.md +44 -0
  2. package/dist/FieldRenderer.d.ts +13 -0
  3. package/dist/FieldRenderer.js +62 -0
  4. package/dist/FormRenderer.d.ts +7 -0
  5. package/dist/FormRenderer.js +78 -0
  6. package/dist/TableRenderer.d.ts +2 -0
  7. package/dist/TableRenderer.js +1 -0
  8. package/dist/api/actionsApi.d.ts +23 -0
  9. package/dist/api/actionsApi.js +46 -0
  10. package/dist/api/authenticatedFetch.d.ts +8 -0
  11. package/dist/api/authenticatedFetch.js +31 -0
  12. package/dist/api/exportApi.d.ts +18 -0
  13. package/dist/api/exportApi.js +50 -0
  14. package/dist/api/http.d.ts +24 -0
  15. package/dist/api/http.js +52 -0
  16. package/dist/api/resourceApi.d.ts +37 -0
  17. package/dist/api/resourceApi.js +52 -0
  18. package/dist/api/tableApi.d.ts +83 -0
  19. package/dist/api/tableApi.js +51 -0
  20. package/dist/api/urls.d.ts +19 -0
  21. package/dist/api/urls.js +46 -0
  22. package/dist/app.d.ts +101 -0
  23. package/dist/app.js +89 -0
  24. package/dist/auth/AuthContext.d.ts +22 -0
  25. package/dist/auth/AuthContext.js +147 -0
  26. package/dist/auth/LoginPage.d.ts +10 -0
  27. package/dist/auth/LoginPage.js +179 -0
  28. package/dist/auth/ProtectedRoute.d.ts +12 -0
  29. package/dist/auth/ProtectedRoute.js +22 -0
  30. package/dist/auth/authApiClient.d.ts +24 -0
  31. package/dist/auth/authApiClient.js +95 -0
  32. package/dist/auth/types.d.ts +103 -0
  33. package/dist/auth/types.js +1 -0
  34. package/dist/components/ActionFormModal.d.ts +22 -0
  35. package/dist/components/ActionFormModal.js +8 -0
  36. package/dist/components/AdminPanel.d.ts +11 -0
  37. package/dist/components/AdminPanel.js +194 -0
  38. package/dist/components/Checkbox.d.ts +10 -0
  39. package/dist/components/Checkbox.js +8 -0
  40. package/dist/components/CheckboxField.d.ts +7 -0
  41. package/dist/components/CheckboxField.js +26 -0
  42. package/dist/components/ColorPickerField.d.ts +7 -0
  43. package/dist/components/ColorPickerField.js +26 -0
  44. package/dist/components/DateTimePickerField.d.ts +7 -0
  45. package/dist/components/DateTimePickerField.js +64 -0
  46. package/dist/components/FileUploadField.d.ts +9 -0
  47. package/dist/components/FileUploadField.js +478 -0
  48. package/dist/components/GlobalSearch.d.ts +22 -0
  49. package/dist/components/GlobalSearch.js +181 -0
  50. package/dist/components/GroupField.d.ts +7 -0
  51. package/dist/components/GroupField.js +23 -0
  52. package/dist/components/HiddenField.d.ts +3 -0
  53. package/dist/components/HiddenField.js +10 -0
  54. package/dist/components/ModalBreadcrumb.d.ts +5 -0
  55. package/dist/components/ModalBreadcrumb.js +33 -0
  56. package/dist/components/ModalDrawer.d.ts +15 -0
  57. package/dist/components/ModalDrawer.js +40 -0
  58. package/dist/components/RadioField.d.ts +7 -0
  59. package/dist/components/RadioField.js +26 -0
  60. package/dist/components/RepeaterField.d.ts +3 -0
  61. package/dist/components/RepeaterField.js +191 -0
  62. package/dist/components/ResourceModalRenderer.d.ts +10 -0
  63. package/dist/components/ResourceModalRenderer.js +80 -0
  64. package/dist/components/RichEditorField.d.ts +3 -0
  65. package/dist/components/RichEditorField.js +655 -0
  66. package/dist/components/SectionField.d.ts +9 -0
  67. package/dist/components/SectionField.js +111 -0
  68. package/dist/components/SelectField.d.ts +8 -0
  69. package/dist/components/SelectField.js +523 -0
  70. package/dist/components/TabsField.d.ts +10 -0
  71. package/dist/components/TabsField.js +214 -0
  72. package/dist/components/TagsInputField.d.ts +7 -0
  73. package/dist/components/TagsInputField.js +172 -0
  74. package/dist/components/TextInputField.d.ts +7 -0
  75. package/dist/components/TextInputField.js +44 -0
  76. package/dist/components/TextareaField.d.ts +7 -0
  77. package/dist/components/TextareaField.js +31 -0
  78. package/dist/components/ToggleField.d.ts +7 -0
  79. package/dist/components/ToggleField.js +57 -0
  80. package/dist/components/ViewModal.d.ts +25 -0
  81. package/dist/components/ViewModal.js +159 -0
  82. package/dist/components/blocks/BlockRenderer.d.ts +7 -0
  83. package/dist/components/blocks/BlockRenderer.js +36 -0
  84. package/dist/components/blocks/FormBlockRenderer.d.ts +6 -0
  85. package/dist/components/blocks/FormBlockRenderer.js +110 -0
  86. package/dist/components/blocks/TableBlockRenderer.d.ts +6 -0
  87. package/dist/components/blocks/TableBlockRenderer.js +12 -0
  88. package/dist/components/blocks/TabsBlockRenderer.d.ts +7 -0
  89. package/dist/components/blocks/TabsBlockRenderer.js +11 -0
  90. package/dist/components/blocks/WidgetBlockRenderer.d.ts +6 -0
  91. package/dist/components/blocks/WidgetBlockRenderer.js +11 -0
  92. package/dist/components/columns/CheckboxColumnComponent.d.ts +6 -0
  93. package/dist/components/columns/CheckboxColumnComponent.js +21 -0
  94. package/dist/components/columns/ColorColumnComponent.d.ts +3 -0
  95. package/dist/components/columns/ColorColumnComponent.js +11 -0
  96. package/dist/components/columns/DeeplinkWrapper.d.ts +15 -0
  97. package/dist/components/columns/DeeplinkWrapper.js +85 -0
  98. package/dist/components/columns/IconColumnComponent.d.ts +3 -0
  99. package/dist/components/columns/IconColumnComponent.js +52 -0
  100. package/dist/components/columns/ImageColumnComponent.d.ts +3 -0
  101. package/dist/components/columns/ImageColumnComponent.js +98 -0
  102. package/dist/components/columns/MediaColumnComponent.d.ts +3 -0
  103. package/dist/components/columns/MediaColumnComponent.js +160 -0
  104. package/dist/components/columns/SelectColumnComponent.d.ts +6 -0
  105. package/dist/components/columns/SelectColumnComponent.js +26 -0
  106. package/dist/components/columns/TagsColumnComponent.d.ts +3 -0
  107. package/dist/components/columns/TagsColumnComponent.js +18 -0
  108. package/dist/components/columns/TextColumnComponent.d.ts +11 -0
  109. package/dist/components/columns/TextColumnComponent.js +107 -0
  110. package/dist/components/columns/TextInputColumnComponent.d.ts +6 -0
  111. package/dist/components/columns/TextInputColumnComponent.js +18 -0
  112. package/dist/components/columns/ToggleColumnComponent.d.ts +6 -0
  113. package/dist/components/columns/ToggleColumnComponent.js +25 -0
  114. package/dist/components/columns/VideoColumnComponent.d.ts +3 -0
  115. package/dist/components/columns/VideoColumnComponent.js +125 -0
  116. package/dist/components/columns/ViewColumnComponent.d.ts +3 -0
  117. package/dist/components/columns/ViewColumnComponent.js +7 -0
  118. package/dist/components/errors/ErrorBoundary.d.ts +23 -0
  119. package/dist/components/errors/ErrorBoundary.js +33 -0
  120. package/dist/components/filters/CustomFilterComponent.d.ts +10 -0
  121. package/dist/components/filters/CustomFilterComponent.js +33 -0
  122. package/dist/components/filters/DateFilterComponent.d.ts +15 -0
  123. package/dist/components/filters/DateFilterComponent.js +132 -0
  124. package/dist/components/filters/QueryBuilderFilterComponent.d.ts +11 -0
  125. package/dist/components/filters/QueryBuilderFilterComponent.js +200 -0
  126. package/dist/components/layout/Header.d.ts +10 -0
  127. package/dist/components/layout/Header.js +70 -0
  128. package/dist/components/layout/PanelBrandMark.d.ts +8 -0
  129. package/dist/components/layout/PanelBrandMark.js +28 -0
  130. package/dist/components/layout/Sidebar.d.ts +35 -0
  131. package/dist/components/layout/Sidebar.js +125 -0
  132. package/dist/components/modals/RelationCreateModal.d.ts +19 -0
  133. package/dist/components/modals/RelationCreateModal.js +57 -0
  134. package/dist/components/modals/ResourceFormModal.d.ts +37 -0
  135. package/dist/components/modals/ResourceFormModal.js +44 -0
  136. package/dist/components/modals/useResourceForm.d.ts +40 -0
  137. package/dist/components/modals/useResourceForm.js +138 -0
  138. package/dist/components/modals/view/RecordActions.d.ts +17 -0
  139. package/dist/components/modals/view/RecordActions.js +16 -0
  140. package/dist/components/modals/view/RecordDetails.d.ts +13 -0
  141. package/dist/components/modals/view/RecordDetails.js +29 -0
  142. package/dist/components/modals/view/RelationPanel.d.ts +18 -0
  143. package/dist/components/modals/view/RelationPanel.js +16 -0
  144. package/dist/components/modals/view/RelationTabs.d.ts +32 -0
  145. package/dist/components/modals/view/RelationTabs.js +42 -0
  146. package/dist/components/modals/view/useRecordView.d.ts +18 -0
  147. package/dist/components/modals/view/useRecordView.js +114 -0
  148. package/dist/components/pages/PageRenderer.d.ts +6 -0
  149. package/dist/components/pages/PageRenderer.js +107 -0
  150. package/dist/components/table/ColumnTogglePopup.d.ts +11 -0
  151. package/dist/components/table/ColumnTogglePopup.js +16 -0
  152. package/dist/components/table/GridCard.d.ts +21 -0
  153. package/dist/components/table/GridCard.js +30 -0
  154. package/dist/components/table/GridView.d.ts +23 -0
  155. package/dist/components/table/GridView.js +49 -0
  156. package/dist/components/table/LayoutToggle.d.ts +7 -0
  157. package/dist/components/table/LayoutToggle.js +9 -0
  158. package/dist/components/table/TableActionsDropdown.d.ts +13 -0
  159. package/dist/components/table/TableActionsDropdown.js +46 -0
  160. package/dist/components/table/TableBulkActions.d.ts +11 -0
  161. package/dist/components/table/TableBulkActions.js +21 -0
  162. package/dist/components/table/TableHeader.d.ts +14 -0
  163. package/dist/components/table/TableHeader.js +23 -0
  164. package/dist/components/table/TablePagination.d.ts +13 -0
  165. package/dist/components/table/TablePagination.js +55 -0
  166. package/dist/components/table/TableRow.d.ts +21 -0
  167. package/dist/components/table/TableRow.js +32 -0
  168. package/dist/components/table/TableSearchBar.d.ts +11 -0
  169. package/dist/components/table/TableSearchBar.js +12 -0
  170. package/dist/components/table/TableTabs.d.ts +14 -0
  171. package/dist/components/table/TableTabs.js +8 -0
  172. package/dist/components/ui/Badge.d.ts +6 -0
  173. package/dist/components/ui/Badge.js +12 -0
  174. package/dist/components/ui/Button.d.ts +22 -0
  175. package/dist/components/ui/Button.js +22 -0
  176. package/dist/components/ui/Card.d.ts +7 -0
  177. package/dist/components/ui/Card.js +5 -0
  178. package/dist/components/ui/ConfirmDialog.d.ts +19 -0
  179. package/dist/components/ui/ConfirmDialog.js +45 -0
  180. package/dist/components/ui/EmptyState.d.ts +9 -0
  181. package/dist/components/ui/EmptyState.js +6 -0
  182. package/dist/components/ui/ErrorAlert.d.ts +7 -0
  183. package/dist/components/ui/ErrorAlert.js +9 -0
  184. package/dist/components/ui/Input.d.ts +11 -0
  185. package/dist/components/ui/Input.js +10 -0
  186. package/dist/components/ui/Label.d.ts +5 -0
  187. package/dist/components/ui/Label.js +5 -0
  188. package/dist/components/ui/PillButton.d.ts +14 -0
  189. package/dist/components/ui/PillButton.js +19 -0
  190. package/dist/components/ui/Select.d.ts +7 -0
  191. package/dist/components/ui/Select.js +7 -0
  192. package/dist/components/ui/Spinner.d.ts +8 -0
  193. package/dist/components/ui/Spinner.js +14 -0
  194. package/dist/components/ui/Toast.d.ts +21 -0
  195. package/dist/components/ui/Toast.js +47 -0
  196. package/dist/components/ui/index.d.ts +24 -0
  197. package/dist/components/ui/index.js +12 -0
  198. package/dist/components/utils/HintDisplay.d.ts +11 -0
  199. package/dist/components/utils/HintDisplay.js +12 -0
  200. package/dist/components/utils/Icon.d.ts +22 -0
  201. package/dist/components/utils/Icon.js +22 -0
  202. package/dist/components/utils/MediaPreviewModal.d.ts +14 -0
  203. package/dist/components/utils/MediaPreviewModal.js +32 -0
  204. package/dist/components/utils/ViewFieldWrapper.d.ts +11 -0
  205. package/dist/components/utils/ViewFieldWrapper.js +9 -0
  206. package/dist/components/utils/layoutHelpers.d.ts +19 -0
  207. package/dist/components/utils/layoutHelpers.js +257 -0
  208. package/dist/components/widgets/ChartWidget.d.ts +16 -0
  209. package/dist/components/widgets/ChartWidget.js +192 -0
  210. package/dist/components/widgets/StatsWidget.d.ts +16 -0
  211. package/dist/components/widgets/StatsWidget.js +39 -0
  212. package/dist/components/widgets/WidgetRenderer.d.ts +10 -0
  213. package/dist/components/widgets/WidgetRenderer.js +50 -0
  214. package/dist/components/widgets/WidgetShell.d.ts +9 -0
  215. package/dist/components/widgets/WidgetShell.js +7 -0
  216. package/dist/contexts/AuthChallengeRegistryContext.d.ts +15 -0
  217. package/dist/contexts/AuthChallengeRegistryContext.js +15 -0
  218. package/dist/contexts/BlockRegistryContext.d.ts +18 -0
  219. package/dist/contexts/BlockRegistryContext.js +8 -0
  220. package/dist/contexts/ColumnRegistryContext.d.ts +8 -0
  221. package/dist/contexts/ColumnRegistryContext.js +30 -0
  222. package/dist/contexts/FieldRegistryContext.d.ts +13 -0
  223. package/dist/contexts/FieldRegistryContext.js +46 -0
  224. package/dist/contexts/PanelMetadataContext.d.ts +26 -0
  225. package/dist/contexts/PanelMetadataContext.js +26 -0
  226. package/dist/contexts/PanelProviders.d.ts +27 -0
  227. package/dist/contexts/PanelProviders.js +24 -0
  228. package/dist/contexts/ResourceModalContext.d.ts +26 -0
  229. package/dist/contexts/ResourceModalContext.js +76 -0
  230. package/dist/contexts/SlotRegistryContext.d.ts +19 -0
  231. package/dist/contexts/SlotRegistryContext.js +24 -0
  232. package/dist/contexts/TableRefreshContext.d.ts +10 -0
  233. package/dist/contexts/TableRefreshContext.js +30 -0
  234. package/dist/contexts/WidgetRegistryContext.d.ts +17 -0
  235. package/dist/contexts/WidgetRegistryContext.js +14 -0
  236. package/dist/contexts/createRegistryContext.d.ts +19 -0
  237. package/dist/contexts/createRegistryContext.js +20 -0
  238. package/dist/hooks/useAfterStateUpdated.d.ts +6 -0
  239. package/dist/hooks/useAfterStateUpdated.js +62 -0
  240. package/dist/hooks/useValidation.d.ts +26 -0
  241. package/dist/hooks/useValidation.js +76 -0
  242. package/dist/i18n/I18nProvider.d.ts +27 -0
  243. package/dist/i18n/I18nProvider.js +101 -0
  244. package/dist/i18n/LocaleSwitcher.d.ts +10 -0
  245. package/dist/i18n/LocaleSwitcher.js +30 -0
  246. package/dist/i18n/activeLocale.d.ts +11 -0
  247. package/dist/i18n/activeLocale.js +34 -0
  248. package/dist/i18n/buildClientI18n.d.ts +28 -0
  249. package/dist/i18n/buildClientI18n.js +67 -0
  250. package/dist/i18n/index.d.ts +11 -0
  251. package/dist/i18n/index.js +9 -0
  252. package/dist/i18n/locales/core/en.d.ts +225 -0
  253. package/dist/i18n/locales/core/en.js +252 -0
  254. package/dist/i18n/locales/core/index.d.ts +2 -0
  255. package/dist/i18n/locales/core/index.js +4 -0
  256. package/dist/i18n/locales/core/sq.d.ts +253 -0
  257. package/dist/i18n/locales/core/sq.js +255 -0
  258. package/dist/i18n/useFormatter.d.ts +18 -0
  259. package/dist/i18n/useFormatter.js +37 -0
  260. package/dist/i18n/useLocale.d.ts +11 -0
  261. package/dist/i18n/useLocale.js +11 -0
  262. package/dist/i18n/useTranslation.d.ts +12 -0
  263. package/dist/i18n/useTranslation.js +12 -0
  264. package/dist/index.d.ts +106 -0
  265. package/dist/index.js +101 -0
  266. package/dist/pages/ResourceListPage.d.ts +8 -0
  267. package/dist/pages/ResourceListPage.js +139 -0
  268. package/dist/plugin.d.ts +79 -0
  269. package/dist/plugin.js +34 -0
  270. package/dist/runtime/conditions.d.ts +35 -0
  271. package/dist/runtime/conditions.js +97 -0
  272. package/dist/runtime/formTraversal.d.ts +25 -0
  273. package/dist/runtime/formTraversal.js +37 -0
  274. package/dist/runtime/serializedFunctions.d.ts +41 -0
  275. package/dist/runtime/serializedFunctions.js +264 -0
  276. package/dist/slots/Slot.d.ts +24 -0
  277. package/dist/slots/Slot.js +29 -0
  278. package/dist/slots/SlotCluster.d.ts +22 -0
  279. package/dist/slots/SlotCluster.js +49 -0
  280. package/dist/slots/index.d.ts +7 -0
  281. package/dist/slots/index.js +4 -0
  282. package/dist/slots/mergeSlots.d.ts +18 -0
  283. package/dist/slots/mergeSlots.js +35 -0
  284. package/dist/slots/types.d.ts +87 -0
  285. package/dist/slots/types.js +30 -0
  286. package/dist/styles.css +1 -0
  287. package/dist/table/TableContext.d.ts +36 -0
  288. package/dist/table/TableContext.js +13 -0
  289. package/dist/table/TableRenderer.d.ts +29 -0
  290. package/dist/table/TableRenderer.js +159 -0
  291. package/dist/table/components/FiltersPanel.d.ts +11 -0
  292. package/dist/table/components/FiltersPanel.js +52 -0
  293. package/dist/table/components/TableToolbar.d.ts +28 -0
  294. package/dist/table/components/TableToolbar.js +27 -0
  295. package/dist/table/components/TableToolbarButton.d.ts +6 -0
  296. package/dist/table/components/TableToolbarButton.js +9 -0
  297. package/dist/table/components/TableView.d.ts +12 -0
  298. package/dist/table/components/TableView.js +21 -0
  299. package/dist/table/defaultRowActions.d.ts +21 -0
  300. package/dist/table/defaultRowActions.js +37 -0
  301. package/dist/table/hooks/useColumnVisibility.d.ts +13 -0
  302. package/dist/table/hooks/useColumnVisibility.js +59 -0
  303. package/dist/table/hooks/useEditableRows.d.ts +22 -0
  304. package/dist/table/hooks/useEditableRows.js +63 -0
  305. package/dist/table/hooks/useTableActions.d.ts +54 -0
  306. package/dist/table/hooks/useTableActions.js +313 -0
  307. package/dist/table/hooks/useTableData.d.ts +28 -0
  308. package/dist/table/hooks/useTableData.js +63 -0
  309. package/dist/table/hooks/useTableLayout.d.ts +12 -0
  310. package/dist/table/hooks/useTableLayout.js +31 -0
  311. package/dist/table/hooks/useTableQuery.d.ts +29 -0
  312. package/dist/table/hooks/useTableQuery.js +135 -0
  313. package/dist/types/index.d.ts +224 -0
  314. package/dist/types/index.js +6 -0
  315. package/dist/utils/classNames.d.ts +7 -0
  316. package/dist/utils/classNames.js +9 -0
  317. package/dist/utils/columnMediaDimensions.d.ts +13 -0
  318. package/dist/utils/columnMediaDimensions.js +29 -0
  319. package/dist/utils/columnVisibilityStorage.d.ts +22 -0
  320. package/dist/utils/columnVisibilityStorage.js +56 -0
  321. package/dist/utils/fieldErrors.d.ts +13 -0
  322. package/dist/utils/fieldErrors.js +25 -0
  323. package/dist/utils/formatValue.d.ts +28 -0
  324. package/dist/utils/formatValue.js +109 -0
  325. package/dist/utils/layoutStorage.d.ts +23 -0
  326. package/dist/utils/layoutStorage.js +53 -0
  327. package/dist/utils/redirectHandler.d.ts +7 -0
  328. package/dist/utils/redirectHandler.js +25 -0
  329. package/dist/utils/tableFormatters.d.ts +14 -0
  330. package/dist/utils/tableFormatters.js +93 -0
  331. package/dist/utils/widgetVisibilityStorage.d.ts +11 -0
  332. package/dist/utils/widgetVisibilityStorage.js +39 -0
  333. package/package.json +101 -0
  334. package/src/FieldRenderer.test.tsx +44 -0
  335. package/src/FieldRenderer.tsx +104 -0
  336. package/src/FormRenderer.containers.test.tsx +121 -0
  337. package/src/FormRenderer.test.tsx +174 -0
  338. package/src/FormRenderer.tsx +140 -0
  339. package/src/TableRenderer.tsx +2 -0
  340. package/src/api/actionsApi.ts +76 -0
  341. package/src/api/authenticatedFetch.ts +40 -0
  342. package/src/api/exportApi.ts +66 -0
  343. package/src/api/http.test.ts +58 -0
  344. package/src/api/http.ts +68 -0
  345. package/src/api/resourceApi.ts +88 -0
  346. package/src/api/tableApi.test.ts +108 -0
  347. package/src/api/tableApi.ts +107 -0
  348. package/src/api/urls.ts +50 -0
  349. package/src/app.test.tsx +67 -0
  350. package/src/app.tsx +181 -0
  351. package/src/auth/AuthContext.tsx +188 -0
  352. package/src/auth/LoginPage.tsx +380 -0
  353. package/src/auth/ProtectedRoute.tsx +39 -0
  354. package/src/auth/authApiClient.ts +109 -0
  355. package/src/auth/authFlow.test.tsx +168 -0
  356. package/src/auth/types.ts +104 -0
  357. package/src/components/ActionFormModal.tsx +45 -0
  358. package/src/components/AdminPanel.tsx +368 -0
  359. package/src/components/Checkbox.tsx +59 -0
  360. package/src/components/CheckboxField.tsx +88 -0
  361. package/src/components/ColorPickerField.tsx +93 -0
  362. package/src/components/DateTimePickerField.tsx +112 -0
  363. package/src/components/FileUploadField.tsx +841 -0
  364. package/src/components/GlobalSearch.tsx +436 -0
  365. package/src/components/GroupField.tsx +85 -0
  366. package/src/components/HiddenField.tsx +14 -0
  367. package/src/components/ModalBreadcrumb.tsx +74 -0
  368. package/src/components/ModalDrawer.tsx +137 -0
  369. package/src/components/RadioField.tsx +80 -0
  370. package/src/components/RepeaterField.tsx +546 -0
  371. package/src/components/ResourceModalRenderer.tsx +144 -0
  372. package/src/components/RichEditorField.tsx +942 -0
  373. package/src/components/SectionField.tsx +242 -0
  374. package/src/components/SelectField.tsx +843 -0
  375. package/src/components/TabsField.test.tsx +151 -0
  376. package/src/components/TabsField.tsx +386 -0
  377. package/src/components/TagsInputField.tsx +411 -0
  378. package/src/components/TextInputField.tsx +91 -0
  379. package/src/components/TextareaField.tsx +110 -0
  380. package/src/components/ToggleField.tsx +126 -0
  381. package/src/components/ViewModal.tsx +353 -0
  382. package/src/components/blocks/BlockRenderer.tsx +56 -0
  383. package/src/components/blocks/FormBlockRenderer.tsx +160 -0
  384. package/src/components/blocks/TableBlockRenderer.tsx +33 -0
  385. package/src/components/blocks/TabsBlockRenderer.tsx +49 -0
  386. package/src/components/blocks/WidgetBlockRenderer.tsx +19 -0
  387. package/src/components/columns/CheckboxColumnComponent.tsx +38 -0
  388. package/src/components/columns/ColorColumnComponent.tsx +23 -0
  389. package/src/components/columns/CustomColumn.test.tsx +55 -0
  390. package/src/components/columns/DeeplinkWrapper.tsx +103 -0
  391. package/src/components/columns/IconColumnComponent.tsx +55 -0
  392. package/src/components/columns/ImageColumnComponent.tsx +220 -0
  393. package/src/components/columns/MediaColumnComponent.tsx +294 -0
  394. package/src/components/columns/SelectColumnComponent.tsx +49 -0
  395. package/src/components/columns/TagsColumnComponent.tsx +46 -0
  396. package/src/components/columns/TextColumnComponent.tsx +191 -0
  397. package/src/components/columns/TextInputColumnComponent.tsx +35 -0
  398. package/src/components/columns/ToggleColumnComponent.tsx +56 -0
  399. package/src/components/columns/VideoColumnComponent.tsx +236 -0
  400. package/src/components/columns/ViewColumnComponent.tsx +9 -0
  401. package/src/components/errors/ErrorBoundary.tsx +58 -0
  402. package/src/components/filters/CustomFilterComponent.tsx +130 -0
  403. package/src/components/filters/DateFilterComponent.tsx +272 -0
  404. package/src/components/filters/QueryBuilderFilterComponent.tsx +502 -0
  405. package/src/components/layout/Header.tsx +212 -0
  406. package/src/components/layout/PanelBrandMark.tsx +61 -0
  407. package/src/components/layout/Sidebar.tsx +283 -0
  408. package/src/components/modals/RelationCreateModal.tsx +107 -0
  409. package/src/components/modals/ResourceFormModal.test.tsx +119 -0
  410. package/src/components/modals/ResourceFormModal.tsx +128 -0
  411. package/src/components/modals/useResourceForm.ts +207 -0
  412. package/src/components/modals/view/RecordActions.tsx +69 -0
  413. package/src/components/modals/view/RecordDetails.tsx +60 -0
  414. package/src/components/modals/view/RelationPanel.tsx +76 -0
  415. package/src/components/modals/view/RelationTabs.tsx +145 -0
  416. package/src/components/modals/view/useRecordView.ts +134 -0
  417. package/src/components/pages/PageRenderer.tsx +173 -0
  418. package/src/components/table/ColumnTogglePopup.tsx +85 -0
  419. package/src/components/table/GridCard.tsx +155 -0
  420. package/src/components/table/GridView.tsx +138 -0
  421. package/src/components/table/LayoutToggle.tsx +24 -0
  422. package/src/components/table/TableActionsDropdown.tsx +114 -0
  423. package/src/components/table/TableBulkActions.tsx +65 -0
  424. package/src/components/table/TableHeader.tsx +96 -0
  425. package/src/components/table/TablePagination.tsx +169 -0
  426. package/src/components/table/TableRow.tsx +155 -0
  427. package/src/components/table/TableSearchBar.tsx +66 -0
  428. package/src/components/table/TableTabs.tsx +49 -0
  429. package/src/components/ui/Badge.tsx +30 -0
  430. package/src/components/ui/Button.test.tsx +78 -0
  431. package/src/components/ui/Button.tsx +102 -0
  432. package/src/components/ui/Card.tsx +23 -0
  433. package/src/components/ui/ConfirmDialog.tsx +112 -0
  434. package/src/components/ui/EmptyState.tsx +24 -0
  435. package/src/components/ui/ErrorAlert.tsx +37 -0
  436. package/src/components/ui/Input.tsx +48 -0
  437. package/src/components/ui/Label.tsx +15 -0
  438. package/src/components/ui/PillButton.tsx +72 -0
  439. package/src/components/ui/Select.tsx +33 -0
  440. package/src/components/ui/Spinner.tsx +39 -0
  441. package/src/components/ui/Toast.tsx +105 -0
  442. package/src/components/ui/index.ts +24 -0
  443. package/src/components/utils/HintDisplay.tsx +26 -0
  444. package/src/components/utils/Icon.tsx +36 -0
  445. package/src/components/utils/MediaPreviewModal.tsx +114 -0
  446. package/src/components/utils/ViewFieldWrapper.tsx +23 -0
  447. package/src/components/utils/layoutHelpers.ts +267 -0
  448. package/src/components/widgets/ChartWidget.tsx +247 -0
  449. package/src/components/widgets/StatsWidget.tsx +72 -0
  450. package/src/components/widgets/WidgetRenderer.tsx +108 -0
  451. package/src/components/widgets/WidgetShell.tsx +37 -0
  452. package/src/contexts/AuthChallengeRegistryContext.tsx +29 -0
  453. package/src/contexts/BlockRegistryContext.tsx +28 -0
  454. package/src/contexts/ColumnRegistryContext.tsx +38 -0
  455. package/src/contexts/FieldRegistryContext.tsx +56 -0
  456. package/src/contexts/PanelMetadataContext.tsx +60 -0
  457. package/src/contexts/PanelProviders.tsx +85 -0
  458. package/src/contexts/ResourceModalContext.tsx +137 -0
  459. package/src/contexts/SlotRegistryContext.tsx +35 -0
  460. package/src/contexts/TableRefreshContext.tsx +44 -0
  461. package/src/contexts/WidgetRegistryContext.tsx +34 -0
  462. package/src/contexts/createRegistryContext.tsx +29 -0
  463. package/src/hooks/useAfterStateUpdated.ts +70 -0
  464. package/src/hooks/useValidation.test.ts +59 -0
  465. package/src/hooks/useValidation.ts +95 -0
  466. package/src/i18n/I18nProvider.tsx +128 -0
  467. package/src/i18n/LocaleSwitcher.tsx +50 -0
  468. package/src/i18n/activeLocale.ts +39 -0
  469. package/src/i18n/buildClientI18n.ts +101 -0
  470. package/src/i18n/i18n.test.tsx +140 -0
  471. package/src/i18n/index.ts +12 -0
  472. package/src/i18n/locales/core/en.ts +274 -0
  473. package/src/i18n/locales/core/index.ts +5 -0
  474. package/src/i18n/locales/core/sq.ts +275 -0
  475. package/src/i18n/useFormatter.ts +42 -0
  476. package/src/i18n/useLocale.ts +16 -0
  477. package/src/i18n/useTranslation.ts +17 -0
  478. package/src/index.ts +244 -0
  479. package/src/pages/ResourceListPage.tsx +205 -0
  480. package/src/plugin.ts +110 -0
  481. package/src/runtime/conditions.test.ts +99 -0
  482. package/src/runtime/conditions.ts +148 -0
  483. package/src/runtime/formTraversal.ts +41 -0
  484. package/src/runtime/serializedFunctions.test.ts +59 -0
  485. package/src/runtime/serializedFunctions.ts +284 -0
  486. package/src/slots/Slot.test.tsx +89 -0
  487. package/src/slots/Slot.tsx +47 -0
  488. package/src/slots/SlotCluster.test.tsx +95 -0
  489. package/src/slots/SlotCluster.tsx +107 -0
  490. package/src/slots/index.ts +15 -0
  491. package/src/slots/mergeSlots.test.ts +71 -0
  492. package/src/slots/mergeSlots.ts +40 -0
  493. package/src/slots/slotNames.test.ts +21 -0
  494. package/src/slots/types.ts +119 -0
  495. package/src/styles.css +437 -0
  496. package/src/table/TableContext.tsx +41 -0
  497. package/src/table/TableRenderer.test.tsx +197 -0
  498. package/src/table/TableRenderer.tsx +390 -0
  499. package/src/table/components/FiltersPanel.tsx +193 -0
  500. package/src/table/components/TableToolbar.tsx +153 -0
  501. package/src/table/components/TableToolbarButton.tsx +14 -0
  502. package/src/table/components/TableView.tsx +106 -0
  503. package/src/table/defaultRowActions.ts +43 -0
  504. package/src/table/hooks/useColumnVisibility.test.ts +51 -0
  505. package/src/table/hooks/useColumnVisibility.ts +71 -0
  506. package/src/table/hooks/useEditableRows.test.ts +69 -0
  507. package/src/table/hooks/useEditableRows.ts +89 -0
  508. package/src/table/hooks/useTableActions.ts +393 -0
  509. package/src/table/hooks/useTableData.ts +89 -0
  510. package/src/table/hooks/useTableLayout.ts +45 -0
  511. package/src/table/hooks/useTableQuery.test.ts +116 -0
  512. package/src/table/hooks/useTableQuery.ts +172 -0
  513. package/src/test/mockFetch.ts +67 -0
  514. package/src/test/setup.ts +25 -0
  515. package/src/types/index.ts +228 -0
  516. package/src/utils/classNames.ts +10 -0
  517. package/src/utils/columnMediaDimensions.ts +45 -0
  518. package/src/utils/columnVisibilityStorage.ts +55 -0
  519. package/src/utils/fieldErrors.test.ts +35 -0
  520. package/src/utils/fieldErrors.ts +27 -0
  521. package/src/utils/formatValue.test.tsx +65 -0
  522. package/src/utils/formatValue.tsx +117 -0
  523. package/src/utils/layoutStorage.ts +52 -0
  524. package/src/utils/redirectHandler.ts +29 -0
  525. package/src/utils/tableFormatters.test.ts +54 -0
  526. package/src/utils/tableFormatters.ts +104 -0
  527. package/src/utils/widgetVisibilityStorage.ts +38 -0
  528. package/tailwind.config.js +9 -0
  529. package/vite.config.ts +17 -0
@@ -0,0 +1,12 @@
1
+ // React i18n barrel.
2
+ export { I18nProvider, useI18nContext } from './I18nProvider';
3
+ export type { I18nContextValue, I18nProviderProps } from './I18nProvider';
4
+ export { useTranslation } from './useTranslation';
5
+ export { useLocale } from './useLocale';
6
+ export { useFormatter } from './useFormatter';
7
+ export { LocaleSwitcher } from './LocaleSwitcher';
8
+ export type { LocaleSwitcherProps } from './LocaleSwitcher';
9
+ export { getActiveLocale, translate, setActiveI18n } from './activeLocale';
10
+ export { buildClientI18n, buildClientResources } from './buildClientI18n';
11
+ export type { ClientI18nConfig, ClientTranslations } from './buildClientI18n';
12
+ export { clientCoreResources } from './locales/core';
@@ -0,0 +1,274 @@
1
+ // Client UI-chrome catalog (English). Namespace: `core`.
2
+ //
3
+ // These strings ship WITH the React package so the panel renders correctly with
4
+ // zero i18n config. Apps/plugins can override any of them (app wins) by
5
+ // registering a `core:`-prefixed key. Distinct from the server `core` catalog,
6
+ // which holds backend framework + validation strings.
7
+
8
+ import { defaultValidationMessages } from '@maxal_studio/kratosjs/dist/validation';
9
+
10
+ const en = {
11
+ // Validation messages (shared with the server; rendered client-side via t()).
12
+ ...defaultValidationMessages,
13
+ // Generic "required" shown by react-hook-form's native required (no field label).
14
+ 'validation.required_generic': 'This field is required',
15
+
16
+ // Common actions / labels.
17
+ 'common.save': 'Save',
18
+ 'common.cancel': 'Cancel',
19
+ 'common.confirm': 'Confirm',
20
+ 'common.delete': 'Delete',
21
+ 'common.close': 'Close',
22
+ 'common.submit': 'Submit',
23
+ 'common.submitting': 'Submitting...',
24
+ 'common.reset': 'Reset',
25
+ 'common.retry': 'Retry',
26
+ 'common.actions': 'Actions',
27
+ 'common.more': 'More',
28
+ 'common.yes': 'Yes',
29
+ 'common.no': 'No',
30
+ 'common.loading': 'Loading',
31
+ 'common.search': 'Search records…',
32
+
33
+ // Panel shell.
34
+ 'panel.loading': 'Loading KratosJs Panel...',
35
+ 'panel.connection_error': 'Connection Error',
36
+ 'panel.empty': 'No resources or pages available in this panel',
37
+ 'panel.sign_out': 'Sign out',
38
+ 'panel.open_menu': 'Open navigation menu',
39
+ 'panel.toggle_dark': 'Switch to dark mode',
40
+ 'panel.toggle_light': 'Switch to light mode',
41
+ 'panel.language': 'Language',
42
+
43
+ // Tables.
44
+ 'table.no_records': 'No records found',
45
+ 'table.no_records_hint': 'Try adjusting your search or filters.',
46
+ 'table.filters': 'Filters',
47
+ 'table.row_actions': 'Row actions',
48
+
49
+ // Forms / records.
50
+ 'form.create_title': 'Create {label}',
51
+ 'form.edit_title': 'Edit {label}',
52
+ 'form.editing_title': 'Editing "{title}"',
53
+ 'form.action_failed': 'Action failed',
54
+ 'form.create_failed': 'Failed to create record',
55
+ 'form.update_failed': 'Failed to update record',
56
+ 'form.confirm_bulk': 'Are you sure you want to {action} {count} items?',
57
+
58
+ // Auth / login.
59
+ 'auth.welcome_back': 'Welcome back',
60
+ 'auth.sign_in': 'Sign in',
61
+ 'auth.sign_in_to': 'Sign in to {title}',
62
+ 'auth.email': 'Email',
63
+ 'auth.email_placeholder': 'you@company.com',
64
+ 'auth.password': 'Password',
65
+ 'auth.password_placeholder': 'Enter your password',
66
+ 'auth.choose_provider': 'Choose how you would like to sign in',
67
+ 'auth.enter_credentials': 'Enter your credentials to continue',
68
+ 'auth.continue': 'Continue to access your account',
69
+ 'auth.verify_identity': 'Verify your identity',
70
+ 'auth.back_to_options': 'Back to sign-in options',
71
+ 'auth.no_providers': 'No authentication providers are configured.',
72
+ 'auth.login_failed': 'Login failed',
73
+ 'auth.verification_failed': 'Verification failed',
74
+
75
+ // Common icon-button labels.
76
+ 'common.move_up': 'Move up',
77
+ 'common.move_down': 'Move down',
78
+ 'common.move_left': 'Move left',
79
+ 'common.move_right': 'Move right',
80
+ 'common.copy_url': 'Copy URL',
81
+ 'common.clear': 'Clear',
82
+ 'common.create': 'Create',
83
+ 'common.edit': 'Edit',
84
+ 'common.view': 'View',
85
+ 'common.apply': 'Apply',
86
+ 'common.add': 'Add',
87
+ 'common.remove': 'Remove',
88
+ 'common.upload': 'Upload',
89
+ 'common.dismiss': 'Dismiss',
90
+
91
+ // Table toolbar / pagination / actions.
92
+ 'table.create_record': 'Create record',
93
+ 'table.column_settings': 'Column settings',
94
+ 'table.no_toggleable_columns': 'No toggleable columns available',
95
+ 'table.close_filters': 'Close filters',
96
+ 'table.view_tabs': 'Table view tabs',
97
+ 'table.save_changes': 'Save changes',
98
+ 'table.reset_changes': 'Reset changes',
99
+ 'pagination.per_page': 'Results per page',
100
+ 'pagination.previous': 'Previous page',
101
+ 'pagination.next': 'Next page',
102
+
103
+ // Search.
104
+ 'search.records': 'Search records',
105
+ 'search.close': 'Close search',
106
+ 'search.clear': 'Clear search',
107
+
108
+ // Filters.
109
+ 'filters.from_date': 'From date...',
110
+ 'filters.to_date': 'To date...',
111
+ 'filters.from': 'From...',
112
+ 'filters.to': 'To...',
113
+ 'filters.date': 'Date...',
114
+ 'filters.value': 'Value...',
115
+ 'filters.range': 'Range',
116
+ 'filters.no_rules': 'No rules added yet',
117
+
118
+ // Modals / drawers.
119
+ 'modal.close': 'Close',
120
+ 'modal.close_all': 'Close all',
121
+ 'modal.stack': 'Modal stack',
122
+ 'modal.sections': 'Record sections',
123
+
124
+ // Confirm dialogs.
125
+ 'confirm.delete_item_title': 'Delete item',
126
+ 'confirm.delete_item_message': 'Are you sure you want to delete this item? This cannot be undone.',
127
+ 'confirm.delete_items_title': 'Delete items',
128
+ 'confirm.delete_items_message': 'Are you sure you want to delete {count} items? This cannot be undone.',
129
+ 'confirm.action_single': 'Are you sure you want to {action} this item?',
130
+ 'confirm.action_generic': 'Are you sure you want to {action}?',
131
+
132
+ // Toasts / record results.
133
+ 'toast.delete_failed': 'Failed to delete item',
134
+ 'toast.deleted': 'Item deleted successfully',
135
+ 'toast.upload_failed': 'Failed to upload file',
136
+ 'toast.invalid_html': 'Invalid HTML. Please check your code.',
137
+
138
+ // File upload.
139
+ 'file.uploaded': 'File uploaded',
140
+ 'file.drop_here': 'Drop files here',
141
+ 'file.click_to_upload': 'Click to upload',
142
+ 'file.video': 'Video',
143
+ 'file.audio': 'Audio',
144
+ 'file.saved': 'Saved',
145
+ 'file.no_image': 'No image',
146
+
147
+ // Empty / misc states.
148
+ 'state.no_fields': 'No fields to display',
149
+ 'state.no_data': 'No data available',
150
+ 'state.page_not_found': 'Page not found',
151
+
152
+ // Rich editor.
153
+ 'editor.html_placeholder': 'Enter HTML code here...',
154
+
155
+ // Tags / repeater.
156
+ 'tags.label': 'Tags',
157
+ 'repeater.active_tab': 'Active tab',
158
+
159
+ // Misc attribute labels.
160
+ 'a11y.color_preview': 'Color preview',
161
+ 'a11y.main_navigation': 'Main navigation',
162
+ 'a11y.tab_errors': 'Has validation errors or required fields',
163
+
164
+ // Rich-text editor toolbar.
165
+ 'editor.bold': 'Bold',
166
+ 'editor.italic': 'Italic',
167
+ 'editor.underline': 'Underline',
168
+ 'editor.strikethrough': 'Strikethrough',
169
+ 'editor.code': 'Code',
170
+ 'editor.code_block': 'Code Block',
171
+ 'editor.heading1': 'Heading 1',
172
+ 'editor.heading2': 'Heading 2',
173
+ 'editor.heading3': 'Heading 3',
174
+ 'editor.bullet_list': 'Bullet List',
175
+ 'editor.ordered_list': 'Ordered List',
176
+ 'editor.blockquote': 'Blockquote',
177
+ 'editor.undo': 'Undo',
178
+ 'editor.redo': 'Redo',
179
+ 'editor.link': 'Link',
180
+ 'editor.subscript': 'Subscript',
181
+ 'editor.superscript': 'Superscript',
182
+ 'editor.highlight': 'Highlight',
183
+ 'editor.align_left': 'Align Left',
184
+ 'editor.align_center': 'Align Center',
185
+ 'editor.align_right': 'Align Right',
186
+ 'editor.insert_image': 'Insert Image',
187
+ 'editor.insert_video': 'Insert Video',
188
+ 'table.column_visibility': 'Column visibility',
189
+ 'pagination.per_page_short': 'Per page',
190
+ 'filters.query_builder': 'Query Builder',
191
+ 'search.start_typing': 'Start typing to see results',
192
+ 'common.loading_ellipsis': 'Loading...',
193
+ 'search.subtitle': 'Search across all records in this panel',
194
+ 'state.no_table_schema': 'No table schema available for this resource',
195
+ 'pagination.range_compact': '{start}–{end} of {total}',
196
+ 'pagination.showing': 'Showing {start} to {end} of {total} results',
197
+ 'auth.preparing': 'Preparing sign in…',
198
+ 'repeater.empty': 'No items yet. Click the button below to add one.',
199
+ 'select.create': 'Create "{term}"',
200
+ 'select.loading': 'Loading...',
201
+ 'filters.add_rule_hint': 'Click "Add Rule" to start building your query',
202
+ 'page.loading': 'Loading page...',
203
+ 'page.no_content': 'This page has no content.',
204
+ 'modal.view_title': 'View {label}',
205
+ 'modal.view_record': 'View "{title}"',
206
+ 'auth.back_to_signin': 'Back to sign in',
207
+ 'auth.providers_load_failed': 'Failed to load authentication providers',
208
+ 'editor.insert_audio': 'Insert Audio',
209
+ 'editor.insert_embed': 'Insert Embed',
210
+ 'editor.html_source': 'HTML Source',
211
+ 'filters.preset_today': 'Today',
212
+ 'filters.preset_yesterday': 'Yesterday',
213
+ 'filters.preset_this_week': 'This Week',
214
+ 'filters.preset_this_month': 'This Month',
215
+ 'filters.preset_this_year': 'This Year',
216
+ 'filters.preset_custom': 'Custom',
217
+ 'common.warning': 'Warning',
218
+ 'state.unknown_field': 'Unknown field type "{type}" for field "{name}"',
219
+ 'state.unknown_column': 'Unknown column type: {type}',
220
+ 'error.connect': 'Failed to connect to API',
221
+ 'error.load_data': 'Failed to load data',
222
+ 'error.load_schema': 'Failed to load table schema',
223
+ 'search.nav_navigate': 'Navigate',
224
+ 'search.nav_open': 'Open',
225
+ 'search.nav_close': 'Close',
226
+ 'common.clear_all': 'Clear all',
227
+ 'common.done': 'Done',
228
+ 'common.all': 'All',
229
+ 'common.try_again': 'Try again',
230
+ 'common.details': 'Details',
231
+ 'common.widgets': 'Widgets',
232
+ 'filters.label_from': 'From',
233
+ 'filters.label_to': 'To',
234
+ 'filters.no_options': 'No options available',
235
+ 'filters.clear_all_filters': 'Clear all filters',
236
+ 'filters.from_value': 'From {date}',
237
+ 'filters.until_value': 'Until {date}',
238
+ 'filters.select_range': 'Select date range...',
239
+ 'confirm.are_you_sure': 'Are you sure?',
240
+ 'common.item': 'Item',
241
+ 'form.submitted': 'Form submitted successfully!',
242
+ 'select.placeholder': 'Select...',
243
+ 'select.create_new': 'Create New',
244
+ 'common.record': 'Record',
245
+ 'editor.start_typing': 'Start typing...',
246
+ 'error.load_record': 'Failed to load record',
247
+ 'error.load_page': 'Failed to load page',
248
+ 'file.video_preview': 'Video Preview',
249
+ 'common.preview': 'Preview',
250
+ 'common.image': 'Image',
251
+ 'common.file': 'File',
252
+ 'editor.rich_text_view': 'Rich Text View',
253
+ 'select.no_matching': 'No matching options found',
254
+ 'table.switch_grid': 'Switch to grid view',
255
+ 'table.switch_table': 'Switch to table view',
256
+ 'table.hide_widgets': 'Hide widgets',
257
+ 'table.show_widgets': 'Show widgets',
258
+ 'error.action_failed': 'Failed to execute action',
259
+ 'error.action_failed_bulk': 'Failed to execute bulk action',
260
+ 'common.video_thumbnail': 'Video thumbnail',
261
+ 'common.error': 'Error',
262
+ 'widget.data_label': 'Data',
263
+ 'filters.advanced_search': 'Advanced Search',
264
+ 'error.fetch_form_data': 'Failed to fetch form data',
265
+ 'error.fetch_form_data_generic': 'An error occurred while fetching form data',
266
+ 'error.submit_form': 'Failed to submit form',
267
+ 'error.generic': 'An error occurred',
268
+ 'error.export_failed': 'Failed to export',
269
+ 'error.delete_failed': 'Failed to delete',
270
+ 'error.bulk_action_failed': 'Bulk action failed',
271
+ };
272
+
273
+ export default en;
274
+ export type ClientCoreCatalog = typeof en;
@@ -0,0 +1,5 @@
1
+ import en from './en';
2
+ import sq from './sq';
3
+
4
+ /** Client UI-chrome catalog, keyed by locale (the `core` namespace). */
5
+ export const clientCoreResources: Record<string, Record<string, string>> = { en, sq };
@@ -0,0 +1,275 @@
1
+ // Client UI-chrome catalog (Albanian / Shqip). Namespace: `core`. Mirrors ./en.ts.
2
+
3
+ const sq = {
4
+ // Validation messages (Albanian) — mirrors the server core sq catalog.
5
+ 'validation.required_generic': 'Kjo fushë është e detyrueshme',
6
+ 'validation.required': 'Fusha "{label}" është e detyrueshme',
7
+ 'validation.email': 'Fusha "{label}" duhet të jetë një email i vlefshëm',
8
+ 'validation.url': 'Fusha "{label}" duhet të jetë një URL e vlefshme',
9
+ 'validation.integer': 'Fusha "{label}" duhet të jetë një numër i plotë',
10
+ 'validation.numeric': 'Fusha "{label}" duhet të jetë numerike',
11
+ 'validation.alpha': 'Fusha "{label}" mund të përmbajë vetëm shkronja',
12
+ 'validation.alpha_num': 'Fusha "{label}" mund të përmbajë vetëm shkronja dhe numra',
13
+ 'validation.alpha_dash': 'Fusha "{label}" mund të përmbajë vetëm shkronja, numra, vija dhe nënvija',
14
+ 'validation.uuid': 'Fusha "{label}" duhet të jetë një UUID i vlefshëm',
15
+ 'validation.json': 'Fusha "{label}" duhet të jetë JSON i vlefshëm',
16
+ 'validation.regex': 'Fusha "{label}" nuk përputhet me modelin e kërkuar',
17
+ 'validation.min.string': 'Fusha "{label}" duhet të ketë të paktën {param} karaktere',
18
+ 'validation.max.string': 'Fusha "{label}" duhet të ketë më së shumti {param} karaktere',
19
+ 'validation.min.number': 'Fusha "{label}" duhet të jetë të paktën {param}',
20
+ 'validation.max.number': 'Fusha "{label}" duhet të jetë më së shumti {param}',
21
+ 'validation.min_value': 'Fusha "{label}" duhet të jetë të paktën {param}',
22
+ 'validation.max_value': 'Fusha "{label}" duhet të jetë më së shumti {param}',
23
+ 'validation.same': 'Fusha "{label}" duhet të përputhet me {param}',
24
+ 'validation.confirmed': 'Konfirmimi i fushës "{label}" nuk përputhet',
25
+ 'validation.invalid': 'Fusha "{label}" është e pavlefshme',
26
+ 'validation.type.string': 'Fusha "{label}" duhet të jetë tekst',
27
+ 'validation.type.number': 'Fusha "{label}" duhet të jetë numër',
28
+ 'validation.type.boolean': 'Fusha "{label}" duhet të jetë vlerë logjike',
29
+ 'validation.type.array': 'Fusha "{label}" duhet të jetë varg',
30
+ 'validation.type.array_items': 'Fusha "{label}" duhet të jetë një varg me tekste ose numra',
31
+ 'validation.type.object': 'Fusha "{label}" duhet të jetë objekt',
32
+ 'validation.type.date': 'Fusha "{label}" duhet të jetë një datë e vlefshme',
33
+ 'validation.readonly': 'Fusha "{label}" është vetëm për lexim',
34
+ 'validation.invalid_option': 'Fusha "{label}" ka një opsion të pavlefshëm',
35
+
36
+ 'common.save': 'Ruaj',
37
+ 'common.cancel': 'Anulo',
38
+ 'common.confirm': 'Konfirmo',
39
+ 'common.delete': 'Fshi',
40
+ 'common.close': 'Mbyll',
41
+ 'common.submit': 'Dërgo',
42
+ 'common.submitting': 'Duke dërguar...',
43
+ 'common.reset': 'Rivendos',
44
+ 'common.retry': 'Provo përsëri',
45
+ 'common.actions': 'Veprime',
46
+ 'common.more': 'Më shumë',
47
+ 'common.yes': 'Po',
48
+ 'common.no': 'Jo',
49
+ 'common.loading': 'Duke ngarkuar',
50
+ 'common.search': 'Kërko regjistrime…',
51
+
52
+ 'panel.loading': 'Duke ngarkuar panelin KratosJs...',
53
+ 'panel.connection_error': 'Gabim lidhjeje',
54
+ 'panel.empty': 'Nuk ka burime ose faqe në këtë panel',
55
+ 'panel.sign_out': 'Dil',
56
+ 'panel.open_menu': 'Hap menynë e navigimit',
57
+ 'panel.toggle_dark': 'Kalo në modalitetin e errët',
58
+ 'panel.toggle_light': 'Kalo në modalitetin e ndritshëm',
59
+ 'panel.language': 'Gjuha',
60
+
61
+ 'table.no_records': 'Nuk u gjetën regjistrime',
62
+ 'table.no_records_hint': 'Provoni të ndryshoni kërkimin ose filtrat.',
63
+ 'table.filters': 'Filtra',
64
+ 'table.row_actions': 'Veprime rreshti',
65
+
66
+ 'form.create_title': 'Krijo {label}',
67
+ 'form.edit_title': 'Ndrysho {label}',
68
+ 'form.editing_title': 'Duke ndryshuar "{title}"',
69
+ 'form.action_failed': 'Veprimi dështoi',
70
+ 'form.create_failed': 'Krijimi i regjistrimit dështoi',
71
+ 'form.update_failed': 'Përditësimi i regjistrimit dështoi',
72
+ 'form.confirm_bulk': 'Jeni i sigurt që doni të {action} {count} artikuj?',
73
+
74
+ 'auth.welcome_back': 'Mirë se erdhe',
75
+ 'auth.sign_in': 'Hyr',
76
+ 'auth.sign_in_to': 'Hyr në {title}',
77
+ 'auth.email': 'Email',
78
+ 'auth.email_placeholder': 'ti@kompania.com',
79
+ 'auth.password': 'Fjalëkalimi',
80
+ 'auth.password_placeholder': 'Shkruani fjalëkalimin tuaj',
81
+ 'auth.choose_provider': 'Zgjidhni si dëshironi të hyni',
82
+ 'auth.enter_credentials': 'Shkruani kredencialet tuaja për të vazhduar',
83
+ 'auth.continue': 'Vazhdoni për të hyrë në llogarinë tuaj',
84
+ 'auth.verify_identity': 'Verifikoni identitetin tuaj',
85
+ 'auth.back_to_options': 'Kthehu te opsionet e hyrjes',
86
+ 'auth.no_providers': 'Nuk ka ofrues autentifikimi të konfiguruar.',
87
+ 'auth.login_failed': 'Hyrja dështoi',
88
+ 'auth.verification_failed': 'Verifikimi dështoi',
89
+
90
+ 'common.move_up': 'Lëviz lart',
91
+ 'common.move_down': 'Lëviz poshtë',
92
+ 'common.move_left': 'Lëviz majtas',
93
+ 'common.move_right': 'Lëviz djathtas',
94
+ 'common.copy_url': 'Kopjo URL-në',
95
+ 'common.clear': 'Pastro',
96
+ 'common.create': 'Krijo',
97
+ 'common.edit': 'Ndrysho',
98
+ 'common.view': 'Shiko',
99
+ 'common.apply': 'Apliko',
100
+ 'common.add': 'Shto',
101
+ 'common.remove': 'Hiq',
102
+ 'common.upload': 'Ngarko',
103
+ 'common.dismiss': 'Mbyll',
104
+
105
+ 'table.create_record': 'Krijo regjistrim',
106
+ 'table.column_settings': 'Cilësimet e kolonave',
107
+ 'table.no_toggleable_columns': 'Nuk ka kolona të ndryshueshme',
108
+ 'table.close_filters': 'Mbyll filtrat',
109
+ 'table.view_tabs': 'Skedat e pamjes së tabelës',
110
+ 'table.save_changes': 'Ruaj ndryshimet',
111
+ 'table.reset_changes': 'Rivendos ndryshimet',
112
+ 'pagination.per_page': 'Rezultate për faqe',
113
+ 'pagination.previous': 'Faqja e mëparshme',
114
+ 'pagination.next': 'Faqja tjetër',
115
+
116
+ 'search.records': 'Kërko regjistrime',
117
+ 'search.close': 'Mbyll kërkimin',
118
+ 'search.clear': 'Pastro kërkimin',
119
+
120
+ 'filters.from_date': 'Nga data...',
121
+ 'filters.to_date': 'Deri më datë...',
122
+ 'filters.from': 'Nga...',
123
+ 'filters.to': 'Deri...',
124
+ 'filters.date': 'Data...',
125
+ 'filters.value': 'Vlera...',
126
+ 'filters.range': 'Interval',
127
+ 'filters.no_rules': 'Ende nuk ka rregulla',
128
+
129
+ 'modal.close': 'Mbyll',
130
+ 'modal.close_all': 'Mbyll të gjitha',
131
+ 'modal.stack': 'Pirgu i dritareve',
132
+ 'modal.sections': 'Seksionet e regjistrimit',
133
+
134
+ 'confirm.delete_item_title': 'Fshi artikullin',
135
+ 'confirm.delete_item_message': 'Jeni i sigurt që doni ta fshini këtë artikull? Kjo nuk mund të zhbëhet.',
136
+ 'confirm.delete_items_title': 'Fshi artikujt',
137
+ 'confirm.delete_items_message': 'Jeni i sigurt që doni të fshini {count} artikuj? Kjo nuk mund të zhbëhet.',
138
+ 'confirm.action_single': 'Jeni i sigurt që doni të {action} këtë artikull?',
139
+ 'confirm.action_generic': 'Jeni i sigurt që doni të {action}?',
140
+
141
+ 'toast.delete_failed': 'Fshirja e artikullit dështoi',
142
+ 'toast.deleted': 'Artikulli u fshi me sukses',
143
+ 'toast.upload_failed': 'Ngarkimi i skedarit dështoi',
144
+ 'toast.invalid_html': 'HTML i pavlefshëm. Ju lutemi kontrolloni kodin tuaj.',
145
+
146
+ 'file.uploaded': 'Skedari u ngarkua',
147
+ 'file.drop_here': 'Lëshoni skedarët këtu',
148
+ 'file.click_to_upload': 'Klikoni për të ngarkuar',
149
+ 'file.video': 'Video',
150
+ 'file.audio': 'Audio',
151
+ 'file.saved': 'Ruajtur',
152
+ 'file.no_image': 'Nuk ka imazh',
153
+
154
+ 'state.no_fields': 'Nuk ka fusha për të shfaqur',
155
+ 'state.no_data': 'Nuk ka të dhëna',
156
+ 'state.page_not_found': 'Faqja nuk u gjet',
157
+
158
+ 'editor.html_placeholder': 'Shkruani kodin HTML këtu...',
159
+
160
+ 'tags.label': 'Etiketa',
161
+ 'repeater.active_tab': 'Skeda aktive',
162
+
163
+ 'a11y.color_preview': 'Pamja paraprake e ngjyrës',
164
+ 'a11y.main_navigation': 'Navigimi kryesor',
165
+ 'a11y.tab_errors': 'Ka gabime validimi ose fusha të detyrueshme',
166
+
167
+ 'editor.bold': 'Theksuar',
168
+ 'editor.italic': 'Pjerrët',
169
+ 'editor.underline': 'Nënvizuar',
170
+ 'editor.strikethrough': 'Vijëzuar',
171
+ 'editor.code': 'Kod',
172
+ 'editor.code_block': 'Bllok kodi',
173
+ 'editor.heading1': 'Titull 1',
174
+ 'editor.heading2': 'Titull 2',
175
+ 'editor.heading3': 'Titull 3',
176
+ 'editor.bullet_list': 'Listë me pika',
177
+ 'editor.ordered_list': 'Listë e numëruar',
178
+ 'editor.blockquote': 'Citat',
179
+ 'editor.undo': 'Zhbëj',
180
+ 'editor.redo': 'Ribëj',
181
+ 'editor.link': 'Lidhje',
182
+ 'editor.subscript': 'Nënshkrim',
183
+ 'editor.superscript': 'Mbishkrim',
184
+ 'editor.highlight': 'Thekso',
185
+ 'editor.align_left': 'Rreshto majtas',
186
+ 'editor.align_center': 'Rreshto në qendër',
187
+ 'editor.align_right': 'Rreshto djathtas',
188
+ 'editor.insert_image': 'Fut imazh',
189
+ 'editor.insert_video': 'Fut video',
190
+ 'table.column_visibility': 'Dukshmëria e kolonave',
191
+ 'pagination.per_page_short': 'Për faqe',
192
+ 'filters.query_builder': 'Ndërtuesi i pyetjeve',
193
+ 'search.start_typing': 'Filloni të shkruani për të parë rezultatet',
194
+ 'common.loading_ellipsis': 'Duke ngarkuar...',
195
+ 'search.subtitle': 'Kërkoni në të gjitha regjistrimet e këtij paneli',
196
+ 'state.no_table_schema': 'Nuk ka skemë tabele për këtë burim',
197
+ 'pagination.range_compact': '{start}–{end} nga {total}',
198
+ 'pagination.showing': 'Duke shfaqur {start} deri {end} nga {total} rezultate',
199
+ 'auth.preparing': 'Duke përgatitur hyrjen…',
200
+ 'repeater.empty': 'Ende nuk ka artikuj. Klikoni butonin më poshtë për të shtuar një.',
201
+ 'select.create': 'Krijo "{term}"',
202
+ 'select.loading': 'Duke ngarkuar...',
203
+ 'filters.add_rule_hint': 'Klikoni "Shto rregull" për të filluar ndërtimin e pyetjes suaj',
204
+ 'page.loading': 'Duke ngarkuar faqen...',
205
+ 'page.no_content': 'Kjo faqe nuk ka përmbajtje.',
206
+ 'modal.view_title': 'Shiko {label}',
207
+ 'modal.view_record': 'Shiko "{title}"',
208
+ 'auth.back_to_signin': 'Kthehu te hyrja',
209
+ 'auth.providers_load_failed': 'Ngarkimi i ofruesve të autentifikimit dështoi',
210
+ 'editor.insert_audio': 'Fut audio',
211
+ 'editor.insert_embed': 'Fut përmbajtje',
212
+ 'editor.html_source': 'Burimi HTML',
213
+ 'filters.preset_today': 'Sot',
214
+ 'filters.preset_yesterday': 'Dje',
215
+ 'filters.preset_this_week': 'Këtë javë',
216
+ 'filters.preset_this_month': 'Këtë muaj',
217
+ 'filters.preset_this_year': 'Këtë vit',
218
+ 'filters.preset_custom': 'I personalizuar',
219
+ 'common.warning': 'Kujdes',
220
+ 'state.unknown_field': 'Lloj fushe i panjohur "{type}" për fushën "{name}"',
221
+ 'state.unknown_column': 'Lloj kolone i panjohur: {type}',
222
+ 'error.connect': 'Lidhja me API dështoi',
223
+ 'error.load_data': 'Ngarkimi i të dhënave dështoi',
224
+ 'error.load_schema': 'Ngarkimi i skemës së tabelës dështoi',
225
+ 'search.nav_navigate': 'Lëviz',
226
+ 'search.nav_open': 'Hap',
227
+ 'search.nav_close': 'Mbyll',
228
+ 'common.clear_all': 'Pastro të gjitha',
229
+ 'common.done': 'U krye',
230
+ 'common.all': 'Të gjitha',
231
+ 'common.try_again': 'Provo përsëri',
232
+ 'common.details': 'Detaje',
233
+ 'common.widgets': 'Vegla',
234
+ 'filters.label_from': 'Nga',
235
+ 'filters.label_to': 'Deri',
236
+ 'filters.no_options': 'Nuk ka opsione',
237
+ 'filters.clear_all_filters': 'Pastro të gjithë filtrat',
238
+ 'filters.from_value': 'Nga {date}',
239
+ 'filters.until_value': 'Deri {date}',
240
+ 'filters.select_range': 'Zgjidhni intervalin e datave...',
241
+ 'confirm.are_you_sure': 'Jeni i sigurt?',
242
+ 'common.item': 'Artikull',
243
+ 'form.submitted': 'Formulari u dërgua me sukses!',
244
+ 'select.placeholder': 'Zgjidhni...',
245
+ 'select.create_new': 'Krijo i ri',
246
+ 'common.record': 'Regjistrim',
247
+ 'editor.start_typing': 'Filloni të shkruani...',
248
+ 'error.load_record': 'Ngarkimi i regjistrimit dështoi',
249
+ 'error.load_page': 'Ngarkimi i faqes dështoi',
250
+ 'file.video_preview': 'Pamja paraprake e videos',
251
+ 'common.preview': 'Pamje paraprake',
252
+ 'common.image': 'Imazh',
253
+ 'common.file': 'Skedar',
254
+ 'editor.rich_text_view': 'Pamja e tekstit të pasur',
255
+ 'select.no_matching': 'Nuk u gjetën opsione përputhëse',
256
+ 'table.switch_grid': 'Kalo në pamjen rrjetë',
257
+ 'table.switch_table': 'Kalo në pamjen tabelë',
258
+ 'table.hide_widgets': 'Fshih veglat',
259
+ 'table.show_widgets': 'Shfaq veglat',
260
+ 'error.action_failed': 'Ekzekutimi i veprimit dështoi',
261
+ 'error.action_failed_bulk': 'Ekzekutimi i veprimit në masë dështoi',
262
+ 'common.video_thumbnail': 'Miniatura e videos',
263
+ 'common.error': 'Gabim',
264
+ 'widget.data_label': 'Të dhëna',
265
+ 'filters.advanced_search': 'Kërkim i avancuar',
266
+ 'error.fetch_form_data': 'Marrja e të dhënave të formularit dështoi',
267
+ 'error.fetch_form_data_generic': 'Ndodhi një gabim gjatë marrjes së të dhënave të formularit',
268
+ 'error.submit_form': 'Dërgimi i formularit dështoi',
269
+ 'error.generic': 'Ndodhi një gabim',
270
+ 'error.export_failed': 'Eksportimi dështoi',
271
+ 'error.delete_failed': 'Fshirja dështoi',
272
+ 'error.bulk_action_failed': 'Veprimi në masë dështoi',
273
+ };
274
+
275
+ export default sq;
@@ -0,0 +1,42 @@
1
+ import { useMemo } from 'react';
2
+ import { useI18nContext } from './I18nProvider';
3
+
4
+ /**
5
+ * Locale-aware `Intl` formatters bound to the active locale. Re-created when the
6
+ * locale changes so dates, numbers, currency, and relative times all localize.
7
+ *
8
+ * @example
9
+ * const fmt = useFormatter();
10
+ * fmt.date(row.createdAt); // 6/24/2026 / 24.6.2026
11
+ * fmt.currency(1234.5, 'EUR'); // €1,234.50
12
+ * fmt.relativeTime(-3, 'day'); // 3 days ago
13
+ */
14
+ export function useFormatter() {
15
+ const { locale } = useI18nContext();
16
+
17
+ return useMemo(
18
+ () => ({
19
+ locale,
20
+ date(value: Date | string | number, options?: Intl.DateTimeFormatOptions): string {
21
+ return new Intl.DateTimeFormat(locale, options).format(new Date(value));
22
+ },
23
+ dateTime(value: Date | string | number, options?: Intl.DateTimeFormatOptions): string {
24
+ return new Intl.DateTimeFormat(locale, {
25
+ dateStyle: 'medium',
26
+ timeStyle: 'short',
27
+ ...options,
28
+ }).format(new Date(value));
29
+ },
30
+ number(value: number, options?: Intl.NumberFormatOptions): string {
31
+ return new Intl.NumberFormat(locale, options).format(value);
32
+ },
33
+ currency(value: number, currency = 'USD', options?: Intl.NumberFormatOptions): string {
34
+ return new Intl.NumberFormat(locale, { style: 'currency', currency, ...options }).format(value);
35
+ },
36
+ relativeTime(value: number, unit: Intl.RelativeTimeFormatUnit): string {
37
+ return new Intl.RelativeTimeFormat(locale, { numeric: 'auto' }).format(value, unit);
38
+ },
39
+ }),
40
+ [locale],
41
+ );
42
+ }
@@ -0,0 +1,16 @@
1
+ import { useI18nContext } from './I18nProvider';
2
+
3
+ /**
4
+ * Read and change the active UI locale.
5
+ *
6
+ * @example
7
+ * const { locale, setLocale, locales } = useLocale();
8
+ */
9
+ export function useLocale(): {
10
+ locale: string;
11
+ setLocale: (locale: string) => void;
12
+ locales: string[];
13
+ } {
14
+ const { locale, setLocale, locales } = useI18nContext();
15
+ return { locale, setLocale, locales };
16
+ }
@@ -0,0 +1,17 @@
1
+ import { useI18nContext } from './I18nProvider';
2
+
3
+ /**
4
+ * Access the active-locale translator inside a component.
5
+ *
6
+ * @example
7
+ * const { t, locale, dir } = useTranslation();
8
+ * return <button>{t('core:common.save')}</button>;
9
+ */
10
+ export function useTranslation(): {
11
+ t: (key: string, params?: Record<string, unknown>) => string;
12
+ locale: string;
13
+ dir: 'ltr' | 'rtl';
14
+ } {
15
+ const { t, locale, dir } = useI18nContext();
16
+ return { t, locale, dir };
17
+ }