@questpie/admin 1.1.0 → 2.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 (965) hide show
  1. package/README.md +245 -474
  2. package/dist/_virtual/rolldown_runtime.mjs +18 -0
  3. package/dist/augmentation.d.mts +315 -0
  4. package/dist/augmentation.d.mts.map +1 -0
  5. package/dist/client/blocks/block-registry.d.mts +199 -0
  6. package/dist/client/blocks/block-registry.d.mts.map +1 -0
  7. package/dist/client/blocks/block-registry.mjs +88 -0
  8. package/dist/client/blocks/block-registry.mjs.map +1 -0
  9. package/dist/client/blocks/block-renderer.d.mts +52 -0
  10. package/dist/client/blocks/block-renderer.d.mts.map +1 -0
  11. package/dist/client/blocks/block-renderer.mjs +71 -0
  12. package/dist/client/blocks/block-renderer.mjs.map +1 -0
  13. package/dist/client/blocks/index.d.mts +4 -0
  14. package/dist/client/blocks/prefetch.d.mts +45 -0
  15. package/dist/client/blocks/prefetch.d.mts.map +1 -0
  16. package/dist/client/blocks/prefetch.mjs +26 -0
  17. package/dist/client/blocks/prefetch.mjs.map +1 -0
  18. package/dist/client/blocks/types.d.mts +69 -0
  19. package/dist/client/blocks/types.d.mts.map +1 -0
  20. package/dist/client/blocks/types.mjs +20 -0
  21. package/dist/client/blocks/types.mjs.map +1 -0
  22. package/dist/client/builder/admin-builder.d.mts +112 -0
  23. package/dist/client/builder/admin-builder.d.mts.map +1 -0
  24. package/dist/client/builder/admin-builder.mjs +185 -0
  25. package/dist/client/builder/admin-builder.mjs.map +1 -0
  26. package/dist/client/builder/admin-types.d.mts +73 -0
  27. package/dist/client/builder/admin-types.d.mts.map +1 -0
  28. package/dist/client/builder/admin.d.mts +121 -0
  29. package/dist/client/builder/admin.d.mts.map +1 -0
  30. package/dist/client/builder/admin.mjs +160 -0
  31. package/dist/client/builder/admin.mjs.map +1 -0
  32. package/dist/client/builder/defaults/components.mjs +20 -0
  33. package/dist/client/builder/defaults/components.mjs.map +1 -0
  34. package/dist/client/builder/defaults/core.d.mts +354 -0
  35. package/dist/client/builder/defaults/core.d.mts.map +1 -0
  36. package/dist/client/builder/defaults/core.mjs +49 -0
  37. package/dist/client/builder/defaults/core.mjs.map +1 -0
  38. package/dist/client/builder/defaults/fields.mjs +328 -0
  39. package/dist/client/builder/defaults/fields.mjs.map +1 -0
  40. package/dist/client/builder/defaults/pages.mjs +58 -0
  41. package/dist/client/builder/defaults/pages.mjs.map +1 -0
  42. package/dist/client/builder/defaults/starter.d.mts +351 -0
  43. package/dist/client/builder/defaults/starter.d.mts.map +1 -0
  44. package/dist/client/builder/defaults/starter.mjs +28 -0
  45. package/dist/client/builder/defaults/starter.mjs.map +1 -0
  46. package/dist/client/builder/defaults/views.mjs +27 -0
  47. package/dist/client/builder/defaults/views.mjs.map +1 -0
  48. package/dist/client/builder/defaults/widgets.mjs +31 -0
  49. package/dist/client/builder/defaults/widgets.mjs.map +1 -0
  50. package/dist/client/builder/field/field.d.mts +229 -0
  51. package/dist/client/builder/field/field.d.mts.map +1 -0
  52. package/dist/client/builder/field/field.mjs +83 -0
  53. package/dist/client/builder/field/field.mjs.map +1 -0
  54. package/dist/client/builder/index.d.mts +36 -0
  55. package/dist/client/builder/index.d.mts.map +1 -0
  56. package/dist/client/builder/page/page.d.mts +36 -0
  57. package/dist/client/builder/page/page.d.mts.map +1 -0
  58. package/dist/client/builder/page/page.mjs +27 -0
  59. package/dist/client/builder/page/page.mjs.map +1 -0
  60. package/dist/client/builder/proxies.d.mts +2 -0
  61. package/dist/client/builder/proxies.mjs +24 -0
  62. package/dist/client/builder/proxies.mjs.map +1 -0
  63. package/dist/client/builder/qa.d.mts +50 -0
  64. package/dist/client/builder/qa.d.mts.map +1 -0
  65. package/dist/client/builder/qa.mjs +42 -0
  66. package/dist/client/builder/qa.mjs.map +1 -0
  67. package/dist/client/builder/registry.d.mts +70 -0
  68. package/dist/client/builder/registry.d.mts.map +1 -0
  69. package/dist/client/builder/types/action-registry.d.mts +2 -0
  70. package/dist/client/builder/types/action-registry.mjs +142 -0
  71. package/dist/client/builder/types/action-registry.mjs.map +1 -0
  72. package/dist/client/builder/types/action-types.d.mts +253 -0
  73. package/dist/client/builder/types/action-types.d.mts.map +1 -0
  74. package/dist/client/builder/types/collection-types.d.mts +199 -0
  75. package/dist/client/builder/types/collection-types.d.mts.map +1 -0
  76. package/dist/client/builder/types/collection-types.mjs +11 -0
  77. package/dist/client/builder/types/collection-types.mjs.map +1 -0
  78. package/dist/client/builder/types/common.d.mts +60 -0
  79. package/dist/client/builder/types/common.d.mts.map +1 -0
  80. package/dist/client/builder/types/field-types.d.mts +593 -0
  81. package/dist/client/builder/types/field-types.d.mts.map +1 -0
  82. package/dist/client/builder/types/field-types.mjs +19 -0
  83. package/dist/client/builder/types/field-types.mjs.map +1 -0
  84. package/dist/client/builder/types/global-types.d.mts +22 -0
  85. package/dist/client/builder/types/global-types.d.mts.map +1 -0
  86. package/dist/client/builder/types/ui-config.d.mts +160 -0
  87. package/dist/client/builder/types/ui-config.d.mts.map +1 -0
  88. package/dist/client/builder/types/views.d.mts +89 -0
  89. package/dist/client/builder/types/views.d.mts.map +1 -0
  90. package/dist/client/builder/types/widget-types.d.mts +563 -0
  91. package/dist/client/builder/types/widget-types.d.mts.map +1 -0
  92. package/dist/client/builder/validation.d.mts +3 -0
  93. package/dist/client/builder/validation.mjs +208 -0
  94. package/dist/client/builder/validation.mjs.map +1 -0
  95. package/dist/client/builder/view/view.d.mts +129 -0
  96. package/dist/client/builder/view/view.d.mts.map +1 -0
  97. package/dist/client/builder/view/view.mjs +109 -0
  98. package/dist/client/builder/view/view.mjs.map +1 -0
  99. package/dist/client/builder/widget/widget.d.mts +33 -0
  100. package/dist/client/builder/widget/widget.d.mts.map +1 -0
  101. package/dist/client/builder/widget/widget.mjs +26 -0
  102. package/dist/client/builder/widget/widget.mjs.map +1 -0
  103. package/dist/client/components/actions/action-button.d.mts +2 -0
  104. package/dist/client/components/actions/action-button.mjs +135 -0
  105. package/dist/client/components/actions/action-button.mjs.map +1 -0
  106. package/dist/client/components/actions/action-dialog.d.mts +2 -0
  107. package/dist/client/components/actions/action-dialog.mjs +264 -0
  108. package/dist/client/components/actions/action-dialog.mjs.map +1 -0
  109. package/dist/client/components/actions/confirmation-dialog.d.mts +2 -0
  110. package/dist/client/components/actions/confirmation-dialog.mjs +82 -0
  111. package/dist/client/components/actions/confirmation-dialog.mjs.map +1 -0
  112. package/dist/client/components/actions/header-actions.d.mts +2 -0
  113. package/dist/client/components/actions/header-actions.mjs +117 -0
  114. package/dist/client/components/actions/header-actions.mjs.map +1 -0
  115. package/dist/client/components/actions/index.d.mts +4 -0
  116. package/dist/client/components/admin-link.d.mts +67 -0
  117. package/dist/client/components/admin-link.d.mts.map +1 -0
  118. package/dist/client/components/admin-link.mjs +92 -0
  119. package/dist/client/components/admin-link.mjs.map +1 -0
  120. package/dist/client/components/auth/auth-guard.d.mts +51 -0
  121. package/dist/client/components/auth/auth-guard.d.mts.map +1 -0
  122. package/dist/client/components/auth/auth-guard.mjs +60 -0
  123. package/dist/client/components/auth/auth-guard.mjs.map +1 -0
  124. package/dist/client/components/auth/auth-loading.d.mts +36 -0
  125. package/dist/client/components/auth/auth-loading.d.mts.map +1 -0
  126. package/dist/client/components/auth/auth-loading.mjs +27 -0
  127. package/dist/client/components/auth/auth-loading.mjs.map +1 -0
  128. package/dist/client/components/auth/index.d.mts +2 -0
  129. package/dist/client/components/blocks/block-canvas.mjs +90 -0
  130. package/dist/client/components/blocks/block-canvas.mjs.map +1 -0
  131. package/dist/client/components/blocks/block-editor-context.mjs +58 -0
  132. package/dist/client/components/blocks/block-editor-context.mjs.map +1 -0
  133. package/dist/client/components/blocks/block-editor-layout.mjs +82 -0
  134. package/dist/client/components/blocks/block-editor-layout.mjs.map +1 -0
  135. package/dist/client/components/blocks/block-editor-provider.mjs +155 -0
  136. package/dist/client/components/blocks/block-editor-provider.mjs.map +1 -0
  137. package/dist/client/components/blocks/block-fields-renderer.mjs +70 -0
  138. package/dist/client/components/blocks/block-fields-renderer.mjs.map +1 -0
  139. package/dist/client/components/blocks/block-insert-button.mjs +72 -0
  140. package/dist/client/components/blocks/block-insert-button.mjs.map +1 -0
  141. package/dist/client/components/blocks/block-item-menu.mjs +161 -0
  142. package/dist/client/components/blocks/block-item-menu.mjs.map +1 -0
  143. package/dist/client/components/blocks/block-item.mjs +187 -0
  144. package/dist/client/components/blocks/block-item.mjs.map +1 -0
  145. package/dist/client/components/blocks/block-library-sidebar.mjs +190 -0
  146. package/dist/client/components/blocks/block-library-sidebar.mjs.map +1 -0
  147. package/dist/client/components/blocks/block-tree.mjs +45 -0
  148. package/dist/client/components/blocks/block-tree.mjs.map +1 -0
  149. package/dist/client/components/blocks/block-type-icon.mjs +50 -0
  150. package/dist/client/components/blocks/block-type-icon.mjs.map +1 -0
  151. package/dist/client/components/blocks/utils/tree-utils.mjs +186 -0
  152. package/dist/client/components/blocks/utils/tree-utils.mjs.map +1 -0
  153. package/dist/client/components/component-renderer.d.mts +125 -0
  154. package/dist/client/components/component-renderer.d.mts.map +1 -0
  155. package/dist/client/components/component-renderer.mjs +145 -0
  156. package/dist/client/components/component-renderer.mjs.map +1 -0
  157. package/dist/client/components/error-boundary.mjs +92 -0
  158. package/dist/client/components/error-boundary.mjs.map +1 -0
  159. package/dist/client/components/fields/array-field.d.mts +44 -0
  160. package/dist/client/components/fields/array-field.d.mts.map +1 -0
  161. package/dist/client/components/fields/array-field.mjs +231 -0
  162. package/dist/client/components/fields/array-field.mjs.map +1 -0
  163. package/dist/client/components/fields/asset-preview-field.d.mts +52 -0
  164. package/dist/client/components/fields/asset-preview-field.d.mts.map +1 -0
  165. package/dist/client/components/fields/asset-preview-field.mjs +60 -0
  166. package/dist/client/components/fields/asset-preview-field.mjs.map +1 -0
  167. package/dist/client/components/fields/blocks-field/blocks-field.d.mts +41 -0
  168. package/dist/client/components/fields/blocks-field/blocks-field.d.mts.map +1 -0
  169. package/dist/client/components/fields/blocks-field/blocks-field.mjs +101 -0
  170. package/dist/client/components/fields/blocks-field/blocks-field.mjs.map +1 -0
  171. package/dist/client/components/fields/blocks-field/index.d.mts +1 -0
  172. package/dist/client/components/fields/boolean-field.d.mts +30 -0
  173. package/dist/client/components/fields/boolean-field.d.mts.map +1 -0
  174. package/dist/client/components/fields/boolean-field.mjs +47 -0
  175. package/dist/client/components/fields/boolean-field.mjs.map +1 -0
  176. package/dist/client/components/fields/custom-field.d.mts +3 -0
  177. package/dist/client/components/fields/date-field.d.mts +22 -0
  178. package/dist/client/components/fields/date-field.d.mts.map +1 -0
  179. package/dist/client/components/fields/date-field.mjs +42 -0
  180. package/dist/client/components/fields/date-field.mjs.map +1 -0
  181. package/dist/client/components/fields/datetime-field.d.mts +23 -0
  182. package/dist/client/components/fields/datetime-field.d.mts.map +1 -0
  183. package/dist/client/components/fields/datetime-field.mjs +43 -0
  184. package/dist/client/components/fields/datetime-field.mjs.map +1 -0
  185. package/dist/client/components/fields/email-field.d.mts +19 -0
  186. package/dist/client/components/fields/email-field.d.mts.map +1 -0
  187. package/dist/client/components/fields/email-field.mjs +38 -0
  188. package/dist/client/components/fields/email-field.mjs.map +1 -0
  189. package/dist/client/components/fields/embedded-collection.d.mts +3 -0
  190. package/dist/client/components/fields/field-types.d.mts +571 -0
  191. package/dist/client/components/fields/field-types.d.mts.map +1 -0
  192. package/dist/client/components/fields/field-utils.d.mts +1 -0
  193. package/dist/client/components/fields/field-utils.mjs +65 -0
  194. package/dist/client/components/fields/field-utils.mjs.map +1 -0
  195. package/dist/client/components/fields/field-wrapper.d.mts +3 -0
  196. package/dist/client/components/fields/field-wrapper.mjs +49 -0
  197. package/dist/client/components/fields/field-wrapper.mjs.map +1 -0
  198. package/dist/client/components/fields/index.d.mts +33 -0
  199. package/dist/client/components/fields/json-field.d.mts +84 -0
  200. package/dist/client/components/fields/json-field.d.mts.map +1 -0
  201. package/dist/client/components/fields/json-field.mjs +248 -0
  202. package/dist/client/components/fields/json-field.mjs.map +1 -0
  203. package/dist/client/components/fields/locale-badge.d.mts +1 -0
  204. package/dist/client/components/fields/locale-badge.mjs +17 -0
  205. package/dist/client/components/fields/locale-badge.mjs.map +1 -0
  206. package/dist/client/components/fields/number-field.d.mts +23 -0
  207. package/dist/client/components/fields/number-field.d.mts.map +1 -0
  208. package/dist/client/components/fields/number-field.mjs +40 -0
  209. package/dist/client/components/fields/number-field.mjs.map +1 -0
  210. package/dist/client/components/fields/object-array-field.d.mts +2 -0
  211. package/dist/client/components/fields/object-array-field.mjs +313 -0
  212. package/dist/client/components/fields/object-array-field.mjs.map +1 -0
  213. package/dist/client/components/fields/object-field.d.mts +32 -0
  214. package/dist/client/components/fields/object-field.d.mts.map +1 -0
  215. package/dist/client/components/fields/object-field.mjs +128 -0
  216. package/dist/client/components/fields/object-field.mjs.map +1 -0
  217. package/dist/client/components/fields/relation/displays/cards-display.d.mts +2 -0
  218. package/dist/client/components/fields/relation/displays/cards-display.mjs +140 -0
  219. package/dist/client/components/fields/relation/displays/cards-display.mjs.map +1 -0
  220. package/dist/client/components/fields/relation/displays/chips-display.d.mts +2 -0
  221. package/dist/client/components/fields/relation/displays/chips-display.mjs +100 -0
  222. package/dist/client/components/fields/relation/displays/chips-display.mjs.map +1 -0
  223. package/dist/client/components/fields/relation/displays/grid-display.d.mts +2 -0
  224. package/dist/client/components/fields/relation/displays/grid-display.mjs +114 -0
  225. package/dist/client/components/fields/relation/displays/grid-display.mjs.map +1 -0
  226. package/dist/client/components/fields/relation/displays/index.d.mts +6 -0
  227. package/dist/client/components/fields/relation/displays/list-display.d.mts +2 -0
  228. package/dist/client/components/fields/relation/displays/list-display.mjs +128 -0
  229. package/dist/client/components/fields/relation/displays/list-display.mjs.map +1 -0
  230. package/dist/client/components/fields/relation/displays/table-display.d.mts +2 -0
  231. package/dist/client/components/fields/relation/displays/table-display.mjs +134 -0
  232. package/dist/client/components/fields/relation/displays/table-display.mjs.map +1 -0
  233. package/dist/client/components/fields/relation/displays/types.d.mts +22 -0
  234. package/dist/client/components/fields/relation/displays/types.d.mts.map +1 -0
  235. package/dist/client/components/fields/relation/displays/types.mjs +73 -0
  236. package/dist/client/components/fields/relation/displays/types.mjs.map +1 -0
  237. package/dist/client/components/fields/relation/index.d.mts +3 -0
  238. package/dist/client/components/fields/relation/relation-items-display.d.mts +5 -0
  239. package/dist/client/components/fields/relation/relation-items-display.mjs +47 -0
  240. package/dist/client/components/fields/relation/relation-items-display.mjs.map +1 -0
  241. package/dist/client/components/fields/relation-field.d.mts +134 -0
  242. package/dist/client/components/fields/relation-field.d.mts.map +1 -0
  243. package/dist/client/components/fields/relation-field.mjs +106 -0
  244. package/dist/client/components/fields/relation-field.mjs.map +1 -0
  245. package/dist/client/components/fields/relation-picker.d.mts +4 -0
  246. package/dist/client/components/fields/relation-picker.mjs +301 -0
  247. package/dist/client/components/fields/relation-picker.mjs.map +1 -0
  248. package/dist/client/components/fields/relation-select.d.mts +3 -0
  249. package/dist/client/components/fields/relation-select.mjs +219 -0
  250. package/dist/client/components/fields/relation-select.mjs.map +1 -0
  251. package/dist/client/components/fields/reverse-relation-field.d.mts +2 -0
  252. package/dist/client/components/fields/rich-text-editor/bubble-menu.mjs +56 -0
  253. package/dist/client/components/fields/rich-text-editor/bubble-menu.mjs.map +1 -0
  254. package/dist/client/components/fields/rich-text-editor/extensions.mjs +118 -0
  255. package/dist/client/components/fields/rich-text-editor/extensions.mjs.map +1 -0
  256. package/dist/client/components/fields/rich-text-editor/image-popover.mjs +196 -0
  257. package/dist/client/components/fields/rich-text-editor/image-popover.mjs.map +1 -0
  258. package/dist/client/components/fields/rich-text-editor/index.d.mts +4 -0
  259. package/dist/client/components/fields/rich-text-editor/index.mjs +187 -0
  260. package/dist/client/components/fields/rich-text-editor/index.mjs.map +1 -0
  261. package/dist/client/components/fields/rich-text-editor/link-popover.mjs +86 -0
  262. package/dist/client/components/fields/rich-text-editor/link-popover.mjs.map +1 -0
  263. package/dist/client/components/fields/rich-text-editor/presets.d.mts +11 -0
  264. package/dist/client/components/fields/rich-text-editor/presets.d.mts.map +1 -0
  265. package/dist/client/components/fields/rich-text-editor/presets.mjs +124 -0
  266. package/dist/client/components/fields/rich-text-editor/presets.mjs.map +1 -0
  267. package/dist/client/components/fields/rich-text-editor/slash-commands.mjs +145 -0
  268. package/dist/client/components/fields/rich-text-editor/slash-commands.mjs.map +1 -0
  269. package/dist/client/components/fields/rich-text-editor/table-controls.mjs +124 -0
  270. package/dist/client/components/fields/rich-text-editor/table-controls.mjs.map +1 -0
  271. package/dist/client/components/fields/rich-text-editor/toolbar.mjs +280 -0
  272. package/dist/client/components/fields/rich-text-editor/toolbar.mjs.map +1 -0
  273. package/dist/client/components/fields/rich-text-editor/types.d.mts +78 -0
  274. package/dist/client/components/fields/rich-text-editor/types.d.mts.map +1 -0
  275. package/dist/client/components/fields/rich-text-editor/types.mjs +31 -0
  276. package/dist/client/components/fields/rich-text-editor/types.mjs.map +1 -0
  277. package/dist/client/components/fields/rich-text-editor/utils.mjs +51 -0
  278. package/dist/client/components/fields/rich-text-editor/utils.mjs.map +1 -0
  279. package/dist/client/components/fields/rich-text-editor/variants.d.mts +2 -0
  280. package/dist/client/components/fields/rich-text-field.d.mts +14 -0
  281. package/dist/client/components/fields/rich-text-field.d.mts.map +1 -0
  282. package/dist/client/components/fields/rich-text-field.mjs +26 -0
  283. package/dist/client/components/fields/rich-text-field.mjs.map +1 -0
  284. package/dist/client/components/fields/select-field.d.mts +25 -0
  285. package/dist/client/components/fields/select-field.d.mts.map +1 -0
  286. package/dist/client/components/fields/select-field.mjs +53 -0
  287. package/dist/client/components/fields/select-field.mjs.map +1 -0
  288. package/dist/client/components/fields/status-field.d.mts +2 -0
  289. package/dist/client/components/fields/text-field.d.mts +22 -0
  290. package/dist/client/components/fields/text-field.d.mts.map +1 -0
  291. package/dist/client/components/fields/text-field.mjs +39 -0
  292. package/dist/client/components/fields/text-field.mjs.map +1 -0
  293. package/dist/client/components/fields/textarea-field.d.mts +22 -0
  294. package/dist/client/components/fields/textarea-field.d.mts.map +1 -0
  295. package/dist/client/components/fields/textarea-field.mjs +39 -0
  296. package/dist/client/components/fields/textarea-field.mjs.map +1 -0
  297. package/dist/client/components/fields/time-field.d.mts +20 -0
  298. package/dist/client/components/fields/time-field.d.mts.map +1 -0
  299. package/dist/client/components/fields/time-field.mjs +39 -0
  300. package/dist/client/components/fields/time-field.mjs.map +1 -0
  301. package/dist/client/components/fields/upload-field.d.mts +97 -0
  302. package/dist/client/components/fields/upload-field.d.mts.map +1 -0
  303. package/dist/client/components/fields/upload-field.mjs +497 -0
  304. package/dist/client/components/fields/upload-field.mjs.map +1 -0
  305. package/dist/client/components/filter-builder/columns-tab.d.mts +1 -0
  306. package/dist/client/components/filter-builder/columns-tab.mjs +131 -0
  307. package/dist/client/components/filter-builder/columns-tab.mjs.map +1 -0
  308. package/dist/client/components/filter-builder/filter-builder-sheet.d.mts +1 -0
  309. package/dist/client/components/filter-builder/filter-builder-sheet.mjs +157 -0
  310. package/dist/client/components/filter-builder/filter-builder-sheet.mjs.map +1 -0
  311. package/dist/client/components/filter-builder/filters-tab.d.mts +1 -0
  312. package/dist/client/components/filter-builder/filters-tab.mjs +380 -0
  313. package/dist/client/components/filter-builder/filters-tab.mjs.map +1 -0
  314. package/dist/client/components/filter-builder/index.d.mts +5 -0
  315. package/dist/client/components/filter-builder/saved-views-tab.d.mts +1 -0
  316. package/dist/client/components/filter-builder/saved-views-tab.mjs +125 -0
  317. package/dist/client/components/filter-builder/saved-views-tab.mjs.map +1 -0
  318. package/dist/client/components/index.d.mts +80 -0
  319. package/dist/client/components/locale-switcher.d.mts +2 -0
  320. package/dist/client/components/locale-switcher.mjs +128 -0
  321. package/dist/client/components/locale-switcher.mjs.map +1 -0
  322. package/dist/client/components/media/media-grid.mjs +139 -0
  323. package/dist/client/components/media/media-grid.mjs.map +1 -0
  324. package/dist/client/components/media/media-picker-dialog.mjs +255 -0
  325. package/dist/client/components/media/media-picker-dialog.mjs.map +1 -0
  326. package/dist/client/components/preview/live-preview-mode.mjs +211 -0
  327. package/dist/client/components/preview/live-preview-mode.mjs.map +1 -0
  328. package/dist/client/components/preview/preview-pane.mjs +179 -0
  329. package/dist/client/components/preview/preview-pane.mjs.map +1 -0
  330. package/dist/client/components/primitives/asset-preview.mjs +363 -0
  331. package/dist/client/components/primitives/asset-preview.mjs.map +1 -0
  332. package/dist/client/components/primitives/checkbox-input.mjs +33 -0
  333. package/dist/client/components/primitives/checkbox-input.mjs.map +1 -0
  334. package/dist/client/components/primitives/date-input.mjs +218 -0
  335. package/dist/client/components/primitives/date-input.mjs.map +1 -0
  336. package/dist/client/components/primitives/dropzone.mjs +239 -0
  337. package/dist/client/components/primitives/dropzone.mjs.map +1 -0
  338. package/dist/client/components/primitives/number-input.mjs +113 -0
  339. package/dist/client/components/primitives/number-input.mjs.map +1 -0
  340. package/dist/client/components/primitives/select-multi.mjs +256 -0
  341. package/dist/client/components/primitives/select-multi.mjs.map +1 -0
  342. package/dist/client/components/primitives/select-single.mjs +183 -0
  343. package/dist/client/components/primitives/select-single.mjs.map +1 -0
  344. package/dist/client/components/primitives/text-input.mjs +40 -0
  345. package/dist/client/components/primitives/text-input.mjs.map +1 -0
  346. package/dist/client/components/primitives/textarea-input.mjs +38 -0
  347. package/dist/client/components/primitives/textarea-input.mjs.map +1 -0
  348. package/dist/client/components/primitives/time-input.mjs +72 -0
  349. package/dist/client/components/primitives/time-input.mjs.map +1 -0
  350. package/dist/client/components/primitives/toggle-input.mjs +31 -0
  351. package/dist/client/components/primitives/toggle-input.mjs.map +1 -0
  352. package/dist/client/components/primitives/types.d.mts +14 -0
  353. package/dist/client/components/primitives/types.d.mts.map +1 -0
  354. package/dist/client/components/primitives/types.mjs +13 -0
  355. package/dist/client/components/primitives/types.mjs.map +1 -0
  356. package/dist/client/components/sheets/index.d.mts +1 -0
  357. package/dist/client/components/sheets/resource-sheet.d.mts +1 -0
  358. package/dist/client/components/sheets/resource-sheet.mjs +78 -0
  359. package/dist/client/components/sheets/resource-sheet.mjs.map +1 -0
  360. package/dist/client/components/ui/accordion.d.mts +2 -0
  361. package/dist/client/components/ui/accordion.mjs +50 -0
  362. package/dist/client/components/ui/accordion.mjs.map +1 -0
  363. package/dist/client/components/ui/alert.mjs +32 -0
  364. package/dist/client/components/ui/alert.mjs.map +1 -0
  365. package/dist/client/components/ui/avatar.d.mts +3 -0
  366. package/dist/client/components/ui/badge.d.mts +3 -0
  367. package/dist/client/components/ui/badge.mjs +35 -0
  368. package/dist/client/components/ui/badge.mjs.map +1 -0
  369. package/dist/client/components/ui/button.d.mts +3 -0
  370. package/dist/client/components/ui/button.mjs +49 -0
  371. package/dist/client/components/ui/button.mjs.map +1 -0
  372. package/dist/client/components/ui/card.d.mts +2 -0
  373. package/dist/{card-BKHjBQfw.mjs → client/components/ui/card.mjs} +3 -10
  374. package/dist/{card-BKHjBQfw.mjs.map → client/components/ui/card.mjs.map} +1 -1
  375. package/dist/client/components/ui/checkbox.d.mts +2 -0
  376. package/dist/client/components/ui/checkbox.mjs +27 -0
  377. package/dist/client/components/ui/checkbox.mjs.map +1 -0
  378. package/dist/client/components/ui/combobox.d.mts +3 -0
  379. package/dist/client/components/ui/command.mjs +69 -0
  380. package/dist/client/components/ui/command.mjs.map +1 -0
  381. package/dist/client/components/ui/dialog.d.mts +3 -0
  382. package/dist/client/components/ui/dialog.mjs +83 -0
  383. package/dist/client/components/ui/dialog.mjs.map +1 -0
  384. package/dist/client/components/ui/drawer.mjs +75 -0
  385. package/dist/client/components/ui/drawer.mjs.map +1 -0
  386. package/dist/client/components/ui/dropdown-menu.d.mts +3 -0
  387. package/dist/client/components/ui/dropdown-menu.mjs +89 -0
  388. package/dist/client/components/ui/dropdown-menu.mjs.map +1 -0
  389. package/dist/client/components/ui/empty-state.mjs +53 -0
  390. package/dist/client/components/ui/empty-state.mjs.map +1 -0
  391. package/dist/client/components/ui/field.d.mts +3 -0
  392. package/dist/client/components/ui/field.mjs +78 -0
  393. package/dist/client/components/ui/field.mjs.map +1 -0
  394. package/dist/client/components/ui/input-group.d.mts +4 -0
  395. package/dist/client/components/ui/input-group.mjs +68 -0
  396. package/dist/client/components/ui/input-group.mjs.map +1 -0
  397. package/dist/client/components/ui/input.d.mts +2 -0
  398. package/dist/client/components/ui/input.mjs +17 -0
  399. package/dist/client/components/ui/input.mjs.map +1 -0
  400. package/dist/client/components/ui/kbd.mjs +24 -0
  401. package/dist/client/components/ui/kbd.mjs.map +1 -0
  402. package/dist/client/components/ui/label.d.mts +2 -0
  403. package/dist/client/components/ui/label.mjs +15 -0
  404. package/dist/client/components/ui/label.mjs.map +1 -0
  405. package/dist/client/components/ui/popover.d.mts +3 -0
  406. package/dist/client/components/ui/popover.mjs +49 -0
  407. package/dist/client/components/ui/popover.mjs.map +1 -0
  408. package/dist/client/components/ui/responsive-dialog.mjs +102 -0
  409. package/dist/client/components/ui/responsive-dialog.mjs.map +1 -0
  410. package/dist/client/components/ui/scroll-area.d.mts +2 -0
  411. package/dist/client/components/ui/search-input.mjs +74 -0
  412. package/dist/client/components/ui/search-input.mjs.map +1 -0
  413. package/dist/client/components/ui/select.d.mts +3 -0
  414. package/dist/client/components/ui/select.mjs +85 -0
  415. package/dist/client/components/ui/select.mjs.map +1 -0
  416. package/dist/client/components/ui/separator.d.mts +2 -0
  417. package/dist/client/components/ui/separator.mjs +17 -0
  418. package/dist/client/components/ui/separator.mjs.map +1 -0
  419. package/dist/client/components/ui/sheet.d.mts +3 -0
  420. package/dist/client/components/ui/sheet.mjs +78 -0
  421. package/dist/client/components/ui/sheet.mjs.map +1 -0
  422. package/dist/client/components/ui/sidebar.d.mts +8 -0
  423. package/dist/client/components/ui/sidebar.mjs +256 -0
  424. package/dist/client/components/ui/sidebar.mjs.map +1 -0
  425. package/dist/client/components/ui/skeleton.d.mts +1 -0
  426. package/dist/client/components/ui/skeleton.mjs +15 -0
  427. package/dist/client/components/ui/skeleton.mjs.map +1 -0
  428. package/dist/client/components/ui/sonner.d.mts +14 -0
  429. package/dist/client/components/ui/sonner.d.mts.map +1 -0
  430. package/dist/client/components/ui/sonner.mjs +55 -0
  431. package/dist/client/components/ui/sonner.mjs.map +1 -0
  432. package/dist/client/components/ui/spinner.d.mts +1 -0
  433. package/dist/client/components/ui/spinner.mjs +18 -0
  434. package/dist/client/components/ui/spinner.mjs.map +1 -0
  435. package/dist/client/components/ui/switch.d.mts +2 -0
  436. package/dist/client/components/ui/switch.mjs +23 -0
  437. package/dist/client/components/ui/switch.mjs.map +1 -0
  438. package/dist/client/components/ui/table.d.mts +2 -0
  439. package/dist/client/components/ui/table.mjs +66 -0
  440. package/dist/client/components/ui/table.mjs.map +1 -0
  441. package/dist/client/components/ui/tabs.d.mts +3 -0
  442. package/dist/client/components/ui/tabs.mjs +49 -0
  443. package/dist/client/components/ui/tabs.mjs.map +1 -0
  444. package/dist/client/components/ui/textarea.d.mts +2 -0
  445. package/dist/client/components/ui/textarea.mjs +15 -0
  446. package/dist/client/components/ui/textarea.mjs.map +1 -0
  447. package/dist/client/components/ui/toolbar.mjs +54 -0
  448. package/dist/client/components/ui/toolbar.mjs.map +1 -0
  449. package/dist/client/components/ui/tooltip.d.mts +2 -0
  450. package/dist/client/components/ui/tooltip.mjs +45 -0
  451. package/dist/client/components/ui/tooltip.mjs.map +1 -0
  452. package/dist/client/components/widgets/chart-widget.d.mts +57 -0
  453. package/dist/client/components/widgets/chart-widget.d.mts.map +1 -0
  454. package/dist/client/components/widgets/chart-widget.mjs +282 -0
  455. package/dist/client/components/widgets/chart-widget.mjs.map +1 -0
  456. package/dist/client/components/widgets/progress-widget.d.mts +41 -0
  457. package/dist/client/components/widgets/progress-widget.d.mts.map +1 -0
  458. package/dist/client/components/widgets/progress-widget.mjs +110 -0
  459. package/dist/client/components/widgets/progress-widget.mjs.map +1 -0
  460. package/dist/client/components/widgets/quick-actions-widget.d.mts +29 -0
  461. package/dist/client/components/widgets/quick-actions-widget.d.mts.map +1 -0
  462. package/dist/client/components/widgets/quick-actions-widget.mjs +121 -0
  463. package/dist/client/components/widgets/quick-actions-widget.mjs.map +1 -0
  464. package/dist/client/components/widgets/recent-items-widget.d.mts +51 -0
  465. package/dist/client/components/widgets/recent-items-widget.d.mts.map +1 -0
  466. package/dist/client/components/widgets/recent-items-widget.mjs +101 -0
  467. package/dist/client/components/widgets/recent-items-widget.mjs.map +1 -0
  468. package/dist/client/components/widgets/stats-widget.d.mts +55 -0
  469. package/dist/client/components/widgets/stats-widget.d.mts.map +1 -0
  470. package/dist/client/components/widgets/stats-widget.mjs +150 -0
  471. package/dist/client/components/widgets/stats-widget.mjs.map +1 -0
  472. package/dist/client/components/widgets/table-widget.d.mts +31 -0
  473. package/dist/client/components/widgets/table-widget.d.mts.map +1 -0
  474. package/dist/client/components/widgets/table-widget.mjs +139 -0
  475. package/dist/client/components/widgets/table-widget.mjs.map +1 -0
  476. package/dist/client/components/widgets/timeline-widget.d.mts +51 -0
  477. package/dist/client/components/widgets/timeline-widget.d.mts.map +1 -0
  478. package/dist/client/components/widgets/timeline-widget.mjs +168 -0
  479. package/dist/client/components/widgets/timeline-widget.mjs.map +1 -0
  480. package/dist/client/components/widgets/value-widget.d.mts +39 -0
  481. package/dist/client/components/widgets/value-widget.d.mts.map +1 -0
  482. package/dist/client/components/widgets/value-widget.mjs +111 -0
  483. package/dist/client/components/widgets/value-widget.mjs.map +1 -0
  484. package/dist/client/components/widgets/widget-skeletons.mjs +145 -0
  485. package/dist/client/components/widgets/widget-skeletons.mjs.map +1 -0
  486. package/dist/client/context/focus-context.d.mts +88 -0
  487. package/dist/client/context/focus-context.d.mts.map +1 -0
  488. package/dist/client/context/focus-context.mjs +178 -0
  489. package/dist/client/context/focus-context.mjs.map +1 -0
  490. package/dist/client/contexts/breadcrumb-context.mjs +32 -0
  491. package/dist/client/contexts/breadcrumb-context.mjs.map +1 -0
  492. package/dist/client/hooks/typed-hooks.d.mts +84 -0
  493. package/dist/client/hooks/typed-hooks.d.mts.map +1 -0
  494. package/dist/client/hooks/typed-hooks.mjs +272 -0
  495. package/dist/client/hooks/typed-hooks.mjs.map +1 -0
  496. package/dist/client/hooks/use-action.mjs +201 -0
  497. package/dist/client/hooks/use-action.mjs.map +1 -0
  498. package/dist/client/hooks/use-admin-config.mjs +40 -0
  499. package/dist/client/hooks/use-admin-config.mjs.map +1 -0
  500. package/dist/client/hooks/use-admin-preferences.mjs +68 -0
  501. package/dist/client/hooks/use-admin-preferences.mjs.map +1 -0
  502. package/dist/client/hooks/use-admin-routes.mjs +97 -0
  503. package/dist/client/hooks/use-admin-routes.mjs.map +1 -0
  504. package/dist/client/hooks/use-auth.d.mts +98 -0
  505. package/dist/client/hooks/use-auth.d.mts.map +1 -0
  506. package/dist/{use-auth-BoLmWtmU.mjs → client/hooks/use-auth.mjs} +3 -3
  507. package/dist/client/hooks/use-auth.mjs.map +1 -0
  508. package/dist/client/hooks/use-collection-fields.mjs +32 -0
  509. package/dist/client/hooks/use-collection-fields.mjs.map +1 -0
  510. package/dist/client/hooks/use-collection-meta.mjs +121 -0
  511. package/dist/client/hooks/use-collection-meta.mjs.map +1 -0
  512. package/dist/client/hooks/use-collection-schema.mjs +67 -0
  513. package/dist/client/hooks/use-collection-schema.mjs.map +1 -0
  514. package/dist/client/hooks/use-collection-validation.mjs +74 -0
  515. package/dist/client/hooks/use-collection-validation.mjs.map +1 -0
  516. package/dist/client/hooks/use-collection.d.mts +86 -0
  517. package/dist/client/hooks/use-collection.d.mts.map +1 -0
  518. package/dist/client/hooks/use-collection.mjs +214 -0
  519. package/dist/client/hooks/use-collection.mjs.map +1 -0
  520. package/dist/client/hooks/use-current-user.d.mts +57 -0
  521. package/dist/client/hooks/use-current-user.d.mts.map +1 -0
  522. package/dist/client/hooks/use-current-user.mjs +79 -0
  523. package/dist/client/hooks/use-current-user.mjs.map +1 -0
  524. package/dist/client/hooks/use-field-hooks.mjs +191 -0
  525. package/dist/client/hooks/use-field-hooks.mjs.map +1 -0
  526. package/dist/client/hooks/use-field-options.d.mts +90 -0
  527. package/dist/client/hooks/use-field-options.d.mts.map +1 -0
  528. package/dist/client/hooks/use-field-options.mjs +184 -0
  529. package/dist/client/hooks/use-field-options.mjs.map +1 -0
  530. package/dist/client/hooks/use-global-fields.mjs +27 -0
  531. package/dist/client/hooks/use-global-fields.mjs.map +1 -0
  532. package/dist/client/hooks/use-global-meta.mjs +59 -0
  533. package/dist/client/hooks/use-global-meta.mjs.map +1 -0
  534. package/dist/client/hooks/use-global-schema.mjs +33 -0
  535. package/dist/client/hooks/use-global-schema.mjs.map +1 -0
  536. package/dist/client/hooks/use-global.d.mts +40 -0
  537. package/dist/client/hooks/use-global.d.mts.map +1 -0
  538. package/dist/client/hooks/use-global.mjs +74 -0
  539. package/dist/client/hooks/use-global.mjs.map +1 -0
  540. package/dist/client/hooks/use-locks.mjs +245 -0
  541. package/dist/client/hooks/use-locks.mjs.map +1 -0
  542. package/dist/client/hooks/use-media-query.d.mts +23 -0
  543. package/dist/client/hooks/use-media-query.d.mts.map +1 -0
  544. package/dist/client/hooks/use-media-query.mjs +62 -0
  545. package/dist/client/hooks/use-media-query.mjs.map +1 -0
  546. package/dist/client/hooks/use-prefill-params.mjs +47 -0
  547. package/dist/client/hooks/use-prefill-params.mjs.map +1 -0
  548. package/dist/client/hooks/use-questpie-query-options.mjs +28 -0
  549. package/dist/client/hooks/use-questpie-query-options.mjs.map +1 -0
  550. package/dist/client/hooks/use-reactive-fields.d.mts +75 -0
  551. package/dist/client/hooks/use-reactive-fields.d.mts.map +1 -0
  552. package/dist/client/hooks/use-reactive-fields.mjs +164 -0
  553. package/dist/client/hooks/use-reactive-fields.mjs.map +1 -0
  554. package/dist/client/hooks/use-realtime-highlight.mjs +96 -0
  555. package/dist/client/hooks/use-realtime-highlight.mjs.map +1 -0
  556. package/dist/client/hooks/use-saved-views.mjs +65 -0
  557. package/dist/client/hooks/use-saved-views.mjs.map +1 -0
  558. package/dist/client/hooks/use-search.mjs +147 -0
  559. package/dist/client/hooks/use-search.mjs.map +1 -0
  560. package/dist/client/hooks/use-server-validation.mjs +199 -0
  561. package/dist/client/hooks/use-server-validation.mjs.map +1 -0
  562. package/dist/client/hooks/use-server-widget-data.d.mts +26 -0
  563. package/dist/client/hooks/use-server-widget-data.d.mts.map +1 -0
  564. package/dist/client/hooks/use-server-widget-data.mjs +40 -0
  565. package/dist/client/hooks/use-server-widget-data.mjs.map +1 -0
  566. package/dist/client/hooks/use-setup-status.d.mts +39 -0
  567. package/dist/client/hooks/use-setup-status.d.mts.map +1 -0
  568. package/dist/client/hooks/use-setup-status.mjs +50 -0
  569. package/dist/client/hooks/use-setup-status.mjs.map +1 -0
  570. package/dist/client/hooks/use-upload-collection.mjs +32 -0
  571. package/dist/client/hooks/use-upload-collection.mjs.map +1 -0
  572. package/dist/client/hooks/use-upload.d.mts +23 -0
  573. package/dist/client/hooks/use-upload.d.mts.map +1 -0
  574. package/dist/client/hooks/use-upload.mjs +145 -0
  575. package/dist/client/hooks/use-upload.mjs.map +1 -0
  576. package/dist/client/hooks/use-validation-error-map.mjs +53 -0
  577. package/dist/client/hooks/use-validation-error-map.mjs.map +1 -0
  578. package/dist/client/hooks/use-view-state.mjs +261 -0
  579. package/dist/client/hooks/use-view-state.mjs.map +1 -0
  580. package/dist/client/i18n/hooks.mjs +160 -0
  581. package/dist/client/i18n/hooks.mjs.map +1 -0
  582. package/dist/client/i18n/intl-cache.mjs +65 -0
  583. package/dist/client/i18n/intl-cache.mjs.map +1 -0
  584. package/dist/client/i18n/messages.mjs +7 -0
  585. package/dist/client/i18n/messages.mjs.map +1 -0
  586. package/dist/client/i18n/simple.d.mts +22 -0
  587. package/dist/client/i18n/simple.d.mts.map +1 -0
  588. package/dist/client/i18n/simple.mjs +157 -0
  589. package/dist/client/i18n/simple.mjs.map +1 -0
  590. package/dist/client/i18n/types.d.mts +110 -0
  591. package/dist/client/i18n/types.d.mts.map +1 -0
  592. package/dist/client/lib/utils.d.mts +1 -0
  593. package/dist/client/lib/utils.mjs +28 -0
  594. package/dist/client/lib/utils.mjs.map +1 -0
  595. package/dist/client/preview/block-scope-context.d.mts +74 -0
  596. package/dist/client/preview/block-scope-context.d.mts.map +1 -0
  597. package/dist/client/preview/block-scope-context.mjs +93 -0
  598. package/dist/client/preview/block-scope-context.mjs.map +1 -0
  599. package/dist/client/preview/index.d.mts +5 -0
  600. package/dist/client/preview/preview-banner.d.mts +46 -0
  601. package/dist/client/preview/preview-banner.d.mts.map +1 -0
  602. package/dist/client/preview/preview-banner.mjs +95 -0
  603. package/dist/client/preview/preview-banner.mjs.map +1 -0
  604. package/dist/client/preview/preview-field.d.mts +108 -0
  605. package/dist/client/preview/preview-field.d.mts.map +1 -0
  606. package/dist/client/preview/preview-field.mjs +125 -0
  607. package/dist/client/preview/preview-field.mjs.map +1 -0
  608. package/dist/client/preview/types.d.mts +115 -0
  609. package/dist/client/preview/types.d.mts.map +1 -0
  610. package/dist/client/preview/types.mjs +21 -0
  611. package/dist/client/preview/types.mjs.map +1 -0
  612. package/dist/client/preview/use-collection-preview.d.mts +71 -0
  613. package/dist/client/preview/use-collection-preview.d.mts.map +1 -0
  614. package/dist/client/preview/use-collection-preview.mjs +114 -0
  615. package/dist/client/preview/use-collection-preview.mjs.map +1 -0
  616. package/dist/client/runtime/content-locales-provider.d.mts +1 -0
  617. package/dist/client/runtime/content-locales-provider.mjs +85 -0
  618. package/dist/client/runtime/content-locales-provider.mjs.map +1 -0
  619. package/dist/client/runtime/index.d.mts +7 -0
  620. package/dist/client/runtime/index.mjs +8 -0
  621. package/dist/client/runtime/locale-scope.d.mts +2 -0
  622. package/dist/{runtime-6VZM878K.mjs → client/runtime/locale-scope.mjs} +3 -4
  623. package/dist/client/runtime/locale-scope.mjs.map +1 -0
  624. package/dist/client/runtime/provider.d.mts +10107 -0
  625. package/dist/client/runtime/provider.d.mts.map +1 -0
  626. package/dist/client/runtime/provider.mjs +229 -0
  627. package/dist/client/runtime/provider.mjs.map +1 -0
  628. package/dist/client/runtime/routes.d.mts +49 -0
  629. package/dist/client/runtime/routes.d.mts.map +1 -0
  630. package/dist/client/runtime/routes.mjs +107 -0
  631. package/dist/client/runtime/routes.mjs.map +1 -0
  632. package/dist/client/runtime/translations-provider.d.mts +2 -0
  633. package/dist/client/runtime/translations-provider.mjs +181 -0
  634. package/dist/client/runtime/translations-provider.mjs.map +1 -0
  635. package/dist/client/scope/index.d.mts +3 -0
  636. package/dist/client/scope/picker.d.mts +54 -0
  637. package/dist/client/scope/picker.d.mts.map +1 -0
  638. package/dist/client/scope/picker.mjs +161 -0
  639. package/dist/client/scope/picker.mjs.map +1 -0
  640. package/dist/client/scope/provider.d.mts +104 -0
  641. package/dist/client/scope/provider.d.mts.map +1 -0
  642. package/dist/client/scope/provider.mjs +159 -0
  643. package/dist/client/scope/provider.mjs.map +1 -0
  644. package/dist/client/scope/types.d.mts +112 -0
  645. package/dist/client/scope/types.d.mts.map +1 -0
  646. package/dist/client/styles/index.css +80 -0
  647. package/dist/client/utils/auto-expand-fields.mjs +65 -0
  648. package/dist/client/utils/auto-expand-fields.mjs.map +1 -0
  649. package/dist/client/utils/build-field-definitions-from-schema.mjs +256 -0
  650. package/dist/client/utils/build-field-definitions-from-schema.mjs.map +1 -0
  651. package/dist/client/utils/detect-relations.mjs +46 -0
  652. package/dist/client/utils/detect-relations.mjs.map +1 -0
  653. package/dist/client/utils/locale-to-flag.d.mts +118 -0
  654. package/dist/client/utils/locale-to-flag.d.mts.map +1 -0
  655. package/dist/client/utils/locale-to-flag.mjs +130 -0
  656. package/dist/client/utils/locale-to-flag.mjs.map +1 -0
  657. package/dist/client/utils/routes.mjs +196 -0
  658. package/dist/client/utils/routes.mjs.map +1 -0
  659. package/dist/client/views/auth/accept-invite-form.d.mts +73 -0
  660. package/dist/client/views/auth/accept-invite-form.d.mts.map +1 -0
  661. package/dist/client/views/auth/accept-invite-form.mjs +180 -0
  662. package/dist/client/views/auth/accept-invite-form.mjs.map +1 -0
  663. package/dist/client/views/auth/auth-layout.d.mts +44 -0
  664. package/dist/client/views/auth/auth-layout.d.mts.map +1 -0
  665. package/dist/client/views/auth/auth-layout.mjs +53 -0
  666. package/dist/client/views/auth/auth-layout.mjs.map +1 -0
  667. package/dist/client/views/auth/forgot-password-form.d.mts +59 -0
  668. package/dist/client/views/auth/forgot-password-form.d.mts.map +1 -0
  669. package/dist/{forgot-password-page-Bcp-An4Y.mjs → client/views/auth/forgot-password-form.mjs} +22 -89
  670. package/dist/client/views/auth/forgot-password-form.mjs.map +1 -0
  671. package/dist/client/views/auth/index.d.mts +7 -0
  672. package/dist/client/views/auth/invite-form.d.mts +1 -0
  673. package/dist/client/views/auth/invite-form.mjs +155 -0
  674. package/dist/client/views/auth/invite-form.mjs.map +1 -0
  675. package/dist/client/views/auth/login-form.d.mts +76 -0
  676. package/dist/client/views/auth/login-form.d.mts.map +1 -0
  677. package/dist/client/views/auth/login-form.mjs +167 -0
  678. package/dist/client/views/auth/login-form.mjs.map +1 -0
  679. package/dist/client/views/auth/reset-password-form.d.mts +66 -0
  680. package/dist/client/views/auth/reset-password-form.d.mts.map +1 -0
  681. package/dist/client/views/auth/reset-password-form.mjs +188 -0
  682. package/dist/client/views/auth/reset-password-form.mjs.map +1 -0
  683. package/dist/client/views/auth/setup-form.d.mts +61 -0
  684. package/dist/client/views/auth/setup-form.d.mts.map +1 -0
  685. package/dist/{setup-page-YAP_fzqh.mjs → client/views/auth/setup-form.mjs} +46 -124
  686. package/dist/client/views/auth/setup-form.mjs.map +1 -0
  687. package/dist/client/views/collection/auto-form-fields.d.mts +4 -0
  688. package/dist/client/views/collection/auto-form-fields.mjs +453 -0
  689. package/dist/client/views/collection/auto-form-fields.mjs.map +1 -0
  690. package/dist/client/views/collection/bulk-action-toolbar.mjs +291 -0
  691. package/dist/client/views/collection/bulk-action-toolbar.mjs.map +1 -0
  692. package/dist/client/views/collection/cells/complex-cells.d.mts +46 -0
  693. package/dist/client/views/collection/cells/complex-cells.d.mts.map +1 -0
  694. package/dist/client/views/collection/cells/complex-cells.mjs +327 -0
  695. package/dist/client/views/collection/cells/complex-cells.mjs.map +1 -0
  696. package/dist/client/views/collection/cells/index.d.mts +7 -0
  697. package/dist/client/views/collection/cells/primitive-cells.d.mts +76 -0
  698. package/dist/client/views/collection/cells/primitive-cells.d.mts.map +1 -0
  699. package/dist/client/views/collection/cells/primitive-cells.mjs +165 -0
  700. package/dist/client/views/collection/cells/primitive-cells.mjs.map +1 -0
  701. package/dist/client/views/collection/cells/relation-cells.d.mts +21 -0
  702. package/dist/client/views/collection/cells/relation-cells.d.mts.map +1 -0
  703. package/dist/client/views/collection/cells/relation-cells.mjs +105 -0
  704. package/dist/client/views/collection/cells/relation-cells.mjs.map +1 -0
  705. package/dist/client/views/collection/cells/shared/asset-thumbnail.d.mts +1 -0
  706. package/dist/client/views/collection/cells/shared/asset-thumbnail.mjs +189 -0
  707. package/dist/client/views/collection/cells/shared/asset-thumbnail.mjs.map +1 -0
  708. package/dist/client/views/collection/cells/shared/cell-helpers.d.mts +2 -0
  709. package/dist/client/views/collection/cells/shared/cell-helpers.mjs +78 -0
  710. package/dist/client/views/collection/cells/shared/cell-helpers.mjs.map +1 -0
  711. package/dist/client/views/collection/cells/shared/relation-chip.d.mts +1 -0
  712. package/dist/client/views/collection/cells/shared/relation-chip.mjs +37 -0
  713. package/dist/client/views/collection/cells/shared/relation-chip.mjs.map +1 -0
  714. package/dist/client/views/collection/cells/upload-cells.d.mts +25 -0
  715. package/dist/client/views/collection/cells/upload-cells.d.mts.map +1 -0
  716. package/dist/client/views/collection/cells/upload-cells.mjs +20 -0
  717. package/dist/client/views/collection/cells/upload-cells.mjs.map +1 -0
  718. package/dist/client/views/collection/columns/build-columns.d.mts +2 -0
  719. package/dist/client/views/collection/columns/build-columns.mjs +156 -0
  720. package/dist/client/views/collection/columns/build-columns.mjs.map +1 -0
  721. package/dist/client/views/collection/columns/column-defaults.d.mts +2 -0
  722. package/dist/client/views/collection/columns/column-defaults.mjs +108 -0
  723. package/dist/client/views/collection/columns/column-defaults.mjs.map +1 -0
  724. package/dist/client/views/collection/columns/index.d.mts +3 -0
  725. package/dist/client/views/collection/columns/types.d.mts +2 -0
  726. package/dist/client/views/collection/field-context.mjs +127 -0
  727. package/dist/client/views/collection/field-context.mjs.map +1 -0
  728. package/dist/client/views/collection/field-renderer.mjs +171 -0
  729. package/dist/client/views/collection/field-renderer.mjs.map +1 -0
  730. package/dist/client/views/collection/form-view.d.mts +112 -0
  731. package/dist/client/views/collection/form-view.d.mts.map +1 -0
  732. package/dist/client/views/collection/form-view.mjs +903 -0
  733. package/dist/client/views/collection/form-view.mjs.map +1 -0
  734. package/dist/client/views/collection/index.d.mts +9 -0
  735. package/dist/client/views/collection/table-view.d.mts +102 -0
  736. package/dist/client/views/collection/table-view.d.mts.map +1 -0
  737. package/dist/client/views/collection/table-view.mjs +695 -0
  738. package/dist/client/views/collection/table-view.mjs.map +1 -0
  739. package/dist/client/views/collection/view-skeletons.mjs +121 -0
  740. package/dist/client/views/collection/view-skeletons.mjs.map +1 -0
  741. package/dist/client/views/common/global-search.d.mts +1 -0
  742. package/dist/client/views/common/global-search.mjs +376 -0
  743. package/dist/client/views/common/global-search.mjs.map +1 -0
  744. package/dist/client/views/common/index.d.mts +1 -0
  745. package/dist/client/views/dashboard/dashboard-grid.mjs +385 -0
  746. package/dist/client/views/dashboard/dashboard-grid.mjs.map +1 -0
  747. package/dist/client/views/dashboard/dashboard-widget.mjs +178 -0
  748. package/dist/client/views/dashboard/dashboard-widget.mjs.map +1 -0
  749. package/dist/client/views/dashboard/widget-card.mjs +159 -0
  750. package/dist/client/views/dashboard/widget-card.mjs.map +1 -0
  751. package/dist/client/views/globals/global-form-view.d.mts +74 -0
  752. package/dist/client/views/globals/global-form-view.d.mts.map +1 -0
  753. package/dist/client/views/globals/global-form-view.mjs +181 -0
  754. package/dist/client/views/globals/global-form-view.mjs.map +1 -0
  755. package/dist/client/views/index.d.mts +28 -0
  756. package/dist/client/views/layout/admin-layout-provider.d.mts +140 -0
  757. package/dist/client/views/layout/admin-layout-provider.d.mts.map +1 -0
  758. package/dist/client/views/layout/admin-layout-provider.mjs +90 -0
  759. package/dist/client/views/layout/admin-layout-provider.mjs.map +1 -0
  760. package/dist/client/views/layout/admin-layout.d.mts +151 -0
  761. package/dist/client/views/layout/admin-layout.d.mts.map +1 -0
  762. package/dist/client/views/layout/admin-layout.mjs +144 -0
  763. package/dist/client/views/layout/admin-layout.mjs.map +1 -0
  764. package/dist/client/views/layout/admin-root.d.mts +7 -0
  765. package/dist/client/views/layout/admin-router.d.mts +125 -0
  766. package/dist/client/views/layout/admin-router.d.mts.map +1 -0
  767. package/dist/client/views/layout/admin-router.mjs +594 -0
  768. package/dist/client/views/layout/admin-router.mjs.map +1 -0
  769. package/dist/client/views/layout/admin-sidebar.d.mts +105 -0
  770. package/dist/client/views/layout/admin-sidebar.d.mts.map +1 -0
  771. package/dist/client/views/layout/admin-sidebar.mjs +550 -0
  772. package/dist/client/views/layout/admin-sidebar.mjs.map +1 -0
  773. package/dist/client/views/layout/admin-topbar.mjs +128 -0
  774. package/dist/client/views/layout/admin-topbar.mjs.map +1 -0
  775. package/dist/client/views/layout/index.d.mts +5 -0
  776. package/dist/client/views/pages/accept-invite-page.d.mts +67 -0
  777. package/dist/client/views/pages/accept-invite-page.d.mts.map +1 -0
  778. package/dist/client/views/pages/accept-invite-page.mjs +143 -0
  779. package/dist/client/views/pages/accept-invite-page.mjs.map +1 -0
  780. package/dist/client/views/pages/dashboard-page.d.mts +52 -0
  781. package/dist/client/views/pages/dashboard-page.d.mts.map +1 -0
  782. package/dist/client/views/pages/dashboard-page.mjs +45 -0
  783. package/dist/client/views/pages/dashboard-page.mjs.map +1 -0
  784. package/dist/client/views/pages/forgot-password-page.d.mts +59 -0
  785. package/dist/client/views/pages/forgot-password-page.d.mts.map +1 -0
  786. package/dist/client/views/pages/forgot-password-page.mjs +80 -0
  787. package/dist/client/views/pages/forgot-password-page.mjs.map +1 -0
  788. package/dist/client/views/pages/index.d.mts +7 -0
  789. package/dist/client/views/pages/invite-page.d.mts +71 -0
  790. package/dist/client/views/pages/invite-page.d.mts.map +1 -0
  791. package/dist/client/views/pages/invite-page.mjs +86 -0
  792. package/dist/client/views/pages/invite-page.mjs.map +1 -0
  793. package/dist/client/views/pages/login-page.d.mts +76 -0
  794. package/dist/client/views/pages/login-page.d.mts.map +1 -0
  795. package/dist/client/views/pages/login-page.mjs +98 -0
  796. package/dist/client/views/pages/login-page.mjs.map +1 -0
  797. package/dist/client/views/pages/reset-password-page.d.mts +66 -0
  798. package/dist/client/views/pages/reset-password-page.d.mts.map +1 -0
  799. package/dist/client/views/pages/reset-password-page.mjs +105 -0
  800. package/dist/client/views/pages/reset-password-page.mjs.map +1 -0
  801. package/dist/client/views/pages/setup-page.d.mts +64 -0
  802. package/dist/client/views/pages/setup-page.d.mts.map +1 -0
  803. package/dist/client/views/pages/setup-page.mjs +91 -0
  804. package/dist/client/views/pages/setup-page.mjs.map +1 -0
  805. package/dist/client.d.mts +92 -3
  806. package/dist/client.d.mts.map +1 -0
  807. package/dist/client.mjs +54 -12
  808. package/dist/components/rich-text/index.d.mts +1 -0
  809. package/dist/components/rich-text/rich-text-renderer.d.mts +104 -0
  810. package/dist/components/rich-text/rich-text-renderer.d.mts.map +1 -0
  811. package/dist/components/rich-text/rich-text-renderer.mjs +210 -0
  812. package/dist/components/rich-text/rich-text-renderer.mjs.map +1 -0
  813. package/dist/index.d.mts +62 -3
  814. package/dist/index.mjs +54 -12
  815. package/dist/server/adapters/nextjs.d.mts +121 -0
  816. package/dist/server/adapters/nextjs.d.mts.map +1 -0
  817. package/dist/server/adapters/nextjs.mjs +111 -0
  818. package/dist/server/adapters/nextjs.mjs.map +1 -0
  819. package/dist/server/adapters/tanstack.d.mts +133 -0
  820. package/dist/server/adapters/tanstack.d.mts.map +1 -0
  821. package/dist/server/adapters/tanstack.mjs +90 -0
  822. package/dist/server/adapters/tanstack.mjs.map +1 -0
  823. package/dist/server/augmentation.d.mts +1523 -0
  824. package/dist/server/augmentation.d.mts.map +1 -0
  825. package/dist/server/auth-helpers.d.mts +143 -0
  826. package/dist/server/auth-helpers.d.mts.map +1 -0
  827. package/dist/server/auth-helpers.mjs +108 -0
  828. package/dist/server/auth-helpers.mjs.map +1 -0
  829. package/dist/server/block/block-builder.d.mts +319 -0
  830. package/dist/server/block/block-builder.d.mts.map +1 -0
  831. package/dist/server/block/block-builder.mjs +217 -0
  832. package/dist/server/block/block-builder.mjs.map +1 -0
  833. package/dist/server/block/index.d.mts +3 -0
  834. package/dist/server/block/introspection.d.mts +84 -0
  835. package/dist/server/block/introspection.d.mts.map +1 -0
  836. package/dist/server/block/introspection.mjs +89 -0
  837. package/dist/server/block/introspection.mjs.map +1 -0
  838. package/dist/server/block/prefetch.d.mts +78 -0
  839. package/dist/server/block/prefetch.d.mts.map +1 -0
  840. package/dist/server/block/prefetch.mjs +240 -0
  841. package/dist/server/block/prefetch.mjs.map +1 -0
  842. package/dist/server/fields/blocks.d.mts +139 -0
  843. package/dist/server/fields/blocks.d.mts.map +1 -0
  844. package/dist/server/fields/blocks.mjs +192 -0
  845. package/dist/server/fields/blocks.mjs.map +1 -0
  846. package/dist/server/fields/index.d.mts +48 -0
  847. package/dist/server/fields/index.d.mts.map +1 -0
  848. package/dist/server/fields/index.mjs +16 -0
  849. package/dist/server/fields/index.mjs.map +1 -0
  850. package/dist/server/fields/rich-text.d.mts +135 -0
  851. package/dist/server/fields/rich-text.d.mts.map +1 -0
  852. package/dist/server/fields/rich-text.mjs +188 -0
  853. package/dist/server/fields/rich-text.mjs.map +1 -0
  854. package/dist/server/i18n/index.d.mts +16 -0
  855. package/dist/server/i18n/index.d.mts.map +1 -0
  856. package/dist/server/i18n/index.mjs +44 -0
  857. package/dist/server/i18n/index.mjs.map +1 -0
  858. package/dist/server/i18n/messages/cs.mjs +461 -0
  859. package/dist/server/i18n/messages/cs.mjs.map +1 -0
  860. package/dist/server/i18n/messages/de.mjs +461 -0
  861. package/dist/server/i18n/messages/de.mjs.map +1 -0
  862. package/dist/server/i18n/messages/en.mjs +493 -0
  863. package/dist/server/i18n/messages/en.mjs.map +1 -0
  864. package/dist/server/i18n/messages/es.mjs +461 -0
  865. package/dist/server/i18n/messages/es.mjs.map +1 -0
  866. package/dist/server/i18n/messages/fr.mjs +461 -0
  867. package/dist/server/i18n/messages/fr.mjs.map +1 -0
  868. package/dist/server/i18n/messages/index.mjs +24 -0
  869. package/dist/server/i18n/messages/index.mjs.map +1 -0
  870. package/dist/server/i18n/messages/pl.mjs +461 -0
  871. package/dist/server/i18n/messages/pl.mjs.map +1 -0
  872. package/dist/server/i18n/messages/pt.mjs +464 -0
  873. package/dist/server/i18n/messages/pt.mjs.map +1 -0
  874. package/dist/server/i18n/messages/sk.mjs +490 -0
  875. package/dist/server/i18n/messages/sk.mjs.map +1 -0
  876. package/dist/server/index.d.mts +20 -0
  877. package/dist/server/modules/admin/functions/admin-config.mjs +348 -0
  878. package/dist/server/modules/admin/functions/admin-config.mjs.map +1 -0
  879. package/dist/server/modules/admin/functions/execute-action.d.mts +107 -0
  880. package/dist/server/modules/admin/functions/execute-action.d.mts.map +1 -0
  881. package/dist/server/modules/admin/functions/execute-action.mjs +331 -0
  882. package/dist/server/modules/admin/functions/execute-action.mjs.map +1 -0
  883. package/dist/server/modules/admin/functions/locales.mjs +80 -0
  884. package/dist/server/modules/admin/functions/locales.mjs.map +1 -0
  885. package/dist/server/modules/admin/functions/preview.d.mts +70 -0
  886. package/dist/server/modules/admin/functions/preview.d.mts.map +1 -0
  887. package/dist/server/modules/admin/functions/preview.mjs +243 -0
  888. package/dist/server/modules/admin/functions/preview.mjs.map +1 -0
  889. package/dist/server/modules/admin/functions/reactive.d.mts +99 -0
  890. package/dist/server/modules/admin/functions/reactive.d.mts.map +1 -0
  891. package/dist/server/modules/admin/functions/reactive.mjs +378 -0
  892. package/dist/server/modules/admin/functions/reactive.mjs.map +1 -0
  893. package/dist/server/modules/admin/functions/setup.d.mts +84 -0
  894. package/dist/server/modules/admin/functions/setup.d.mts.map +1 -0
  895. package/dist/server/modules/admin/functions/setup.mjs +131 -0
  896. package/dist/server/modules/admin/functions/setup.mjs.map +1 -0
  897. package/dist/server/modules/admin/functions/translations.mjs +125 -0
  898. package/dist/server/modules/admin/functions/translations.mjs.map +1 -0
  899. package/dist/server/modules/admin/functions/widget-data.d.mts +33 -0
  900. package/dist/server/modules/admin/functions/widget-data.d.mts.map +1 -0
  901. package/dist/server/modules/admin/functions/widget-data.mjs +70 -0
  902. package/dist/server/modules/admin/functions/widget-data.mjs.map +1 -0
  903. package/dist/server/modules/admin/index.d.mts +16879 -0
  904. package/dist/server/modules/admin/index.d.mts.map +1 -0
  905. package/dist/server/modules/admin/index.mjs +249 -0
  906. package/dist/server/modules/admin/index.mjs.map +1 -0
  907. package/dist/server/modules/admin-preferences/collections/admin-preferences.collection.d.mts +3 -0
  908. package/dist/server/modules/admin-preferences/collections/admin-preferences.collection.mjs +48 -0
  909. package/dist/server/modules/admin-preferences/collections/admin-preferences.collection.mjs.map +1 -0
  910. package/dist/server/modules/admin-preferences/collections/locks.collection.d.mts +3 -0
  911. package/dist/server/modules/admin-preferences/collections/locks.collection.mjs +79 -0
  912. package/dist/server/modules/admin-preferences/collections/locks.collection.mjs.map +1 -0
  913. package/dist/server/modules/admin-preferences/collections/saved-views.collection.d.mts +1490 -0
  914. package/dist/server/modules/admin-preferences/collections/saved-views.collection.d.mts.map +1 -0
  915. package/dist/server/modules/admin-preferences/collections/saved-views.collection.mjs +57 -0
  916. package/dist/server/modules/admin-preferences/collections/saved-views.collection.mjs.map +1 -0
  917. package/dist/server/patch.d.mts +100 -0
  918. package/dist/server/patch.d.mts.map +1 -0
  919. package/dist/server/patch.mjs +1062 -0
  920. package/dist/server/patch.mjs.map +1 -0
  921. package/dist/server.d.mts +21 -250
  922. package/dist/server.mjs +19 -832
  923. package/dist/shared/preview-utils.d.mts +54 -0
  924. package/dist/shared/preview-utils.d.mts.map +1 -0
  925. package/dist/{preview-utils-BKQ9-TMa.mjs → shared/preview-utils.mjs} +2 -2
  926. package/dist/shared/preview-utils.mjs.map +1 -0
  927. package/dist/{saved-views.types-BMsz5mCy.d.mts → shared/types/saved-views.types.d.mts} +7 -2
  928. package/dist/shared/types/saved-views.types.d.mts.map +1 -0
  929. package/dist/shared.d.mts +3 -57
  930. package/dist/shared.mjs +1 -1
  931. package/package.json +12 -17
  932. package/dist/auth-layout-M8K8_q5R.mjs +0 -181
  933. package/dist/auth-layout-M8K8_q5R.mjs.map +0 -1
  934. package/dist/bulk-upload-dialog-D7w7W1Hl.mjs +0 -273
  935. package/dist/bulk-upload-dialog-D7w7W1Hl.mjs.map +0 -1
  936. package/dist/client-B7r47hEd.d.mts +0 -13403
  937. package/dist/client-B7r47hEd.d.mts.map +0 -1
  938. package/dist/client-njX1rZmi.mjs +0 -22612
  939. package/dist/client-njX1rZmi.mjs.map +0 -1
  940. package/dist/content-locales-provider-BXvuIgfg.mjs +0 -1650
  941. package/dist/content-locales-provider-BXvuIgfg.mjs.map +0 -1
  942. package/dist/dashboard-page-B4PGEdc2.mjs +0 -2500
  943. package/dist/dashboard-page-B4PGEdc2.mjs.map +0 -1
  944. package/dist/dashboard-page-mCY0pgZv.mjs +0 -3
  945. package/dist/dropzone-Do3awXKd.mjs +0 -634
  946. package/dist/dropzone-Do3awXKd.mjs.map +0 -1
  947. package/dist/forgot-password-page-Bcp-An4Y.mjs.map +0 -1
  948. package/dist/forgot-password-page-CEwsdLwn.mjs +0 -3
  949. package/dist/index-BYyqkWtn.d.mts +0 -2753
  950. package/dist/index-BYyqkWtn.d.mts.map +0 -1
  951. package/dist/login-page-BUnpCbCa.mjs +0 -3
  952. package/dist/login-page-CP4gA-dl.mjs +0 -298
  953. package/dist/login-page-CP4gA-dl.mjs.map +0 -1
  954. package/dist/preview-utils-BKQ9-TMa.mjs.map +0 -1
  955. package/dist/reset-password-page-BqfDmLxA.mjs +0 -281
  956. package/dist/reset-password-page-BqfDmLxA.mjs.map +0 -1
  957. package/dist/reset-password-page-CufHz3h3.mjs +0 -3
  958. package/dist/runtime-6VZM878K.mjs.map +0 -1
  959. package/dist/saved-views.types-BMsz5mCy.d.mts.map +0 -1
  960. package/dist/server.d.mts.map +0 -1
  961. package/dist/server.mjs.map +0 -1
  962. package/dist/setup-page-BNNzt_Z6.mjs +0 -3
  963. package/dist/setup-page-YAP_fzqh.mjs.map +0 -1
  964. package/dist/shared.d.mts.map +0 -1
  965. package/dist/use-auth-BoLmWtmU.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global-form-view.mjs","names":["configs: Record<string, any>","React"],"sources":["../../../../src/client/views/globals/global-form-view.tsx"],"sourcesContent":["/**\n * Global Form View - Default edit view component for globals\n *\n * Mirrors FormView for collections but adapted for singleton globals.\n * Renders global settings form with sections, tabs, sidebar, validation.\n */\n\nimport { Icon } from \"@iconify/react\";\nimport { QuestpieClientError } from \"questpie/client\";\nimport * as React from \"react\";\nimport { FormProvider, useForm } from \"react-hook-form\";\nimport { toast } from \"sonner\";\nimport type {\n\tComponentRegistry,\n\tFormViewConfig,\n} from \"../../builder/types/field-types\";\nimport type { GlobalBuilderState } from \"../../builder/types/global-types\";\nimport { LocaleSwitcher } from \"../../components/locale-switcher\";\nimport { Button } from \"../../components/ui/button\";\nimport { useGlobal, useGlobalUpdate } from \"../../hooks\";\nimport { useGlobalFields } from \"../../hooks/use-global-fields\";\nimport { useReactiveFields } from \"../../hooks/use-reactive-fields\";\nimport { useGlobalServerValidation } from \"../../hooks/use-server-validation\";\nimport { useResolveText, useTranslation } from \"../../i18n/hooks\";\nimport { useSafeContentLocales, useScopedLocale } from \"../../runtime\";\nimport { AutoFormFields } from \"../collection/auto-form-fields\";\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\n/**\n * Extract reactive configs from global schema fields.\n * Used to determine which fields have server-side reactive behaviors.\n */\nfunction extractReactiveConfigs(schema: any): Record<string, any> {\n\tif (!schema?.fields) return {};\n\n\tconst configs: Record<string, any> = {};\n\n\tfor (const [fieldName, fieldDef] of Object.entries(schema.fields)) {\n\t\tif ((fieldDef as any).reactive) {\n\t\t\tconfigs[fieldName] = (fieldDef as any).reactive;\n\t\t}\n\t}\n\n\treturn configs;\n}\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/**\n * Props for GlobalFormView component\n */\nexport interface GlobalFormViewProps {\n\t/**\n\t * Global name\n\t */\n\tglobal: string;\n\n\t/**\n\t * Global configuration from admin builder\n\t * Accepts GlobalBuilderState or any compatible config object\n\t */\n\tconfig?: Partial<GlobalBuilderState> | Record<string, any>;\n\n\t/**\n\t * View-specific configuration from registry/schema\n\t */\n\tviewConfig?: FormViewConfig;\n\n\t/**\n\t * Navigate function for routing\n\t */\n\tnavigate: (path: string) => void;\n\n\t/**\n\t * Base path for admin routes (e.g., \"/admin\")\n\t */\n\tbasePath?: string;\n\n\t/**\n\t * Component registry for custom field types\n\t */\n\tregistry?: ComponentRegistry;\n\n\t/**\n\t * All globals config (for potential cross-references)\n\t */\n\tallGlobalsConfig?: Record<\n\t\tstring,\n\t\tPartial<GlobalBuilderState> | Record<string, any>\n\t>;\n\n\t/**\n\t * Show metadata (updated dates)\n\t * @default true\n\t */\n\tshowMeta?: boolean;\n\n\t/**\n\t * Custom header actions (in addition to default Save button)\n\t */\n\theaderActions?: React.ReactNode;\n\n\t/**\n\t * Callback on successful save\n\t */\n\tonSuccess?: (data: any) => void;\n\n\t/**\n\t * Callback on error\n\t */\n\tonError?: (error: Error) => void;\n}\n\n// ============================================================================\n// Component\n// ============================================================================\n\n/**\n * GlobalFormView - Default form-based edit view for globals\n */\nexport default function GlobalFormView({\n\tglobal: globalName,\n\tconfig,\n\tviewConfig,\n\tregistry,\n\tshowMeta = true,\n\theaderActions,\n\tonSuccess,\n\tonError,\n}: GlobalFormViewProps) {\n\tconst { t } = useTranslation();\n\tconst resolveText = useResolveText();\n\n\tconst { data: globalData, isLoading: dataLoading } = useGlobal(globalName);\n\tconst { fields: schemaFields } = useGlobalFields(globalName);\n\n\tconst { locale: contentLocale, setLocale: setContentLocale } =\n\t\tuseScopedLocale();\n\tconst contentLocales = useSafeContentLocales();\n\tconst localeOptions = contentLocales?.locales ?? [];\n\n\tconst updateMutation = useGlobalUpdate(globalName, {\n\t\tonSuccess: (data) => {\n\t\t\ttoast.success(t(\"toast.saveSuccess\"));\n\t\t\tonSuccess?.(data);\n\t\t},\n\t\tonError: (error) => {\n\t\t\tonError?.(error);\n\t\t},\n\t});\n\n\t// Get validation resolver - uses server JSON Schema for validation\n\tconst { resolver } = useGlobalServerValidation(globalName);\n\n\tconst form = useForm({\n\t\tdefaultValues: (globalData ?? {}) as any,\n\t\tresolver,\n\t});\n\n\t// Reset form when data loads\n\tReact.useEffect(() => {\n\t\tif (globalData) {\n\t\t\tform.reset(globalData as any);\n\t\t}\n\t}, [form, globalData]);\n\n\t// Extract reactive configs from schema for server-side reactive handlers\n\tconst reactiveConfigs = React.useMemo(\n\t\t() => extractReactiveConfigs(schemaFields),\n\t\t[schemaFields],\n\t);\n\n\t// Use reactive fields hook for server-side compute/hidden/readOnly/disabled\n\tuseReactiveFields({\n\t\tcollection: globalName,\n\t\tmode: \"global\",\n\t\treactiveConfigs,\n\t\tenabled: !dataLoading && Object.keys(reactiveConfigs).length > 0,\n\t\tdebounce: 300,\n\t});\n\n\tconst resolvedConfig = React.useMemo(() => {\n\t\tif (!viewConfig) return config;\n\n\t\treturn {\n\t\t\t...(config ?? {}),\n\t\t\tform: viewConfig,\n\t\t};\n\t}, [config, viewConfig]);\n\n\tconst onSubmit = React.useCallback(\n\t\tasync (data: any) => {\n\t\t\ttry {\n\t\t\t\tconst result = await updateMutation.mutateAsync({\n\t\t\t\t\tdata,\n\t\t\t\t});\n\t\t\t\tif (result) {\n\t\t\t\t\tform.reset(result as any);\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\t// Handle field-level validation errors from the API\n\t\t\t\tif (\n\t\t\t\t\terror instanceof QuestpieClientError &&\n\t\t\t\t\terror.fieldErrors &&\n\t\t\t\t\terror.fieldErrors.length > 0\n\t\t\t\t) {\n\t\t\t\t\tfor (const fieldError of error.fieldErrors) {\n\t\t\t\t\t\tform.setError(fieldError.path as any, {\n\t\t\t\t\t\t\ttype: \"server\",\n\t\t\t\t\t\t\tmessage: fieldError.message,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\ttoast.error(t(\"toast.validationFailed\"), {\n\t\t\t\t\t\tdescription: t(\"toast.validationDescription\"),\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Handle generic errors\n\t\t\t\tconst message =\n\t\t\t\t\terror instanceof Error ? error.message : t(\"error.unknown\");\n\t\t\t\ttoast.error(\n\t\t\t\t\tt(\"toast.settingsSaveFailed\") || \"Failed to save settings\",\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: message,\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[updateMutation, form, t],\n\t);\n\n\t// Keyboard shortcut: Cmd+S to save\n\tReact.useEffect(() => {\n\t\tconst handleKeyDown = (e: KeyboardEvent) => {\n\t\t\tif ((e.metaKey || e.ctrlKey) && e.key === \"s\") {\n\t\t\t\te.preventDefault();\n\t\t\t\tform.handleSubmit(onSubmit)();\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener(\"keydown\", handleKeyDown);\n\t\treturn () => document.removeEventListener(\"keydown\", handleKeyDown);\n\t}, [form, onSubmit]);\n\n\tconst isSubmitting = updateMutation.isPending || form.formState.isSubmitting;\n\n\t// Format date helper\n\tconst formatDate = (date: string | Date) => {\n\t\treturn new Date(date).toLocaleDateString(undefined, {\n\t\t\tyear: \"numeric\",\n\t\t\tmonth: \"short\",\n\t\t\tday: \"numeric\",\n\t\t\thour: \"2-digit\",\n\t\t\tminute: \"2-digit\",\n\t\t});\n\t};\n\n\tif (dataLoading) {\n\t\treturn (\n\t\t\t<div className=\"flex h-64 items-center justify-center text-muted-foreground\">\n\t\t\t\t<Icon icon=\"ph:spinner-gap\" className=\"size-6 animate-spin\" />\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst globalLabel = resolveText(\n\t\t(resolvedConfig as any)?.label ?? schemaFields?._globalLabel,\n\t\tglobalName,\n\t);\n\n\treturn (\n\t\t<FormProvider {...form}>\n\t\t\t<form onSubmit={form.handleSubmit(onSubmit)} className=\"w-full space-y-4\">\n\t\t\t\t{/* Header - Title & Actions */}\n\t\t\t\t<div className=\"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between\">\n\t\t\t\t\t<div className=\"min-w-0 flex-1\">\n\t\t\t\t\t\t<div className=\"flex items-center gap-3\">\n\t\t\t\t\t\t\t<h1 className=\"text-2xl md:text-3xl font-extrabold tracking-tight\">\n\t\t\t\t\t\t\t\t{globalLabel}\n\t\t\t\t\t\t\t</h1>\n\t\t\t\t\t\t\t{localeOptions.length > 0 && (\n\t\t\t\t\t\t\t\t<LocaleSwitcher\n\t\t\t\t\t\t\t\t\tlocales={localeOptions}\n\t\t\t\t\t\t\t\t\tvalue={contentLocale}\n\t\t\t\t\t\t\t\t\tonChange={setContentLocale}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{showMeta && globalData?.updatedAt && (\n\t\t\t\t\t\t\t<p className=\"mt-1 text-xs text-muted-foreground\">\n\t\t\t\t\t\t\t\t{t(\"form.lastUpdated\")}: {formatDate(globalData.updatedAt)}\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className=\"flex items-center gap-2 shrink-0\">\n\t\t\t\t\t\t{headerActions}\n\t\t\t\t\t\t<Button type=\"submit\" disabled={isSubmitting} className=\"gap-2\">\n\t\t\t\t\t\t\t{isSubmitting ? (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<Icon icon=\"ph:spinner-gap\" className=\"size-4 animate-spin\" />\n\t\t\t\t\t\t\t\t\t{t(\"common.loading\")}\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<Icon icon=\"ph:check\" width={16} height={16} />\n\t\t\t\t\t\t\t\t\t{t(\"common.save\")}\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t{/* Main Content - Form Fields */}\n\t\t\t\t<AutoFormFields\n\t\t\t\t\tcollection={globalName}\n\t\t\t\t\tmode=\"global\"\n\t\t\t\t\tconfig={resolvedConfig}\n\t\t\t\t\tregistry={registry}\n\t\t\t\t/>\n\t\t\t</form>\n\t\t</FormProvider>\n\t);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCA,SAAS,uBAAuB,QAAkC;AACjE,KAAI,CAAC,QAAQ,OAAQ,QAAO,EAAE;CAE9B,MAAMA,UAA+B,EAAE;AAEvC,MAAK,MAAM,CAAC,WAAW,aAAa,OAAO,QAAQ,OAAO,OAAO,CAChE,KAAK,SAAiB,SACrB,SAAQ,aAAc,SAAiB;AAIzC,QAAO;;;;;AA+ER,SAAwB,eAAe,EACtC,QAAQ,YACR,QACA,YACA,UACA,WAAW,MACX,eACA,WACA,WACuB;CACvB,MAAM,EAAE,MAAM,gBAAgB;CAC9B,MAAM,cAAc,gBAAgB;CAEpC,MAAM,EAAE,MAAM,YAAY,WAAW,gBAAgB,UAAU,WAAW;CAC1E,MAAM,EAAE,QAAQ,iBAAiB,gBAAgB,WAAW;CAE5D,MAAM,EAAE,QAAQ,eAAe,WAAW,qBACzC,iBAAiB;CAElB,MAAM,gBADiB,uBAAuB,EACR,WAAW,EAAE;CAEnD,MAAM,iBAAiB,gBAAgB,YAAY;EAClD,YAAY,SAAS;AACpB,SAAM,QAAQ,EAAE,oBAAoB,CAAC;AACrC,eAAY,KAAK;;EAElB,UAAU,UAAU;AACnB,aAAU,MAAM;;EAEjB,CAAC;CAGF,MAAM,EAAE,aAAa,0BAA0B,WAAW;CAE1D,MAAM,OAAO,QAAQ;EACpB,eAAgB,cAAc,EAAE;EAChC;EACA,CAAC;AAGF,SAAM,gBAAgB;AACrB,MAAI,WACH,MAAK,MAAM,WAAkB;IAE5B,CAAC,MAAM,WAAW,CAAC;CAGtB,MAAM,kBAAkBC,QAAM,cACvB,uBAAuB,aAAa,EAC1C,CAAC,aAAa,CACd;AAGD,mBAAkB;EACjB,YAAY;EACZ,MAAM;EACN;EACA,SAAS,CAAC,eAAe,OAAO,KAAK,gBAAgB,CAAC,SAAS;EAC/D,UAAU;EACV,CAAC;CAEF,MAAM,iBAAiBA,QAAM,cAAc;AAC1C,MAAI,CAAC,WAAY,QAAO;AAExB,SAAO;GACN,GAAI,UAAU,EAAE;GAChB,MAAM;GACN;IACC,CAAC,QAAQ,WAAW,CAAC;CAExB,MAAM,WAAWA,QAAM,YACtB,OAAO,SAAc;AACpB,MAAI;GACH,MAAM,SAAS,MAAM,eAAe,YAAY,EAC/C,MACA,CAAC;AACF,OAAI,OACH,MAAK,MAAM,OAAc;WAElB,OAAO;AAEf,OACC,iBAAiB,uBACjB,MAAM,eACN,MAAM,YAAY,SAAS,GAC1B;AACD,SAAK,MAAM,cAAc,MAAM,YAC9B,MAAK,SAAS,WAAW,MAAa;KACrC,MAAM;KACN,SAAS,WAAW;KACpB,CAAC;AAEH,UAAM,MAAM,EAAE,yBAAyB,EAAE,EACxC,aAAa,EAAE,8BAA8B,EAC7C,CAAC;AACF;;GAID,MAAM,UACL,iBAAiB,QAAQ,MAAM,UAAU,EAAE,gBAAgB;AAC5D,SAAM,MACL,EAAE,2BAA2B,IAAI,2BACjC,EACC,aAAa,SACb,CACD;;IAGH;EAAC;EAAgB;EAAM;EAAE,CACzB;AAGD,SAAM,gBAAgB;EACrB,MAAM,iBAAiB,MAAqB;AAC3C,QAAK,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,KAAK;AAC9C,MAAE,gBAAgB;AAClB,SAAK,aAAa,SAAS,EAAE;;;AAG/B,WAAS,iBAAiB,WAAW,cAAc;AACnD,eAAa,SAAS,oBAAoB,WAAW,cAAc;IACjE,CAAC,MAAM,SAAS,CAAC;CAEpB,MAAM,eAAe,eAAe,aAAa,KAAK,UAAU;CAGhE,MAAM,cAAc,SAAwB;AAC3C,SAAO,IAAI,KAAK,KAAK,CAAC,mBAAmB,QAAW;GACnD,MAAM;GACN,OAAO;GACP,KAAK;GACL,MAAM;GACN,QAAQ;GACR,CAAC;;AAGH,KAAI,YACH,QACC,oBAAC;EAAI,WAAU;YACd,oBAAC;GAAK,MAAK;GAAiB,WAAU;IAAwB;GACzD;CAIR,MAAM,cAAc,YAClB,gBAAwB,SAAS,cAAc,cAChD,WACA;AAED,QACC,oBAAC;EAAa,GAAI;YACjB,qBAAC;GAAK,UAAU,KAAK,aAAa,SAAS;GAAE,WAAU;cAEtD,qBAAC;IAAI,WAAU;eACd,qBAAC;KAAI,WAAU;gBACd,qBAAC;MAAI,WAAU;iBACd,oBAAC;OAAG,WAAU;iBACZ;QACG,EACJ,cAAc,SAAS,KACvB,oBAAC;OACA,SAAS;OACT,OAAO;OACP,UAAU;QACT;OAEE,EACL,YAAY,YAAY,aACxB,qBAAC;MAAE,WAAU;;OACX,EAAE,mBAAmB;OAAC;OAAG,WAAW,WAAW,UAAU;;OACvD;MAEA,EAEN,qBAAC;KAAI,WAAU;gBACb,eACD,oBAAC;MAAO,MAAK;MAAS,UAAU;MAAc,WAAU;gBACtD,eACA,4CACC,oBAAC;OAAK,MAAK;OAAiB,WAAU;QAAwB,EAC7D,EAAE,iBAAiB,IAClB,GAEH,4CACC,oBAAC;OAAK,MAAK;OAAW,OAAO;OAAI,QAAQ;QAAM,EAC9C,EAAE,cAAc,IACf;OAEI;MACJ;KACD,EAGN,oBAAC;IACA,YAAY;IACZ,MAAK;IACL,QAAQ;IACE;KACT;IACI;GACO"}
@@ -0,0 +1,28 @@
1
+ import { AuthLayout, AuthLayoutProps } from "./auth/auth-layout.mjs";
2
+ import { LoginForm, LoginFormProps, LoginFormValues } from "./auth/login-form.mjs";
3
+ import { ForgotPasswordForm, ForgotPasswordFormProps, ForgotPasswordFormValues } from "./auth/forgot-password-form.mjs";
4
+ import { ResetPasswordForm, ResetPasswordFormProps, ResetPasswordFormValues } from "./auth/reset-password-form.mjs";
5
+ import { AcceptInviteForm, AcceptInviteFormProps, AcceptInviteFormValues } from "./auth/accept-invite-form.mjs";
6
+ import { SetupForm, SetupFormProps, SetupFormValues } from "./auth/setup-form.mjs";
7
+ import "./auth/index.mjs";
8
+ import { ArrayCell, JsonCell, ObjectCell } from "./collection/cells/complex-cells.mjs";
9
+ import { BooleanCell, DateCell, DateTimeCell, EmailCell, NumberCell, RichTextCell, SelectCell, TextCell, TimeCell } from "./collection/cells/primitive-cells.mjs";
10
+ import { RelationCell } from "./collection/cells/relation-cells.mjs";
11
+ import { UploadCell } from "./collection/cells/upload-cells.mjs";
12
+ import { FormView, FormViewProps, FormViewRegistryConfig } from "./collection/form-view.mjs";
13
+ import { TableView, TableViewConfig, TableViewProps } from "./collection/table-view.mjs";
14
+ import "./collection/index.mjs";
15
+ import "./common/index.mjs";
16
+ import { AdminSidebarProps, LinkComponentProps } from "./layout/admin-sidebar.mjs";
17
+ import { AdminLayout, AdminLayoutProps } from "./layout/admin-layout.mjs";
18
+ import { AdminLayoutProvider, AdminLayoutProviderProps } from "./layout/admin-layout-provider.mjs";
19
+ import { AdminRouter, AdminRouterProps } from "./layout/admin-router.mjs";
20
+ import "./layout/index.mjs";
21
+ import { DashboardPage, DashboardPageProps } from "./pages/dashboard-page.mjs";
22
+ import { LoginPage, LoginPageProps } from "./pages/login-page.mjs";
23
+ import { ForgotPasswordPage, ForgotPasswordPageProps } from "./pages/forgot-password-page.mjs";
24
+ import { ResetPasswordPage, ResetPasswordPageProps } from "./pages/reset-password-page.mjs";
25
+ import { InvitePage, InvitePageProps } from "./pages/invite-page.mjs";
26
+ import { AcceptInvitePage, AcceptInvitePageProps } from "./pages/accept-invite-page.mjs";
27
+ import { SetupPage, SetupPageProps } from "./pages/setup-page.mjs";
28
+ import "./pages/index.mjs";
@@ -0,0 +1,140 @@
1
+ import { AdminInput } from "../../builder/admin.mjs";
2
+ import { AdminLayoutSharedProps } from "./admin-layout.mjs";
3
+ import { QueryClient } from "@tanstack/react-query";
4
+ import { QuestpieClient } from "questpie/client";
5
+ import * as React$1 from "react";
6
+ import { Questpie } from "questpie";
7
+
8
+ //#region src/client/views/layout/admin-layout-provider.d.ts
9
+
10
+ interface AdminLayoutProviderProps<TApp extends Questpie<any> = Questpie<any>> extends AdminLayoutSharedProps {
11
+ /**
12
+ * Admin configuration - pass your AdminBuilder directly.
13
+ * Can also accept an Admin instance for backward compatibility.
14
+ *
15
+ * @example
16
+ * ```tsx
17
+ * // Recommended: pass builder directly
18
+ * <AdminLayoutProvider admin={admin} ... />
19
+ *
20
+ * // Also works (backward compatible)
21
+ * <AdminLayoutProvider admin={Admin.from(admin)} ... />
22
+ * ```
23
+ */
24
+ admin: AdminInput<any>;
25
+ /**
26
+ * API client for data fetching
27
+ */
28
+ client: QuestpieClient<TApp>;
29
+ /**
30
+ * Auth client for authentication (created via createAdminAuthClient)
31
+ */
32
+ authClient?: any;
33
+ /**
34
+ * Optional QueryClient instance (will create one if not provided)
35
+ */
36
+ queryClient?: QueryClient;
37
+ /**
38
+ * Enable authentication guard for protected routes.
39
+ * When true, checks if user is authenticated before rendering content.
40
+ * @default true if authClient is provided
41
+ */
42
+ enableAuthGuard?: boolean;
43
+ /**
44
+ * Paths that don't require authentication.
45
+ * Use relative paths from basePath (e.g., "/login" for "/admin/login").
46
+ * @default ["/login", "/forgot-password", "/reset-password", "/accept-invite"]
47
+ */
48
+ publicPaths?: string[];
49
+ /**
50
+ * Required role for accessing protected routes.
51
+ * @default "admin"
52
+ */
53
+ requiredRole?: string;
54
+ /**
55
+ * Custom loading component while checking authentication.
56
+ */
57
+ authLoadingFallback?: React$1.ReactNode;
58
+ /**
59
+ * Custom unauthorized component (instead of redirecting to login).
60
+ */
61
+ authUnauthorizedFallback?: React$1.ReactNode;
62
+ /**
63
+ * Use server-side translations (fetched via getAdminTranslations RPC).
64
+ * When true, translations are fetched from the server configured via
65
+ * .adminLocale() and .messages() on QuestpieBuilder.
66
+ *
67
+ * @default false (for backwards compatibility)
68
+ *
69
+ * @example
70
+ * ```tsx
71
+ * // Server configures locales and messages
72
+ * const cms = q()
73
+ * .use(adminModule)
74
+ * .adminLocale({ locales: ["en", "sk"], defaultLocale: "en" })
75
+ * .messages({ sk: { "common.save": "Ulozit" } })
76
+ * .build();
77
+ *
78
+ * // Client fetches from server
79
+ * <AdminLayoutProvider
80
+ * admin={admin}
81
+ * client={client}
82
+ * useServerTranslations
83
+ * >
84
+ * {children}
85
+ * </AdminLayoutProvider>
86
+ * ```
87
+ */
88
+ useServerTranslations?: boolean;
89
+ /**
90
+ * Fallback element to show while loading server translations.
91
+ * Only used when useServerTranslations is true.
92
+ */
93
+ translationsFallback?: React$1.ReactNode;
94
+ /**
95
+ * Initial UI locale (admin interface language)
96
+ * If not provided, reads from cookie or uses default from admin config
97
+ */
98
+ initialUiLocale?: string;
99
+ /**
100
+ * Children to render inside the layout
101
+ * - Next.js: {children} from layout props
102
+ * - TanStack Router: <Outlet />
103
+ */
104
+ children: React$1.ReactNode;
105
+ }
106
+ /**
107
+ * AdminLayoutProvider Component
108
+ *
109
+ * Universal wrapper for admin layout that works with any router.
110
+ * Handles all the provider setup and renders children inside the layout.
111
+ */
112
+ declare function AdminLayoutProvider<TApp extends Questpie<any>>({
113
+ admin: adminInput,
114
+ client,
115
+ authClient,
116
+ queryClient,
117
+ LinkComponent,
118
+ activeRoute,
119
+ basePath,
120
+ header,
121
+ footer,
122
+ sidebarProps,
123
+ theme,
124
+ setTheme,
125
+ showThemeToggle,
126
+ toasterProps,
127
+ className,
128
+ enableAuthGuard,
129
+ publicPaths,
130
+ requiredRole,
131
+ authLoadingFallback,
132
+ authUnauthorizedFallback,
133
+ useServerTranslations,
134
+ translationsFallback,
135
+ initialUiLocale,
136
+ children
137
+ }: AdminLayoutProviderProps<TApp>): React$1.ReactElement;
138
+ //#endregion
139
+ export { AdminLayoutProvider, AdminLayoutProviderProps };
140
+ //# sourceMappingURL=admin-layout-provider.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-layout-provider.d.mts","names":[],"sources":["../../../../src/client/views/layout/admin-layout-provider.tsx"],"sourcesContent":[],"mappings":";;;;;;;;;UAsEiB,sCACF,gBAAgB,uBACrB;;;;;;;;;;;;;;SAcD;;;;UAKC,eAAe;;;;;;;;gBAUT;;;;;;;;;;;;;;;;;;;;;wBA6BQ,OAAA,CAAM;;;;6BAKD,OAAA,CAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAsCV,OAAA,CAAM;;;;;;;;;;;YAanB,OAAA,CAAM;;;;;;;;iBAwEF,iCAAiC;SACxC;;;;;;;;;;;;;;;;;;;;;;;;GA4BN,yBAAyB,QAAQ,OAAA,CAAM"}
@@ -0,0 +1,90 @@
1
+ import { Admin } from "../../builder/admin.mjs";
2
+ import { AdminProvider } from "../../runtime/provider.mjs";
3
+ import { AdminLayout } from "./admin-layout.mjs";
4
+ import { AuthGuard } from "../../components/auth/auth-guard.mjs";
5
+ import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
6
+ import { jsx } from "react/jsx-runtime";
7
+
8
+ //#region src/client/views/layout/admin-layout-provider.tsx
9
+ let cachedQueryClient;
10
+ function getDefaultQueryClient() {
11
+ if (!cachedQueryClient) cachedQueryClient = new QueryClient({ defaultOptions: { queries: { staleTime: 60 * 1e3 } } });
12
+ return cachedQueryClient;
13
+ }
14
+ /**
15
+ * Default public paths that don't require authentication
16
+ * These paths also render WITHOUT the admin layout (no sidebar/header)
17
+ */
18
+ const DEFAULT_PUBLIC_PATHS = [
19
+ "/login",
20
+ "/forgot-password",
21
+ "/reset-password",
22
+ "/accept-invite",
23
+ "/setup"
24
+ ];
25
+ /**
26
+ * Check if current path matches any public path
27
+ */
28
+ function isPublicPath(currentPath, basePath, publicPaths) {
29
+ if (!currentPath) return false;
30
+ const normalizedCurrent = currentPath.replace(/\/+$/, "");
31
+ const normalizedBase = basePath.replace(/\/+$/, "");
32
+ for (const publicPath of publicPaths) {
33
+ const fullPublicPath = `${normalizedBase}${publicPath}`.replace(/\/+$/, "");
34
+ if (normalizedCurrent === fullPublicPath || normalizedCurrent.startsWith(`${fullPublicPath}/`)) return true;
35
+ }
36
+ return false;
37
+ }
38
+ /**
39
+ * AdminLayoutProvider Component
40
+ *
41
+ * Universal wrapper for admin layout that works with any router.
42
+ * Handles all the provider setup and renders children inside the layout.
43
+ */
44
+ function AdminLayoutProvider({ admin: adminInput, client, authClient, queryClient, LinkComponent, activeRoute, basePath = "/admin", header, footer, sidebarProps, theme, setTheme, showThemeToggle, toasterProps, className, enableAuthGuard, publicPaths = DEFAULT_PUBLIC_PATHS, requiredRole = "admin", authLoadingFallback, authUnauthorizedFallback, useServerTranslations, translationsFallback, initialUiLocale, children }) {
45
+ const qc = queryClient ?? getDefaultQueryClient();
46
+ const admin = Admin.normalize(adminInput);
47
+ const shouldUseAuthGuard = enableAuthGuard ?? authClient != null;
48
+ const isCurrentPathPublic = isPublicPath(activeRoute ?? (typeof window !== "undefined" ? window.location.pathname : void 0), basePath, publicPaths);
49
+ let innerContent;
50
+ if (isCurrentPathPublic) innerContent = children;
51
+ else {
52
+ const layoutContent = /* @__PURE__ */ jsx(AdminLayout, {
53
+ LinkComponent,
54
+ activeRoute,
55
+ basePath,
56
+ header,
57
+ footer,
58
+ sidebarProps,
59
+ theme,
60
+ setTheme,
61
+ showThemeToggle,
62
+ toasterProps,
63
+ className,
64
+ children
65
+ });
66
+ innerContent = shouldUseAuthGuard ? /* @__PURE__ */ jsx(AuthGuard, {
67
+ loginPath: `${basePath}/login`,
68
+ requiredRole,
69
+ loadingFallback: authLoadingFallback,
70
+ unauthorizedFallback: authUnauthorizedFallback,
71
+ children: layoutContent
72
+ }) : layoutContent;
73
+ }
74
+ return /* @__PURE__ */ jsx(QueryClientProvider, {
75
+ client: qc,
76
+ children: /* @__PURE__ */ jsx(AdminProvider, {
77
+ admin,
78
+ client,
79
+ authClient,
80
+ useServerTranslations,
81
+ translationsFallback,
82
+ initialUiLocale,
83
+ children: innerContent
84
+ })
85
+ });
86
+ }
87
+
88
+ //#endregion
89
+ export { AdminLayoutProvider };
90
+ //# sourceMappingURL=admin-layout-provider.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-layout-provider.mjs","names":["cachedQueryClient: QueryClient | undefined","QueryClientClass","innerContent: React.ReactNode"],"sources":["../../../../src/client/views/layout/admin-layout-provider.tsx"],"sourcesContent":["/**\n * AdminLayoutProvider Component\n *\n * Universal layout wrapper that works with any router.\n * Provides AdminProvider + AdminLayout and renders children.\n *\n * @example Next.js (App Router)\n * ```tsx\n * // app/admin/layout.tsx\n * export default function AdminLayout({ children }) {\n * return (\n * <AdminLayoutProvider\n * admin={myAdmin}\n * client={cmsClient}\n * authClient={authClient}\n * LinkComponent={Link}\n * >\n * {children}\n * </AdminLayoutProvider>\n * );\n * }\n * ```\n *\n * @example TanStack Router\n * ```tsx\n * // routes/admin.tsx\n * function AdminLayout() {\n * return (\n * <AdminLayoutProvider\n * admin={myAdmin}\n * client={cmsClient}\n * authClient={authClient}\n * LinkComponent={Link}\n * >\n * <Outlet />\n * </AdminLayoutProvider>\n * );\n * }\n * ```\n *\n * @example With Auth Protection\n * ```tsx\n * <AdminLayoutProvider\n * admin={myAdmin}\n * client={cmsClient}\n * authClient={authClient}\n * enableAuthGuard={true}\n * publicPaths={[\"/admin/login\", \"/admin/forgot-password\"]}\n * requiredRole=\"admin\"\n * >\n * {children}\n * </AdminLayoutProvider>\n * ```\n */\n\nimport type { QueryClient } from \"@tanstack/react-query\";\nimport { QueryClientProvider } from \"@tanstack/react-query\";\nimport type { Questpie } from \"questpie\";\nimport type { QuestpieClient } from \"questpie/client\";\nimport type * as React from \"react\";\nimport { Admin, type AdminInput } from \"../../builder/admin\";\nimport type { AdminBuilder } from \"../../builder/admin-builder\";\nimport { AuthGuard } from \"../../components/auth\";\nimport { AdminProvider } from \"../../runtime/provider\";\nimport { AdminLayout, type AdminLayoutSharedProps } from \"./admin-layout\";\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface AdminLayoutProviderProps<\n TApp extends Questpie<any> = Questpie<any>,\n> extends AdminLayoutSharedProps {\n /**\n * Admin configuration - pass your AdminBuilder directly.\n * Can also accept an Admin instance for backward compatibility.\n *\n * @example\n * ```tsx\n * // Recommended: pass builder directly\n * <AdminLayoutProvider admin={admin} ... />\n *\n * // Also works (backward compatible)\n * <AdminLayoutProvider admin={Admin.from(admin)} ... />\n * ```\n */\n admin: AdminInput<any>;\n\n /**\n * API client for data fetching\n */\n client: QuestpieClient<TApp>;\n\n /**\n * Auth client for authentication (created via createAdminAuthClient)\n */\n authClient?: any;\n\n /**\n * Optional QueryClient instance (will create one if not provided)\n */\n queryClient?: QueryClient;\n\n // =========================================================================\n // Auth Guard Options\n // =========================================================================\n\n /**\n * Enable authentication guard for protected routes.\n * When true, checks if user is authenticated before rendering content.\n * @default true if authClient is provided\n */\n enableAuthGuard?: boolean;\n\n /**\n * Paths that don't require authentication.\n * Use relative paths from basePath (e.g., \"/login\" for \"/admin/login\").\n * @default [\"/login\", \"/forgot-password\", \"/reset-password\", \"/accept-invite\"]\n */\n publicPaths?: string[];\n\n /**\n * Required role for accessing protected routes.\n * @default \"admin\"\n */\n requiredRole?: string;\n\n /**\n * Custom loading component while checking authentication.\n */\n authLoadingFallback?: React.ReactNode;\n\n /**\n * Custom unauthorized component (instead of redirecting to login).\n */\n authUnauthorizedFallback?: React.ReactNode;\n\n // =========================================================================\n // i18n Options\n // =========================================================================\n\n /**\n * Use server-side translations (fetched via getAdminTranslations RPC).\n * When true, translations are fetched from the server configured via\n * .adminLocale() and .messages() on QuestpieBuilder.\n *\n * @default false (for backwards compatibility)\n *\n * @example\n * ```tsx\n * // Server configures locales and messages\n * const cms = q()\n * .use(adminModule)\n * .adminLocale({ locales: [\"en\", \"sk\"], defaultLocale: \"en\" })\n * .messages({ sk: { \"common.save\": \"Ulozit\" } })\n * .build();\n *\n * // Client fetches from server\n * <AdminLayoutProvider\n * admin={admin}\n * client={client}\n * useServerTranslations\n * >\n * {children}\n * </AdminLayoutProvider>\n * ```\n */\n useServerTranslations?: boolean;\n\n /**\n * Fallback element to show while loading server translations.\n * Only used when useServerTranslations is true.\n */\n translationsFallback?: React.ReactNode;\n\n /**\n * Initial UI locale (admin interface language)\n * If not provided, reads from cookie or uses default from admin config\n */\n initialUiLocale?: string;\n\n /**\n * Children to render inside the layout\n * - Next.js: {children} from layout props\n * - TanStack Router: <Outlet />\n */\n children: React.ReactNode;\n}\n\n// ============================================================================\n// Component\n// ============================================================================\n\nimport { QueryClient as QueryClientClass } from \"@tanstack/react-query\";\n\nlet cachedQueryClient: QueryClient | undefined;\n\nfunction getDefaultQueryClient(): QueryClient {\n if (!cachedQueryClient) {\n cachedQueryClient = new QueryClientClass({\n defaultOptions: {\n queries: {\n staleTime: 60 * 1000, // 1 minute\n },\n },\n });\n }\n return cachedQueryClient;\n}\n\n/**\n * Default public paths that don't require authentication\n * These paths also render WITHOUT the admin layout (no sidebar/header)\n */\nconst DEFAULT_PUBLIC_PATHS = [\n \"/login\",\n \"/forgot-password\",\n \"/reset-password\",\n \"/accept-invite\",\n \"/setup\",\n];\n\n/**\n * Check if current path matches any public path\n */\nfunction isPublicPath(\n currentPath: string | undefined,\n basePath: string,\n publicPaths: string[],\n): boolean {\n if (!currentPath) return false;\n\n // Normalize paths\n const normalizedCurrent = currentPath.replace(/\\/+$/, \"\");\n const normalizedBase = basePath.replace(/\\/+$/, \"\");\n\n for (const publicPath of publicPaths) {\n // Build full public path\n const fullPublicPath = `${normalizedBase}${publicPath}`.replace(/\\/+$/, \"\");\n\n // Check exact match or starts with (for nested routes)\n if (\n normalizedCurrent === fullPublicPath ||\n normalizedCurrent.startsWith(`${fullPublicPath}/`)\n ) {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * AdminLayoutProvider Component\n *\n * Universal wrapper for admin layout that works with any router.\n * Handles all the provider setup and renders children inside the layout.\n */\nexport function AdminLayoutProvider<TApp extends Questpie<any>>({\n admin: adminInput,\n client,\n authClient,\n queryClient,\n // Shared layout props\n LinkComponent,\n activeRoute,\n basePath = \"/admin\",\n header,\n footer,\n sidebarProps,\n theme,\n setTheme,\n showThemeToggle,\n toasterProps,\n className,\n // Auth guard props\n enableAuthGuard,\n publicPaths = DEFAULT_PUBLIC_PATHS,\n requiredRole = \"admin\",\n authLoadingFallback,\n authUnauthorizedFallback,\n // i18n props\n useServerTranslations,\n translationsFallback,\n initialUiLocale,\n // Children\n children,\n}: AdminLayoutProviderProps<TApp>): React.ReactElement {\n const qc = queryClient ?? getDefaultQueryClient();\n\n // Normalize admin input - accepts both AdminBuilder and Admin instance\n const admin = Admin.normalize(adminInput);\n\n // Determine if auth guard should be enabled\n // Default: enabled if authClient is provided\n const shouldUseAuthGuard = enableAuthGuard ?? authClient != null;\n\n // Check if current route is public\n const currentPath =\n activeRoute ??\n (typeof window !== \"undefined\" ? window.location.pathname : undefined);\n const isCurrentPathPublic = isPublicPath(currentPath, basePath, publicPaths);\n\n // Determine content based on path type:\n // - Public paths (login, setup, etc.): render children directly (no AdminLayout)\n // - Protected paths: render with AdminLayout + optional AuthGuard\n let innerContent: React.ReactNode;\n\n if (isCurrentPathPublic) {\n // Public paths render children directly without admin layout (sidebar/header)\n // Auth pages (login, setup) use their own AuthLayout component\n innerContent = children;\n } else {\n // Protected paths get the full admin layout\n const layoutContent = (\n <AdminLayout\n LinkComponent={LinkComponent}\n activeRoute={activeRoute}\n basePath={basePath}\n header={header}\n footer={footer}\n sidebarProps={sidebarProps}\n theme={theme}\n setTheme={setTheme}\n showThemeToggle={showThemeToggle}\n toasterProps={toasterProps}\n className={className}\n >\n {children}\n </AdminLayout>\n );\n\n // Optionally wrap with auth guard\n innerContent = shouldUseAuthGuard ? (\n <AuthGuard\n loginPath={`${basePath}/login`}\n requiredRole={requiredRole}\n loadingFallback={authLoadingFallback}\n unauthorizedFallback={authUnauthorizedFallback}\n >\n {layoutContent}\n </AuthGuard>\n ) : (\n layoutContent\n );\n }\n\n const content = (\n <AdminProvider\n admin={admin}\n client={client}\n authClient={authClient}\n useServerTranslations={useServerTranslations}\n translationsFallback={translationsFallback}\n initialUiLocale={initialUiLocale}\n >\n {innerContent}\n </AdminProvider>\n );\n\n // Always wrap with QueryClientProvider\n return <QueryClientProvider client={qc}>{content}</QueryClientProvider>;\n}\n\nexport default AdminLayoutProvider;\n"],"mappings":";;;;;;;;AAmMA,IAAIA;AAEJ,SAAS,wBAAqC;AAC5C,KAAI,CAAC,kBACH,qBAAoB,IAAIC,YAAiB,EACvC,gBAAgB,EACd,SAAS,EACP,WAAW,KAAK,KACjB,EACF,EACF,CAAC;AAEJ,QAAO;;;;;;AAOT,MAAM,uBAAuB;CAC3B;CACA;CACA;CACA;CACA;CACD;;;;AAKD,SAAS,aACP,aACA,UACA,aACS;AACT,KAAI,CAAC,YAAa,QAAO;CAGzB,MAAM,oBAAoB,YAAY,QAAQ,QAAQ,GAAG;CACzD,MAAM,iBAAiB,SAAS,QAAQ,QAAQ,GAAG;AAEnD,MAAK,MAAM,cAAc,aAAa;EAEpC,MAAM,iBAAiB,GAAG,iBAAiB,aAAa,QAAQ,QAAQ,GAAG;AAG3E,MACE,sBAAsB,kBACtB,kBAAkB,WAAW,GAAG,eAAe,GAAG,CAElD,QAAO;;AAIX,QAAO;;;;;;;;AAST,SAAgB,oBAAgD,EAC9D,OAAO,YACP,QACA,YACA,aAEA,eACA,aACA,WAAW,UACX,QACA,QACA,cACA,OACA,UACA,iBACA,cACA,WAEA,iBACA,cAAc,sBACd,eAAe,SACf,qBACA,0BAEA,uBACA,sBACA,iBAEA,YACqD;CACrD,MAAM,KAAK,eAAe,uBAAuB;CAGjD,MAAM,QAAQ,MAAM,UAAU,WAAW;CAIzC,MAAM,qBAAqB,mBAAmB,cAAc;CAM5D,MAAM,sBAAsB,aAF1B,gBACC,OAAO,WAAW,cAAc,OAAO,SAAS,WAAW,SACR,UAAU,YAAY;CAK5E,IAAIC;AAEJ,KAAI,oBAGF,gBAAe;MACV;EAEL,MAAM,gBACJ,oBAAC;GACgB;GACF;GACH;GACF;GACA;GACM;GACP;GACG;GACO;GACH;GACH;GAEV;IACW;AAIhB,iBAAe,qBACb,oBAAC;GACC,WAAW,GAAG,SAAS;GACT;GACd,iBAAiB;GACjB,sBAAsB;aAErB;IACS,GAEZ;;AAkBJ,QAAO,oBAAC;EAAoB,QAAQ;YAblC,oBAAC;GACQ;GACC;GACI;GACW;GACD;GACL;aAEhB;IACa;GAIqD"}
@@ -0,0 +1,151 @@
1
+ import { AdminToasterProps } from "../../components/ui/sonner.mjs";
2
+ import { NavigationGroup } from "../../runtime/routes.mjs";
3
+ import { AdminSidebarProps } from "./admin-sidebar.mjs";
4
+ import * as React$1 from "react";
5
+
6
+ //#region src/client/views/layout/admin-layout.d.ts
7
+
8
+ /**
9
+ * Theme mode for the admin interface
10
+ */
11
+ type AdminTheme = "light" | "dark" | "system";
12
+ /**
13
+ * Layout mode for content area width
14
+ * - default: max-w-6xl (forms, settings)
15
+ * - wide: max-w-7xl (tables, cards)
16
+ * - full: 100% with padding (kanban, calendar)
17
+ * - immersive: 100% no padding (puck editor)
18
+ */
19
+ type LayoutMode = "default" | "wide" | "full" | "immersive";
20
+ /**
21
+ * Shared layout props that can be passed through AdminLayoutProvider
22
+ * or directly to AdminLayout.
23
+ */
24
+ interface AdminLayoutSharedProps {
25
+ /**
26
+ * Link component (router-specific)
27
+ */
28
+ LinkComponent: AdminSidebarProps["LinkComponent"];
29
+ /**
30
+ * Current active route
31
+ */
32
+ activeRoute?: string;
33
+ /**
34
+ * Base path for admin routes
35
+ * @default "/admin"
36
+ */
37
+ basePath?: string;
38
+ /**
39
+ * Header content
40
+ */
41
+ header?: React$1.ReactNode;
42
+ /**
43
+ * Footer content
44
+ */
45
+ footer?: React$1.ReactNode;
46
+ /**
47
+ * Additional sidebar props
48
+ */
49
+ sidebarProps?: Partial<Omit<AdminSidebarProps, "navigation" | "LinkComponent">>;
50
+ /**
51
+ * Current theme.
52
+ * Pass from your app's theme context.
53
+ * @default "system"
54
+ */
55
+ theme?: AdminTheme;
56
+ /**
57
+ * Callback to change theme.
58
+ * Connect to your app's theme context setTheme function.
59
+ */
60
+ setTheme?: (theme: AdminTheme) => void;
61
+ /**
62
+ * Show theme toggle button in the topbar
63
+ * @default true (when setTheme is provided)
64
+ */
65
+ showThemeToggle?: boolean;
66
+ /**
67
+ * Additional toaster props
68
+ */
69
+ toasterProps?: Omit<AdminToasterProps, "theme">;
70
+ /**
71
+ * Custom layout className
72
+ */
73
+ className?: string;
74
+ /**
75
+ * Layout mode for content area width
76
+ * @default "default"
77
+ */
78
+ layoutMode?: LayoutMode;
79
+ }
80
+ interface AdminLayoutProps extends AdminLayoutSharedProps {
81
+ /**
82
+ * Navigation groups for sidebar.
83
+ * If not provided, reads from AdminProvider context.
84
+ */
85
+ navigation?: NavigationGroup[];
86
+ /**
87
+ * Brand name for sidebar.
88
+ * If not provided, reads from AdminProvider context.
89
+ */
90
+ brandName?: string;
91
+ /**
92
+ * Whether sidebar is collapsed
93
+ */
94
+ sidebarCollapsed?: boolean;
95
+ /**
96
+ * Main content to render
97
+ */
98
+ children: React$1.ReactNode;
99
+ /**
100
+ * Navigation function (for search/quick actions)
101
+ */
102
+ navigate?: (path: string) => void;
103
+ }
104
+ /**
105
+ * AdminLayout Component
106
+ *
107
+ * When used inside AdminProvider, navigation and brandName are automatically
108
+ * read from context if not provided as props.
109
+ *
110
+ * @example
111
+ * ```tsx
112
+ * // With AdminProvider (automatic)
113
+ * <AdminProvider admin={admin} client={client}>
114
+ * <AdminLayout LinkComponent={Link} activeRoute="/admin/posts">
115
+ * <Outlet />
116
+ * </AdminLayout>
117
+ * </AdminProvider>
118
+ *
119
+ * // Without AdminProvider (manual)
120
+ * <AdminLayout
121
+ * navigation={buildNavigation(admin)}
122
+ * LinkComponent={Link}
123
+ * activeRoute="/admin/posts"
124
+ * brandName="My CMS"
125
+ * >
126
+ * <Outlet />
127
+ * </AdminLayout>
128
+ * ```
129
+ */
130
+ declare function AdminLayout({
131
+ navigation: navigationProp,
132
+ LinkComponent,
133
+ activeRoute,
134
+ basePath,
135
+ brandName: brandNameProp,
136
+ sidebarCollapsed: sidebarCollapsedProp,
137
+ children,
138
+ className,
139
+ sidebarProps,
140
+ header,
141
+ footer,
142
+ navigate: navigateProp,
143
+ theme,
144
+ setTheme,
145
+ showThemeToggle,
146
+ toasterProps,
147
+ layoutMode
148
+ }: AdminLayoutProps): React$1.ReactElement;
149
+ //#endregion
150
+ export { AdminLayout, AdminLayoutProps, AdminLayoutSharedProps };
151
+ //# sourceMappingURL=admin-layout.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-layout.d.mts","names":[],"sources":["../../../../src/client/views/layout/admin-layout.tsx"],"sourcesContent":[],"mappings":";;;;;;;;;;AAuGsB,KAvEV,UAAA,GAuEU,OAAA,GAAA,MAAA,GAAA,QAAA;;;;AActB;;;;AAAgE,KA5EpD,UAAA,GA4EoD,SAAA,GAAA,MAAA,GAAA,MAAA,GAAA,WAAA;AAkGhE;;;;AAIE,UA5Ke,sBAAA,CA4Kf;EACW;;;EAGX,aAAA,EA5Ke,iBA4Kf,CAAA,eAAA,CAAA;EACA;;;EAGU,WAAA,CAAA,EAAA,MAAA;EACV;;;;EAIA,QAAA,CAAA,EAAA,MAAA;EACC;;;WAtKQ,OAAA,CAAM;;;;WAKN,OAAA,CAAM;;;;iBAKA,QACb,KAAK;;;;;;UAQC;;;;;qBAMW;;;;;;;;;iBAWJ,KAAK;;;;;;;;;eAWP;;UAGE,gBAAA,SAAyB;;;;;eAK3B;;;;;;;;;;;;;YAgBH,OAAA,CAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6EF,WAAA;cACF;;;;aAID;oBACO;;;;;;YAMR;;;;;;GAMT,mBAAmB,OAAA,CAAM"}
@@ -0,0 +1,144 @@
1
+ import { cn } from "../../lib/utils.mjs";
2
+ import { useAdminStore } from "../../runtime/provider.mjs";
3
+ import { SidebarInset, SidebarProvider } from "../../components/ui/sidebar.mjs";
4
+ import { Toaster } from "../../components/ui/sonner.mjs";
5
+ import { BreadcrumbProvider, useCurrentBreadcrumbs } from "../../contexts/breadcrumb-context.mjs";
6
+ import { GlobalSearch } from "../common/global-search.mjs";
7
+ import { AdminSidebar } from "./admin-sidebar.mjs";
8
+ import { AdminTopbar } from "./admin-topbar.mjs";
9
+ import * as React$1 from "react";
10
+ import { jsx, jsxs } from "react/jsx-runtime";
11
+
12
+ //#region src/client/views/layout/admin-layout.tsx
13
+ /**
14
+ * AdminLayout Component
15
+ *
16
+ * Complete admin layout with:
17
+ * - Sidebar navigation (using shadcn sidebar primitives)
18
+ * - Main content area
19
+ * - Optional header/footer
20
+ *
21
+ * Automatically reads from AdminProvider context when props are not provided.
22
+ */
23
+ function useLayoutProps(props) {
24
+ const storeNavigation = useAdminStore((s) => s.navigation);
25
+ const storeBrandName = useAdminStore((s) => s.brandName);
26
+ const storeNavigate = useAdminStore((s) => s.navigate);
27
+ return {
28
+ navigation: props.navigation ?? storeNavigation,
29
+ brandName: props.brandName ?? storeBrandName,
30
+ navigate: props.navigate ?? storeNavigate
31
+ };
32
+ }
33
+ /**
34
+ * Topbar wrapper that reads breadcrumbs from context
35
+ */
36
+ function AdminTopbarWithBreadcrumbs(props) {
37
+ const breadcrumbs = useCurrentBreadcrumbs();
38
+ return /* @__PURE__ */ jsx(AdminTopbar, {
39
+ ...props,
40
+ breadcrumbs
41
+ });
42
+ }
43
+ /**
44
+ * AdminLayout Component
45
+ *
46
+ * When used inside AdminProvider, navigation and brandName are automatically
47
+ * read from context if not provided as props.
48
+ *
49
+ * @example
50
+ * ```tsx
51
+ * // With AdminProvider (automatic)
52
+ * <AdminProvider admin={admin} client={client}>
53
+ * <AdminLayout LinkComponent={Link} activeRoute="/admin/posts">
54
+ * <Outlet />
55
+ * </AdminLayout>
56
+ * </AdminProvider>
57
+ *
58
+ * // Without AdminProvider (manual)
59
+ * <AdminLayout
60
+ * navigation={buildNavigation(admin)}
61
+ * LinkComponent={Link}
62
+ * activeRoute="/admin/posts"
63
+ * brandName="My CMS"
64
+ * >
65
+ * <Outlet />
66
+ * </AdminLayout>
67
+ * ```
68
+ */
69
+ function AdminLayout({ navigation: navigationProp, LinkComponent, activeRoute, basePath = "/admin", brandName: brandNameProp, sidebarCollapsed: sidebarCollapsedProp = false, children, className, sidebarProps, header, footer, navigate: navigateProp, theme = "system", setTheme, showThemeToggle, toasterProps, layoutMode = "default" }) {
70
+ const shouldShowHeader = !!header;
71
+ const shouldShowFooter = !!footer;
72
+ const { navigation, brandName, navigate } = useLayoutProps({
73
+ navigation: navigationProp,
74
+ brandName: brandNameProp,
75
+ navigate: navigateProp
76
+ });
77
+ const [isSearchOpen, setIsSearchOpen] = React$1.useState(false);
78
+ React$1.useEffect(() => {
79
+ const down = (e) => {
80
+ if (e.key === "k" && (e.metaKey || e.ctrlKey)) {
81
+ e.preventDefault();
82
+ setIsSearchOpen(true);
83
+ }
84
+ };
85
+ document.addEventListener("keydown", down);
86
+ return () => document.removeEventListener("keydown", down);
87
+ }, []);
88
+ return /* @__PURE__ */ jsx(BreadcrumbProvider, { children: /* @__PURE__ */ jsxs("div", {
89
+ className: cn("min-h-screen bg-background bg-grid-quest", className),
90
+ children: [
91
+ /* @__PURE__ */ jsx(GlobalSearch, {
92
+ isOpen: isSearchOpen,
93
+ onClose: () => setIsSearchOpen(false),
94
+ navigate,
95
+ basePath
96
+ }),
97
+ /* @__PURE__ */ jsxs(SidebarProvider, {
98
+ defaultOpen: !sidebarCollapsedProp,
99
+ className: "mx-auto max-w-[1920px] border-x border-border/40 h-svh overflow-hidden",
100
+ children: [/* @__PURE__ */ jsx(AdminSidebar, {
101
+ navigation: navigationProp,
102
+ LinkComponent,
103
+ activeRoute,
104
+ basePath,
105
+ brandName: brandNameProp,
106
+ ...sidebarProps
107
+ }), /* @__PURE__ */ jsxs(SidebarInset, {
108
+ className: "flex h-svh flex-col",
109
+ children: [
110
+ /* @__PURE__ */ jsx(AdminTopbarWithBreadcrumbs, {
111
+ onSearchOpen: () => setIsSearchOpen(true),
112
+ theme,
113
+ setTheme,
114
+ showThemeToggle
115
+ }),
116
+ shouldShowHeader && header && /* @__PURE__ */ jsx("header", {
117
+ className: "border-b",
118
+ children: header
119
+ }),
120
+ /* @__PURE__ */ jsx("main", {
121
+ className: "flex-1 overflow-y-auto",
122
+ children: /* @__PURE__ */ jsx("div", {
123
+ className: cn("mx-auto", layoutMode === "default" && "max-w-6xl p-5 md:p-8 lg:p-10", layoutMode === "wide" && "max-w-7xl p-5 md:p-8 lg:p-10", layoutMode === "full" && "max-w-full p-4 md:p-6", layoutMode === "immersive" && "max-w-full p-0"),
124
+ children
125
+ })
126
+ }),
127
+ shouldShowFooter && footer && /* @__PURE__ */ jsx("footer", {
128
+ className: "border-t",
129
+ children: footer
130
+ })
131
+ ]
132
+ })]
133
+ }),
134
+ /* @__PURE__ */ jsx(Toaster, {
135
+ theme,
136
+ ...toasterProps
137
+ })
138
+ ]
139
+ }) });
140
+ }
141
+
142
+ //#endregion
143
+ export { AdminLayout };
144
+ //# sourceMappingURL=admin-layout.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-layout.mjs","names":["React"],"sources":["../../../../src/client/views/layout/admin-layout.tsx"],"sourcesContent":["/**\n * AdminLayout Component\n *\n * Complete admin layout with:\n * - Sidebar navigation (using shadcn sidebar primitives)\n * - Main content area\n * - Optional header/footer\n *\n * Automatically reads from AdminProvider context when props are not provided.\n */\n\nimport * as React from \"react\";\nimport { SidebarInset, SidebarProvider } from \"../../components/ui/sidebar\";\nimport { type AdminToasterProps, Toaster } from \"../../components/ui/sonner\";\nimport {\n BreadcrumbProvider,\n useCurrentBreadcrumbs,\n} from \"../../contexts/breadcrumb-context\";\nimport { cn } from \"../../lib/utils\";\nimport { useAdminStore } from \"../../runtime/provider\";\nimport type { NavigationGroup } from \"../../runtime/routes\";\nimport { GlobalSearch } from \"../common\";\nimport { AdminSidebar, type AdminSidebarProps } from \"./admin-sidebar\";\nimport { AdminTopbar } from \"./admin-topbar\";\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/**\n * Theme mode for the admin interface\n */\nexport type AdminTheme = \"light\" | \"dark\" | \"system\";\n\n/**\n * Layout mode for content area width\n * - default: max-w-6xl (forms, settings)\n * - wide: max-w-7xl (tables, cards)\n * - full: 100% with padding (kanban, calendar)\n * - immersive: 100% no padding (puck editor)\n */\nexport type LayoutMode = \"default\" | \"wide\" | \"full\" | \"immersive\";\n\n/**\n * Shared layout props that can be passed through AdminLayoutProvider\n * or directly to AdminLayout.\n */\nexport interface AdminLayoutSharedProps {\n /**\n * Link component (router-specific)\n */\n LinkComponent: AdminSidebarProps[\"LinkComponent\"];\n\n /**\n * Current active route\n */\n activeRoute?: string;\n\n /**\n * Base path for admin routes\n * @default \"/admin\"\n */\n basePath?: string;\n\n /**\n * Header content\n */\n header?: React.ReactNode;\n\n /**\n * Footer content\n */\n footer?: React.ReactNode;\n\n /**\n * Additional sidebar props\n */\n sidebarProps?: Partial<\n Omit<AdminSidebarProps, \"navigation\" | \"LinkComponent\">\n >;\n\n /**\n * Current theme.\n * Pass from your app's theme context.\n * @default \"system\"\n */\n theme?: AdminTheme;\n\n /**\n * Callback to change theme.\n * Connect to your app's theme context setTheme function.\n */\n setTheme?: (theme: AdminTheme) => void;\n\n /**\n * Show theme toggle button in the topbar\n * @default true (when setTheme is provided)\n */\n showThemeToggle?: boolean;\n\n /**\n * Additional toaster props\n */\n toasterProps?: Omit<AdminToasterProps, \"theme\">;\n\n /**\n * Custom layout className\n */\n className?: string;\n\n /**\n * Layout mode for content area width\n * @default \"default\"\n */\n layoutMode?: LayoutMode;\n}\n\nexport interface AdminLayoutProps extends AdminLayoutSharedProps {\n /**\n * Navigation groups for sidebar.\n * If not provided, reads from AdminProvider context.\n */\n navigation?: NavigationGroup[];\n\n /**\n * Brand name for sidebar.\n * If not provided, reads from AdminProvider context.\n */\n brandName?: string;\n\n /**\n * Whether sidebar is collapsed\n */\n sidebarCollapsed?: boolean;\n\n /**\n * Main content to render\n */\n children: React.ReactNode;\n\n /**\n * Navigation function (for search/quick actions)\n */\n navigate?: (path: string) => void;\n}\n\n// ============================================================================\n// Internal Hook - Resolve props from store\n// ============================================================================\n\nfunction useLayoutProps(props: {\n navigation?: NavigationGroup[];\n brandName?: string;\n navigate?: (path: string) => void;\n}): {\n navigation: NavigationGroup[];\n brandName: string;\n navigate: (path: string) => void;\n} {\n // Subscribe to store values reactively (for HMR support)\n const storeNavigation = useAdminStore((s) => s.navigation);\n const storeBrandName = useAdminStore((s) => s.brandName);\n const storeNavigate = useAdminStore((s) => s.navigate);\n\n return {\n navigation: props.navigation ?? storeNavigation,\n brandName: props.brandName ?? storeBrandName,\n navigate: props.navigate ?? storeNavigate,\n };\n}\n\n// ============================================================================\n// Internal Components\n// ============================================================================\n\n/**\n * Topbar wrapper that reads breadcrumbs from context\n */\nfunction AdminTopbarWithBreadcrumbs(\n props: Omit<React.ComponentProps<typeof AdminTopbar>, \"breadcrumbs\">,\n) {\n const breadcrumbs = useCurrentBreadcrumbs();\n return <AdminTopbar {...props} breadcrumbs={breadcrumbs} />;\n}\n\n// ============================================================================\n// Component\n// ============================================================================\n\n/**\n * AdminLayout Component\n *\n * When used inside AdminProvider, navigation and brandName are automatically\n * read from context if not provided as props.\n *\n * @example\n * ```tsx\n * // With AdminProvider (automatic)\n * <AdminProvider admin={admin} client={client}>\n * <AdminLayout LinkComponent={Link} activeRoute=\"/admin/posts\">\n * <Outlet />\n * </AdminLayout>\n * </AdminProvider>\n *\n * // Without AdminProvider (manual)\n * <AdminLayout\n * navigation={buildNavigation(admin)}\n * LinkComponent={Link}\n * activeRoute=\"/admin/posts\"\n * brandName=\"My CMS\"\n * >\n * <Outlet />\n * </AdminLayout>\n * ```\n */\nexport function AdminLayout({\n navigation: navigationProp,\n LinkComponent,\n activeRoute,\n basePath = \"/admin\",\n brandName: brandNameProp,\n sidebarCollapsed: sidebarCollapsedProp = false,\n children,\n className,\n sidebarProps,\n header,\n footer,\n navigate: navigateProp,\n theme = \"system\",\n setTheme,\n showThemeToggle,\n toasterProps,\n layoutMode = \"default\",\n}: AdminLayoutProps): React.ReactElement {\n // Infer show flags from content\n const shouldShowHeader = !!header;\n const shouldShowFooter = !!footer;\n // Resolve navigation and brandName from props or store\n const { navigation, brandName, navigate } = useLayoutProps({\n navigation: navigationProp,\n brandName: brandNameProp,\n navigate: navigateProp,\n });\n\n const [isSearchOpen, setIsSearchOpen] = React.useState(false);\n\n // Keyboard shortcuts for search\n React.useEffect(() => {\n const down = (e: KeyboardEvent) => {\n if (e.key === \"k\" && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n setIsSearchOpen(true);\n }\n };\n document.addEventListener(\"keydown\", down);\n return () => document.removeEventListener(\"keydown\", down);\n }, []);\n\n return (\n <BreadcrumbProvider>\n <div\n className={cn(\"min-h-screen bg-background bg-grid-quest\", className)}\n >\n {/* <div className=\"fixed inset-0 bg-grid-quest pointer-events-none z-10\" /> */}\n <GlobalSearch\n isOpen={isSearchOpen}\n onClose={() => setIsSearchOpen(false)}\n navigate={navigate}\n basePath={basePath}\n />\n\n {/* Max-width container for ultrawide monitors - centered with subtle side borders */}\n <SidebarProvider\n defaultOpen={!sidebarCollapsedProp}\n className=\"mx-auto max-w-[1920px] border-x border-border/40 h-svh overflow-hidden\"\n >\n {/* Sidebar */}\n <AdminSidebar\n navigation={navigationProp}\n LinkComponent={LinkComponent}\n activeRoute={activeRoute}\n basePath={basePath}\n brandName={brandNameProp}\n {...sidebarProps}\n />\n\n {/* Content Area */}\n <SidebarInset className=\"flex h-svh flex-col\">\n <AdminTopbarWithBreadcrumbs\n onSearchOpen={() => setIsSearchOpen(true)}\n theme={theme}\n setTheme={setTheme}\n showThemeToggle={showThemeToggle}\n />\n\n {/* Header (optional) */}\n {shouldShowHeader && header && (\n <header className=\"border-b\">{header}</header>\n )}\n\n <main className=\"flex-1 overflow-y-auto\">\n <div\n className={cn(\n \"mx-auto\",\n layoutMode === \"default\" && \"max-w-6xl p-5 md:p-8 lg:p-10\",\n layoutMode === \"wide\" && \"max-w-7xl p-5 md:p-8 lg:p-10\",\n layoutMode === \"full\" && \"max-w-full p-4 md:p-6\",\n layoutMode === \"immersive\" && \"max-w-full p-0\",\n )}\n >\n {children}\n </div>\n </main>\n\n {/* Footer (optional) */}\n {shouldShowFooter && footer && (\n <footer className=\"border-t\">{footer}</footer>\n )}\n </SidebarInset>\n </SidebarProvider>\n\n {/* Toast notifications */}\n <Toaster theme={theme} {...toasterProps} />\n </div>\n </BreadcrumbProvider>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAsJA,SAAS,eAAe,OAQtB;CAEA,MAAM,kBAAkB,eAAe,MAAM,EAAE,WAAW;CAC1D,MAAM,iBAAiB,eAAe,MAAM,EAAE,UAAU;CACxD,MAAM,gBAAgB,eAAe,MAAM,EAAE,SAAS;AAEtD,QAAO;EACL,YAAY,MAAM,cAAc;EAChC,WAAW,MAAM,aAAa;EAC9B,UAAU,MAAM,YAAY;EAC7B;;;;;AAUH,SAAS,2BACP,OACA;CACA,MAAM,cAAc,uBAAuB;AAC3C,QAAO,oBAAC;EAAY,GAAI;EAAoB;GAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiC7D,SAAgB,YAAY,EAC1B,YAAY,gBACZ,eACA,aACA,WAAW,UACX,WAAW,eACX,kBAAkB,uBAAuB,OACzC,UACA,WACA,cACA,QACA,QACA,UAAU,cACV,QAAQ,UACR,UACA,iBACA,cACA,aAAa,aAC0B;CAEvC,MAAM,mBAAmB,CAAC,CAAC;CAC3B,MAAM,mBAAmB,CAAC,CAAC;CAE3B,MAAM,EAAE,YAAY,WAAW,aAAa,eAAe;EACzD,YAAY;EACZ,WAAW;EACX,UAAU;EACX,CAAC;CAEF,MAAM,CAAC,cAAc,mBAAmBA,QAAM,SAAS,MAAM;AAG7D,SAAM,gBAAgB;EACpB,MAAM,QAAQ,MAAqB;AACjC,OAAI,EAAE,QAAQ,QAAQ,EAAE,WAAW,EAAE,UAAU;AAC7C,MAAE,gBAAgB;AAClB,oBAAgB,KAAK;;;AAGzB,WAAS,iBAAiB,WAAW,KAAK;AAC1C,eAAa,SAAS,oBAAoB,WAAW,KAAK;IACzD,EAAE,CAAC;AAEN,QACE,oBAAC,gCACC,qBAAC;EACC,WAAW,GAAG,4CAA4C,UAAU;;GAGpE,oBAAC;IACC,QAAQ;IACR,eAAe,gBAAgB,MAAM;IAC3B;IACA;KACV;GAGF,qBAAC;IACC,aAAa,CAAC;IACd,WAAU;eAGV,oBAAC;KACC,YAAY;KACG;KACF;KACH;KACV,WAAW;KACX,GAAI;MACJ,EAGF,qBAAC;KAAa,WAAU;;MACtB,oBAAC;OACC,oBAAoB,gBAAgB,KAAK;OAClC;OACG;OACO;QACjB;MAGD,oBAAoB,UACnB,oBAAC;OAAO,WAAU;iBAAY;QAAgB;MAGhD,oBAAC;OAAK,WAAU;iBACd,oBAAC;QACC,WAAW,GACT,WACA,eAAe,aAAa,gCAC5B,eAAe,UAAU,gCACzB,eAAe,UAAU,yBACzB,eAAe,eAAe,iBAC/B;QAEA;SACG;QACD;MAGN,oBAAoB,UACnB,oBAAC;OAAO,WAAU;iBAAY;QAAgB;;MAEnC;KACC;GAGlB,oBAAC;IAAe;IAAO,GAAI;KAAgB;;GACvC,GACa"}
@@ -0,0 +1,7 @@
1
+ import { Admin } from "../../builder/admin.mjs";
2
+ import "./admin-sidebar.mjs";
3
+ import { AdminProvider } from "../../runtime/provider.mjs";
4
+ import { QueryClient } from "@tanstack/react-query";
5
+ import { QuestpieClient } from "questpie/client";
6
+ import "react";
7
+ import { Questpie } from "questpie";