@questpie/admin 1.1.1 → 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-D1DqawtP.d.mts +0 -13403
  937. package/dist/client-D1DqawtP.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-B4H3amCD.d.mts +0 -2753
  950. package/dist/index-B4H3amCD.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,327 @@
1
+ import { useResolveText } from "../../../i18n/hooks.mjs";
2
+ import { cn } from "../../../lib/utils.mjs";
3
+ import { useAdminConfig } from "../../../hooks/use-admin-config.mjs";
4
+ import { Badge } from "../../../components/ui/badge.mjs";
5
+ import { isBlockContent } from "../../../blocks/types.mjs";
6
+ import { Tooltip, TooltipContent, TooltipTrigger } from "../../../components/ui/tooltip.mjs";
7
+ import { formatFieldLabel, formatPrimitiveValue, getFieldLabel, getItemLabel, summarizeValue } from "./shared/cell-helpers.mjs";
8
+ import "react";
9
+ import { jsx, jsxs } from "react/jsx-runtime";
10
+
11
+ //#region src/client/views/collection/cells/complex-cells.tsx
12
+ /**
13
+ * JSON cell - compact JSON display
14
+ */
15
+ function JsonCell({ value }) {
16
+ if (value === null || value === void 0) return /* @__PURE__ */ jsx("span", {
17
+ className: "text-muted-foreground",
18
+ children: "-"
19
+ });
20
+ const json = typeof value === "string" ? value : JSON.stringify(value, null, 0);
21
+ return /* @__PURE__ */ jsx("span", {
22
+ className: "font-mono text-xs text-muted-foreground",
23
+ title: json,
24
+ children: json.length > 50 ? `${json.slice(0, 50)}...` : json
25
+ });
26
+ }
27
+ /**
28
+ * Object cell - displays nested object with hover tooltip preview
29
+ */
30
+ function ObjectCell({ value, fieldDef }) {
31
+ const resolveText = useResolveText();
32
+ if (value === null || value === void 0) return /* @__PURE__ */ jsx("span", {
33
+ className: "text-muted-foreground",
34
+ children: "-"
35
+ });
36
+ if (typeof value !== "object" || Array.isArray(value)) return /* @__PURE__ */ jsx("span", { children: String(value) });
37
+ const obj = value;
38
+ const entries = Object.entries(obj);
39
+ if (entries.length === 0) return /* @__PURE__ */ jsx("span", {
40
+ className: "text-muted-foreground",
41
+ children: "-"
42
+ });
43
+ const nestedFieldsOption = fieldDef?.["~options"]?.fields;
44
+ const nestedFields = typeof nestedFieldsOption === "function" ? void 0 : nestedFieldsOption;
45
+ const previewParts = entries.slice(0, 2).map(([key, val]) => {
46
+ return `${resolveText(getFieldLabel(key, nestedFields?.[key]))}: ${summarizeValue(val)}`;
47
+ });
48
+ const hasMore = entries.length > 2;
49
+ return /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, { children: /* @__PURE__ */ jsxs("span", {
50
+ className: cn("inline-flex items-center gap-1 text-xs", "text-muted-foreground hover:text-foreground", "transition-colors cursor-default max-w-[220px]"),
51
+ children: [/* @__PURE__ */ jsx("span", {
52
+ className: "truncate",
53
+ children: previewParts.join(", ")
54
+ }), hasMore && /* @__PURE__ */ jsxs("span", {
55
+ className: "text-muted-foreground/50 shrink-0",
56
+ children: ["+", entries.length - 2]
57
+ })]
58
+ }) }), /* @__PURE__ */ jsxs(TooltipContent, {
59
+ side: "bottom",
60
+ align: "start",
61
+ className: "w-72 p-0 ",
62
+ children: [/* @__PURE__ */ jsx("div", {
63
+ className: "max-h-[300px] overflow-y-auto p-3 space-y-0.5",
64
+ children: entries.slice(0, 12).map(([key, val]) => {
65
+ const nestedDef = nestedFields?.[key];
66
+ const label = resolveText(getFieldLabel(key, nestedDef));
67
+ if (val && typeof val === "object" && !Array.isArray(val)) {
68
+ const nestedObj = val;
69
+ const nestedEntries = Object.entries(nestedObj).slice(0, 4);
70
+ return /* @__PURE__ */ jsxs("div", {
71
+ className: "py-1",
72
+ children: [/* @__PURE__ */ jsxs("div", {
73
+ className: "flex items-center gap-1.5 text-xs font-medium",
74
+ children: [/* @__PURE__ */ jsx("span", { className: "size-1 rounded-full bg-foreground/60" }), label]
75
+ }), /* @__PURE__ */ jsx("div", {
76
+ className: "ml-2.5 pl-2 border-l border-border/50 mt-0.5 space-y-0.5",
77
+ children: nestedEntries.map(([k, v]) => /* @__PURE__ */ jsxs("div", {
78
+ className: "flex justify-between gap-2 text-[11px]",
79
+ children: [/* @__PURE__ */ jsx("span", {
80
+ className: "text-muted-foreground",
81
+ children: formatFieldLabel(k)
82
+ }), /* @__PURE__ */ jsx("span", {
83
+ className: "truncate max-w-[120px]",
84
+ children: formatPrimitiveValue(v)
85
+ })]
86
+ }, k))
87
+ })]
88
+ }, key);
89
+ }
90
+ if (Array.isArray(val)) return /* @__PURE__ */ jsxs("div", {
91
+ className: "flex items-center justify-between gap-2 text-xs py-0.5",
92
+ children: [/* @__PURE__ */ jsxs("span", {
93
+ className: "flex items-center gap-1.5",
94
+ children: [/* @__PURE__ */ jsx("span", { className: "size-1 rounded-full bg-foreground/60" }), /* @__PURE__ */ jsx("span", {
95
+ className: "text-muted-foreground",
96
+ children: label
97
+ })]
98
+ }), /* @__PURE__ */ jsx(Badge, {
99
+ variant: "secondary",
100
+ className: "h-4 px-1 text-[10px]",
101
+ children: val.length
102
+ })]
103
+ }, key);
104
+ return /* @__PURE__ */ jsxs("div", {
105
+ className: "flex items-center justify-between gap-2 text-xs py-0.5",
106
+ children: [/* @__PURE__ */ jsxs("span", {
107
+ className: "flex items-center gap-1.5",
108
+ children: [/* @__PURE__ */ jsx("span", { className: "size-1 rounded-full bg-foreground/60" }), /* @__PURE__ */ jsx("span", {
109
+ className: "text-muted-foreground",
110
+ children: label
111
+ })]
112
+ }), /* @__PURE__ */ jsx("span", {
113
+ className: "font-medium truncate max-w-[140px]",
114
+ children: formatPrimitiveValue(val)
115
+ })]
116
+ }, key);
117
+ })
118
+ }), entries.length > 12 && /* @__PURE__ */ jsxs("div", {
119
+ className: "text-[11px] text-muted-foreground text-center py-1.5 border-t border-border/50",
120
+ children: [
121
+ "+",
122
+ entries.length - 12,
123
+ " more"
124
+ ]
125
+ })]
126
+ })] });
127
+ }
128
+ /**
129
+ * Array cell - displays array items with hover tooltip preview
130
+ */
131
+ function ArrayCell({ value, fieldDef }) {
132
+ const resolveText = useResolveText();
133
+ if (value === null || value === void 0) return /* @__PURE__ */ jsx("span", {
134
+ className: "text-muted-foreground",
135
+ children: "-"
136
+ });
137
+ if (!Array.isArray(value)) return /* @__PURE__ */ jsx("span", { children: String(value) });
138
+ if (value.length === 0) return /* @__PURE__ */ jsx("span", {
139
+ className: "text-muted-foreground",
140
+ children: "-"
141
+ });
142
+ const fieldOptions = fieldDef?.["~options"] ?? {};
143
+ const itemLabelFn = fieldOptions.itemLabel;
144
+ const itemFieldsOption = fieldOptions.item;
145
+ const itemFields = typeof itemFieldsOption === "function" ? void 0 : itemFieldsOption;
146
+ const previewLabels = value.slice(0, 3).map((item, idx) => getItemLabel(item, idx, itemLabelFn));
147
+ return /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsxs("span", {
148
+ className: cn("inline-flex items-center gap-1.5 text-xs", "text-muted-foreground hover:text-foreground", "transition-colors cursor-default max-w-[180px]"),
149
+ children: [/* @__PURE__ */ jsx(Badge, {
150
+ variant: "secondary",
151
+ className: "h-4 min-w-4 px-1 text-[10px] shrink-0",
152
+ children: value.length
153
+ }), /* @__PURE__ */ jsxs("span", {
154
+ className: "truncate",
155
+ children: [previewLabels[0], value.length > 1 && ` +${value.length - 1}`]
156
+ })]
157
+ }) }), /* @__PURE__ */ jsxs(TooltipContent, {
158
+ side: "bottom",
159
+ align: "start",
160
+ className: "p-0 w-64 max-w-[90vw] bg-popover/95 backdrop-blur-xl border-border",
161
+ children: [/* @__PURE__ */ jsx("div", {
162
+ className: "max-h-[280px] overflow-y-auto p-2 space-y-0.5",
163
+ children: value.slice(0, 10).map((item, idx) => {
164
+ const label = getItemLabel(item, idx, itemLabelFn);
165
+ if (typeof item === "object" && item !== null) {
166
+ const obj = item;
167
+ const details = Object.entries(obj).filter(([k]) => ![
168
+ "id",
169
+ "_id",
170
+ "name",
171
+ "title",
172
+ "label",
173
+ "platform",
174
+ "type"
175
+ ].includes(k)).slice(0, 3);
176
+ return /* @__PURE__ */ jsxs("div", {
177
+ className: "py-1",
178
+ children: [/* @__PURE__ */ jsxs("div", {
179
+ className: "flex items-center gap-1.5 text-xs font-medium",
180
+ children: [/* @__PURE__ */ jsx("span", { className: "size-1 rounded-full bg-foreground/60" }), label]
181
+ }), details.length > 0 && /* @__PURE__ */ jsx("div", {
182
+ className: "ml-2.5 pl-2 border-l border-border/50 mt-0.5 space-y-0.5",
183
+ children: details.map(([k, v]) => {
184
+ const itemFieldDef = itemFields?.[k];
185
+ return /* @__PURE__ */ jsxs("div", {
186
+ className: "flex justify-between gap-2 text-[11px]",
187
+ children: [/* @__PURE__ */ jsx("span", {
188
+ className: "text-muted-foreground",
189
+ children: resolveText(getFieldLabel(k, itemFieldDef))
190
+ }), /* @__PURE__ */ jsx("span", {
191
+ className: "truncate max-w-[100px]",
192
+ children: formatPrimitiveValue(v)
193
+ })]
194
+ }, k);
195
+ })
196
+ })]
197
+ }, idx);
198
+ }
199
+ return /* @__PURE__ */ jsxs("div", {
200
+ className: "flex items-center gap-1.5 text-xs py-0.5",
201
+ children: [/* @__PURE__ */ jsx("span", { className: "size-1 rounded-full bg-foreground/60" }), formatPrimitiveValue(item)]
202
+ }, idx);
203
+ })
204
+ }), value.length > 10 && /* @__PURE__ */ jsxs("div", {
205
+ className: "text-[11px] text-muted-foreground text-center py-1.5 border-t border-border/50",
206
+ children: [
207
+ "+",
208
+ value.length - 10,
209
+ " more"
210
+ ]
211
+ })]
212
+ })] });
213
+ }
214
+ function coerceBlockContent(value) {
215
+ if (isBlockContent(value)) return value;
216
+ if (value && typeof value === "object" && "$i18n" in value && isBlockContent(value.$i18n)) return value.$i18n ?? null;
217
+ return null;
218
+ }
219
+ function formatBlockType(type) {
220
+ return type.replace(/[-_]/g, " ").replace(/([a-z])([A-Z])/g, "$1 $2").replace(/\b\w/g, (char) => char.toUpperCase()).trim();
221
+ }
222
+ function getBlockLabel(type, blockDef, resolveText) {
223
+ if (!blockDef) return formatBlockType(type);
224
+ const fallback = blockDef.name || formatBlockType(type);
225
+ return resolveText(blockDef.admin?.label, fallback) || fallback;
226
+ }
227
+ function collectBlockStats(tree) {
228
+ const counts = /* @__PURE__ */ new Map();
229
+ let total = 0;
230
+ const visit = (nodes) => {
231
+ for (const node of nodes) {
232
+ total += 1;
233
+ counts.set(node.type, (counts.get(node.type) ?? 0) + 1);
234
+ if (node.children.length) visit(node.children);
235
+ }
236
+ };
237
+ visit(tree);
238
+ return {
239
+ total,
240
+ counts
241
+ };
242
+ }
243
+ /**
244
+ * Blocks cell - summarizes block tree content with type counts
245
+ */
246
+ function BlocksCell({ value }) {
247
+ const resolveText = useResolveText();
248
+ const { data: adminConfig } = useAdminConfig();
249
+ if (value === null || value === void 0) return /* @__PURE__ */ jsx("span", {
250
+ className: "text-muted-foreground",
251
+ children: "-"
252
+ });
253
+ const content = coerceBlockContent(value);
254
+ if (!content) return /* @__PURE__ */ jsx(JsonCell, { value });
255
+ if (!content._tree.length) return /* @__PURE__ */ jsx("span", {
256
+ className: "text-muted-foreground",
257
+ children: "-"
258
+ });
259
+ const blockDefs = adminConfig?.blocks ?? {};
260
+ const { total, counts } = collectBlockStats(content._tree);
261
+ if (total === 0) return /* @__PURE__ */ jsx("span", {
262
+ className: "text-muted-foreground",
263
+ children: "-"
264
+ });
265
+ const entries = Array.from(counts.entries()).map(([type, count]) => ({
266
+ type,
267
+ count,
268
+ label: getBlockLabel(type, blockDefs?.[type], resolveText)
269
+ }));
270
+ entries.sort((a, b) => {
271
+ if (b.count !== a.count) return b.count - a.count;
272
+ return a.label.localeCompare(b.label);
273
+ });
274
+ const preview = entries.slice(0, 2).map((entry) => entry.count > 1 ? `${entry.label} x${entry.count}` : entry.label);
275
+ const extraTypes = entries.length - preview.length;
276
+ return /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsxs("span", {
277
+ className: cn("inline-flex items-center gap-1.5 text-xs", "text-muted-foreground hover:text-foreground", "transition-colors cursor-default max-w-[220px]"),
278
+ children: [/* @__PURE__ */ jsx(Badge, {
279
+ variant: "secondary",
280
+ className: "h-4 min-w-4 px-1 text-[10px] shrink-0",
281
+ children: total
282
+ }), /* @__PURE__ */ jsxs("span", {
283
+ className: "truncate",
284
+ children: [preview.join(", "), extraTypes > 0 && ` +${extraTypes}`]
285
+ })]
286
+ }) }), /* @__PURE__ */ jsxs(TooltipContent, {
287
+ side: "bottom",
288
+ align: "start",
289
+ className: "p-0 w-64 max-w-[90vw] bg-popover/95 backdrop-blur-xl border-border",
290
+ children: [
291
+ /* @__PURE__ */ jsxs("div", {
292
+ className: "flex items-center justify-between px-2 py-1.5 text-[11px] text-muted-foreground border-b border-border/50",
293
+ children: [/* @__PURE__ */ jsx("span", { children: "Blocks" }), /* @__PURE__ */ jsx(Badge, {
294
+ variant: "secondary",
295
+ className: "h-4 px-1 text-[10px]",
296
+ children: total
297
+ })]
298
+ }),
299
+ /* @__PURE__ */ jsx("div", {
300
+ className: "max-h-[280px] overflow-y-auto p-2 space-y-0.5",
301
+ children: entries.slice(0, 10).map((entry) => /* @__PURE__ */ jsxs("div", {
302
+ className: "flex items-center justify-between gap-2 text-xs py-0.5",
303
+ children: [/* @__PURE__ */ jsx("span", {
304
+ className: "truncate",
305
+ children: entry.label
306
+ }), /* @__PURE__ */ jsx(Badge, {
307
+ variant: "secondary",
308
+ className: "h-4 px-1 text-[10px]",
309
+ children: entry.count
310
+ })]
311
+ }, entry.type))
312
+ }),
313
+ entries.length > 10 && /* @__PURE__ */ jsxs("div", {
314
+ className: "text-[11px] text-muted-foreground text-center py-1.5 border-t border-border/50",
315
+ children: [
316
+ "+",
317
+ entries.length - 10,
318
+ " more"
319
+ ]
320
+ })
321
+ ]
322
+ })] });
323
+ }
324
+
325
+ //#endregion
326
+ export { ArrayCell, BlocksCell, JsonCell, ObjectCell };
327
+ //# sourceMappingURL=complex-cells.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"complex-cells.mjs","names":["entries: BlockTypeStat[]"],"sources":["../../../../../src/client/views/collection/cells/complex-cells.tsx"],"sourcesContent":["/**\n * Complex Cell Components\n *\n * Cells for displaying complex data structures:\n * - JsonCell - simple JSON display\n * - ObjectCell - nested object with hover preview\n * - ArrayCell - array items with hover preview\n * - BlocksCell - block tree summary with tooltip\n */\n\nimport * as React from \"react\";\nimport type { BlockSchema } from \"#questpie/admin/server\";\nimport type { BlockContent, BlockNode } from \"../../../blocks/types\";\nimport { isBlockContent } from \"../../../blocks/types\";\nimport type { FieldDefinition } from \"../../../builder/field/field\";\nimport { Badge } from \"../../../components/ui/badge\";\nimport {\n\tTooltip,\n\tTooltipContent,\n\tTooltipTrigger,\n} from \"../../../components/ui/tooltip\";\nimport { useAdminConfig } from \"../../../hooks/use-admin-config\";\nimport { useResolveText } from \"../../../i18n/hooks\";\nimport { cn } from \"../../../lib/utils\";\nimport { selectAdmin, useAdminStore } from \"../../../runtime\";\nimport {\n\tformatFieldLabel,\n\tformatPrimitiveValue,\n\tgetFieldLabel,\n\tgetItemLabel,\n\tsummarizeValue,\n} from \"./shared/cell-helpers\";\n\n// ============================================================================\n// JSON Cell\n// ============================================================================\n\n/**\n * JSON cell - compact JSON display\n */\nexport function JsonCell({ value }: { value: unknown }) {\n\tif (value === null || value === undefined) {\n\t\treturn <span className=\"text-muted-foreground\">-</span>;\n\t}\n\tconst json =\n\t\ttypeof value === \"string\" ? value : JSON.stringify(value, null, 0);\n\tconst truncated = json.length > 50 ? `${json.slice(0, 50)}...` : json;\n\treturn (\n\t\t<span className=\"font-mono text-xs text-muted-foreground\" title={json}>\n\t\t\t{truncated}\n\t\t</span>\n\t);\n}\n\n// ============================================================================\n// Object Cell\n// ============================================================================\n\n/**\n * Object cell - displays nested object with hover tooltip preview\n */\nexport function ObjectCell({\n\tvalue,\n\tfieldDef,\n}: {\n\tvalue: unknown;\n\trow?: unknown;\n\tfieldDef?: FieldDefinition;\n}) {\n\tconst resolveText = useResolveText();\n\tif (value === null || value === undefined) {\n\t\treturn <span className=\"text-muted-foreground\">-</span>;\n\t}\n\n\tif (typeof value !== \"object\" || Array.isArray(value)) {\n\t\treturn <span>{String(value)}</span>;\n\t}\n\n\tconst obj = value as Record<string, unknown>;\n\tconst entries = Object.entries(obj);\n\n\tif (entries.length === 0) {\n\t\treturn <span className=\"text-muted-foreground\">-</span>;\n\t}\n\n\t// Get nested field definitions for labels\n\tconst nestedFieldsOption = fieldDef?.[\"~options\"]?.fields;\n\tconst nestedFields =\n\t\ttypeof nestedFieldsOption === \"function\" ? undefined : nestedFieldsOption;\n\n\t// Build inline preview: \"Label: value, Label: value +N\"\n\tconst previewParts = entries.slice(0, 2).map(([key, val]) => {\n\t\tconst label = resolveText(getFieldLabel(key, nestedFields?.[key]));\n\t\treturn `${label}: ${summarizeValue(val)}`;\n\t});\n\tconst hasMore = entries.length > 2;\n\n\treturn (\n\t\t<Tooltip>\n\t\t\t<TooltipTrigger>\n\t\t\t\t<span\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"inline-flex items-center gap-1 text-xs\",\n\t\t\t\t\t\t\"text-muted-foreground hover:text-foreground\",\n\t\t\t\t\t\t\"transition-colors cursor-default max-w-[220px]\",\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t<span className=\"truncate\">{previewParts.join(\", \")}</span>\n\t\t\t\t\t{hasMore && (\n\t\t\t\t\t\t<span className=\"text-muted-foreground/50 shrink-0\">\n\t\t\t\t\t\t\t+{entries.length - 2}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t)}\n\t\t\t\t</span>\n\t\t\t</TooltipTrigger>\n\t\t\t<TooltipContent side=\"bottom\" align=\"start\" className={\"w-72 p-0 \"}>\n\t\t\t\t<div className=\"max-h-[300px] overflow-y-auto p-3 space-y-0.5\">\n\t\t\t\t\t{entries.slice(0, 12).map(([key, val]) => {\n\t\t\t\t\t\tconst nestedDef = nestedFields?.[key];\n\t\t\t\t\t\tconst label = resolveText(getFieldLabel(key, nestedDef));\n\n\t\t\t\t\t\t// Nested objects - show with bullet and sub-items\n\t\t\t\t\t\tif (val && typeof val === \"object\" && !Array.isArray(val)) {\n\t\t\t\t\t\t\tconst nestedObj = val as Record<string, unknown>;\n\t\t\t\t\t\t\tconst nestedEntries = Object.entries(nestedObj).slice(0, 4);\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div key={key} className=\"py-1\">\n\t\t\t\t\t\t\t\t\t<div className=\"flex items-center gap-1.5 text-xs font-medium\">\n\t\t\t\t\t\t\t\t\t\t<span className=\"size-1 rounded-full bg-foreground/60\" />\n\t\t\t\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div className=\"ml-2.5 pl-2 border-l border-border/50 mt-0.5 space-y-0.5\">\n\t\t\t\t\t\t\t\t\t\t{nestedEntries.map(([k, v]) => (\n\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\tkey={k}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"flex justify-between gap-2 text-[11px]\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t{formatFieldLabel(k)}\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"truncate max-w-[120px]\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t{formatPrimitiveValue(v)}\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Arrays - bullet with count\n\t\t\t\t\t\tif (Array.isArray(val)) {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\t\tclassName=\"flex items-center justify-between gap-2 text-xs py-0.5\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<span className=\"flex items-center gap-1.5\">\n\t\t\t\t\t\t\t\t\t\t<span className=\"size-1 rounded-full bg-foreground/60\" />\n\t\t\t\t\t\t\t\t\t\t<span className=\"text-muted-foreground\">{label}</span>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t<Badge variant=\"secondary\" className=\"h-4 px-1 text-[10px]\">\n\t\t\t\t\t\t\t\t\t\t{val.length}\n\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Primitives - bullet with value\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\tclassName=\"flex items-center justify-between gap-2 text-xs py-0.5\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<span className=\"flex items-center gap-1.5\">\n\t\t\t\t\t\t\t\t\t<span className=\"size-1 rounded-full bg-foreground/60\" />\n\t\t\t\t\t\t\t\t\t<span className=\"text-muted-foreground\">{label}</span>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<span className=\"font-medium truncate max-w-[140px]\">\n\t\t\t\t\t\t\t\t\t{formatPrimitiveValue(val)}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t\t{entries.length > 12 && (\n\t\t\t\t\t<div className=\"text-[11px] text-muted-foreground text-center py-1.5 border-t border-border/50\">\n\t\t\t\t\t\t+{entries.length - 12} more\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</TooltipContent>\n\t\t</Tooltip>\n\t);\n}\n\n// ============================================================================\n// Array Cell\n// ============================================================================\n\n/**\n * Array cell - displays array items with hover tooltip preview\n */\nexport function ArrayCell({\n\tvalue,\n\tfieldDef,\n}: {\n\tvalue: unknown;\n\trow?: unknown;\n\tfieldDef?: FieldDefinition;\n}) {\n\tconst resolveText = useResolveText();\n\tif (value === null || value === undefined) {\n\t\treturn <span className=\"text-muted-foreground\">-</span>;\n\t}\n\n\tif (!Array.isArray(value)) {\n\t\treturn <span>{String(value)}</span>;\n\t}\n\n\tif (value.length === 0) {\n\t\treturn <span className=\"text-muted-foreground\">-</span>;\n\t}\n\n\tconst fieldOptions = fieldDef?.[\"~options\"] ?? {};\n\tconst itemLabelFn = fieldOptions.itemLabel as\n\t\t| ((item: unknown) => string)\n\t\t| undefined;\n\tconst itemFieldsOption = fieldOptions.item;\n\tconst itemFields =\n\t\ttypeof itemFieldsOption === \"function\" ? undefined : itemFieldsOption;\n\n\t// Get preview labels for first few items\n\tconst previewLabels = value\n\t\t.slice(0, 3)\n\t\t.map((item, idx) => getItemLabel(item, idx, itemLabelFn));\n\n\treturn (\n\t\t<Tooltip>\n\t\t\t<TooltipTrigger\n\t\t\t\trender={\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\"inline-flex items-center gap-1.5 text-xs\",\n\t\t\t\t\t\t\t\"text-muted-foreground hover:text-foreground\",\n\t\t\t\t\t\t\t\"transition-colors cursor-default max-w-[180px]\",\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\tclassName=\"h-4 min-w-4 px-1 text-[10px] shrink-0\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{value.length}\n\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t<span className=\"truncate\">\n\t\t\t\t\t\t\t{previewLabels[0]}\n\t\t\t\t\t\t\t{value.length > 1 && ` +${value.length - 1}`}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</span>\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<TooltipContent\n\t\t\t\tside=\"bottom\"\n\t\t\t\talign=\"start\"\n\t\t\t\tclassName=\"p-0 w-64 max-w-[90vw] bg-popover/95 backdrop-blur-xl border-border\"\n\t\t\t>\n\t\t\t\t<div className=\"max-h-[280px] overflow-y-auto p-2 space-y-0.5\">\n\t\t\t\t\t{value.slice(0, 10).map((item, idx) => {\n\t\t\t\t\t\tconst label = getItemLabel(item, idx, itemLabelFn);\n\n\t\t\t\t\t\tif (typeof item === \"object\" && item !== null) {\n\t\t\t\t\t\t\tconst obj = item as Record<string, unknown>;\n\t\t\t\t\t\t\tconst details = Object.entries(obj)\n\t\t\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t\t\t([k]) =>\n\t\t\t\t\t\t\t\t\t\t![\n\t\t\t\t\t\t\t\t\t\t\t\"id\",\n\t\t\t\t\t\t\t\t\t\t\t\"_id\",\n\t\t\t\t\t\t\t\t\t\t\t\"name\",\n\t\t\t\t\t\t\t\t\t\t\t\"title\",\n\t\t\t\t\t\t\t\t\t\t\t\"label\",\n\t\t\t\t\t\t\t\t\t\t\t\"platform\",\n\t\t\t\t\t\t\t\t\t\t\t\"type\",\n\t\t\t\t\t\t\t\t\t\t].includes(k),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.slice(0, 3);\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t// biome-ignore lint/suspicious/noArrayIndexKey: stable array from backend\n\t\t\t\t\t\t\t\t<div key={idx} className=\"py-1\">\n\t\t\t\t\t\t\t\t\t<div className=\"flex items-center gap-1.5 text-xs font-medium\">\n\t\t\t\t\t\t\t\t\t\t<span className=\"size-1 rounded-full bg-foreground/60\" />\n\t\t\t\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t{details.length > 0 && (\n\t\t\t\t\t\t\t\t\t\t<div className=\"ml-2.5 pl-2 border-l border-border/50 mt-0.5 space-y-0.5\">\n\t\t\t\t\t\t\t\t\t\t\t{details.map(([k, v]) => {\n\t\t\t\t\t\t\t\t\t\t\t\tconst itemFieldDef = itemFields?.[k];\n\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={k}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"flex justify-between gap-2 text-[11px]\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{resolveText(getFieldLabel(k, itemFieldDef))}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"truncate max-w-[100px]\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{formatPrimitiveValue(v)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t// biome-ignore lint/suspicious/noArrayIndexKey: stable array from backend\n\t\t\t\t\t\t\t\tkey={idx}\n\t\t\t\t\t\t\t\tclassName=\"flex items-center gap-1.5 text-xs py-0.5\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<span className=\"size-1 rounded-full bg-foreground/60\" />\n\t\t\t\t\t\t\t\t{formatPrimitiveValue(item)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t\t{value.length > 10 && (\n\t\t\t\t\t<div className=\"text-[11px] text-muted-foreground text-center py-1.5 border-t border-border/50\">\n\t\t\t\t\t\t+{value.length - 10} more\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</TooltipContent>\n\t\t</Tooltip>\n\t);\n}\n\n// ============================================================================\n// Blocks Cell\n// ============================================================================\n\ntype BlockTypeStat = {\n\ttype: string;\n\tlabel: string;\n\tcount: number;\n};\n\nfunction coerceBlockContent(value: unknown): BlockContent | null {\n\tif (isBlockContent(value)) return value;\n\tif (\n\t\tvalue &&\n\t\ttypeof value === \"object\" &&\n\t\t\"$i18n\" in value &&\n\t\tisBlockContent((value as { $i18n?: unknown }).$i18n)\n\t) {\n\t\treturn (value as { $i18n?: BlockContent }).$i18n ?? null;\n\t}\n\treturn null;\n}\n\nfunction formatBlockType(type: string): string {\n\treturn type\n\t\t.replace(/[-_]/g, \" \")\n\t\t.replace(/([a-z])([A-Z])/g, \"$1 $2\")\n\t\t.replace(/\\b\\w/g, (char) => char.toUpperCase())\n\t\t.trim();\n}\n\nfunction getBlockLabel(\n\ttype: string,\n\tblockDef: BlockSchema | undefined,\n\tresolveText: ReturnType<typeof useResolveText>,\n): string {\n\tif (!blockDef) return formatBlockType(type);\n\tconst fallback = blockDef.name || formatBlockType(type);\n\treturn resolveText(blockDef.admin?.label, fallback) || fallback;\n}\n\nfunction collectBlockStats(tree: BlockNode[]): {\n\ttotal: number;\n\tcounts: Map<string, number>;\n} {\n\tconst counts = new Map<string, number>();\n\tlet total = 0;\n\n\tconst visit = (nodes: BlockNode[]) => {\n\t\tfor (const node of nodes) {\n\t\t\ttotal += 1;\n\t\t\tcounts.set(node.type, (counts.get(node.type) ?? 0) + 1);\n\t\t\tif (node.children.length) {\n\t\t\t\tvisit(node.children);\n\t\t\t}\n\t\t}\n\t};\n\n\tvisit(tree);\n\treturn { total, counts };\n}\n\n/**\n * Blocks cell - summarizes block tree content with type counts\n */\nexport function BlocksCell({ value }: { value: unknown }) {\n\tconst resolveText = useResolveText();\n\tconst { data: adminConfig } = useAdminConfig();\n\n\tif (value === null || value === undefined) {\n\t\treturn <span className=\"text-muted-foreground\">-</span>;\n\t}\n\n\tconst content = coerceBlockContent(value);\n\tif (!content) {\n\t\treturn <JsonCell value={value} />;\n\t}\n\n\tif (!content._tree.length) {\n\t\treturn <span className=\"text-muted-foreground\">-</span>;\n\t}\n\n\tconst blockDefs = adminConfig?.blocks ?? {};\n\tconst { total, counts } = collectBlockStats(content._tree);\n\tif (total === 0) {\n\t\treturn <span className=\"text-muted-foreground\">-</span>;\n\t}\n\n\tconst entries: BlockTypeStat[] = Array.from(counts.entries()).map(\n\t\t([type, count]) => ({\n\t\t\ttype,\n\t\t\tcount,\n\t\t\tlabel: getBlockLabel(type, blockDefs?.[type], resolveText),\n\t\t}),\n\t);\n\n\tentries.sort((a, b) => {\n\t\tif (b.count !== a.count) return b.count - a.count;\n\t\treturn a.label.localeCompare(b.label);\n\t});\n\n\tconst preview = entries\n\t\t.slice(0, 2)\n\t\t.map((entry) =>\n\t\t\tentry.count > 1 ? `${entry.label} x${entry.count}` : entry.label,\n\t\t);\n\tconst extraTypes = entries.length - preview.length;\n\n\treturn (\n\t\t<Tooltip>\n\t\t\t<TooltipTrigger\n\t\t\t\trender={\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\"inline-flex items-center gap-1.5 text-xs\",\n\t\t\t\t\t\t\t\"text-muted-foreground hover:text-foreground\",\n\t\t\t\t\t\t\t\"transition-colors cursor-default max-w-[220px]\",\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\tclassName=\"h-4 min-w-4 px-1 text-[10px] shrink-0\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{total}\n\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t<span className=\"truncate\">\n\t\t\t\t\t\t\t{preview.join(\", \")}\n\t\t\t\t\t\t\t{extraTypes > 0 && ` +${extraTypes}`}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</span>\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<TooltipContent\n\t\t\t\tside=\"bottom\"\n\t\t\t\talign=\"start\"\n\t\t\t\tclassName=\"p-0 w-64 max-w-[90vw] bg-popover/95 backdrop-blur-xl border-border\"\n\t\t\t>\n\t\t\t\t<div className=\"flex items-center justify-between px-2 py-1.5 text-[11px] text-muted-foreground border-b border-border/50\">\n\t\t\t\t\t<span>Blocks</span>\n\t\t\t\t\t<Badge variant=\"secondary\" className=\"h-4 px-1 text-[10px]\">\n\t\t\t\t\t\t{total}\n\t\t\t\t\t</Badge>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"max-h-[280px] overflow-y-auto p-2 space-y-0.5\">\n\t\t\t\t\t{entries.slice(0, 10).map((entry) => (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={entry.type}\n\t\t\t\t\t\t\tclassName=\"flex items-center justify-between gap-2 text-xs py-0.5\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span className=\"truncate\">{entry.label}</span>\n\t\t\t\t\t\t\t<Badge variant=\"secondary\" className=\"h-4 px-1 text-[10px]\">\n\t\t\t\t\t\t\t\t{entry.count}\n\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t\t{entries.length > 10 && (\n\t\t\t\t\t<div className=\"text-[11px] text-muted-foreground text-center py-1.5 border-t border-border/50\">\n\t\t\t\t\t\t+{entries.length - 10} more\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</TooltipContent>\n\t\t</Tooltip>\n\t);\n}\n"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { ArrayCell, BlocksCell, JsonCell, ObjectCell } from "./complex-cells.mjs";
2
+ import { BooleanCell, DateCell, DateTimeCell, EmailCell, NumberCell, RichTextCell, SelectCell, TextCell, TimeCell } from "./primitive-cells.mjs";
3
+ import { RelationCell } from "./relation-cells.mjs";
4
+ import "./shared/asset-thumbnail.mjs";
5
+ import "./shared/cell-helpers.mjs";
6
+ import "./shared/relation-chip.mjs";
7
+ import { UploadCell } from "./upload-cells.mjs";
@@ -0,0 +1,76 @@
1
+ import * as react_jsx_runtime187 from "react/jsx-runtime";
2
+
3
+ //#region src/client/views/collection/cells/primitive-cells.d.ts
4
+
5
+ /**
6
+ * Text cell - simple text display with truncation
7
+ */
8
+ declare function TextCell({
9
+ value
10
+ }: {
11
+ value: unknown;
12
+ }): react_jsx_runtime187.JSX.Element;
13
+ declare function RichTextCell({
14
+ value
15
+ }: {
16
+ value: unknown;
17
+ }): react_jsx_runtime187.JSX.Element;
18
+ /**
19
+ * Number cell - right-aligned number display
20
+ */
21
+ declare function NumberCell({
22
+ value
23
+ }: {
24
+ value: unknown;
25
+ }): react_jsx_runtime187.JSX.Element;
26
+ /**
27
+ * Boolean cell - badge display
28
+ */
29
+ declare function BooleanCell({
30
+ value
31
+ }: {
32
+ value: unknown;
33
+ }): react_jsx_runtime187.JSX.Element;
34
+ /**
35
+ * Date cell - formatted date display
36
+ */
37
+ declare function DateCell({
38
+ value
39
+ }: {
40
+ value: unknown;
41
+ }): react_jsx_runtime187.JSX.Element;
42
+ /**
43
+ * DateTime cell - formatted date and time display
44
+ */
45
+ declare function DateTimeCell({
46
+ value
47
+ }: {
48
+ value: unknown;
49
+ }): react_jsx_runtime187.JSX.Element;
50
+ /**
51
+ * Time cell - formatted time display (for time-only values stored as string)
52
+ */
53
+ declare function TimeCell({
54
+ value
55
+ }: {
56
+ value: unknown;
57
+ }): react_jsx_runtime187.JSX.Element;
58
+ /**
59
+ * Email cell - displays email with mailto link styling
60
+ */
61
+ declare function EmailCell({
62
+ value
63
+ }: {
64
+ value: unknown;
65
+ }): react_jsx_runtime187.JSX.Element;
66
+ /**
67
+ * Select/Status cell - badge display
68
+ */
69
+ declare function SelectCell({
70
+ value
71
+ }: {
72
+ value: unknown;
73
+ }): react_jsx_runtime187.JSX.Element;
74
+ //#endregion
75
+ export { BooleanCell, DateCell, DateTimeCell, EmailCell, NumberCell, RichTextCell, SelectCell, TextCell, TimeCell };
76
+ //# sourceMappingURL=primitive-cells.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitive-cells.d.mts","names":[],"sources":["../../../../../src/client/views/collection/cells/primitive-cells.tsx"],"sourcesContent":[],"mappings":";;;;;;;iBAmCgB,QAAA;;;;IAAsC,oBAAA,CAAA,GAAA,CAAA;iBA4CtC,YAAA;;;;IAA0C,oBAAA,CAAA,GAAA,CAAA;;;;iBAmB1C,UAAA;;;;IAAwC,oBAAA,CAAA,GAAA,CAAA;;;;iBAmBxC,WAAA;;;;IAAyC,oBAAA,CAAA,GAAA,CAAA;;;;iBAezC,QAAA;;;;IAAsC,oBAAA,CAAA,GAAA,CAAA;;;;iBActC,YAAA;;;;IAA0C,oBAAA,CAAA,GAAA,CAAA;;;;iBAkB1C,QAAA;;;;IAAsC,oBAAA,CAAA,GAAA,CAAA;;;;iBAetC,SAAA;;;;IAAuC,oBAAA,CAAA,GAAA,CAAA;;;;iBAUvC,UAAA;;;;IAAwC,oBAAA,CAAA,GAAA,CAAA"}
@@ -0,0 +1,165 @@
1
+ import { Badge } from "../../../components/ui/badge.mjs";
2
+ import "react";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+
5
+ //#region src/client/views/collection/cells/primitive-cells.tsx
6
+ /**
7
+ * Ultra-simple default cell renderer
8
+ * Used as fallback when field has no .cell defined
9
+ */
10
+ function DefaultCell({ value }) {
11
+ if (value === null || value === void 0) return /* @__PURE__ */ jsx("span", {
12
+ className: "text-muted-foreground",
13
+ children: "-"
14
+ });
15
+ return /* @__PURE__ */ jsx("span", { children: String(value) });
16
+ }
17
+ /**
18
+ * Text cell - simple text display with truncation
19
+ */
20
+ function TextCell({ value }) {
21
+ if (value === null || value === void 0 || value === "") return /* @__PURE__ */ jsx("span", {
22
+ className: "text-muted-foreground",
23
+ children: "-"
24
+ });
25
+ const text = String(value);
26
+ return /* @__PURE__ */ jsx("span", {
27
+ className: "truncate max-w-[300px] block",
28
+ title: text,
29
+ children: text
30
+ });
31
+ }
32
+ function stripHtmlTags(value) {
33
+ return value.replace(/<[^>]*>/g, " ").replace(/\s+/g, " ").trim();
34
+ }
35
+ function extractTextFromNode(node) {
36
+ if (!node) return "";
37
+ if (Array.isArray(node)) return node.map(extractTextFromNode).filter(Boolean).join(" ");
38
+ if (typeof node.text === "string") return node.text;
39
+ if (Array.isArray(node.content)) return node.content.map(extractTextFromNode).filter(Boolean).join(" ");
40
+ return "";
41
+ }
42
+ function getRichTextPreview(value) {
43
+ if (value === null || value === void 0) return "";
44
+ if (typeof value === "string") return /<\/?[a-z][\s\S]*>/i.test(value) ? stripHtmlTags(value) : value.trim();
45
+ if (typeof value === "object") return extractTextFromNode(value).replace(/\s+/g, " ").trim();
46
+ return String(value);
47
+ }
48
+ function RichTextCell({ value }) {
49
+ const text = getRichTextPreview(value);
50
+ if (!text) return /* @__PURE__ */ jsx("span", {
51
+ className: "text-muted-foreground",
52
+ children: "-"
53
+ });
54
+ return /* @__PURE__ */ jsx("span", {
55
+ className: "truncate max-w-[300px] block",
56
+ title: text,
57
+ children: text
58
+ });
59
+ }
60
+ /**
61
+ * Number cell - right-aligned number display
62
+ */
63
+ function NumberCell({ value }) {
64
+ if (value === null || value === void 0) return /* @__PURE__ */ jsx("span", {
65
+ className: "text-muted-foreground",
66
+ children: "-"
67
+ });
68
+ const num = Number(value);
69
+ return /* @__PURE__ */ jsx("span", {
70
+ className: "tabular-nums",
71
+ children: Number.isNaN(num) ? String(value) : num.toLocaleString()
72
+ });
73
+ }
74
+ /**
75
+ * Boolean cell - badge display
76
+ */
77
+ function BooleanCell({ value }) {
78
+ return /* @__PURE__ */ jsx(Badge, {
79
+ variant: value ? "default" : "secondary",
80
+ children: value ? "Yes" : "No"
81
+ });
82
+ }
83
+ /**
84
+ * Date cell - formatted date display
85
+ */
86
+ function DateCell({ value }) {
87
+ if (value === null || value === void 0) return /* @__PURE__ */ jsx("span", {
88
+ className: "text-muted-foreground",
89
+ children: "-"
90
+ });
91
+ const date = value instanceof Date ? value : new Date(String(value));
92
+ if (Number.isNaN(date.getTime())) return /* @__PURE__ */ jsx("span", {
93
+ className: "text-muted-foreground",
94
+ children: String(value)
95
+ });
96
+ return /* @__PURE__ */ jsx("span", {
97
+ className: "tabular-nums",
98
+ children: date.toLocaleDateString()
99
+ });
100
+ }
101
+ /**
102
+ * DateTime cell - formatted date and time display
103
+ */
104
+ function DateTimeCell({ value }) {
105
+ if (value === null || value === void 0) return /* @__PURE__ */ jsx("span", {
106
+ className: "text-muted-foreground",
107
+ children: "-"
108
+ });
109
+ const date = value instanceof Date ? value : new Date(String(value));
110
+ if (Number.isNaN(date.getTime())) return /* @__PURE__ */ jsx("span", {
111
+ className: "text-muted-foreground",
112
+ children: String(value)
113
+ });
114
+ return /* @__PURE__ */ jsxs("span", {
115
+ className: "tabular-nums",
116
+ children: [
117
+ date.toLocaleDateString(),
118
+ " ",
119
+ date.toLocaleTimeString()
120
+ ]
121
+ });
122
+ }
123
+ /**
124
+ * Time cell - formatted time display (for time-only values stored as string)
125
+ */
126
+ function TimeCell({ value }) {
127
+ if (value === null || value === void 0 || value === "") return /* @__PURE__ */ jsx("span", {
128
+ className: "text-muted-foreground",
129
+ children: "-"
130
+ });
131
+ return /* @__PURE__ */ jsx("span", {
132
+ className: "tabular-nums",
133
+ children: String(value)
134
+ });
135
+ }
136
+ /**
137
+ * Email cell - displays email with mailto link styling
138
+ */
139
+ function EmailCell({ value }) {
140
+ if (value === null || value === void 0 || value === "") return /* @__PURE__ */ jsx("span", {
141
+ className: "text-muted-foreground",
142
+ children: "-"
143
+ });
144
+ return /* @__PURE__ */ jsx("span", {
145
+ className: "text-primary",
146
+ children: String(value)
147
+ });
148
+ }
149
+ /**
150
+ * Select/Status cell - badge display
151
+ */
152
+ function SelectCell({ value }) {
153
+ if (value === null || value === void 0 || value === "") return /* @__PURE__ */ jsx("span", {
154
+ className: "text-muted-foreground",
155
+ children: "-"
156
+ });
157
+ return /* @__PURE__ */ jsx(Badge, {
158
+ variant: "outline",
159
+ children: String(value)
160
+ });
161
+ }
162
+
163
+ //#endregion
164
+ export { BooleanCell, DateCell, DateTimeCell, DefaultCell, EmailCell, NumberCell, RichTextCell, SelectCell, TextCell, TimeCell };
165
+ //# sourceMappingURL=primitive-cells.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitive-cells.mjs","names":[],"sources":["../../../../../src/client/views/collection/cells/primitive-cells.tsx"],"sourcesContent":["/**\n * Primitive Cell Components\n *\n * Simple cell renderers for basic data types:\n * - Text, Number, Boolean\n * - Date, DateTime, Time\n * - Email, Select\n * - DefaultCell (ultra-simple fallback)\n */\n\nimport * as React from \"react\";\nimport { Badge } from \"../../../components/ui/badge\";\n\n// ============================================================================\n// Default Cell (Ultra-Simple Fallback)\n// ============================================================================\n\n/**\n * Ultra-simple default cell renderer\n * Used as fallback when field has no .cell defined\n */\nexport function DefaultCell({ value }: { value: unknown }) {\n if (value === null || value === undefined) {\n return <span className=\"text-muted-foreground\">-</span>;\n }\n return <span>{String(value)}</span>;\n}\n\n// ============================================================================\n// Text Cells\n// ============================================================================\n\n/**\n * Text cell - simple text display with truncation\n */\nexport function TextCell({ value }: { value: unknown }) {\n if (value === null || value === undefined || value === \"\") {\n return <span className=\"text-muted-foreground\">-</span>;\n }\n const text = String(value);\n return (\n <span className=\"truncate max-w-[300px] block\" title={text}>\n {text}\n </span>\n );\n}\n\nfunction stripHtmlTags(value: string): string {\n return value\n .replace(/<[^>]*>/g, \" \")\n .replace(/\\s+/g, \" \")\n .trim();\n}\n\nfunction extractTextFromNode(node: any): string {\n if (!node) return \"\";\n if (Array.isArray(node)) {\n return node.map(extractTextFromNode).filter(Boolean).join(\" \");\n }\n if (typeof node.text === \"string\") return node.text;\n if (Array.isArray(node.content)) {\n return node.content.map(extractTextFromNode).filter(Boolean).join(\" \");\n }\n return \"\";\n}\n\nfunction getRichTextPreview(value: unknown): string {\n if (value === null || value === undefined) return \"\";\n if (typeof value === \"string\") {\n const hasHtml = /<\\/?[a-z][\\s\\S]*>/i.test(value);\n return hasHtml ? stripHtmlTags(value) : value.trim();\n }\n if (typeof value === \"object\") {\n const text = extractTextFromNode(value);\n return text.replace(/\\s+/g, \" \").trim();\n }\n return String(value);\n}\n\nexport function RichTextCell({ value }: { value: unknown }) {\n const text = getRichTextPreview(value);\n if (!text) {\n return <span className=\"text-muted-foreground\">-</span>;\n }\n return (\n <span className=\"truncate max-w-[300px] block\" title={text}>\n {text}\n </span>\n );\n}\n\n// ============================================================================\n// Number Cell\n// ============================================================================\n\n/**\n * Number cell - right-aligned number display\n */\nexport function NumberCell({ value }: { value: unknown }) {\n if (value === null || value === undefined) {\n return <span className=\"text-muted-foreground\">-</span>;\n }\n const num = Number(value);\n return (\n <span className=\"tabular-nums\">\n {Number.isNaN(num) ? String(value) : num.toLocaleString()}\n </span>\n );\n}\n\n// ============================================================================\n// Boolean Cell\n// ============================================================================\n\n/**\n * Boolean cell - badge display\n */\nexport function BooleanCell({ value }: { value: unknown }) {\n return (\n <Badge variant={value ? \"default\" : \"secondary\"}>\n {value ? \"Yes\" : \"No\"}\n </Badge>\n );\n}\n\n// ============================================================================\n// Date/Time Cells\n// ============================================================================\n\n/**\n * Date cell - formatted date display\n */\nexport function DateCell({ value }: { value: unknown }) {\n if (value === null || value === undefined) {\n return <span className=\"text-muted-foreground\">-</span>;\n }\n const date = value instanceof Date ? value : new Date(String(value));\n if (Number.isNaN(date.getTime())) {\n return <span className=\"text-muted-foreground\">{String(value)}</span>;\n }\n return <span className=\"tabular-nums\">{date.toLocaleDateString()}</span>;\n}\n\n/**\n * DateTime cell - formatted date and time display\n */\nexport function DateTimeCell({ value }: { value: unknown }) {\n if (value === null || value === undefined) {\n return <span className=\"text-muted-foreground\">-</span>;\n }\n const date = value instanceof Date ? value : new Date(String(value));\n if (Number.isNaN(date.getTime())) {\n return <span className=\"text-muted-foreground\">{String(value)}</span>;\n }\n return (\n <span className=\"tabular-nums\">\n {date.toLocaleDateString()} {date.toLocaleTimeString()}\n </span>\n );\n}\n\n/**\n * Time cell - formatted time display (for time-only values stored as string)\n */\nexport function TimeCell({ value }: { value: unknown }) {\n if (value === null || value === undefined || value === \"\") {\n return <span className=\"text-muted-foreground\">-</span>;\n }\n // Time values are stored as \"HH:mm\" or \"HH:mm:ss\" strings\n return <span className=\"tabular-nums\">{String(value)}</span>;\n}\n\n// ============================================================================\n// Special Text Cells\n// ============================================================================\n\n/**\n * Email cell - displays email with mailto link styling\n */\nexport function EmailCell({ value }: { value: unknown }) {\n if (value === null || value === undefined || value === \"\") {\n return <span className=\"text-muted-foreground\">-</span>;\n }\n return <span className=\"text-primary\">{String(value)}</span>;\n}\n\n/**\n * Select/Status cell - badge display\n */\nexport function SelectCell({ value }: { value: unknown }) {\n if (value === null || value === undefined || value === \"\") {\n return <span className=\"text-muted-foreground\">-</span>;\n }\n return <Badge variant=\"outline\">{String(value)}</Badge>;\n}\n"],"mappings":"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"}