@questpie/admin 1.1.1 → 3.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 (566) hide show
  1. package/README.md +256 -488
  2. package/dist/augmentation.d.mts +414 -0
  3. package/dist/client/blocks/block-renderer.d.mts +45 -0
  4. package/dist/client/blocks/block-renderer.mjs +105 -0
  5. package/dist/client/blocks/index.d.mts +2 -0
  6. package/dist/client/blocks/types.d.mts +68 -0
  7. package/dist/client/blocks/types.mjs +19 -0
  8. package/dist/client/builder/admin-types.d.mts +40 -0
  9. package/dist/client/builder/admin.d.mts +110 -0
  10. package/dist/client/builder/admin.mjs +151 -0
  11. package/dist/client/builder/field/field.d.mts +51 -0
  12. package/dist/client/builder/field/field.mjs +37 -0
  13. package/dist/client/builder/index.d.mts +31 -0
  14. package/dist/client/builder/page/page.d.mts +24 -0
  15. package/dist/client/builder/page/page.mjs +31 -0
  16. package/dist/client/builder/registry.d.mts +50 -0
  17. package/dist/client/builder/types/action-registry.mjs +276 -0
  18. package/dist/client/builder/types/action-types.d.mts +226 -0
  19. package/dist/client/builder/types/collection-types.mjs +10 -0
  20. package/dist/client/builder/types/common.d.mts +46 -0
  21. package/dist/client/builder/types/field-types.d.mts +592 -0
  22. package/dist/client/builder/types/field-types.mjs +18 -0
  23. package/dist/client/builder/types/ui-config.d.mts +158 -0
  24. package/dist/client/builder/types/widget-types.d.mts +562 -0
  25. package/dist/client/builder/validation.d.mts +33 -0
  26. package/dist/client/builder/validation.mjs +227 -0
  27. package/dist/client/builder/view/view.d.mts +49 -0
  28. package/dist/client/builder/view/view.mjs +27 -0
  29. package/dist/client/builder/widget/widget.d.mts +27 -0
  30. package/dist/client/builder/widget/widget.mjs +21 -0
  31. package/dist/client/components/actions/action-button.mjs +245 -0
  32. package/dist/client/components/actions/action-dialog.mjs +559 -0
  33. package/dist/client/components/actions/confirmation-dialog.mjs +201 -0
  34. package/dist/client/components/actions/header-actions.mjs +210 -0
  35. package/dist/client/components/admin-link.d.mts +66 -0
  36. package/dist/client/components/admin-link.mjs +171 -0
  37. package/dist/client/components/auth/auth-guard.d.mts +50 -0
  38. package/dist/client/components/auth/auth-guard.mjs +60 -0
  39. package/dist/client/components/auth/auth-loading.d.mts +35 -0
  40. package/dist/client/components/auth/auth-loading.mjs +55 -0
  41. package/dist/client/components/blocks/block-canvas.mjs +159 -0
  42. package/dist/client/components/blocks/block-editor-context.mjs +125 -0
  43. package/dist/client/components/blocks/block-editor-layout.mjs +199 -0
  44. package/dist/client/components/blocks/block-editor-provider.mjs +235 -0
  45. package/dist/client/components/blocks/block-fields-renderer.mjs +240 -0
  46. package/dist/client/components/blocks/block-insert-button.mjs +189 -0
  47. package/dist/client/components/blocks/block-item-menu.mjs +363 -0
  48. package/dist/client/components/blocks/block-item.mjs +434 -0
  49. package/dist/client/components/blocks/block-library-sidebar.mjs +285 -0
  50. package/dist/client/components/blocks/block-tree.mjs +103 -0
  51. package/dist/client/components/blocks/block-type-icon.mjs +95 -0
  52. package/dist/client/components/blocks/utils/tree-utils.mjs +185 -0
  53. package/dist/client/components/component-renderer.d.mts +114 -0
  54. package/dist/client/components/component-renderer.mjs +258 -0
  55. package/dist/client/components/error-boundary.mjs +144 -0
  56. package/dist/client/components/fields/array-field.mjs +506 -0
  57. package/dist/client/components/fields/asset-preview-field.mjs +159 -0
  58. package/dist/client/components/fields/blocks-field/blocks-field.mjs +209 -0
  59. package/dist/client/components/fields/boolean-field.mjs +77 -0
  60. package/dist/client/components/fields/date-field.mjs +76 -0
  61. package/dist/client/components/fields/datetime-field.mjs +74 -0
  62. package/dist/client/components/fields/email-field.mjs +67 -0
  63. package/dist/client/components/fields/field-utils.mjs +64 -0
  64. package/dist/client/components/fields/field-wrapper.mjs +124 -0
  65. package/dist/client/components/fields/json-field.mjs +461 -0
  66. package/dist/client/components/fields/locale-badge.mjs +25 -0
  67. package/dist/client/components/fields/number-field.mjs +73 -0
  68. package/dist/client/components/fields/object-array-field.mjs +707 -0
  69. package/dist/client/components/fields/object-field.mjs +686 -0
  70. package/dist/client/components/fields/relation/displays/cards-display.mjs +254 -0
  71. package/dist/client/components/fields/relation/displays/chips-display.mjs +173 -0
  72. package/dist/client/components/fields/relation/displays/grid-display.mjs +209 -0
  73. package/dist/client/components/fields/relation/displays/list-display.mjs +247 -0
  74. package/dist/client/components/fields/relation/displays/table-display.mjs +309 -0
  75. package/dist/client/components/fields/relation/displays/types.mjs +72 -0
  76. package/dist/client/components/fields/relation/relation-items-display.mjs +143 -0
  77. package/dist/client/components/fields/relation-field.mjs +161 -0
  78. package/dist/client/components/fields/relation-picker.mjs +296 -0
  79. package/dist/client/components/fields/relation-select.mjs +232 -0
  80. package/dist/client/components/fields/rich-text-editor/bubble-menu.mjs +105 -0
  81. package/dist/client/components/fields/rich-text-editor/extensions.mjs +144 -0
  82. package/dist/client/components/fields/rich-text-editor/image-popover.mjs +221 -0
  83. package/dist/client/components/fields/rich-text-editor/index.mjs +520 -0
  84. package/dist/client/components/fields/rich-text-editor/link-popover.mjs +85 -0
  85. package/dist/client/components/fields/rich-text-editor/presets.mjs +123 -0
  86. package/dist/client/components/fields/rich-text-editor/slash-commands.mjs +188 -0
  87. package/dist/client/components/fields/rich-text-editor/table-controls.mjs +433 -0
  88. package/dist/client/components/fields/rich-text-editor/toolbar.mjs +541 -0
  89. package/dist/client/components/fields/rich-text-editor/types.mjs +30 -0
  90. package/dist/client/components/fields/rich-text-editor/utils.mjs +50 -0
  91. package/dist/client/components/fields/rich-text-field.mjs +64 -0
  92. package/dist/client/components/fields/select-field.mjs +88 -0
  93. package/dist/client/components/fields/text-field.mjs +72 -0
  94. package/dist/client/components/fields/textarea-field.mjs +71 -0
  95. package/dist/client/components/fields/time-field.mjs +67 -0
  96. package/dist/client/components/fields/upload-field.mjs +621 -0
  97. package/dist/client/components/filter-builder/columns-tab.mjs +325 -0
  98. package/dist/client/components/filter-builder/filter-builder-sheet.mjs +456 -0
  99. package/dist/client/components/filter-builder/filters-tab.mjs +663 -0
  100. package/dist/client/components/filter-builder/saved-views-tab.mjs +278 -0
  101. package/dist/client/components/history-sidebar.mjs +496 -0
  102. package/dist/client/components/layout/field-layout-renderer.mjs +301 -0
  103. package/dist/client/components/locale-switcher.mjs +251 -0
  104. package/dist/client/components/media/media-grid.mjs +314 -0
  105. package/dist/client/components/media/media-picker-dialog.mjs +563 -0
  106. package/dist/client/components/preview/live-preview-mode.mjs +503 -0
  107. package/dist/client/components/preview/preview-pane.mjs +388 -0
  108. package/dist/client/components/primitives/asset-preview.mjs +771 -0
  109. package/dist/client/components/primitives/checkbox-input.mjs +59 -0
  110. package/dist/client/components/primitives/date-input.mjs +461 -0
  111. package/dist/client/components/primitives/dropzone.mjs +368 -0
  112. package/dist/client/components/primitives/number-input.mjs +117 -0
  113. package/dist/client/components/primitives/select-multi.mjs +590 -0
  114. package/dist/client/components/primitives/select-single.mjs +473 -0
  115. package/dist/client/components/primitives/text-input.mjs +45 -0
  116. package/dist/client/components/primitives/textarea-input.mjs +43 -0
  117. package/dist/client/components/primitives/time-input.mjs +145 -0
  118. package/dist/client/components/primitives/toggle-input.mjs +51 -0
  119. package/dist/client/components/primitives/types.mjs +12 -0
  120. package/dist/client/components/sheets/resource-sheet.mjs +86 -0
  121. package/dist/client/components/ui/accordion.mjs +169 -0
  122. package/dist/client/components/ui/alert.mjs +85 -0
  123. package/dist/client/components/ui/badge.mjs +76 -0
  124. package/dist/client/components/ui/button.mjs +84 -0
  125. package/dist/client/components/ui/card.mjs +206 -0
  126. package/dist/client/components/ui/checkbox.mjs +82 -0
  127. package/dist/client/components/ui/command.mjs +239 -0
  128. package/dist/client/components/ui/dialog.mjs +296 -0
  129. package/dist/client/components/ui/drawer.mjs +278 -0
  130. package/dist/client/components/ui/dropdown-menu.mjs +315 -0
  131. package/dist/client/components/ui/empty-state.mjs +99 -0
  132. package/dist/client/components/ui/field.mjs +354 -0
  133. package/dist/client/components/ui/input-group.mjs +201 -0
  134. package/dist/client/components/ui/input.mjs +46 -0
  135. package/dist/client/components/ui/kbd.mjs +53 -0
  136. package/dist/client/components/ui/label.mjs +45 -0
  137. package/dist/client/components/ui/popover.mjs +176 -0
  138. package/dist/client/components/ui/responsive-dialog.mjs +308 -0
  139. package/dist/client/components/ui/search-input.mjs +139 -0
  140. package/dist/client/components/ui/select.mjs +325 -0
  141. package/dist/client/components/ui/separator.mjs +47 -0
  142. package/dist/client/components/ui/sheet.mjs +280 -0
  143. package/dist/client/components/ui/sidebar.mjs +774 -0
  144. package/dist/client/components/ui/skeleton.mjs +40 -0
  145. package/dist/client/components/ui/sonner.d.mts +13 -0
  146. package/dist/client/components/ui/sonner.mjs +85 -0
  147. package/dist/client/components/ui/spinner.mjs +52 -0
  148. package/dist/client/components/ui/switch.mjs +58 -0
  149. package/dist/client/components/ui/table.mjs +276 -0
  150. package/dist/client/components/ui/tabs.mjs +160 -0
  151. package/dist/client/components/ui/textarea.mjs +40 -0
  152. package/dist/client/components/ui/toolbar.mjs +136 -0
  153. package/dist/client/components/ui/tooltip.mjs +146 -0
  154. package/dist/client/components/widgets/chart-widget.mjs +582 -0
  155. package/dist/client/components/widgets/progress-widget.mjs +200 -0
  156. package/dist/client/components/widgets/quick-actions-widget.mjs +209 -0
  157. package/dist/client/components/widgets/recent-items-widget.mjs +196 -0
  158. package/dist/client/components/widgets/stats-widget.mjs +261 -0
  159. package/dist/client/components/widgets/table-widget.mjs +273 -0
  160. package/dist/client/components/widgets/timeline-widget.mjs +279 -0
  161. package/dist/client/components/widgets/value-widget.mjs +312 -0
  162. package/dist/client/components/widgets/widget-skeletons.mjs +427 -0
  163. package/dist/client/contexts/breadcrumb-context.mjs +60 -0
  164. package/dist/client/contexts/focus-context.d.mts +87 -0
  165. package/dist/client/contexts/focus-context.mjs +250 -0
  166. package/dist/client/hooks/typed-hooks.d.mts +110 -0
  167. package/dist/client/hooks/typed-hooks.mjs +888 -0
  168. package/dist/client/hooks/use-action.mjs +329 -0
  169. package/dist/client/hooks/use-admin-config.mjs +69 -0
  170. package/dist/client/hooks/use-admin-preferences.mjs +171 -0
  171. package/dist/client/hooks/use-admin-routes.mjs +130 -0
  172. package/dist/client/hooks/use-audit-history.mjs +157 -0
  173. package/dist/client/hooks/use-auth.d.mts +97 -0
  174. package/dist/{use-auth-BoLmWtmU.mjs → client/hooks/use-auth.mjs} +9 -10
  175. package/dist/client/hooks/use-collection-fields.mjs +71 -0
  176. package/dist/client/hooks/use-collection-meta.mjs +153 -0
  177. package/dist/client/hooks/use-collection-schema.mjs +90 -0
  178. package/dist/client/hooks/use-collection-validation.mjs +88 -0
  179. package/dist/client/hooks/use-collection.d.mts +96 -0
  180. package/dist/client/hooks/use-collection.mjs +673 -0
  181. package/dist/client/hooks/use-current-user.d.mts +60 -0
  182. package/dist/client/hooks/use-current-user.mjs +79 -0
  183. package/dist/client/hooks/use-field-hooks.mjs +199 -0
  184. package/dist/client/hooks/use-field-options.d.mts +57 -0
  185. package/dist/client/hooks/use-field-options.mjs +269 -0
  186. package/dist/client/hooks/use-global-fields.mjs +58 -0
  187. package/dist/client/hooks/use-global-meta.mjs +105 -0
  188. package/dist/client/hooks/use-global-schema.mjs +53 -0
  189. package/dist/client/hooks/use-global.d.mts +51 -0
  190. package/dist/client/hooks/use-global.mjs +284 -0
  191. package/dist/client/hooks/use-locks.mjs +452 -0
  192. package/dist/client/hooks/use-media-query.d.mts +22 -0
  193. package/dist/client/hooks/use-media-query.mjs +81 -0
  194. package/dist/client/hooks/use-prefill-params.mjs +47 -0
  195. package/dist/client/hooks/use-questpie-query-options.mjs +50 -0
  196. package/dist/client/hooks/use-reactive-fields.d.mts +78 -0
  197. package/dist/client/hooks/use-reactive-fields.mjs +201 -0
  198. package/dist/client/hooks/use-realtime-highlight.mjs +158 -0
  199. package/dist/client/hooks/use-saved-views.mjs +140 -0
  200. package/dist/client/hooks/use-search-param-toggle.d.mts +12 -0
  201. package/dist/client/hooks/use-search-param-toggle.mjs +115 -0
  202. package/dist/client/hooks/use-search.mjs +258 -0
  203. package/dist/client/hooks/use-server-actions.mjs +191 -0
  204. package/dist/client/hooks/use-server-validation.mjs +291 -0
  205. package/dist/client/hooks/use-server-widget-data.d.mts +25 -0
  206. package/dist/client/hooks/use-server-widget-data.mjs +65 -0
  207. package/dist/client/hooks/use-setup-status.d.mts +38 -0
  208. package/dist/client/hooks/use-setup-status.mjs +62 -0
  209. package/dist/client/hooks/use-sidebar-search-param.d.mts +9 -0
  210. package/dist/client/hooks/use-sidebar-search-param.mjs +104 -0
  211. package/dist/client/hooks/use-transition-stage.mjs +125 -0
  212. package/dist/client/hooks/use-upload-collection.mjs +31 -0
  213. package/dist/client/hooks/use-upload.mjs +209 -0
  214. package/dist/client/hooks/use-validation-error-map.mjs +57 -0
  215. package/dist/client/hooks/use-view-state.mjs +479 -0
  216. package/dist/client/i18n/hooks.mjs +284 -0
  217. package/dist/client/i18n/intl-cache.mjs +64 -0
  218. package/dist/client/i18n/messages.mjs +6 -0
  219. package/dist/client/i18n/simple.d.mts +21 -0
  220. package/dist/client/i18n/simple.mjs +156 -0
  221. package/dist/client/i18n/types.d.mts +109 -0
  222. package/dist/client/lib/cookies.mjs +9 -0
  223. package/dist/client/lib/events.mjs +5 -0
  224. package/dist/client/lib/render-profiler.mjs +51 -0
  225. package/dist/client/lib/utils.mjs +23 -0
  226. package/dist/client/preview/block-scope-context.d.mts +73 -0
  227. package/dist/client/preview/block-scope-context.mjs +116 -0
  228. package/dist/client/preview/index.d.mts +5 -0
  229. package/dist/client/preview/preview-banner.d.mts +45 -0
  230. package/dist/client/preview/preview-banner.mjs +134 -0
  231. package/dist/client/preview/preview-field.d.mts +107 -0
  232. package/dist/client/preview/preview-field.mjs +227 -0
  233. package/dist/client/preview/types.d.mts +114 -0
  234. package/dist/client/preview/types.mjs +20 -0
  235. package/dist/client/preview/use-collection-preview.d.mts +70 -0
  236. package/dist/client/preview/use-collection-preview.mjs +163 -0
  237. package/dist/client/runtime/content-locales-provider.d.mts +1 -0
  238. package/dist/client/runtime/content-locales-provider.mjs +136 -0
  239. package/dist/client/runtime/index.d.mts +5 -0
  240. package/dist/client/runtime/index.mjs +6 -0
  241. package/dist/client/runtime/locale-scope.d.mts +2 -0
  242. package/dist/client/runtime/locale-scope.mjs +108 -0
  243. package/dist/client/runtime/provider.d.mts +203 -0
  244. package/dist/client/runtime/provider.mjs +393 -0
  245. package/dist/client/runtime/routes.d.mts +49 -0
  246. package/dist/client/runtime/routes.mjs +91 -0
  247. package/dist/client/runtime/translations-provider.mjs +242 -0
  248. package/dist/client/scope/index.d.mts +3 -0
  249. package/dist/client/scope/picker.d.mts +53 -0
  250. package/dist/client/scope/picker.mjs +395 -0
  251. package/dist/client/scope/provider.d.mts +103 -0
  252. package/dist/client/scope/provider.mjs +167 -0
  253. package/dist/client/scope/types.d.mts +111 -0
  254. package/dist/client/styles/index.css +344 -188
  255. package/dist/client/utils/auto-expand-fields.mjs +83 -0
  256. package/dist/client/utils/build-field-definitions-from-schema.mjs +259 -0
  257. package/dist/client/utils/dependency-tracker.mjs +61 -0
  258. package/dist/client/utils/detect-relations.mjs +45 -0
  259. package/dist/client/utils/locale-to-flag.d.mts +119 -0
  260. package/dist/client/utils/locale-to-flag.mjs +129 -0
  261. package/dist/client/utils/routes.mjs +195 -0
  262. package/dist/client/views/auth/accept-invite-form.d.mts +72 -0
  263. package/dist/client/views/auth/accept-invite-form.mjs +473 -0
  264. package/dist/client/views/auth/auth-layout.d.mts +43 -0
  265. package/dist/client/views/auth/auth-layout.mjs +116 -0
  266. package/dist/client/views/auth/forgot-password-form.d.mts +58 -0
  267. package/dist/client/views/auth/forgot-password-form.mjs +386 -0
  268. package/dist/client/views/auth/invite-form.mjs +497 -0
  269. package/dist/client/views/auth/login-form.d.mts +75 -0
  270. package/dist/client/views/auth/login-form.mjs +387 -0
  271. package/dist/client/views/auth/reset-password-form.d.mts +65 -0
  272. package/dist/client/views/auth/reset-password-form.mjs +515 -0
  273. package/dist/client/views/auth/setup-form.d.mts +60 -0
  274. package/dist/client/views/auth/setup-form.mjs +526 -0
  275. package/dist/client/views/collection/auto-form-fields.mjs +873 -0
  276. package/dist/client/views/collection/bulk-action-toolbar.mjs +480 -0
  277. package/dist/client/views/collection/cells/complex-cells.mjs +746 -0
  278. package/dist/client/views/collection/cells/primitive-cells.mjs +395 -0
  279. package/dist/client/views/collection/cells/relation-cells.mjs +260 -0
  280. package/dist/client/views/collection/cells/shared/asset-thumbnail.mjs +509 -0
  281. package/dist/client/views/collection/cells/shared/cell-helpers.mjs +125 -0
  282. package/dist/client/views/collection/cells/shared/relation-chip.mjs +121 -0
  283. package/dist/client/views/collection/cells/upload-cells.mjs +28 -0
  284. package/dist/client/views/collection/columns/build-columns.mjs +195 -0
  285. package/dist/client/views/collection/columns/column-defaults.mjs +123 -0
  286. package/dist/client/views/collection/field-context.mjs +126 -0
  287. package/dist/client/views/collection/field-renderer.mjs +368 -0
  288. package/dist/client/views/collection/form-view.mjs +1566 -0
  289. package/dist/client/views/collection/table-view.mjs +832 -0
  290. package/dist/client/views/collection/view-skeletons.mjs +215 -0
  291. package/dist/client/views/common/global-search.mjs +700 -0
  292. package/dist/client/views/dashboard/dashboard-grid.mjs +881 -0
  293. package/dist/client/views/dashboard/dashboard-widget.mjs +265 -0
  294. package/dist/client/views/dashboard/widget-card.mjs +372 -0
  295. package/dist/client/views/globals/global-form-view.mjs +1306 -0
  296. package/dist/client/views/layout/admin-layout-provider.d.mts +137 -0
  297. package/dist/client/views/layout/admin-layout-provider.mjs +193 -0
  298. package/dist/client/views/layout/admin-layout.d.mts +133 -0
  299. package/dist/client/views/layout/admin-layout.mjs +302 -0
  300. package/dist/client/views/layout/admin-router.d.mts +93 -0
  301. package/dist/client/views/layout/admin-router.mjs +1254 -0
  302. package/dist/client/views/layout/admin-sidebar.d.mts +99 -0
  303. package/dist/client/views/layout/admin-sidebar.mjs +1379 -0
  304. package/dist/client/views/layout/admin-topbar.mjs +236 -0
  305. package/dist/client/views/pages/accept-invite-page.d.mts +66 -0
  306. package/dist/client/views/pages/accept-invite-page.mjs +349 -0
  307. package/dist/client/views/pages/dashboard-page.d.mts +43 -0
  308. package/dist/client/views/pages/dashboard-page.mjs +84 -0
  309. package/dist/client/views/pages/forgot-password-page.d.mts +56 -0
  310. package/dist/client/views/pages/forgot-password-page.mjs +152 -0
  311. package/dist/client/views/pages/invite-page.d.mts +70 -0
  312. package/dist/client/views/pages/invite-page.mjs +161 -0
  313. package/dist/client/views/pages/login-page.d.mts +69 -0
  314. package/dist/client/views/pages/login-page.mjs +193 -0
  315. package/dist/client/views/pages/reset-password-page.d.mts +63 -0
  316. package/dist/client/views/pages/reset-password-page.mjs +257 -0
  317. package/dist/client/views/pages/setup-page.d.mts +61 -0
  318. package/dist/client/views/pages/setup-page.mjs +156 -0
  319. package/dist/client-module.d.mts +3 -0
  320. package/dist/client-module.mjs +3 -0
  321. package/dist/client.d.mts +99 -3
  322. package/dist/client.mjs +52 -12
  323. package/dist/components/rich-text/index.d.mts +1 -0
  324. package/dist/components/rich-text/rich-text-renderer.d.mts +103 -0
  325. package/dist/components/rich-text/rich-text-renderer.mjs +237 -0
  326. package/dist/index.d.mts +59 -3
  327. package/dist/index.mjs +52 -12
  328. package/dist/plugin.d.mts +2 -0
  329. package/dist/plugin.mjs +3 -0
  330. package/dist/server/adapters/nextjs.d.mts +120 -0
  331. package/dist/server/adapters/nextjs.mjs +110 -0
  332. package/dist/server/adapters/tanstack.d.mts +132 -0
  333. package/dist/server/adapters/tanstack.mjs +89 -0
  334. package/dist/server/augmentation/actions.d.mts +279 -0
  335. package/dist/server/augmentation/common.d.mts +76 -0
  336. package/dist/server/augmentation/dashboard.d.mts +547 -0
  337. package/dist/server/augmentation/form-layout.d.mts +303 -0
  338. package/dist/server/augmentation/index.d.mts +44 -0
  339. package/dist/server/augmentation/index.mjs +10 -0
  340. package/dist/server/augmentation/sidebar.d.mts +181 -0
  341. package/dist/server/augmentation/views.d.mts +237 -0
  342. package/dist/server/augmentation.d.mts +7 -0
  343. package/dist/server/block/index.d.mts +4 -0
  344. package/dist/server/codegen/admin-client-template.mjs +93 -0
  345. package/dist/server/codegen/projection-validator.mjs +67 -0
  346. package/dist/server/fields/blocks.d.mts +71 -0
  347. package/dist/server/fields/blocks.mjs +151 -0
  348. package/dist/server/fields/index.d.mts +15 -0
  349. package/dist/server/fields/index.mjs +15 -0
  350. package/dist/server/fields/rich-text.d.mts +68 -0
  351. package/dist/server/fields/rich-text.mjs +147 -0
  352. package/dist/server/i18n/index.mjs +43 -0
  353. package/dist/server/i18n/messages/cs.mjs +461 -0
  354. package/dist/server/i18n/messages/de.mjs +461 -0
  355. package/dist/server/i18n/messages/en.mjs +707 -0
  356. package/dist/server/i18n/messages/es.mjs +461 -0
  357. package/dist/server/i18n/messages/fr.mjs +461 -0
  358. package/dist/server/i18n/messages/index.mjs +23 -0
  359. package/dist/server/i18n/messages/pl.mjs +461 -0
  360. package/dist/server/i18n/messages/pt.mjs +464 -0
  361. package/dist/server/i18n/messages/sk.mjs +689 -0
  362. package/dist/server/modules/admin/.generated/module.d.mts +52 -0
  363. package/dist/server/modules/admin/.generated/module.mjs +78 -0
  364. package/dist/server/modules/admin/.generated/registries.d.mts +22 -0
  365. package/dist/server/modules/admin/auth-helpers.d.mts +142 -0
  366. package/dist/server/modules/admin/auth-helpers.mjs +107 -0
  367. package/dist/server/modules/admin/block/block-builder.d.mts +383 -0
  368. package/dist/server/modules/admin/block/block-builder.mjs +315 -0
  369. package/dist/server/modules/admin/block/index.d.mts +3 -0
  370. package/dist/server/modules/admin/block/introspection.d.mts +89 -0
  371. package/dist/server/modules/admin/block/introspection.mjs +100 -0
  372. package/dist/server/modules/admin/block/prefetch.d.mts +78 -0
  373. package/dist/server/modules/admin/block/prefetch.mjs +241 -0
  374. package/dist/server/modules/admin/client/.generated/module.d.mts +94 -0
  375. package/dist/server/modules/admin/client/.generated/module.mjs +91 -0
  376. package/dist/server/modules/admin/client/components/badge.d.mts +1 -0
  377. package/dist/server/modules/admin/client/components/icon.d.mts +1 -0
  378. package/dist/server/modules/admin/client/fields/array.d.mts +6 -0
  379. package/dist/server/modules/admin/client/fields/array.mjs +12 -0
  380. package/dist/server/modules/admin/client/fields/assetPreview.d.mts +6 -0
  381. package/dist/server/modules/admin/client/fields/assetPreview.mjs +18 -0
  382. package/dist/server/modules/admin/client/fields/blocks.d.mts +6 -0
  383. package/dist/server/modules/admin/client/fields/blocks.mjs +12 -0
  384. package/dist/server/modules/admin/client/fields/boolean.d.mts +6 -0
  385. package/dist/server/modules/admin/client/fields/boolean.mjs +12 -0
  386. package/dist/server/modules/admin/client/fields/date.d.mts +6 -0
  387. package/dist/server/modules/admin/client/fields/date.mjs +12 -0
  388. package/dist/server/modules/admin/client/fields/datetime.d.mts +6 -0
  389. package/dist/server/modules/admin/client/fields/datetime.mjs +12 -0
  390. package/dist/server/modules/admin/client/fields/email.d.mts +6 -0
  391. package/dist/server/modules/admin/client/fields/email.mjs +12 -0
  392. package/dist/server/modules/admin/client/fields/json.d.mts +6 -0
  393. package/dist/server/modules/admin/client/fields/json.mjs +11 -0
  394. package/dist/server/modules/admin/client/fields/number.d.mts +6 -0
  395. package/dist/server/modules/admin/client/fields/number.mjs +12 -0
  396. package/dist/server/modules/admin/client/fields/object.d.mts +6 -0
  397. package/dist/server/modules/admin/client/fields/object.mjs +12 -0
  398. package/dist/server/modules/admin/client/fields/relation.d.mts +6 -0
  399. package/dist/server/modules/admin/client/fields/relation.mjs +12 -0
  400. package/dist/server/modules/admin/client/fields/richText.d.mts +6 -0
  401. package/dist/server/modules/admin/client/fields/richText.mjs +11 -0
  402. package/dist/server/modules/admin/client/fields/select.d.mts +6 -0
  403. package/dist/server/modules/admin/client/fields/select.mjs +12 -0
  404. package/dist/server/modules/admin/client/fields/text.d.mts +6 -0
  405. package/dist/server/modules/admin/client/fields/text.mjs +12 -0
  406. package/dist/server/modules/admin/client/fields/textarea.d.mts +6 -0
  407. package/dist/server/modules/admin/client/fields/textarea.mjs +12 -0
  408. package/dist/server/modules/admin/client/fields/time.d.mts +6 -0
  409. package/dist/server/modules/admin/client/fields/time.mjs +12 -0
  410. package/dist/server/modules/admin/client/fields/upload.d.mts +6 -0
  411. package/dist/server/modules/admin/client/fields/upload.mjs +12 -0
  412. package/dist/server/modules/admin/client/fields/url.d.mts +6 -0
  413. package/dist/server/modules/admin/client/fields/url.mjs +12 -0
  414. package/dist/server/modules/admin/client/index.d.mts +1 -0
  415. package/dist/server/modules/admin/client/pages/dashboard.d.mts +6 -0
  416. package/dist/server/modules/admin/client/pages/dashboard.mjs +11 -0
  417. package/dist/server/modules/admin/client/pages/forgotPassword.d.mts +6 -0
  418. package/dist/server/modules/admin/client/pages/forgotPassword.mjs +11 -0
  419. package/dist/server/modules/admin/client/pages/login.d.mts +6 -0
  420. package/dist/server/modules/admin/client/pages/login.mjs +11 -0
  421. package/dist/server/modules/admin/client/pages/resetPassword.d.mts +6 -0
  422. package/dist/server/modules/admin/client/pages/resetPassword.mjs +11 -0
  423. package/dist/server/modules/admin/client/pages/setup.d.mts +6 -0
  424. package/dist/server/modules/admin/client/pages/setup.mjs +11 -0
  425. package/dist/server/modules/admin/client/views/collection-form.mjs +10 -0
  426. package/dist/server/modules/admin/client/views/collection-table.mjs +10 -0
  427. package/dist/server/modules/admin/client/views/global-form.mjs +10 -0
  428. package/dist/server/modules/admin/client/widgets/chart.d.mts +6 -0
  429. package/dist/server/modules/admin/client/widgets/chart.mjs +7 -0
  430. package/dist/server/modules/admin/client/widgets/progress.d.mts +6 -0
  431. package/dist/server/modules/admin/client/widgets/progress.mjs +7 -0
  432. package/dist/server/modules/admin/client/widgets/quickActions.d.mts +6 -0
  433. package/dist/server/modules/admin/client/widgets/quickActions.mjs +7 -0
  434. package/dist/server/modules/admin/client/widgets/recentItems.d.mts +6 -0
  435. package/dist/server/modules/admin/client/widgets/recentItems.mjs +7 -0
  436. package/dist/server/modules/admin/client/widgets/stats.d.mts +6 -0
  437. package/dist/server/modules/admin/client/widgets/stats.mjs +7 -0
  438. package/dist/server/modules/admin/client/widgets/table.d.mts +6 -0
  439. package/dist/server/modules/admin/client/widgets/table.mjs +7 -0
  440. package/dist/server/modules/admin/client/widgets/timeline.d.mts +6 -0
  441. package/dist/server/modules/admin/client/widgets/timeline.mjs +7 -0
  442. package/dist/server/modules/admin/client/widgets/value.d.mts +6 -0
  443. package/dist/server/modules/admin/client/widgets/value.mjs +7 -0
  444. package/dist/server/modules/admin/collections/account.d.mts +77 -0
  445. package/dist/server/modules/admin/collections/account.mjs +23 -0
  446. package/dist/server/modules/admin/collections/admin-locks.d.mts +90 -0
  447. package/dist/server/modules/admin/collections/admin-locks.mjs +16 -0
  448. package/dist/server/modules/admin/collections/admin-preferences.d.mts +69 -0
  449. package/dist/server/modules/admin/collections/admin-preferences.mjs +16 -0
  450. package/dist/server/modules/admin/collections/admin-saved-views.d.mts +83 -0
  451. package/dist/server/modules/admin/collections/admin-saved-views.mjs +16 -0
  452. package/dist/server/modules/admin/collections/apikey.d.mts +99 -0
  453. package/dist/server/modules/admin/collections/apikey.mjs +15 -0
  454. package/dist/server/modules/admin/collections/assets.d.mts +72 -0
  455. package/dist/server/modules/admin/collections/assets.mjs +71 -0
  456. package/dist/server/modules/admin/collections/session.d.mts +69 -0
  457. package/dist/server/modules/admin/collections/session.mjs +15 -0
  458. package/dist/server/modules/admin/collections/user.d.mts +85 -0
  459. package/dist/server/modules/admin/collections/user.mjs +204 -0
  460. package/dist/server/modules/admin/collections/verification.d.mts +63 -0
  461. package/dist/server/modules/admin/collections/verification.mjs +15 -0
  462. package/dist/server/modules/admin/components/badge.d.mts +10 -0
  463. package/dist/server/modules/admin/components/badge.mjs +10 -0
  464. package/dist/server/modules/admin/components/icon.d.mts +9 -0
  465. package/dist/server/modules/admin/components/icon.mjs +11 -0
  466. package/dist/server/modules/admin/config/admin.mjs +34 -0
  467. package/dist/server/modules/admin/dto/admin-config.dto.mjs +102 -0
  468. package/dist/server/modules/admin/factories.mjs +172 -0
  469. package/dist/server/modules/admin/index.d.mts +1093 -0
  470. package/dist/server/modules/admin/index.mjs +26 -0
  471. package/dist/server/modules/admin/modules.mjs +11 -0
  472. package/dist/server/modules/admin/plugin.mjs +13 -0
  473. package/dist/server/modules/admin/routes/admin-config.d.mts +28 -0
  474. package/dist/server/modules/admin/routes/admin-config.mjs +552 -0
  475. package/dist/server/modules/admin/routes/execute-action.d.mts +92 -0
  476. package/dist/server/modules/admin/routes/execute-action.mjs +433 -0
  477. package/dist/server/modules/admin/routes/locales.d.mts +18 -0
  478. package/dist/server/modules/admin/routes/locales.mjs +69 -0
  479. package/dist/server/modules/admin/routes/preview.d.mts +80 -0
  480. package/dist/server/modules/admin/routes/preview.mjs +230 -0
  481. package/dist/server/modules/admin/routes/reactive.d.mts +74 -0
  482. package/dist/server/modules/admin/routes/reactive.mjs +350 -0
  483. package/dist/server/modules/admin/routes/route-helpers.d.mts +23 -0
  484. package/dist/server/modules/admin/routes/route-helpers.mjs +76 -0
  485. package/dist/server/modules/admin/routes/setup.d.mts +63 -0
  486. package/dist/server/modules/admin/routes/setup.mjs +114 -0
  487. package/dist/server/modules/admin/routes/translations.d.mts +26 -0
  488. package/dist/server/modules/admin/routes/translations.mjs +114 -0
  489. package/dist/server/modules/admin/routes/widget-data.d.mts +32 -0
  490. package/dist/server/modules/admin/routes/widget-data.mjs +62 -0
  491. package/dist/server/modules/admin/views/form.d.mts +8 -0
  492. package/dist/server/modules/admin/views/form.mjs +7 -0
  493. package/dist/server/modules/admin/views/global-form.d.mts +8 -0
  494. package/dist/server/modules/admin/views/global-form.mjs +7 -0
  495. package/dist/server/modules/admin/views/table.d.mts +8 -0
  496. package/dist/server/modules/admin/views/table.mjs +7 -0
  497. package/dist/server/modules/admin-preferences/collections/admin-preferences.mjs +37 -0
  498. package/dist/server/modules/admin-preferences/collections/locks.collection.mjs +55 -0
  499. package/dist/server/modules/admin-preferences/collections/saved-views.d.mts +99 -0
  500. package/dist/server/modules/admin-preferences/collections/saved-views.mjs +38 -0
  501. package/dist/server/modules/audit/.generated/module.d.mts +60 -0
  502. package/dist/server/modules/audit/.generated/module.mjs +30 -0
  503. package/dist/server/modules/audit/collections/audit-log.d.mts +214 -0
  504. package/dist/server/modules/audit/collections/audit-log.mjs +107 -0
  505. package/dist/server/modules/audit/config/admin.mjs +21 -0
  506. package/dist/server/modules/audit/config/app.mjs +262 -0
  507. package/dist/server/modules/audit/index.d.mts +2 -0
  508. package/dist/server/modules/audit/jobs/audit-cleanup.d.mts +13 -0
  509. package/dist/server/modules/audit/jobs/audit-cleanup.mjs +28 -0
  510. package/dist/server/plugin.d.mts +26 -0
  511. package/dist/server/plugin.mjs +385 -0
  512. package/dist/server/proxy-factories.d.mts +85 -0
  513. package/dist/server/proxy-factories.mjs +302 -0
  514. package/dist/server/registry-helpers.d.mts +83 -0
  515. package/dist/server/registry-helpers.mjs +104 -0
  516. package/dist/server.d.mts +33 -250
  517. package/dist/server.mjs +22 -832
  518. package/dist/shared/preview-utils.d.mts +53 -0
  519. package/dist/{preview-utils-BKQ9-TMa.mjs → shared/preview-utils.mjs} +2 -3
  520. package/dist/{saved-views.types-BMsz5mCy.d.mts → shared/types/saved-views.types.d.mts} +7 -2
  521. package/dist/shared.d.mts +3 -57
  522. package/dist/shared.mjs +1 -1
  523. package/package.json +56 -51
  524. package/skills/questpie-admin/SKILL.md +397 -0
  525. package/skills/questpie-admin/blocks/SKILL.md +305 -0
  526. package/skills/questpie-admin/custom-ui/SKILL.md +307 -0
  527. package/skills/questpie-admin/views/SKILL.md +442 -0
  528. package/dist/auth-layout-M8K8_q5R.mjs +0 -181
  529. package/dist/auth-layout-M8K8_q5R.mjs.map +0 -1
  530. package/dist/bulk-upload-dialog-D7w7W1Hl.mjs +0 -273
  531. package/dist/bulk-upload-dialog-D7w7W1Hl.mjs.map +0 -1
  532. package/dist/card-BKHjBQfw.mjs +0 -58
  533. package/dist/card-BKHjBQfw.mjs.map +0 -1
  534. package/dist/client-D1DqawtP.d.mts +0 -13403
  535. package/dist/client-D1DqawtP.d.mts.map +0 -1
  536. package/dist/client-njX1rZmi.mjs +0 -22612
  537. package/dist/client-njX1rZmi.mjs.map +0 -1
  538. package/dist/content-locales-provider-BXvuIgfg.mjs +0 -1650
  539. package/dist/content-locales-provider-BXvuIgfg.mjs.map +0 -1
  540. package/dist/dashboard-page-B4PGEdc2.mjs +0 -2500
  541. package/dist/dashboard-page-B4PGEdc2.mjs.map +0 -1
  542. package/dist/dashboard-page-mCY0pgZv.mjs +0 -3
  543. package/dist/dropzone-Do3awXKd.mjs +0 -634
  544. package/dist/dropzone-Do3awXKd.mjs.map +0 -1
  545. package/dist/forgot-password-page-Bcp-An4Y.mjs +0 -221
  546. package/dist/forgot-password-page-Bcp-An4Y.mjs.map +0 -1
  547. package/dist/forgot-password-page-CEwsdLwn.mjs +0 -3
  548. package/dist/index-B4H3amCD.d.mts +0 -2753
  549. package/dist/index-B4H3amCD.d.mts.map +0 -1
  550. package/dist/login-page-BUnpCbCa.mjs +0 -3
  551. package/dist/login-page-CP4gA-dl.mjs +0 -298
  552. package/dist/login-page-CP4gA-dl.mjs.map +0 -1
  553. package/dist/preview-utils-BKQ9-TMa.mjs.map +0 -1
  554. package/dist/reset-password-page-BqfDmLxA.mjs +0 -281
  555. package/dist/reset-password-page-BqfDmLxA.mjs.map +0 -1
  556. package/dist/reset-password-page-CufHz3h3.mjs +0 -3
  557. package/dist/runtime-6VZM878K.mjs +0 -69
  558. package/dist/runtime-6VZM878K.mjs.map +0 -1
  559. package/dist/saved-views.types-BMsz5mCy.d.mts.map +0 -1
  560. package/dist/server.d.mts.map +0 -1
  561. package/dist/server.mjs.map +0 -1
  562. package/dist/setup-page-BNNzt_Z6.mjs +0 -3
  563. package/dist/setup-page-YAP_fzqh.mjs +0 -264
  564. package/dist/setup-page-YAP_fzqh.mjs.map +0 -1
  565. package/dist/shared.d.mts.map +0 -1
  566. package/dist/use-auth-BoLmWtmU.mjs.map +0 -1
@@ -0,0 +1,284 @@
1
+ import { c } from "react/compiler-runtime";
2
+ import * as React from "react";
3
+ import { createContext, useContext } from "react";
4
+ import { DEFAULT_LOCALE } from "questpie/shared";
5
+ import { jsx } from "react/jsx-runtime";
6
+
7
+ //#region src/client/i18n/hooks.tsx
8
+ /**
9
+ * I18n React Hooks
10
+ *
11
+ * React context and hooks for i18n in the admin UI.
12
+ */
13
+ const I18nContext = createContext(null);
14
+ /**
15
+ * I18n Provider Component
16
+ *
17
+ * Provides i18n to all child components.
18
+ * The adapter is the source of truth for UI locale.
19
+ *
20
+ * @example
21
+ * ```tsx
22
+ * import { I18nProvider, createSimpleI18n } from "@questpie/admin/i18n";
23
+ *
24
+ * const i18n = createSimpleI18n({ ... });
25
+ *
26
+ * <I18nProvider adapter={i18n}>
27
+ * <App />
28
+ * </I18nProvider>
29
+ * ```
30
+ */
31
+ function I18nProvider(t0) {
32
+ const $ = c(35);
33
+ const { adapter, children } = t0;
34
+ const [, forceUpdate] = React.useReducer(_temp, 0);
35
+ let t1;
36
+ if ($[0] !== adapter || $[1] !== forceUpdate) {
37
+ t1 = () => adapter.onLocaleChange(() => {
38
+ forceUpdate();
39
+ });
40
+ $[0] = adapter;
41
+ $[1] = forceUpdate;
42
+ $[2] = t1;
43
+ } else t1 = $[2];
44
+ let t2;
45
+ if ($[3] !== adapter) {
46
+ t2 = [adapter];
47
+ $[3] = adapter;
48
+ $[4] = t2;
49
+ } else t2 = $[4];
50
+ React.useEffect(t1, t2);
51
+ const t3 = adapter.locale;
52
+ const t4 = adapter.locales;
53
+ let t5;
54
+ if ($[5] !== adapter) {
55
+ t5 = adapter.t.bind(adapter);
56
+ $[5] = adapter;
57
+ $[6] = t5;
58
+ } else t5 = $[6];
59
+ let t6;
60
+ if ($[7] !== adapter) {
61
+ t6 = adapter.setLocale.bind(adapter);
62
+ $[7] = adapter;
63
+ $[8] = t6;
64
+ } else t6 = $[8];
65
+ let t7;
66
+ if ($[9] !== adapter) {
67
+ t7 = adapter.onLocaleChange.bind(adapter);
68
+ $[9] = adapter;
69
+ $[10] = t7;
70
+ } else t7 = $[10];
71
+ let t8;
72
+ if ($[11] !== adapter) {
73
+ t8 = adapter.formatDate.bind(adapter);
74
+ $[11] = adapter;
75
+ $[12] = t8;
76
+ } else t8 = $[12];
77
+ let t9;
78
+ if ($[13] !== adapter) {
79
+ t9 = adapter.formatNumber.bind(adapter);
80
+ $[13] = adapter;
81
+ $[14] = t9;
82
+ } else t9 = $[14];
83
+ let t10;
84
+ if ($[15] !== adapter) {
85
+ t10 = adapter.formatRelative?.bind(adapter);
86
+ $[15] = adapter;
87
+ $[16] = t10;
88
+ } else t10 = $[16];
89
+ let t11;
90
+ if ($[17] !== adapter) {
91
+ t11 = adapter.getLocaleName.bind(adapter);
92
+ $[17] = adapter;
93
+ $[18] = t11;
94
+ } else t11 = $[18];
95
+ let t12;
96
+ if ($[19] !== adapter) {
97
+ t12 = adapter.isRTL.bind(adapter);
98
+ $[19] = adapter;
99
+ $[20] = t12;
100
+ } else t12 = $[20];
101
+ let t13;
102
+ if ($[21] !== adapter.locale || $[22] !== adapter.locales || $[23] !== t10 || $[24] !== t11 || $[25] !== t12 || $[26] !== t5 || $[27] !== t6 || $[28] !== t7 || $[29] !== t8 || $[30] !== t9) {
103
+ t13 = {
104
+ locale: t3,
105
+ locales: t4,
106
+ t: t5,
107
+ setLocale: t6,
108
+ onLocaleChange: t7,
109
+ formatDate: t8,
110
+ formatNumber: t9,
111
+ formatRelative: t10,
112
+ getLocaleName: t11,
113
+ isRTL: t12
114
+ };
115
+ $[21] = adapter.locale;
116
+ $[22] = adapter.locales;
117
+ $[23] = t10;
118
+ $[24] = t11;
119
+ $[25] = t12;
120
+ $[26] = t5;
121
+ $[27] = t6;
122
+ $[28] = t7;
123
+ $[29] = t8;
124
+ $[30] = t9;
125
+ $[31] = t13;
126
+ } else t13 = $[31];
127
+ const contextValue = t13;
128
+ let t14;
129
+ if ($[32] !== children || $[33] !== contextValue) {
130
+ t14 = /* @__PURE__ */ jsx(I18nContext.Provider, {
131
+ value: contextValue,
132
+ children
133
+ });
134
+ $[32] = children;
135
+ $[33] = contextValue;
136
+ $[34] = t14;
137
+ } else t14 = $[34];
138
+ return t14;
139
+ }
140
+ /**
141
+ * Get the i18n adapter (throws if not in provider)
142
+ */
143
+ function _temp(x) {
144
+ return x + 1;
145
+ }
146
+ function useI18n() {
147
+ const adapter = useContext(I18nContext);
148
+ if (!adapter) throw new Error("useI18n must be used within I18nProvider");
149
+ return adapter;
150
+ }
151
+ /**
152
+ * Get i18n adapter or null (safe version)
153
+ */
154
+ function useSafeI18n() {
155
+ return useContext(I18nContext);
156
+ }
157
+ /**
158
+ * Main translation hook
159
+ *
160
+ * @example
161
+ * ```tsx
162
+ * function MyComponent() {
163
+ * const { t, locale, formatDate } = useTranslation();
164
+ * return <h1>{t("dashboard.title")}</h1>;
165
+ * }
166
+ * ```
167
+ */
168
+ function useTranslation() {
169
+ const $ = c(11);
170
+ const adapter = useI18n();
171
+ const t0 = adapter.locale;
172
+ const t1 = adapter.locales;
173
+ const t2 = adapter.t;
174
+ const t3 = adapter.setLocale;
175
+ const t4 = adapter.formatDate;
176
+ const t5 = adapter.formatNumber;
177
+ const t6 = adapter.getLocaleName;
178
+ let t7;
179
+ if ($[0] !== adapter) {
180
+ t7 = adapter.isRTL();
181
+ $[0] = adapter;
182
+ $[1] = t7;
183
+ } else t7 = $[1];
184
+ let t8;
185
+ if ($[2] !== adapter.formatDate || $[3] !== adapter.formatNumber || $[4] !== adapter.getLocaleName || $[5] !== adapter.locale || $[6] !== adapter.locales || $[7] !== adapter.setLocale || $[8] !== adapter.t || $[9] !== t7) {
186
+ t8 = {
187
+ locale: t0,
188
+ locales: t1,
189
+ t: t2,
190
+ setLocale: t3,
191
+ formatDate: t4,
192
+ formatNumber: t5,
193
+ getLocaleName: t6,
194
+ isRTL: t7
195
+ };
196
+ $[2] = adapter.formatDate;
197
+ $[3] = adapter.formatNumber;
198
+ $[4] = adapter.getLocaleName;
199
+ $[5] = adapter.locale;
200
+ $[6] = adapter.locales;
201
+ $[7] = adapter.setLocale;
202
+ $[8] = adapter.t;
203
+ $[9] = t7;
204
+ $[10] = t8;
205
+ } else t8 = $[10];
206
+ return t8;
207
+ }
208
+ /**
209
+ * Check if an object is a locale map (has locale codes as keys)
210
+ */
211
+ function isLocaleMap(obj) {
212
+ if ("key" in obj) return false;
213
+ return Object.values(obj).every((v) => typeof v === "string");
214
+ }
215
+ /**
216
+ * Resolve locale map to string for given locale
217
+ */
218
+ function resolveLocaleMap(map, locale, fallback) {
219
+ if (map[locale]) return map[locale];
220
+ const lang = locale.split("-")[0];
221
+ if (lang && map[lang]) return map[lang];
222
+ if (map[DEFAULT_LOCALE]) return map[DEFAULT_LOCALE];
223
+ return Object.values(map)[0] ?? fallback;
224
+ }
225
+ /**
226
+ * Resolve I18nText to string
227
+ *
228
+ * @example
229
+ * ```tsx
230
+ * function Label({ text }: { text: I18nText }) {
231
+ * const resolve = useResolveText();
232
+ * return <span>{resolve(text)}</span>;
233
+ * }
234
+ * ```
235
+ */
236
+ function useResolveText() {
237
+ const $ = c(2);
238
+ const adapter = useSafeI18n();
239
+ let t0;
240
+ if ($[0] !== adapter) {
241
+ t0 = (text, t1, contextValues) => {
242
+ const fallback = t1 === void 0 ? "" : t1;
243
+ const resolveValue = (value) => {
244
+ if (value === void 0 || value === null) return fallback;
245
+ if (typeof value === "string") return value;
246
+ if (typeof value === "function") {
247
+ if (!adapter && !contextValues) return fallback;
248
+ const i18nCtx = adapter ? {
249
+ locale: adapter.locale,
250
+ t: adapter.t,
251
+ formatDate: adapter.formatDate,
252
+ formatNumber: adapter.formatNumber
253
+ } : void 0;
254
+ const ctx = {
255
+ ...contextValues ?? {},
256
+ ...i18nCtx ?? {}
257
+ };
258
+ try {
259
+ return resolveValue(value(ctx));
260
+ } catch (t2) {
261
+ const error = t2;
262
+ console.error("Failed to resolve dynamic text:", error);
263
+ return fallback;
264
+ }
265
+ }
266
+ if (typeof value === "object" && "key" in value && typeof value.key === "string") {
267
+ const keyObj = value;
268
+ if (!adapter) return keyObj.fallback ?? fallback;
269
+ const result_0 = adapter.t(keyObj.key, keyObj.params);
270
+ return result_0 === keyObj.key ? keyObj.fallback ?? result_0 : result_0;
271
+ }
272
+ if (typeof value === "object" && isLocaleMap(value)) return resolveLocaleMap(value, adapter?.locale ?? DEFAULT_LOCALE, fallback);
273
+ return fallback;
274
+ };
275
+ return resolveValue(text);
276
+ };
277
+ $[0] = adapter;
278
+ $[1] = t0;
279
+ } else t0 = $[1];
280
+ return t0;
281
+ }
282
+
283
+ //#endregion
284
+ export { I18nProvider, useResolveText, useSafeI18n, useTranslation };
@@ -0,0 +1,64 @@
1
+ //#region src/client/i18n/intl-cache.ts
2
+ /**
3
+ * Intl Formatters Cache
4
+ *
5
+ * Caches Intl formatter instances to avoid creating new ones on every call.
6
+ * Intl formatters are expensive to create but cheap to reuse.
7
+ */
8
+ function getCacheKey(locale, options) {
9
+ if (!options || Object.keys(options).length === 0) return locale;
10
+ return `${locale}:${JSON.stringify(options)}`;
11
+ }
12
+ const dateTimeFormatCache = /* @__PURE__ */ new Map();
13
+ function getDateTimeFormat(locale, options) {
14
+ const key = getCacheKey(locale, options);
15
+ let formatter = dateTimeFormatCache.get(key);
16
+ if (!formatter) {
17
+ formatter = new Intl.DateTimeFormat(locale, options);
18
+ dateTimeFormatCache.set(key, formatter);
19
+ }
20
+ return formatter;
21
+ }
22
+ const numberFormatCache = /* @__PURE__ */ new Map();
23
+ function getNumberFormat(locale, options) {
24
+ const key = getCacheKey(locale, options);
25
+ let formatter = numberFormatCache.get(key);
26
+ if (!formatter) {
27
+ formatter = new Intl.NumberFormat(locale, options);
28
+ numberFormatCache.set(key, formatter);
29
+ }
30
+ return formatter;
31
+ }
32
+ const pluralRulesCache = /* @__PURE__ */ new Map();
33
+ function getPluralRules(locale, options) {
34
+ const key = getCacheKey(locale, options);
35
+ let rules = pluralRulesCache.get(key);
36
+ if (!rules) {
37
+ rules = new Intl.PluralRules(locale, options);
38
+ pluralRulesCache.set(key, rules);
39
+ }
40
+ return rules;
41
+ }
42
+ const relativeTimeFormatCache = /* @__PURE__ */ new Map();
43
+ function getRelativeTimeFormat(locale, options) {
44
+ const key = getCacheKey(locale, options);
45
+ let formatter = relativeTimeFormatCache.get(key);
46
+ if (!formatter) {
47
+ formatter = new Intl.RelativeTimeFormat(locale, options);
48
+ relativeTimeFormatCache.set(key, formatter);
49
+ }
50
+ return formatter;
51
+ }
52
+ const displayNamesCache = /* @__PURE__ */ new Map();
53
+ function getDisplayNames(locale, options) {
54
+ const key = getCacheKey(locale, options);
55
+ let displayNames = displayNamesCache.get(key);
56
+ if (!displayNames) {
57
+ displayNames = new Intl.DisplayNames([locale], options);
58
+ displayNamesCache.set(key, displayNames);
59
+ }
60
+ return displayNames;
61
+ }
62
+
63
+ //#endregion
64
+ export { getDateTimeFormat, getDisplayNames, getNumberFormat, getPluralRules, getRelativeTimeFormat };
@@ -0,0 +1,6 @@
1
+ //#region src/client/i18n/messages.ts
2
+ /** @deprecated Bundled messages removed. Use server-fetched translations. */
3
+ const adminMessages = {};
4
+
5
+ //#endregion
6
+ export { adminMessages };
@@ -0,0 +1,21 @@
1
+ import "./types.mjs";
2
+
3
+ //#region src/client/i18n/simple.d.ts
4
+
5
+ /**
6
+ * Simple messages format
7
+ */
8
+ type SimpleMessages = Record<string, string | PluralMessages>;
9
+ /**
10
+ * Plural messages (using Intl.PluralRules categories)
11
+ */
12
+ type PluralMessages = {
13
+ zero?: string;
14
+ one: string;
15
+ two?: string;
16
+ few?: string;
17
+ many?: string;
18
+ other: string;
19
+ };
20
+ //#endregion
21
+ export { SimpleMessages };
@@ -0,0 +1,156 @@
1
+ import { getDateTimeFormat, getDisplayNames, getNumberFormat, getPluralRules, getRelativeTimeFormat } from "./intl-cache.mjs";
2
+
3
+ //#region src/client/i18n/simple.ts
4
+ /**
5
+ * Simple I18n Implementation
6
+ *
7
+ * A minimal i18n implementation for basic use cases.
8
+ * For full i18n features (pluralization, ICU, etc.), use i18next or react-intl.
9
+ *
10
+ * Features:
11
+ * - Basic key-value translation
12
+ * - Simple interpolation ({{key}})
13
+ * - Uses Intl APIs for formatting
14
+ * - Basic pluralization via Intl.PluralRules
15
+ */
16
+ const RTL_LOCALES = new Set([
17
+ "ar",
18
+ "he",
19
+ "fa",
20
+ "ur",
21
+ "ps",
22
+ "sd",
23
+ "yi"
24
+ ]);
25
+ /**
26
+ * Create a simple i18n adapter
27
+ *
28
+ * @example
29
+ * ```ts
30
+ * const i18n = createSimpleI18n({
31
+ * locale: "en",
32
+ * locales: ["en", "de"],
33
+ * messages: {
34
+ * en: {
35
+ * "common.save": "Save",
36
+ * "items.count": { one: "{{count}} item", other: "{{count}} items" }
37
+ * },
38
+ * de: {
39
+ * "common.save": "Speichern",
40
+ * "items.count": { one: "{{count}} Artikel", other: "{{count}} Artikel" }
41
+ * }
42
+ * }
43
+ * });
44
+ * ```
45
+ */
46
+ function createSimpleI18n(options) {
47
+ let currentLocale = options.locale;
48
+ const { locales, messages, fallbackLocale = locales[0], onLocaleChange: onLocaleChangeCallback } = options;
49
+ const listeners = /* @__PURE__ */ new Set();
50
+ /**
51
+ * Notify all listeners about locale change
52
+ */
53
+ function notifyListeners(locale) {
54
+ onLocaleChangeCallback?.(locale);
55
+ for (const listener of listeners) listener(locale);
56
+ }
57
+ /**
58
+ * Get message for key in locale
59
+ */
60
+ function getMessage(key, locale) {
61
+ return messages[locale]?.[key];
62
+ }
63
+ /**
64
+ * Interpolate values into string
65
+ */
66
+ function interpolate(str, params) {
67
+ if (!params) return str;
68
+ return str.replace(/\{\{(\w+)\}\}/g, (_, key) => {
69
+ const value = params[key];
70
+ return value !== void 0 ? String(value) : `{{${key}}}`;
71
+ });
72
+ }
73
+ /**
74
+ * Check if value is plural messages
75
+ */
76
+ function isPluralMessages(value) {
77
+ return typeof value === "object" && value !== null && "one" in value && "other" in value;
78
+ }
79
+ /**
80
+ * Get plural form
81
+ */
82
+ function getPluralForm(forms, count, locale) {
83
+ switch (getPluralRules(locale).select(count)) {
84
+ case "zero": return forms.zero ?? forms.other;
85
+ case "one": return forms.one;
86
+ case "two": return forms.two ?? forms.other;
87
+ case "few": return forms.few ?? forms.other;
88
+ case "many": return forms.many ?? forms.other;
89
+ default: return forms.other;
90
+ }
91
+ }
92
+ return {
93
+ get locale() {
94
+ return currentLocale;
95
+ },
96
+ get locales() {
97
+ return locales;
98
+ },
99
+ t(key, params) {
100
+ let value = getMessage(key, currentLocale);
101
+ if (value === void 0 && currentLocale !== fallbackLocale) value = getMessage(key, fallbackLocale);
102
+ if (value === void 0) return key;
103
+ if (isPluralMessages(value)) {
104
+ const count = typeof params?.count === "number" ? params.count : 1;
105
+ return interpolate(getPluralForm(value, count, currentLocale), params);
106
+ }
107
+ return interpolate(value, params);
108
+ },
109
+ setLocale(locale) {
110
+ if (locales.includes(locale) && locale !== currentLocale) {
111
+ currentLocale = locale;
112
+ notifyListeners(locale);
113
+ }
114
+ },
115
+ onLocaleChange(callback) {
116
+ listeners.add(callback);
117
+ return () => {
118
+ listeners.delete(callback);
119
+ };
120
+ },
121
+ formatDate(date, opts) {
122
+ const d = typeof date === "number" ? new Date(date) : date;
123
+ return getDateTimeFormat(currentLocale, opts).format(d);
124
+ },
125
+ formatNumber(value, opts) {
126
+ return getNumberFormat(currentLocale, opts).format(value);
127
+ },
128
+ formatRelative(date) {
129
+ const d = typeof date === "number" ? new Date(date) : date;
130
+ const now = Date.now();
131
+ const diff = d.getTime() - now;
132
+ const diffSeconds = Math.round(diff / 1e3);
133
+ const diffMinutes = Math.round(diff / 6e4);
134
+ const diffHours = Math.round(diff / 36e5);
135
+ const diffDays = Math.round(diff / 864e5);
136
+ const rtf = getRelativeTimeFormat(currentLocale, { numeric: "auto" });
137
+ if (Math.abs(diffSeconds) < 60) return rtf.format(diffSeconds, "second");
138
+ if (Math.abs(diffMinutes) < 60) return rtf.format(diffMinutes, "minute");
139
+ if (Math.abs(diffHours) < 24) return rtf.format(diffHours, "hour");
140
+ return rtf.format(diffDays, "day");
141
+ },
142
+ getLocaleName(locale) {
143
+ try {
144
+ return getDisplayNames(currentLocale, { type: "language" }).of(locale) ?? locale;
145
+ } catch {
146
+ return locale;
147
+ }
148
+ },
149
+ isRTL() {
150
+ return RTL_LOCALES.has(currentLocale);
151
+ }
152
+ };
153
+ }
154
+
155
+ //#endregion
156
+ export { createSimpleI18n };
@@ -0,0 +1,109 @@
1
+ import "react";
2
+
3
+ //#region src/client/i18n/types.d.ts
4
+
5
+ /**
6
+ * I18n Adapter Interface
7
+ *
8
+ * This is the contract that any i18n implementation must fulfill.
9
+ * Designed to be easily implemented by wrapping i18next, react-intl, etc.
10
+ */
11
+ interface I18nAdapter {
12
+ /**
13
+ * Current UI locale (e.g., "en", "de", "sk")
14
+ */
15
+ readonly locale: string;
16
+ /**
17
+ * Available locales
18
+ */
19
+ readonly locales: string[];
20
+ /**
21
+ * Translate a key
22
+ *
23
+ * @param key - Translation key (e.g., "common.save")
24
+ * @param params - Interpolation values (e.g., { count: 5 })
25
+ */
26
+ t(key: string, params?: Record<string, unknown>): string;
27
+ /**
28
+ * Change the current locale
29
+ */
30
+ setLocale(locale: string): void | Promise<void>;
31
+ /**
32
+ * Subscribe to locale changes
33
+ *
34
+ * @param callback - Called when locale changes
35
+ * @returns Unsubscribe function
36
+ */
37
+ onLocaleChange(callback: (locale: string) => void): () => void;
38
+ /**
39
+ * Format a date (uses Intl.DateTimeFormat)
40
+ */
41
+ formatDate(date: Date | number, options?: Intl.DateTimeFormatOptions): string;
42
+ /**
43
+ * Format a number (uses Intl.NumberFormat)
44
+ */
45
+ formatNumber(value: number, options?: Intl.NumberFormatOptions): string;
46
+ /**
47
+ * Format relative time (e.g., "2 days ago")
48
+ */
49
+ formatRelative?(date: Date | number): string;
50
+ /**
51
+ * Get display name for a locale (e.g., "en" -> "English")
52
+ */
53
+ getLocaleName(locale: string): string;
54
+ /**
55
+ * Check if current locale is RTL
56
+ */
57
+ isRTL(): boolean;
58
+ }
59
+ /**
60
+ * Inline translations object - maps locale codes to translated strings
61
+ *
62
+ * @example
63
+ * ```ts
64
+ * { en: "Barbers", sk: "Holiči", cz: "Holiči" }
65
+ * ```
66
+ */
67
+ type I18nLocaleMap = {
68
+ [locale: string]: string;
69
+ };
70
+ /**
71
+ * I18nText - A value that can be translated
72
+ *
73
+ * Used in admin config for labels, descriptions, etc.
74
+ * Supports multiple formats for flexibility.
75
+ *
76
+ * @example
77
+ * ```ts
78
+ * // Simple string (no translation)
79
+ * label: "Posts"
80
+ *
81
+ * // Translation key
82
+ * label: { key: "nav.posts" }
83
+ *
84
+ * // Translation key with fallback
85
+ * label: { key: "nav.posts", fallback: "Posts" }
86
+ *
87
+ * // Inline translations (recommended for collection/global labels)
88
+ * label: { en: "Barbers", sk: "Holiči", cz: "Holiči" }
89
+ *
90
+ * // Dynamic function
91
+ * label: (ctx) => ctx.t("nav.posts")
92
+ * ```
93
+ */
94
+ type I18nText = string | {
95
+ key: string;
96
+ fallback?: string;
97
+ params?: Record<string, unknown>;
98
+ } | I18nLocaleMap | ((ctx: I18nContext) => string);
99
+ /**
100
+ * Context passed to I18nText functions
101
+ */
102
+ interface I18nContext {
103
+ locale: string;
104
+ t: I18nAdapter["t"];
105
+ formatDate: I18nAdapter["formatDate"];
106
+ formatNumber: I18nAdapter["formatNumber"];
107
+ }
108
+ //#endregion
109
+ export { I18nAdapter, I18nContext, I18nText };
@@ -0,0 +1,9 @@
1
+ //#region src/client/lib/cookies.ts
2
+ function getCookie(name) {
3
+ if (typeof document === "undefined") return null;
4
+ const match = document.cookie.match(/* @__PURE__ */ new RegExp(`${name}=([^;]+)`));
5
+ return match ? match[1] : null;
6
+ }
7
+
8
+ //#endregion
9
+ export { getCookie };
@@ -0,0 +1,5 @@
1
+ //#region src/client/lib/events.ts
2
+ const SEARCH_PARAMS_EVENT = "questpie:searchparamschange";
3
+
4
+ //#endregion
5
+ export { SEARCH_PARAMS_EVENT };
@@ -0,0 +1,51 @@
1
+ import { c } from "react/compiler-runtime";
2
+ import * as React from "react";
3
+ import { Fragment, jsx } from "react/jsx-runtime";
4
+
5
+ //#region src/client/lib/render-profiler.tsx
6
+ const LOG_MIN_INTERVAL_MS = 800;
7
+ const lastLogAtById = /* @__PURE__ */ new Map();
8
+ function RenderProfiler(t0) {
9
+ const $ = c(9);
10
+ const { id, children, minDurationMs: t1 } = t0;
11
+ const minDurationMs = t1 === void 0 ? 8 : t1;
12
+ let t2;
13
+ if ($[0] !== id || $[1] !== minDurationMs) {
14
+ t2 = (_profileId, phase, actualDuration, baseDuration, startTime, commitTime) => {
15
+ if (actualDuration < minDurationMs) return;
16
+ const now = commitTime || globalThis.performance?.now?.() || Date.now();
17
+ if (now - (lastLogAtById.get(id) ?? 0) < LOG_MIN_INTERVAL_MS) return;
18
+ lastLogAtById.set(id, now);
19
+ console.debug(`[RenderProfiler] ${id} phase=${phase} actual=${actualDuration.toFixed(1)}ms base=${baseDuration.toFixed(1)}ms start=${startTime.toFixed(1)}ms commit=${commitTime.toFixed(1)}ms`);
20
+ };
21
+ $[0] = id;
22
+ $[1] = minDurationMs;
23
+ $[2] = t2;
24
+ } else t2 = $[2];
25
+ const onRender = t2;
26
+ if (process.env.NODE_ENV !== "development") {
27
+ let t3$1;
28
+ if ($[3] !== children) {
29
+ t3$1 = /* @__PURE__ */ jsx(Fragment, { children });
30
+ $[3] = children;
31
+ $[4] = t3$1;
32
+ } else t3$1 = $[4];
33
+ return t3$1;
34
+ }
35
+ let t3;
36
+ if ($[5] !== children || $[6] !== id || $[7] !== onRender) {
37
+ t3 = /* @__PURE__ */ jsx(React.Profiler, {
38
+ id,
39
+ onRender,
40
+ children
41
+ });
42
+ $[5] = children;
43
+ $[6] = id;
44
+ $[7] = onRender;
45
+ $[8] = t3;
46
+ } else t3 = $[8];
47
+ return t3;
48
+ }
49
+
50
+ //#endregion
51
+ export { RenderProfiler };