@nixxie-cms/core 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (658) hide show
  1. package/CHANGELOG.md +3158 -0
  2. package/LICENSE +21 -0
  3. package/README.md +6 -0
  4. package/___internal-do-not-use-will-break-in-patch/admin-ui/id-field-view/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-id-field-view.cjs.d.ts +2 -0
  5. package/___internal-do-not-use-will-break-in-patch/admin-ui/id-field-view/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-id-field-view.cjs.js +244 -0
  6. package/___internal-do-not-use-will-break-in-patch/admin-ui/id-field-view/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-id-field-view.esm.js +235 -0
  7. package/___internal-do-not-use-will-break-in-patch/admin-ui/id-field-view/package.json +4 -0
  8. package/___internal-do-not-use-will-break-in-patch/admin-ui/next-config/package.json +4 -0
  9. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/App/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-App.cjs.d.ts +2 -0
  10. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/App/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-App.cjs.js +59 -0
  11. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/App/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-App.esm.js +55 -0
  12. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/App/package.json +4 -0
  13. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/CreateItemPage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-CreateItemPage.cjs.d.ts +2 -0
  14. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/CreateItemPage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-CreateItemPage.cjs.js +116 -0
  15. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/CreateItemPage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-CreateItemPage.esm.js +112 -0
  16. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/CreateItemPage/package.json +4 -0
  17. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/HomePage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-HomePage.cjs.d.ts +2 -0
  18. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/HomePage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-HomePage.cjs.js +336 -0
  19. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/HomePage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-HomePage.esm.js +332 -0
  20. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/HomePage/package.json +4 -0
  21. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ItemPage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-ItemPage.cjs.d.ts +2 -0
  22. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ItemPage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-ItemPage.cjs.js +463 -0
  23. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ItemPage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-ItemPage.esm.js +455 -0
  24. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ItemPage/package.json +4 -0
  25. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-ListPage.cjs.d.ts +2 -0
  26. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-ListPage.cjs.js +1195 -0
  27. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-ListPage.esm.js +1187 -0
  28. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage/package.json +4 -0
  29. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/NoAccessPage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-NoAccessPage.cjs.d.ts +2 -0
  30. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/NoAccessPage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-NoAccessPage.cjs.js +40 -0
  31. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/NoAccessPage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-NoAccessPage.esm.js +35 -0
  32. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/NoAccessPage/package.json +4 -0
  33. package/___internal-do-not-use-will-break-in-patch/artifacts/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-artifacts.cjs.d.ts +2 -0
  34. package/___internal-do-not-use-will-break-in-patch/artifacts/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-artifacts.cjs.js +51 -0
  35. package/___internal-do-not-use-will-break-in-patch/artifacts/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-artifacts.esm.js +38 -0
  36. package/___internal-do-not-use-will-break-in-patch/artifacts/package.json +4 -0
  37. package/access/dist/nixxie-cms-core-access.cjs.d.ts +2 -0
  38. package/access/dist/nixxie-cms-core-access.cjs.js +26 -0
  39. package/access/dist/nixxie-cms-core-access.esm.js +19 -0
  40. package/access/package.json +4 -0
  41. package/admin-ui/apollo/dist/nixxie-cms-core-admin-ui-apollo.cjs.d.ts +2 -0
  42. package/admin-ui/apollo/dist/nixxie-cms-core-admin-ui-apollo.cjs.js +87 -0
  43. package/admin-ui/apollo/dist/nixxie-cms-core-admin-ui-apollo.esm.js +2 -0
  44. package/admin-ui/apollo/package.json +4 -0
  45. package/admin-ui/components/dist/nixxie-cms-core-admin-ui-components.cjs.d.ts +2 -0
  46. package/admin-ui/components/dist/nixxie-cms-core-admin-ui-components.cjs.js +77 -0
  47. package/admin-ui/components/dist/nixxie-cms-core-admin-ui-components.esm.js +58 -0
  48. package/admin-ui/components/package.json +4 -0
  49. package/admin-ui/context/dist/nixxie-cms-core-admin-ui-context.cjs.d.ts +2 -0
  50. package/admin-ui/context/dist/nixxie-cms-core-admin-ui-context.cjs.js +35 -0
  51. package/admin-ui/context/dist/nixxie-cms-core-admin-ui-context.esm.js +23 -0
  52. package/admin-ui/context/package.json +4 -0
  53. package/admin-ui/image/dist/nixxie-cms-core-admin-ui-image.cjs.d.ts +3 -0
  54. package/admin-ui/image/dist/nixxie-cms-core-admin-ui-image.cjs.js +18 -0
  55. package/admin-ui/image/dist/nixxie-cms-core-admin-ui-image.esm.js +2 -0
  56. package/admin-ui/image/package.json +4 -0
  57. package/admin-ui/router/dist/nixxie-cms-core-admin-ui-router.cjs.d.ts +2 -0
  58. package/admin-ui/router/dist/nixxie-cms-core-admin-ui-router.cjs.js +34 -0
  59. package/admin-ui/router/dist/nixxie-cms-core-admin-ui-router.esm.js +12 -0
  60. package/admin-ui/router/package.json +4 -0
  61. package/admin-ui/utils/dist/nixxie-cms-core-admin-ui-utils.cjs.d.ts +2 -0
  62. package/admin-ui/utils/dist/nixxie-cms-core-admin-ui-utils.cjs.js +45 -0
  63. package/admin-ui/utils/dist/nixxie-cms-core-admin-ui-utils.esm.js +22 -0
  64. package/admin-ui/utils/package.json +4 -0
  65. package/bin/cli.js +3 -0
  66. package/context/dist/nixxie-cms-core-context.cjs.d.ts +2 -0
  67. package/context/dist/nixxie-cms-core-context.cjs.js +31 -0
  68. package/context/dist/nixxie-cms-core-context.esm.js +23 -0
  69. package/context/package.json +4 -0
  70. package/dist/CreateItemDialog-33335548.esm.js +55 -0
  71. package/dist/CreateItemDialog-56cf59b7.cjs.js +57 -0
  72. package/dist/Errors-575adfa3.cjs.js +147 -0
  73. package/dist/Errors-bf24759e.esm.js +143 -0
  74. package/dist/Field-47f85161.esm.js +278 -0
  75. package/dist/Field-ed8d7627.cjs.js +287 -0
  76. package/dist/Fields-956d9a14.esm.js +203 -0
  77. package/dist/Fields-e2c28056.cjs.js +206 -0
  78. package/dist/GraphQLErrorNotice-cd74180d.cjs.js +57 -0
  79. package/dist/GraphQLErrorNotice-d9f0931b.esm.js +55 -0
  80. package/dist/NullableFieldWrapper-6ea48af3.esm.js +71 -0
  81. package/dist/NullableFieldWrapper-daa0a080.cjs.js +74 -0
  82. package/dist/PageContainer-27c27f10.cjs.js +1144 -0
  83. package/dist/PageContainer-7db73317.esm.js +1129 -0
  84. package/dist/actionData-64d4c37a.esm.js +28 -0
  85. package/dist/actionData-7858738d.cjs.js +32 -0
  86. package/dist/admin-meta-14c60fec.esm.js +210 -0
  87. package/dist/admin-meta-18d0c276.cjs.js +217 -0
  88. package/dist/admin-meta-graphql-6f7f5331.esm.js +142 -0
  89. package/dist/admin-meta-graphql-c8f926e9.cjs.js +144 -0
  90. package/dist/common-1a350e11.cjs.js +324 -0
  91. package/dist/common-29fc82e6.esm.js +315 -0
  92. package/dist/context-3132c3ed.esm.js +419 -0
  93. package/dist/context-e7a45152.cjs.js +432 -0
  94. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/id-field-view.d.ts +6 -0
  95. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/id-field-view.d.ts.map +1 -0
  96. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/App/index.d.ts +10 -0
  97. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/App/index.d.ts.map +1 -0
  98. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/CreateItemPage/index.d.ts +6 -0
  99. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/CreateItemPage/index.d.ts.map +1 -0
  100. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/HomePage/index.d.ts +2 -0
  101. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/HomePage/index.d.ts.map +1 -0
  102. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ItemPage/index.d.ts +6 -0
  103. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ItemPage/index.d.ts.map +1 -0
  104. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage/index.d.ts +12 -0
  105. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage/index.d.ts.map +1 -0
  106. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/NoAccessPage/index.d.ts +7 -0
  107. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/NoAccessPage/index.d.ts.map +1 -0
  108. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/artifacts.d.ts +6 -0
  109. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/artifacts.d.ts.map +1 -0
  110. package/dist/declarations/src/access.d.ts +12 -0
  111. package/dist/declarations/src/access.d.ts.map +1 -0
  112. package/dist/declarations/src/admin-ui/apollo.d.ts +8 -0
  113. package/dist/declarations/src/admin-ui/apollo.d.ts.map +1 -0
  114. package/dist/declarations/src/admin-ui/components/CellContainer.d.ts +5 -0
  115. package/dist/declarations/src/admin-ui/components/CellContainer.d.ts.map +1 -0
  116. package/dist/declarations/src/admin-ui/components/CreateItemDialog.d.ts +5 -0
  117. package/dist/declarations/src/admin-ui/components/CreateItemDialog.d.ts.map +1 -0
  118. package/dist/declarations/src/admin-ui/components/Errors.d.ts +28 -0
  119. package/dist/declarations/src/admin-ui/components/Errors.d.ts.map +1 -0
  120. package/dist/declarations/src/admin-ui/components/GraphQLErrorNotice.d.ts +6 -0
  121. package/dist/declarations/src/admin-ui/components/GraphQLErrorNotice.d.ts.map +1 -0
  122. package/dist/declarations/src/admin-ui/components/InlineCode.d.ts +3 -0
  123. package/dist/declarations/src/admin-ui/components/InlineCode.d.ts.map +1 -0
  124. package/dist/declarations/src/admin-ui/components/Logo.d.ts +2 -0
  125. package/dist/declarations/src/admin-ui/components/Logo.d.ts.map +1 -0
  126. package/dist/declarations/src/admin-ui/components/Navigation.d.ts +22 -0
  127. package/dist/declarations/src/admin-ui/components/Navigation.d.ts.map +1 -0
  128. package/dist/declarations/src/admin-ui/components/NullableFieldWrapper.d.ts +33 -0
  129. package/dist/declarations/src/admin-ui/components/NullableFieldWrapper.d.ts.map +1 -0
  130. package/dist/declarations/src/admin-ui/components/PageContainer.d.ts +10 -0
  131. package/dist/declarations/src/admin-ui/components/PageContainer.d.ts.map +1 -0
  132. package/dist/declarations/src/admin-ui/components/index.d.ts +11 -0
  133. package/dist/declarations/src/admin-ui/components/index.d.ts.map +1 -0
  134. package/dist/declarations/src/admin-ui/context.d.ts +50 -0
  135. package/dist/declarations/src/admin-ui/context.d.ts.map +1 -0
  136. package/dist/declarations/src/admin-ui/image.d.ts +3 -0
  137. package/dist/declarations/src/admin-ui/image.d.ts.map +1 -0
  138. package/dist/declarations/src/admin-ui/router.d.ts +15 -0
  139. package/dist/declarations/src/admin-ui/router.d.ts.map +1 -0
  140. package/dist/declarations/src/admin-ui/utils/Fields.d.ts +16 -0
  141. package/dist/declarations/src/admin-ui/utils/Fields.d.ts.map +1 -0
  142. package/dist/declarations/src/admin-ui/utils/filters.d.ts +10 -0
  143. package/dist/declarations/src/admin-ui/utils/filters.d.ts.map +1 -0
  144. package/dist/declarations/src/admin-ui/utils/index.d.ts +8 -0
  145. package/dist/declarations/src/admin-ui/utils/index.d.ts.map +1 -0
  146. package/dist/declarations/src/admin-ui/utils/useCreateItem.d.ts +24 -0
  147. package/dist/declarations/src/admin-ui/utils/useCreateItem.d.ts.map +1 -0
  148. package/dist/declarations/src/admin-ui/utils/utils.d.ts +8 -0
  149. package/dist/declarations/src/admin-ui/utils/utils.d.ts.map +1 -0
  150. package/dist/declarations/src/artifacts.d.ts +14 -0
  151. package/dist/declarations/src/artifacts.d.ts.map +1 -0
  152. package/dist/declarations/src/context.d.ts +2 -0
  153. package/dist/declarations/src/context.d.ts.map +1 -0
  154. package/dist/declarations/src/fields/filters/enum-filter.d.ts +27 -0
  155. package/dist/declarations/src/fields/filters/enum-filter.d.ts.map +1 -0
  156. package/dist/declarations/src/fields/filters/index.d.ts +2 -0
  157. package/dist/declarations/src/fields/filters/index.d.ts.map +1 -0
  158. package/dist/declarations/src/fields/filters/internal.d.ts +21 -0
  159. package/dist/declarations/src/fields/filters/internal.d.ts.map +1 -0
  160. package/dist/declarations/src/fields/filters/providers/mysql.d.ts +182 -0
  161. package/dist/declarations/src/fields/filters/providers/mysql.d.ts.map +1 -0
  162. package/dist/declarations/src/fields/filters/providers/postgresql.d.ts +182 -0
  163. package/dist/declarations/src/fields/filters/providers/postgresql.d.ts.map +1 -0
  164. package/dist/declarations/src/fields/filters/providers/sqlite.d.ts +179 -0
  165. package/dist/declarations/src/fields/filters/providers/sqlite.d.ts.map +1 -0
  166. package/dist/declarations/src/fields/index.d.ts +35 -0
  167. package/dist/declarations/src/fields/index.d.ts.map +1 -0
  168. package/dist/declarations/src/fields/types/bigInt/index.d.ts +20 -0
  169. package/dist/declarations/src/fields/types/bigInt/index.d.ts.map +1 -0
  170. package/dist/declarations/src/fields/types/bigInt/views/index.d.ts +24 -0
  171. package/dist/declarations/src/fields/types/bigInt/views/index.d.ts.map +1 -0
  172. package/dist/declarations/src/fields/types/bytes/index.d.ts +70 -0
  173. package/dist/declarations/src/fields/types/bytes/index.d.ts.map +1 -0
  174. package/dist/declarations/src/fields/types/bytes/views/index.d.ts +24 -0
  175. package/dist/declarations/src/fields/types/bytes/views/index.d.ts.map +1 -0
  176. package/dist/declarations/src/fields/types/calendarDay/index.d.ts +15 -0
  177. package/dist/declarations/src/fields/types/calendarDay/index.d.ts.map +1 -0
  178. package/dist/declarations/src/fields/types/calendarDay/views/index.d.ts +18 -0
  179. package/dist/declarations/src/fields/types/calendarDay/views/index.d.ts.map +1 -0
  180. package/dist/declarations/src/fields/types/checkbox/index.d.ts +11 -0
  181. package/dist/declarations/src/fields/types/checkbox/index.d.ts.map +1 -0
  182. package/dist/declarations/src/fields/types/checkbox/views/index.d.ts +9 -0
  183. package/dist/declarations/src/fields/types/checkbox/views/index.d.ts.map +1 -0
  184. package/dist/declarations/src/fields/types/decimal/index.d.ts +20 -0
  185. package/dist/declarations/src/fields/types/decimal/index.d.ts.map +1 -0
  186. package/dist/declarations/src/fields/types/decimal/views/index.d.ts +22 -0
  187. package/dist/declarations/src/fields/types/decimal/views/index.d.ts.map +1 -0
  188. package/dist/declarations/src/fields/types/file/index.d.ts +34 -0
  189. package/dist/declarations/src/fields/types/file/index.d.ts.map +1 -0
  190. package/dist/declarations/src/fields/types/file/views/Field.d.ts +17 -0
  191. package/dist/declarations/src/fields/types/file/views/Field.d.ts.map +1 -0
  192. package/dist/declarations/src/fields/types/file/views/index.d.ts +29 -0
  193. package/dist/declarations/src/fields/types/file/views/index.d.ts.map +1 -0
  194. package/dist/declarations/src/fields/types/float/index.d.ts +18 -0
  195. package/dist/declarations/src/fields/types/float/index.d.ts.map +1 -0
  196. package/dist/declarations/src/fields/types/float/views/index.d.ts +22 -0
  197. package/dist/declarations/src/fields/types/float/views/index.d.ts.map +1 -0
  198. package/dist/declarations/src/fields/types/image/index.d.ts +34 -0
  199. package/dist/declarations/src/fields/types/image/index.d.ts.map +1 -0
  200. package/dist/declarations/src/fields/types/image/utils.d.ts +2 -0
  201. package/dist/declarations/src/fields/types/image/utils.d.ts.map +1 -0
  202. package/dist/declarations/src/fields/types/image/views/Field.d.ts +4 -0
  203. package/dist/declarations/src/fields/types/image/views/Field.d.ts.map +1 -0
  204. package/dist/declarations/src/fields/types/image/views/index.d.ts +49 -0
  205. package/dist/declarations/src/fields/types/image/views/index.d.ts.map +1 -0
  206. package/dist/declarations/src/fields/types/integer/index.d.ts +20 -0
  207. package/dist/declarations/src/fields/types/integer/index.d.ts.map +1 -0
  208. package/dist/declarations/src/fields/types/integer/views/index.d.ts +23 -0
  209. package/dist/declarations/src/fields/types/integer/views/index.d.ts.map +1 -0
  210. package/dist/declarations/src/fields/types/json/index.d.ts +25 -0
  211. package/dist/declarations/src/fields/types/json/index.d.ts.map +1 -0
  212. package/dist/declarations/src/fields/types/json/views/index.d.ts +9 -0
  213. package/dist/declarations/src/fields/types/json/views/index.d.ts.map +1 -0
  214. package/dist/declarations/src/fields/types/multiselect/index.d.ts +50 -0
  215. package/dist/declarations/src/fields/types/multiselect/index.d.ts.map +1 -0
  216. package/dist/declarations/src/fields/types/multiselect/views/index.d.ts +26 -0
  217. package/dist/declarations/src/fields/types/multiselect/views/index.d.ts.map +1 -0
  218. package/dist/declarations/src/fields/types/password/index.d.ts +49 -0
  219. package/dist/declarations/src/fields/types/password/index.d.ts.map +1 -0
  220. package/dist/declarations/src/fields/types/password/views/index.d.ts +47 -0
  221. package/dist/declarations/src/fields/types/password/views/index.d.ts.map +1 -0
  222. package/dist/declarations/src/fields/types/relationship/index.d.ts +113 -0
  223. package/dist/declarations/src/fields/types/relationship/index.d.ts.map +1 -0
  224. package/dist/declarations/src/fields/types/relationship/views/ComboboxMany.d.ts +26 -0
  225. package/dist/declarations/src/fields/types/relationship/views/ComboboxMany.d.ts.map +1 -0
  226. package/dist/declarations/src/fields/types/relationship/views/ComboboxSingle.d.ts +24 -0
  227. package/dist/declarations/src/fields/types/relationship/views/ComboboxSingle.d.ts.map +1 -0
  228. package/dist/declarations/src/fields/types/relationship/views/index.d.ts +27 -0
  229. package/dist/declarations/src/fields/types/relationship/views/index.d.ts.map +1 -0
  230. package/dist/declarations/src/fields/types/relationship/views/types.d.ts +39 -0
  231. package/dist/declarations/src/fields/types/relationship/views/types.d.ts.map +1 -0
  232. package/dist/declarations/src/fields/types/select/index.d.ts +42 -0
  233. package/dist/declarations/src/fields/types/select/index.d.ts.map +1 -0
  234. package/dist/declarations/src/fields/types/select/views/index.d.ts +32 -0
  235. package/dist/declarations/src/fields/types/select/views/index.d.ts.map +1 -0
  236. package/dist/declarations/src/fields/types/text/index.d.ts +58 -0
  237. package/dist/declarations/src/fields/types/text/index.d.ts.map +1 -0
  238. package/dist/declarations/src/fields/types/text/views/index.d.ts +36 -0
  239. package/dist/declarations/src/fields/types/text/views/index.d.ts.map +1 -0
  240. package/dist/declarations/src/fields/types/timestamp/index.d.ts +19 -0
  241. package/dist/declarations/src/fields/types/timestamp/index.d.ts.map +1 -0
  242. package/dist/declarations/src/fields/types/timestamp/views/index.d.ts +14 -0
  243. package/dist/declarations/src/fields/types/timestamp/views/index.d.ts.map +1 -0
  244. package/dist/declarations/src/fields/types/timestamp/views/utils.d.ts +14 -0
  245. package/dist/declarations/src/fields/types/timestamp/views/utils.d.ts.map +1 -0
  246. package/dist/declarations/src/fields/types/virtual/index.d.ts +40 -0
  247. package/dist/declarations/src/fields/types/virtual/index.d.ts.map +1 -0
  248. package/dist/declarations/src/fields/types/virtual/views/index.d.ts +7 -0
  249. package/dist/declarations/src/fields/types/virtual/views/index.d.ts.map +1 -0
  250. package/dist/declarations/src/graphql-ts.d.ts +5 -0
  251. package/dist/declarations/src/graphql-ts.d.ts.map +1 -0
  252. package/dist/declarations/src/helpers.d.ts +121 -0
  253. package/dist/declarations/src/helpers.d.ts.map +1 -0
  254. package/dist/declarations/src/index.d.ts +6 -0
  255. package/dist/declarations/src/index.d.ts.map +1 -0
  256. package/dist/declarations/src/lib/admin-meta.d.ts +71 -0
  257. package/dist/declarations/src/lib/admin-meta.d.ts.map +1 -0
  258. package/dist/declarations/src/lib/core/access-control.d.ts +39 -0
  259. package/dist/declarations/src/lib/core/access-control.d.ts.map +1 -0
  260. package/dist/declarations/src/lib/core/initialise-lists.d.ts +131 -0
  261. package/dist/declarations/src/lib/core/initialise-lists.d.ts.map +1 -0
  262. package/dist/declarations/src/lib/core/resolve-relationships.d.ts +30 -0
  263. package/dist/declarations/src/lib/core/resolve-relationships.d.ts.map +1 -0
  264. package/dist/declarations/src/lib/core/where-inputs.d.ts +15 -0
  265. package/dist/declarations/src/lib/core/where-inputs.d.ts.map +1 -0
  266. package/dist/declarations/src/lib/express.d.ts +10 -0
  267. package/dist/declarations/src/lib/express.d.ts.map +1 -0
  268. package/dist/declarations/src/lib/migrations.d.ts +13 -0
  269. package/dist/declarations/src/lib/migrations.d.ts.map +1 -0
  270. package/dist/declarations/src/lib/system.d.ts +35 -0
  271. package/dist/declarations/src/lib/system.d.ts.map +1 -0
  272. package/dist/declarations/src/schema.d.ts +40 -0
  273. package/dist/declarations/src/schema.d.ts.map +1 -0
  274. package/dist/declarations/src/scripts/cli.d.ts +11 -0
  275. package/dist/declarations/src/scripts/cli.d.ts.map +1 -0
  276. package/dist/declarations/src/scripts/index.d.ts +2 -0
  277. package/dist/declarations/src/scripts/index.d.ts.map +1 -0
  278. package/dist/declarations/src/scripts/utils.d.ts +7 -0
  279. package/dist/declarations/src/scripts/utils.d.ts.map +1 -0
  280. package/dist/declarations/src/session.d.ts +86 -0
  281. package/dist/declarations/src/session.d.ts.map +1 -0
  282. package/dist/declarations/src/testing.d.ts +2 -0
  283. package/dist/declarations/src/testing.d.ts.map +1 -0
  284. package/dist/declarations/src/types/admin-meta.d.ts +190 -0
  285. package/dist/declarations/src/types/admin-meta.d.ts.map +1 -0
  286. package/dist/declarations/src/types/config/access-control.d.ts +108 -0
  287. package/dist/declarations/src/types/config/access-control.d.ts.map +1 -0
  288. package/dist/declarations/src/types/config/fields.d.ts +67 -0
  289. package/dist/declarations/src/types/config/fields.d.ts.map +1 -0
  290. package/dist/declarations/src/types/config/hooks.d.ts +441 -0
  291. package/dist/declarations/src/types/config/hooks.d.ts.map +1 -0
  292. package/dist/declarations/src/types/config/index.d.ts +283 -0
  293. package/dist/declarations/src/types/config/index.d.ts.map +1 -0
  294. package/dist/declarations/src/types/config/lists.d.ts +430 -0
  295. package/dist/declarations/src/types/config/lists.d.ts.map +1 -0
  296. package/dist/declarations/src/types/context.d.ts +458 -0
  297. package/dist/declarations/src/types/context.d.ts.map +1 -0
  298. package/dist/declarations/src/types/core.d.ts +9 -0
  299. package/dist/declarations/src/types/core.d.ts.map +1 -0
  300. package/dist/declarations/src/types/index.d.ts +9 -0
  301. package/dist/declarations/src/types/index.d.ts.map +1 -0
  302. package/dist/declarations/src/types/next-fields.d.ts +308 -0
  303. package/dist/declarations/src/types/next-fields.d.ts.map +1 -0
  304. package/dist/declarations/src/types/prisma.d.ts +13 -0
  305. package/dist/declarations/src/types/prisma.d.ts.map +1 -0
  306. package/dist/declarations/src/types/schema/g.d.ts +7 -0
  307. package/dist/declarations/src/types/schema/g.d.ts.map +1 -0
  308. package/dist/declarations/src/types/schema/gWithContext.d.ts +12 -0
  309. package/dist/declarations/src/types/schema/gWithContext.d.ts.map +1 -0
  310. package/dist/declarations/src/types/schema/index.d.ts +4 -0
  311. package/dist/declarations/src/types/schema/index.d.ts.map +1 -0
  312. package/dist/declarations/src/types/schema/legacy-alias.d.ts +28 -0
  313. package/dist/declarations/src/types/schema/scalars.d.ts +22 -0
  314. package/dist/declarations/src/types/schema/scalars.d.ts.map +1 -0
  315. package/dist/declarations/src/types/session.d.ts +28 -0
  316. package/dist/declarations/src/types/session.d.ts.map +1 -0
  317. package/dist/declarations/src/types/type-info.d.ts +35 -0
  318. package/dist/declarations/src/types/type-info.d.ts.map +1 -0
  319. package/dist/declarations/src/types/utils.d.ts +78 -0
  320. package/dist/declarations/src/types/utils.d.ts.map +1 -0
  321. package/dist/declarations/types/dist/nixxie-cms-core-types.cjs.d.ts +2 -0
  322. package/dist/express-6743b918.esm.js +476 -0
  323. package/dist/express-e9ed9a7d.cjs.js +495 -0
  324. package/dist/filters-8c8616f9.esm.js +89 -0
  325. package/dist/filters-b3e5eb50.cjs.js +96 -0
  326. package/dist/index-24b78415.esm.js +419 -0
  327. package/dist/index-ac01583b.cjs.js +425 -0
  328. package/dist/migrations-996e66a0.esm.js +76 -0
  329. package/dist/migrations-ab2e0fd4.cjs.js +78 -0
  330. package/dist/next-fields-49c025ef.cjs.js +251 -0
  331. package/dist/next-fields-9bf04ed8.esm.js +241 -0
  332. package/dist/nixxie-cms-core.cjs.d.ts +2 -0
  333. package/dist/nixxie-cms-core.cjs.js +522 -0
  334. package/dist/nixxie-cms-core.esm.js +504 -0
  335. package/dist/non-null-graphql-17b83ddc.cjs.js +72 -0
  336. package/dist/non-null-graphql-5315718c.esm.js +67 -0
  337. package/dist/pick-5fe45878.cjs.js +71 -0
  338. package/dist/pick-b7ef3115.esm.js +68 -0
  339. package/dist/resolve-hooks-17aafd37.esm.js +2026 -0
  340. package/dist/resolve-hooks-66fe8a8e.cjs.js +2043 -0
  341. package/dist/system-48c5f6df.cjs.js +4283 -0
  342. package/dist/system-dfec2f0a.esm.js +4273 -0
  343. package/dist/useCreateItem-1be4987e.cjs.js +160 -0
  344. package/dist/useCreateItem-1f94d252.esm.js +157 -0
  345. package/dist/useFilter-0b5a1ee6.esm.js +118 -0
  346. package/dist/useFilter-1a4e6900.cjs.js +120 -0
  347. package/dist/utils-0cc426c8.esm.js +19 -0
  348. package/dist/utils-1b632a8f.cjs.js +21 -0
  349. package/dist/utils-230cddb1.cjs.js +150 -0
  350. package/dist/utils-5e1d4d28.esm.js +138 -0
  351. package/dist/utils-b031e11c.cjs.js +49 -0
  352. package/dist/utils-e74e3527.cjs.js +87 -0
  353. package/dist/utils-ef2cd0f4.esm.js +80 -0
  354. package/dist/utils-f9556354.esm.js +41 -0
  355. package/fields/dist/nixxie-cms-core-fields.cjs.d.ts +2 -0
  356. package/fields/dist/nixxie-cms-core-fields.cjs.js +1808 -0
  357. package/fields/dist/nixxie-cms-core-fields.esm.js +1785 -0
  358. package/fields/package.json +4 -0
  359. package/fields/types/bigInt/views/dist/nixxie-cms-core-fields-types-bigInt-views.cjs.d.ts +2 -0
  360. package/fields/types/bigInt/views/dist/nixxie-cms-core-fields-types-bigInt-views.cjs.js +258 -0
  361. package/fields/types/bigInt/views/dist/nixxie-cms-core-fields-types-bigInt-views.esm.js +253 -0
  362. package/fields/types/bigInt/views/package.json +4 -0
  363. package/fields/types/bytes/dist/nixxie-cms-core-fields-types-bytes.cjs.d.ts +2 -0
  364. package/fields/types/bytes/dist/nixxie-cms-core-fields-types-bytes.cjs.js +221 -0
  365. package/fields/types/bytes/dist/nixxie-cms-core-fields-types-bytes.esm.js +216 -0
  366. package/fields/types/bytes/package.json +4 -0
  367. package/fields/types/bytes/views/dist/nixxie-cms-core-fields-types-bytes-views.cjs.d.ts +2 -0
  368. package/fields/types/bytes/views/dist/nixxie-cms-core-fields-types-bytes-views.cjs.js +239 -0
  369. package/fields/types/bytes/views/dist/nixxie-cms-core-fields-types-bytes-views.esm.js +234 -0
  370. package/fields/types/bytes/views/package.json +4 -0
  371. package/fields/types/calendarDay/views/dist/nixxie-cms-core-fields-types-calendarDay-views.cjs.d.ts +2 -0
  372. package/fields/types/calendarDay/views/dist/nixxie-cms-core-fields-types-calendarDay-views.cjs.js +147 -0
  373. package/fields/types/calendarDay/views/dist/nixxie-cms-core-fields-types-calendarDay-views.esm.js +141 -0
  374. package/fields/types/calendarDay/views/package.json +4 -0
  375. package/fields/types/checkbox/views/dist/nixxie-cms-core-fields-types-checkbox-views.cjs.d.ts +2 -0
  376. package/fields/types/checkbox/views/dist/nixxie-cms-core-fields-types-checkbox-views.cjs.js +126 -0
  377. package/fields/types/checkbox/views/dist/nixxie-cms-core-fields-types-checkbox-views.esm.js +120 -0
  378. package/fields/types/checkbox/views/package.json +4 -0
  379. package/fields/types/decimal/views/dist/nixxie-cms-core-fields-types-decimal-views.cjs.d.ts +2 -0
  380. package/fields/types/decimal/views/dist/nixxie-cms-core-fields-types-decimal-views.cjs.js +248 -0
  381. package/fields/types/decimal/views/dist/nixxie-cms-core-fields-types-decimal-views.esm.js +239 -0
  382. package/fields/types/decimal/views/package.json +4 -0
  383. package/fields/types/file/utils/package.json +4 -0
  384. package/fields/types/file/views/dist/nixxie-cms-core-fields-types-file-views.cjs.d.ts +2 -0
  385. package/fields/types/file/views/dist/nixxie-cms-core-fields-types-file-views.cjs.js +86 -0
  386. package/fields/types/file/views/dist/nixxie-cms-core-fields-types-file-views.esm.js +81 -0
  387. package/fields/types/file/views/package.json +4 -0
  388. package/fields/types/float/views/dist/nixxie-cms-core-fields-types-float-views.cjs.d.ts +2 -0
  389. package/fields/types/float/views/dist/nixxie-cms-core-fields-types-float-views.cjs.js +237 -0
  390. package/fields/types/float/views/dist/nixxie-cms-core-fields-types-float-views.esm.js +232 -0
  391. package/fields/types/float/views/package.json +4 -0
  392. package/fields/types/image/utils/dist/nixxie-cms-core-fields-types-image-utils.cjs.d.ts +2 -0
  393. package/fields/types/image/utils/dist/nixxie-cms-core-fields-types-image-utils.cjs.js +7 -0
  394. package/fields/types/image/utils/dist/nixxie-cms-core-fields-types-image-utils.esm.js +3 -0
  395. package/fields/types/image/utils/package.json +4 -0
  396. package/fields/types/image/views/dist/nixxie-cms-core-fields-types-image-views.cjs.d.ts +2 -0
  397. package/fields/types/image/views/dist/nixxie-cms-core-fields-types-image-views.cjs.js +361 -0
  398. package/fields/types/image/views/dist/nixxie-cms-core-fields-types-image-views.esm.js +354 -0
  399. package/fields/types/image/views/package.json +4 -0
  400. package/fields/types/integer/views/dist/nixxie-cms-core-fields-types-integer-views.cjs.d.ts +2 -0
  401. package/fields/types/integer/views/dist/nixxie-cms-core-fields-types-integer-views.cjs.js +254 -0
  402. package/fields/types/integer/views/dist/nixxie-cms-core-fields-types-integer-views.esm.js +249 -0
  403. package/fields/types/integer/views/package.json +4 -0
  404. package/fields/types/json/views/dist/nixxie-cms-core-fields-types-json-views.cjs.d.ts +2 -0
  405. package/fields/types/json/views/dist/nixxie-cms-core-fields-types-json-views.cjs.js +83 -0
  406. package/fields/types/json/views/dist/nixxie-cms-core-fields-types-json-views.esm.js +77 -0
  407. package/fields/types/json/views/package.json +4 -0
  408. package/fields/types/multiselect/views/dist/nixxie-cms-core-fields-types-multiselect-views.cjs.d.ts +2 -0
  409. package/fields/types/multiselect/views/dist/nixxie-cms-core-fields-types-multiselect-views.cjs.js +147 -0
  410. package/fields/types/multiselect/views/dist/nixxie-cms-core-fields-types-multiselect-views.esm.js +141 -0
  411. package/fields/types/multiselect/views/package.json +4 -0
  412. package/fields/types/password/dist/nixxie-cms-core-fields-types-password.cjs.d.ts +2 -0
  413. package/fields/types/password/dist/nixxie-cms-core-fields-types-password.cjs.js +206 -0
  414. package/fields/types/password/dist/nixxie-cms-core-fields-types-password.esm.js +196 -0
  415. package/fields/types/password/package.json +4 -0
  416. package/fields/types/password/views/dist/nixxie-cms-core-fields-types-password-views.cjs.d.ts +2 -0
  417. package/fields/types/password/views/dist/nixxie-cms-core-fields-types-password-views.cjs.js +330 -0
  418. package/fields/types/password/views/dist/nixxie-cms-core-fields-types-password-views.esm.js +320 -0
  419. package/fields/types/password/views/package.json +4 -0
  420. package/fields/types/relationship/views/RelationshipSelect/package.json +4 -0
  421. package/fields/types/relationship/views/dist/nixxie-cms-core-fields-types-relationship-views.cjs.d.ts +2 -0
  422. package/fields/types/relationship/views/dist/nixxie-cms-core-fields-types-relationship-views.cjs.js +1213 -0
  423. package/fields/types/relationship/views/dist/nixxie-cms-core-fields-types-relationship-views.esm.js +1201 -0
  424. package/fields/types/relationship/views/package.json +4 -0
  425. package/fields/types/select/views/dist/nixxie-cms-core-fields-types-select-views.cjs.d.ts +2 -0
  426. package/fields/types/select/views/dist/nixxie-cms-core-fields-types-select-views.cjs.js +422 -0
  427. package/fields/types/select/views/dist/nixxie-cms-core-fields-types-select-views.esm.js +416 -0
  428. package/fields/types/select/views/package.json +4 -0
  429. package/fields/types/text/views/dist/nixxie-cms-core-fields-types-text-views.cjs.d.ts +2 -0
  430. package/fields/types/text/views/dist/nixxie-cms-core-fields-types-text-views.cjs.js +316 -0
  431. package/fields/types/text/views/dist/nixxie-cms-core-fields-types-text-views.esm.js +311 -0
  432. package/fields/types/text/views/package.json +4 -0
  433. package/fields/types/timestamp/views/dist/nixxie-cms-core-fields-types-timestamp-views.cjs.d.ts +2 -0
  434. package/fields/types/timestamp/views/dist/nixxie-cms-core-fields-types-timestamp-views.cjs.js +285 -0
  435. package/fields/types/timestamp/views/dist/nixxie-cms-core-fields-types-timestamp-views.esm.js +279 -0
  436. package/fields/types/timestamp/views/package.json +4 -0
  437. package/fields/types/virtual/views/dist/nixxie-cms-core-fields-types-virtual-views.cjs.d.ts +2 -0
  438. package/fields/types/virtual/views/dist/nixxie-cms-core-fields-types-virtual-views.cjs.js +54 -0
  439. package/fields/types/virtual/views/dist/nixxie-cms-core-fields-types-virtual-views.esm.js +48 -0
  440. package/fields/types/virtual/views/package.json +4 -0
  441. package/graphql-ts/dist/nixxie-cms-core-graphql-ts.cjs.d.ts +2 -0
  442. package/graphql-ts/dist/nixxie-cms-core-graphql-ts.cjs.js +45 -0
  443. package/graphql-ts/dist/nixxie-cms-core-graphql-ts.esm.js +2 -0
  444. package/graphql-ts/package.json +4 -0
  445. package/package.json +339 -0
  446. package/schema/package.json +4 -0
  447. package/scripts/cli/dist/nixxie-cms-core-scripts-cli.cjs.d.ts +2 -0
  448. package/scripts/cli/dist/nixxie-cms-core-scripts-cli.cjs.js +1607 -0
  449. package/scripts/cli/dist/nixxie-cms-core-scripts-cli.esm.js +1586 -0
  450. package/scripts/cli/package.json +4 -0
  451. package/scripts/dist/nixxie-cms-core-scripts.cjs.d.ts +2 -0
  452. package/scripts/dist/nixxie-cms-core-scripts.cjs.js +73 -0
  453. package/scripts/dist/nixxie-cms-core-scripts.esm.js +71 -0
  454. package/scripts/package.json +4 -0
  455. package/session/dist/nixxie-cms-core-session.cjs.d.ts +2 -0
  456. package/session/dist/nixxie-cms-core-session.cjs.js +157 -0
  457. package/session/dist/nixxie-cms-core-session.esm.js +129 -0
  458. package/session/package.json +4 -0
  459. package/src/___internal-do-not-use-will-break-in-patch/admin-ui/id-field-view.tsx +167 -0
  460. package/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/App/index.tsx +22 -0
  461. package/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/CreateItemPage/index.tsx +71 -0
  462. package/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/HomePage/index.tsx +333 -0
  463. package/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ItemPage/common.tsx +358 -0
  464. package/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ItemPage/index.tsx +483 -0
  465. package/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage/FilterAdd.tsx +221 -0
  466. package/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage/PaginationControls.tsx +170 -0
  467. package/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage/Tag.tsx +72 -0
  468. package/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage/index.tsx +1006 -0
  469. package/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/NoAccessPage/index.tsx +24 -0
  470. package/src/___internal-do-not-use-will-break-in-patch/artifacts.ts +5 -0
  471. package/src/access.ts +25 -0
  472. package/src/admin-ui/admin-meta-graphql.ts +168 -0
  473. package/src/admin-ui/apollo.tsx +35 -0
  474. package/src/admin-ui/components/CellContainer.tsx +6 -0
  475. package/src/admin-ui/components/CommandPalette.tsx +431 -0
  476. package/src/admin-ui/components/Container.tsx +14 -0
  477. package/src/admin-ui/components/CreateButtonLink.tsx +46 -0
  478. package/src/admin-ui/components/CreateItemDialog.tsx +56 -0
  479. package/src/admin-ui/components/EmptyState.tsx +52 -0
  480. package/src/admin-ui/components/Errors.tsx +130 -0
  481. package/src/admin-ui/components/GraphQLErrorNotice.tsx +78 -0
  482. package/src/admin-ui/components/InlineCode.tsx +17 -0
  483. package/src/admin-ui/components/Logo.tsx +70 -0
  484. package/src/admin-ui/components/Navigation.tsx +385 -0
  485. package/src/admin-ui/components/NullableFieldWrapper.tsx +72 -0
  486. package/src/admin-ui/components/PageContainer.tsx +310 -0
  487. package/src/admin-ui/components/WelcomeDialog.tsx +119 -0
  488. package/src/admin-ui/components/index.ts +23 -0
  489. package/src/admin-ui/context.tsx +338 -0
  490. package/src/admin-ui/image.tsx +2 -0
  491. package/src/admin-ui/index.tsx +1 -0
  492. package/src/admin-ui/router.tsx +24 -0
  493. package/src/admin-ui/system/generateAdminUI.ts +155 -0
  494. package/src/admin-ui/system/index.ts +1 -0
  495. package/src/admin-ui/templates/app.ts +60 -0
  496. package/src/admin-ui/templates/create-item.ts +5 -0
  497. package/src/admin-ui/templates/home.ts +2 -0
  498. package/src/admin-ui/templates/index.ts +53 -0
  499. package/src/admin-ui/templates/item.tsx +5 -0
  500. package/src/admin-ui/templates/list.tsx +5 -0
  501. package/src/admin-ui/templates/next-config.ts +16 -0
  502. package/src/admin-ui/templates/no-access.ts +7 -0
  503. package/src/admin-ui/utils/Fields.tsx +241 -0
  504. package/src/admin-ui/utils/actionData.ts +36 -0
  505. package/src/admin-ui/utils/filters.ts +148 -0
  506. package/src/admin-ui/utils/index.ts +10 -0
  507. package/src/admin-ui/utils/pick.ts +12 -0
  508. package/src/admin-ui/utils/useCreateItem.ts +171 -0
  509. package/src/admin-ui/utils/usePreventNavigation.tsx +31 -0
  510. package/src/admin-ui/utils/utils.tsx +127 -0
  511. package/src/artifacts.ts +110 -0
  512. package/src/context.ts +1 -0
  513. package/src/fields/filters/enum-filter.ts +77 -0
  514. package/src/fields/filters/index.ts +1 -0
  515. package/src/fields/filters/internal.ts +89 -0
  516. package/src/fields/filters/providers/mysql.ts +450 -0
  517. package/src/fields/filters/providers/postgresql.ts +448 -0
  518. package/src/fields/filters/providers/sqlite.ts +442 -0
  519. package/src/fields/index.ts +34 -0
  520. package/src/fields/non-null-graphql.ts +115 -0
  521. package/src/fields/resolve-hooks.ts +61 -0
  522. package/src/fields/types/bigInt/index.ts +181 -0
  523. package/src/fields/types/bigInt/views/index.tsx +254 -0
  524. package/src/fields/types/bytes/index.ts +275 -0
  525. package/src/fields/types/bytes/views/index.tsx +190 -0
  526. package/src/fields/types/calendarDay/index.ts +194 -0
  527. package/src/fields/types/calendarDay/views/index.tsx +144 -0
  528. package/src/fields/types/checkbox/index.ts +76 -0
  529. package/src/fields/types/checkbox/views/index.tsx +97 -0
  530. package/src/fields/types/decimal/index.ts +182 -0
  531. package/src/fields/types/decimal/views/index.tsx +215 -0
  532. package/src/fields/types/file/index.ts +168 -0
  533. package/src/fields/types/file/views/Field.tsx +300 -0
  534. package/src/fields/types/file/views/index.tsx +74 -0
  535. package/src/fields/types/float/index.ts +133 -0
  536. package/src/fields/types/float/views/index.tsx +215 -0
  537. package/src/fields/types/image/index.ts +244 -0
  538. package/src/fields/types/image/internal-utils.ts +58 -0
  539. package/src/fields/types/image/utils.ts +1 -0
  540. package/src/fields/types/image/views/Field.tsx +295 -0
  541. package/src/fields/types/image/views/index.tsx +92 -0
  542. package/src/fields/types/integer/index.ts +156 -0
  543. package/src/fields/types/integer/views/index.tsx +255 -0
  544. package/src/fields/types/json/index.ts +77 -0
  545. package/src/fields/types/json/views/index.tsx +76 -0
  546. package/src/fields/types/multiselect/index.ts +212 -0
  547. package/src/fields/types/multiselect/views/index.tsx +151 -0
  548. package/src/fields/types/password/index.ts +241 -0
  549. package/src/fields/types/password/views/index.tsx +342 -0
  550. package/src/fields/types/relationship/index.ts +381 -0
  551. package/src/fields/types/relationship/views/ComboboxMany.tsx +110 -0
  552. package/src/fields/types/relationship/views/ComboboxSingle.tsx +115 -0
  553. package/src/fields/types/relationship/views/ContextualActions.tsx +139 -0
  554. package/src/fields/types/relationship/views/RelationshipTable.tsx +190 -0
  555. package/src/fields/types/relationship/views/index.tsx +492 -0
  556. package/src/fields/types/relationship/views/types.ts +46 -0
  557. package/src/fields/types/relationship/views/useApolloQuery.ts +185 -0
  558. package/src/fields/types/relationship/views/useFilter.tsx +109 -0
  559. package/src/fields/types/select/index.ts +226 -0
  560. package/src/fields/types/select/views/SegmentedControl.tsx +83 -0
  561. package/src/fields/types/select/views/index.tsx +318 -0
  562. package/src/fields/types/text/index.ts +207 -0
  563. package/src/fields/types/text/views/index.tsx +273 -0
  564. package/src/fields/types/timestamp/index.ts +116 -0
  565. package/src/fields/types/timestamp/views/__tests__/index.tsx +68 -0
  566. package/src/fields/types/timestamp/views/__tests__/utils.tsx +16 -0
  567. package/src/fields/types/timestamp/views/index.tsx +262 -0
  568. package/src/fields/types/timestamp/views/utils.ts +22 -0
  569. package/src/fields/types/virtual/index.ts +108 -0
  570. package/src/fields/types/virtual/views/index.tsx +53 -0
  571. package/src/graphql-ts.ts +32 -0
  572. package/src/helpers.ts +316 -0
  573. package/src/index.ts +20 -0
  574. package/src/lib/admin-meta-graphql.ts +407 -0
  575. package/src/lib/admin-meta.ts +369 -0
  576. package/src/lib/coerceAndValidateForGraphQLInput.ts +29 -0
  577. package/src/lib/context/api.ts +99 -0
  578. package/src/lib/context/createContext.ts +161 -0
  579. package/src/lib/context/graphql.ts +300 -0
  580. package/src/lib/core/access-control.ts +434 -0
  581. package/src/lib/core/field-assertions.ts +118 -0
  582. package/src/lib/core/filter-order-access.ts +48 -0
  583. package/src/lib/core/graphql-errors.ts +76 -0
  584. package/src/lib/core/hooks.ts +111 -0
  585. package/src/lib/core/initialise-lists.ts +1097 -0
  586. package/src/lib/core/mutations/index.ts +917 -0
  587. package/src/lib/core/mutations/nested-mutation-many-input-resolvers.ts +145 -0
  588. package/src/lib/core/mutations/nested-mutation-one-input-resolvers.ts +71 -0
  589. package/src/lib/core/prisma-schema-printer.ts +256 -0
  590. package/src/lib/core/queries/index.ts +66 -0
  591. package/src/lib/core/queries/output-field.ts +178 -0
  592. package/src/lib/core/queries/resolvers.ts +258 -0
  593. package/src/lib/core/resolve-relationships.ts +303 -0
  594. package/src/lib/core/utils.ts +56 -0
  595. package/src/lib/core/where-inputs.ts +130 -0
  596. package/src/lib/express.ts +109 -0
  597. package/src/lib/graphql.ts +83 -0
  598. package/src/lib/id-field.ts +214 -0
  599. package/src/lib/middleware.ts +68 -0
  600. package/src/lib/migrations.ts +90 -0
  601. package/src/lib/otel.ts +43 -0
  602. package/src/lib/prompts.ts +29 -0
  603. package/src/lib/system.ts +207 -0
  604. package/src/lib/telemetry.ts +342 -0
  605. package/src/lib/typescript-schema-printer.ts +227 -0
  606. package/src/lib/utils.ts +21 -0
  607. package/src/pkg-dir.ts +6 -0
  608. package/src/schema.ts +233 -0
  609. package/src/scripts/build.ts +64 -0
  610. package/src/scripts/cli.ts +124 -0
  611. package/src/scripts/dev.ts +452 -0
  612. package/src/scripts/esbuild.ts +120 -0
  613. package/src/scripts/index.ts +20 -0
  614. package/src/scripts/migrate.ts +214 -0
  615. package/src/scripts/prisma.ts +49 -0
  616. package/src/scripts/start.ts +76 -0
  617. package/src/scripts/telemetry.ts +37 -0
  618. package/src/scripts/utils.ts +22 -0
  619. package/src/session.ts +168 -0
  620. package/src/testing.ts +23 -0
  621. package/src/types/admin-meta.ts +218 -0
  622. package/src/types/config/access-control.ts +186 -0
  623. package/src/types/config/fields.ts +96 -0
  624. package/src/types/config/hooks.ts +529 -0
  625. package/src/types/config/index.ts +333 -0
  626. package/src/types/config/lists.ts +565 -0
  627. package/src/types/context.ts +530 -0
  628. package/src/types/core.ts +16 -0
  629. package/src/types/index.ts +8 -0
  630. package/src/types/next-fields.ts +499 -0
  631. package/src/types/prisma.ts +16 -0
  632. package/src/types/schema/g.ts +5 -0
  633. package/src/types/schema/gWithContext.ts +20 -0
  634. package/src/types/schema/index.ts +4 -0
  635. package/src/types/schema/legacy-alias.d.ts +28 -0
  636. package/src/types/schema/legacy-alias.js +1 -0
  637. package/src/types/schema/scalars.ts +220 -0
  638. package/src/types/session.ts +26 -0
  639. package/src/types/telemetry.ts +51 -0
  640. package/src/types/type-info.ts +38 -0
  641. package/src/types/type-tests.ts +21 -0
  642. package/src/types/utils.ts +108 -0
  643. package/static/admin-error.html +53 -0
  644. package/static/dev-loading.html +146 -0
  645. package/static/favicon.ico +0 -0
  646. package/static/favicon.svg +4 -0
  647. package/system/package.json +4 -0
  648. package/testing/dist/nixxie-cms-core-testing.cjs.d.ts +2 -0
  649. package/testing/dist/nixxie-cms-core-testing.cjs.js +29 -0
  650. package/testing/dist/nixxie-cms-core-testing.esm.js +21 -0
  651. package/testing/package.json +4 -0
  652. package/tests/conditional-filters.test.ts +326 -0
  653. package/tests/telemetry.test.ts +361 -0
  654. package/tsconfig.json +20 -0
  655. package/types/dist/nixxie-cms-core-types.cjs.d.ts +2 -0
  656. package/types/dist/nixxie-cms-core-types.cjs.js +29 -0
  657. package/types/dist/nixxie-cms-core-types.esm.js +9 -0
  658. package/types/package.json +4 -0
@@ -0,0 +1,1201 @@
1
+ import { useListFormatter } from '@react-aria/i18n';
2
+ import { useState, useMemo, useEffect, Fragment as Fragment$1 } from 'react';
3
+ import { DialogContainer } from '@keystar/ui/dialog';
4
+ import { Grid, HStack, VStack } from '@keystar/ui/layout';
5
+ import { TextLink } from '@keystar/ui/link';
6
+ import { TagGroup, Item as Item$2 } from '@keystar/ui/tag';
7
+ import { TextField } from '@keystar/ui/text-field';
8
+ import { Text, Numeral } from '@keystar/ui/typography';
9
+ import { TableView, TableHeader, Column, TableBody, Row, Cell as Cell$1 } from '@keystar/ui/table';
10
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
11
+ import { css } from '@keystar/ui/style';
12
+ import '@keystar/ui/checkbox';
13
+ import { Icon } from '@keystar/ui/icon';
14
+ import '@keystar/ui/icon/icons/cornerDownRightIcon';
15
+ import '@babel/runtime/helpers/defineProperty';
16
+ import { ActionButton } from '@keystar/ui/button';
17
+ import '@keystar/ui/icon/icons/alertTriangleIcon';
18
+ import '@keystar/ui/notice';
19
+ import '@keystar/ui/slots';
20
+ import 'next/link';
21
+ import { a as useList, P as PaginationControls } from '../../../../../dist/context-3132c3ed.esm.js';
22
+ import 'next/router';
23
+ import 'next/head';
24
+ import { B as BuildItemDialog } from '../../../../../dist/CreateItemDialog-33335548.esm.js';
25
+ import { gql, ApolloClient, InMemoryCache } from '@apollo/client';
26
+ import { arrowUpRightIcon } from '@keystar/ui/icon/icons/arrowUpRightIcon';
27
+ import { ComboboxMulti, Item, Combobox } from '@keystar/ui/combobox';
28
+ import isDeepEqual from 'fast-deep-equal';
29
+ import { useApolloClient, useQuery } from '@apollo/client/react';
30
+ import { u as useSearchFilter } from '../../../../../dist/useFilter-0b5a1ee6.esm.js';
31
+ import { plusIcon } from '@keystar/ui/icon/icons/plusIcon';
32
+ import { ActionMenu, Item as Item$1 } from '@keystar/ui/menu';
33
+ import { TooltipTrigger, Tooltip } from '@keystar/ui/tooltip';
34
+ import { Field as Field$1 } from '@keystar/ui/field';
35
+ import { textSelectIcon } from '@keystar/ui/icon/icons/textSelectIcon';
36
+ import { E as EmptyState } from '../../../../../dist/utils-5e1d4d28.esm.js';
37
+ import '@react-aria/utils';
38
+ import '@keystar/ui/icon/icons/chevronRightIcon';
39
+ import '@keystar/ui/icon/icons/textCursorInputIcon';
40
+ import '@keystar/ui/toast';
41
+ import 'graphql';
42
+ import { G as GraphQLErrorNotice } from '../../../../../dist/GraphQLErrorNotice-d9f0931b.esm.js';
43
+ import { ProgressCircle } from '@keystar/ui/progress';
44
+ import 'apollo-upload-client/UploadHttpLink.mjs';
45
+ import '@keystar/ui/core';
46
+ import '@nixxie-cms/core/admin-ui/router';
47
+ import '@keystar/ui/icon/icons/chevronLeftIcon';
48
+ import '@keystar/ui/icon/icons/undo2Icon';
49
+ import '@keystar/ui/picker';
50
+ import '../../../../../dist/admin-meta-graphql-6f7f5331.esm.js';
51
+ import '../../../../../dist/filters-8c8616f9.esm.js';
52
+ import '../../../../../dist/Fields-956d9a14.esm.js';
53
+ import '../../../../../dist/useCreateItem-1f94d252.esm.js';
54
+ import '@keystar/ui/utils';
55
+
56
+ function useDebouncedValue(value, limitMs) {
57
+ const [debouncedValue, setDebouncedValue] = useState(() => value);
58
+ useEffect(() => {
59
+ const timeout = setTimeout(() => {
60
+ setDebouncedValue(() => value);
61
+ }, limitMs);
62
+ return () => clearTimeout(timeout);
63
+ }, [value, limitMs]);
64
+ return debouncedValue;
65
+ }
66
+ function useApolloQuery(args) {
67
+ var _state$value3;
68
+ const {
69
+ labelField,
70
+ list,
71
+ searchFields,
72
+ state
73
+ } = args;
74
+ const [search, setSearch] = useState(() => {
75
+ var _state$value, _state$value2;
76
+ if (state.kind === 'one' && (_state$value = state.value) !== null && _state$value !== void 0 && _state$value.label) return (_state$value2 = state.value) === null || _state$value2 === void 0 ? void 0 : _state$value2.label;
77
+ return '';
78
+ });
79
+ const QUERY = gql`
80
+ query RelationshipSelect($where: ${list.graphql.names.whereInputName}!, $take: Int!, $skip: Int!, $orderBy: [${list.graphql.names.listOrderName}!]) {
81
+ items: ${list.graphql.names.listQueryName}(where: $where, take: $take, skip: $skip, orderBy: $orderBy) {
82
+ id: id
83
+ label: ${labelField}
84
+ }
85
+ count: ${list.graphql.names.listQueryCountName}(where: $where)
86
+ }
87
+ `;
88
+ const debouncedSearch = useDebouncedValue(search, 200);
89
+ const manipulatedSearch = state.kind === 'one' && ((_state$value3 = state.value) === null || _state$value3 === void 0 ? void 0 : _state$value3.label) === debouncedSearch ? '' : debouncedSearch;
90
+ const searchFilter = useSearchFilter(manipulatedSearch, list, searchFields);
91
+ const _where = {
92
+ OR: searchFilter
93
+ };
94
+ const where = args.filter ? {
95
+ AND: [_where, args.filter]
96
+ } : _where;
97
+ const orderBy = useMemo(() => {
98
+ return args.sort ? {
99
+ [args.sort.field]: args.sort.direction.toLowerCase()
100
+ } : undefined;
101
+ }, [args.sort]);
102
+ const link = useApolloClient().link;
103
+ // we're using a local apollo client here because writing a global implementation of the typePolicies
104
+ // would require making assumptions about how pagination should work which won't always be right
105
+ const apolloClient = useMemo(() => new ApolloClient({
106
+ link,
107
+ cache: new InMemoryCache({
108
+ typePolicies: {
109
+ Query: {
110
+ fields: {
111
+ [list.graphql.names.listQueryName]: {
112
+ keyArgs: ['where'],
113
+ merge: (existing, incoming, {
114
+ args
115
+ }) => {
116
+ const merged = existing ? existing.slice() : [];
117
+ const {
118
+ skip
119
+ } = args;
120
+ for (let i = 0; i < incoming.length; ++i) {
121
+ merged[skip + i] = incoming[i];
122
+ }
123
+ return merged;
124
+ }
125
+ }
126
+ }
127
+ }
128
+ }
129
+ })
130
+ }), [link, list.graphql.names.listQueryName]);
131
+ const initialItemsToLoad = Math.min(list.pageSize, 10);
132
+ const subsequentItemsToLoad = Math.min(list.pageSize, 50);
133
+ const {
134
+ data,
135
+ previousData,
136
+ error,
137
+ loading,
138
+ fetchMore
139
+ } = useQuery(QUERY, {
140
+ fetchPolicy: 'network-only',
141
+ variables: {
142
+ where,
143
+ take: initialItemsToLoad,
144
+ skip: 0,
145
+ orderBy
146
+ },
147
+ client: apolloClient
148
+ });
149
+
150
+ // we want to avoid fetching more again and `loading` from Apollo
151
+ // doesn't seem to become true when fetching more
152
+ const [lastFetchMore, setLastFetchMore] = useState(null);
153
+ const count = (data === null || data === void 0 ? void 0 : data.count) || 0;
154
+ const onLoadMore = () => {
155
+ const skip = data === null || data === void 0 ? void 0 : data.items.length;
156
+ if (!loading && skip && data.items.length < count && (!isDeepEqual(lastFetchMore === null || lastFetchMore === void 0 ? void 0 : lastFetchMore.where, where) || (lastFetchMore === null || lastFetchMore === void 0 ? void 0 : lastFetchMore.list) !== list || (lastFetchMore === null || lastFetchMore === void 0 ? void 0 : lastFetchMore.skip) !== skip)) {
157
+ const QUERY = gql`
158
+ query RelationshipSelectMore($where: ${list.graphql.names.whereInputName}!, $take: Int!, $skip: Int!, $orderBy: [${list.graphql.names.listOrderName}!]) {
159
+ items: ${list.graphql.names.listQueryName}(where: $where, take: $take, skip: $skip, orderBy: $orderBy) {
160
+ id
161
+ label: ${labelField}
162
+ }
163
+ }
164
+ `;
165
+ setLastFetchMore({
166
+ list,
167
+ skip,
168
+ where
169
+ });
170
+ fetchMore({
171
+ query: QUERY,
172
+ variables: {
173
+ where,
174
+ take: subsequentItemsToLoad,
175
+ skip,
176
+ orderBy
177
+ }
178
+ }).then(() => setLastFetchMore(null)).catch(() => setLastFetchMore(null));
179
+ }
180
+ };
181
+ return {
182
+ data: loading ? previousData : data,
183
+ error,
184
+ loading,
185
+ loadingState: getLoadingState({
186
+ loading,
187
+ search
188
+ }),
189
+ search,
190
+ setSearch,
191
+ onLoadMore
192
+ };
193
+ }
194
+ function getLoadingState(options) {
195
+ if (options.loading) {
196
+ if (options.search.length) return 'filtering';
197
+ return 'loading';
198
+ }
199
+ return 'idle';
200
+ }
201
+
202
+ function ComboboxMany({
203
+ extraSelection = '',
204
+ forceValidation,
205
+ isDisabled,
206
+ isLoading,
207
+ isReadOnly,
208
+ isRequired,
209
+ labelField,
210
+ list,
211
+ searchFields,
212
+ state,
213
+ filter,
214
+ sort,
215
+ ...props
216
+ }) {
217
+ var _data$items$map, _data$items, _state$value;
218
+ const {
219
+ data,
220
+ loadingState,
221
+ error,
222
+ onLoadMore,
223
+ search,
224
+ setSearch
225
+ } = useApolloQuery({
226
+ labelField,
227
+ list,
228
+ searchFields,
229
+ state,
230
+ filter,
231
+ sort
232
+ });
233
+ const [shouldShowErrors, setShouldShowErrors] = useState(false);
234
+ const validationMessages = isRequired && state.value.length === 0 ? [`At least one ${list.singular} is required`] : [];
235
+
236
+ // TODO: better error UI
237
+ // TODO: Handle permission errors
238
+ // (ie; user has permission to read this relationship field, but
239
+ // not the related list, or some items on the list)
240
+ if (error) return /*#__PURE__*/jsx("span", {
241
+ children: "Error"
242
+ });
243
+ const items = (_data$items$map = data === null || data === void 0 || (_data$items = data.items) === null || _data$items === void 0 ? void 0 : _data$items.map(x => ({
244
+ ...x,
245
+ built: false
246
+ }))) !== null && _data$items$map !== void 0 ? _data$items$map : [];
247
+ const fetchedIds = new Set(items.map(item => item.id));
248
+ for (const item of state.value) {
249
+ if (!fetchedIds.has(item.id)) {
250
+ items.push(item);
251
+ }
252
+ }
253
+ return /*#__PURE__*/jsx(ComboboxMulti, {
254
+ ...props,
255
+ isDisabled: isDisabled || isReadOnly,
256
+ isRequired: isRequired,
257
+ items: items,
258
+ loadingState: loadingState,
259
+ errorMessage: !!validationMessages.length && (shouldShowErrors || forceValidation) ? validationMessages.join('. ') : undefined,
260
+ onBlur: () => {
261
+ setShouldShowErrors(true);
262
+ },
263
+ onInputChange: setSearch,
264
+ inputValue: search,
265
+ onLoadMore: onLoadMore,
266
+ selectedKeys: (_state$value = state.value) === null || _state$value === void 0 ? void 0 : _state$value.map(item => item.id.toString()),
267
+ onSelectionChange: selection => {
268
+ // TODO
269
+ if (selection === 'all') return;
270
+ const selectedItems = items.filter(item => selection.has(item.id.toString()));
271
+ state.onChange(selectedItems);
272
+ },
273
+ minWidth: "alias.singleLineWidth",
274
+ width: "auto",
275
+ UNSAFE_className: css({
276
+ // This should probably be addressed in @keystar/ui/combobox
277
+ // - the mobile variant should respect the `width` prop
278
+ '[role="button"]': {
279
+ width: 'auto'
280
+ }
281
+ }),
282
+ children: item => /*#__PURE__*/jsx(Item, {
283
+ children: item.label || item.id
284
+ })
285
+ });
286
+ }
287
+
288
+ function ComboboxSingle({
289
+ forceValidation,
290
+ isLoading,
291
+ isRequired,
292
+ labelField,
293
+ list,
294
+ searchFields,
295
+ state,
296
+ filter,
297
+ sort,
298
+ ...props
299
+ }) {
300
+ var _data$items$map, _data$items;
301
+ const {
302
+ data,
303
+ loading,
304
+ error,
305
+ onLoadMore,
306
+ search,
307
+ setSearch
308
+ } = useApolloQuery({
309
+ labelField,
310
+ list,
311
+ searchFields,
312
+ state,
313
+ filter,
314
+ sort
315
+ });
316
+ const [shouldShowErrors, setShouldShowErrors] = useState(false);
317
+ const validationMessages = isRequired && state.value === null ? [`A ${list.singular} is required`] : [];
318
+ const [lastSeenStateValue, setLastSeenStateValue] = useState(state.value);
319
+ if (state.value !== lastSeenStateValue) {
320
+ var _state$value$label, _state$value;
321
+ setLastSeenStateValue(state.value);
322
+ setSearch((_state$value$label = (_state$value = state.value) === null || _state$value === void 0 ? void 0 : _state$value.label) !== null && _state$value$label !== void 0 ? _state$value$label : '');
323
+ }
324
+
325
+ // TODO: better error UI
326
+ // TODO: Handle permission errors
327
+ // (ie; user has permission to read this relationship field, but
328
+ // not the related list, or some items on the list)
329
+ if (error) return /*#__PURE__*/jsx("span", {
330
+ children: "Error"
331
+ });
332
+ const items = (_data$items$map = data === null || data === void 0 || (_data$items = data.items) === null || _data$items === void 0 ? void 0 : _data$items.map(x => ({
333
+ ...x,
334
+ built: false
335
+ }))) !== null && _data$items$map !== void 0 ? _data$items$map : [];
336
+ if (state.value !== null && (state.value.built || !items.some(item => {
337
+ var _state$value2;
338
+ return item.id === ((_state$value2 = state.value) === null || _state$value2 === void 0 ? void 0 : _state$value2.id);
339
+ }))) {
340
+ items.push(state.value);
341
+ }
342
+ return /*#__PURE__*/jsx(Combobox, {
343
+ ...props,
344
+ isRequired: isRequired,
345
+ items: items,
346
+ loadingState: loading || isLoading ? 'loading' : 'idle',
347
+ errorMessage: !!validationMessages.length && (shouldShowErrors || forceValidation) ? validationMessages.join('. ') : undefined,
348
+ onBlur: () => {
349
+ setShouldShowErrors(true);
350
+ },
351
+ onInputChange: input => {
352
+ setSearch(input);
353
+
354
+ // unset the selected value when the user clears the input
355
+ if (input === '') state.onChange(null);
356
+ },
357
+ inputValue: search,
358
+ onLoadMore: onLoadMore,
359
+ selectedKey: state.value ? state.value.id.toString() : null,
360
+ onSelectionChange: key => {
361
+ var _items$find, _selectedItem$label;
362
+ const selectedItem = (_items$find = items.find(item => item.id.toString() === key)) !== null && _items$find !== void 0 ? _items$find : null;
363
+ state.onChange(selectedItem);
364
+ setSearch((_selectedItem$label = selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.label) !== null && _selectedItem$label !== void 0 ? _selectedItem$label : '');
365
+ },
366
+ minWidth: "alias.singleLineWidth",
367
+ width: "auto",
368
+ UNSAFE_className: css({
369
+ // This should probably be addressed in @keystar/ui/combobox
370
+ // - the mobile variant should respect the `width` prop
371
+ '[role="button"]': {
372
+ width: 'auto'
373
+ }
374
+ }),
375
+ children: item => /*#__PURE__*/jsx(Item, {
376
+ children: item.label || item.id
377
+ })
378
+ });
379
+ }
380
+
381
+ function ContextualActions(props) {
382
+ const {
383
+ children,
384
+ ...otherProps
385
+ } = props;
386
+ return /*#__PURE__*/jsxs(Grid, {
387
+ gap: "regular",
388
+ alignItems: "end",
389
+ columns: "minmax(0, 1fr) auto",
390
+ children: [children, /*#__PURE__*/jsx(ContextualActionsMenu, {
391
+ ...otherProps
392
+ })]
393
+ });
394
+ }
395
+ function ContextualActionsMenu(props) {
396
+ const {
397
+ field,
398
+ onAdd,
399
+ onChange
400
+ } = props;
401
+ const foreignList = useList(field.refListKey);
402
+ const relatedItemHref = useRelatedItemHref(props);
403
+ const relatedItemLabel = useRelatedItemLabel(field);
404
+ const allowAdd = !field.hideCreate && !!onChange;
405
+ const items = useMemo(() => {
406
+ const result = [];
407
+ if (allowAdd) {
408
+ result.push({
409
+ icon: plusIcon,
410
+ key: 'add',
411
+ label: `Add ${foreignList.singular.toLocaleLowerCase()}`
412
+ });
413
+ }
414
+ result.push({
415
+ key: 'view',
416
+ icon: arrowUpRightIcon,
417
+ href: relatedItemHref,
418
+ label: relatedItemLabel
419
+ });
420
+ return result;
421
+ }, [allowAdd, foreignList, relatedItemHref, relatedItemLabel]);
422
+ const onAction = key => {
423
+ switch (key) {
424
+ case 'add':
425
+ {
426
+ onAdd();
427
+ break;
428
+ }
429
+ }
430
+ };
431
+
432
+ // we don't want to change the presence or lack thereof of a selected value
433
+ // but since `allowAdd` is based on config, it's fairly static and showing
434
+ // a menu when the menu will only have one item is quite silly
435
+ if (!allowAdd) {
436
+ return /*#__PURE__*/jsxs(TooltipTrigger, {
437
+ children: [/*#__PURE__*/jsx(ActionButton, {
438
+ ...(relatedItemHref ? {
439
+ href: relatedItemHref
440
+ } : {
441
+ isDisabled: true
442
+ }),
443
+ children: /*#__PURE__*/jsx(Icon, {
444
+ src: arrowUpRightIcon
445
+ })
446
+ }), /*#__PURE__*/jsx(Tooltip, {
447
+ children: relatedItemLabel
448
+ })]
449
+ });
450
+ }
451
+ return /*#__PURE__*/jsx(ActionMenu, {
452
+ "aria-label": `Actions for ${field.label}`,
453
+ direction: "bottom",
454
+ align: "end",
455
+ isDisabled: items.length === 0,
456
+ disabledKeys: relatedItemHref === null ? ['view'] : [],
457
+ items: items,
458
+ onAction: onAction,
459
+ children: item => {
460
+ var _item$href;
461
+ return /*#__PURE__*/jsxs(Item$1, {
462
+ href: (_item$href = item.href) !== null && _item$href !== void 0 ? _item$href : undefined,
463
+ textValue: item.label,
464
+ children: [/*#__PURE__*/jsx(Icon, {
465
+ src: item.icon
466
+ }), /*#__PURE__*/jsx(Text, {
467
+ children: item.label
468
+ })]
469
+ }, item.key);
470
+ }
471
+ });
472
+ }
473
+ function useRelatedItemLabel(field) {
474
+ const foreignList = useList(field.refListKey);
475
+ if (field.many) {
476
+ return `View related ${foreignList.plural.toLocaleLowerCase()}`;
477
+ }
478
+ return `View ${foreignList.singular.toLocaleLowerCase()}`;
479
+ }
480
+ function useRelatedItemHref({
481
+ field,
482
+ value
483
+ }) {
484
+ const foreignList = useList(field.refListKey);
485
+ if (value.kind === 'one') {
486
+ if (!value.value) return null;
487
+ // the related item isn't actually created yet so we can't view it
488
+ if (value.value.built) return null;
489
+ return `/${foreignList.path}/${value.value.id}`;
490
+ }
491
+ let query;
492
+ if (field.refFieldKey && value.id !== null) {
493
+ query = buildQueryForRelationshipFieldWithForeignField(foreignList, field.refFieldKey, value.id);
494
+ } else if (value.kind === 'many' && value.value.length > 0) {
495
+ query = `!id_in=${JSON.stringify(value.value.map(x => x.id))}`;
496
+ }
497
+ if (query === undefined) return null;
498
+ return `/${foreignList.path}?${query}`;
499
+ }
500
+ function buildQueryForRelationshipFieldWithForeignField(foreignList, refFieldKey, localId) {
501
+ const foreignField = foreignList.fields[refFieldKey];
502
+ const foreignMany = foreignField.fieldMeta.many;
503
+ return `filter=${refFieldKey}_${foreignMany ? 'some' : 'is'}_${JSON.stringify(foreignMany ? [localId] : localId)}`;
504
+ }
505
+
506
+ function RelationshipTable({
507
+ field,
508
+ value
509
+ }) {
510
+ var _field$columns, _data$items;
511
+ if (!field.refFieldKey) {
512
+ throw new Error('refFieldKey is required for displayMode: table');
513
+ }
514
+ const [currentPage, setCurrentPage] = useState(1);
515
+ const [pageSize, setPageSize] = useState(50);
516
+ const list = useList(field.refListKey);
517
+ const hasManyOnRefList = list.fields[field.refFieldKey].controller.many;
518
+ const selectedFields = (_field$columns = field.columns) !== null && _field$columns !== void 0 ? _field$columns : list.initialColumns;
519
+ const columns = useMemo(() => {
520
+ return selectedFields.map(path => {
521
+ const field = list.fields[path];
522
+ return {
523
+ id: path,
524
+ label: field.label,
525
+ allowsSorting: field.isOrderable
526
+ };
527
+ });
528
+ }, [selectedFields, list]);
529
+ const [sort, setSort] = useState(() => {
530
+ if (field.initialSort) {
531
+ return {
532
+ column: field.initialSort.field,
533
+ direction: field.initialSort.direction === 'ASC' ? 'ascending' : 'descending'
534
+ };
535
+ }
536
+ return {
537
+ column: 'id',
538
+ direction: 'ascending'
539
+ };
540
+ });
541
+ const {
542
+ data,
543
+ error,
544
+ loading
545
+ } = useQuery(useMemo(() => {
546
+ const selectedGqlFields = [...selectedFields].map(fieldPath => list.fields[fieldPath].controller.graphqlSelection).join('\n');
547
+
548
+ // TODO: FIXME: this is bad
549
+ return gql`
550
+ query (
551
+ $where: ${list.graphql.names.whereInputName},
552
+ $take: Int!,
553
+ $skip: Int!,
554
+ $orderBy: [${list.graphql.names.listOrderName}!]
555
+ ) {
556
+ items: ${list.graphql.names.listQueryName}(
557
+ where: $where,
558
+ take: $take,
559
+ skip: $skip,
560
+ orderBy: $orderBy
561
+ ) {
562
+ ${selectedFields.includes('id') ? '' : 'id'}
563
+ ${selectedGqlFields}
564
+ }
565
+ }
566
+ `;
567
+ }, [list, selectedFields]), {
568
+ fetchPolicy: 'cache-and-network',
569
+ errorPolicy: 'all',
570
+ variables: {
571
+ where: {
572
+ [field.refFieldKey]: hasManyOnRefList ? {
573
+ some: {
574
+ id: {
575
+ equals: value.id
576
+ }
577
+ }
578
+ } : {
579
+ id: {
580
+ equals: value.id
581
+ }
582
+ }
583
+ },
584
+ take: pageSize,
585
+ skip: (currentPage - 1) * pageSize,
586
+ orderBy: [{
587
+ [sort.column]: sort.direction === 'ascending' ? 'asc' : 'desc'
588
+ }]
589
+ }
590
+ });
591
+ const relatedItemLabel = useRelatedItemLabel(field);
592
+ const relatedItemHref = useRelatedItemHref({
593
+ field,
594
+ value
595
+ });
596
+ const items = (_data$items = data === null || data === void 0 ? void 0 : data.items) !== null && _data$items !== void 0 ? _data$items : [];
597
+ return /*#__PURE__*/jsx(Field$1, {
598
+ label: field.label,
599
+ description: field.description,
600
+ children: inputProps => /*#__PURE__*/jsxs(Fragment, {
601
+ children: [/*#__PURE__*/jsxs(TableView, {
602
+ ...inputProps,
603
+ selectionMode: "none",
604
+ onSortChange: sort => setSort(sort),
605
+ sortDescriptor: sort,
606
+ density: "compact",
607
+ UNSAFE_style: {
608
+ minHeight: 29 * 10,
609
+ maxHeight: 29 * 10
610
+ },
611
+ overflowMode: "truncate",
612
+ renderEmptyState: () => loading ? /*#__PURE__*/jsx(ProgressCircle, {
613
+ isIndeterminate: true
614
+ }) : error ? /*#__PURE__*/jsx(GraphQLErrorNotice, {
615
+ errors: [error]
616
+ }) : /*#__PURE__*/jsx(EmptyState, {
617
+ icon: textSelectIcon,
618
+ title: "Empty related items",
619
+ message: "There are no related items."
620
+ }),
621
+ flex: true,
622
+ children: [/*#__PURE__*/jsx(TableHeader, {
623
+ columns: columns,
624
+ children: ({
625
+ label,
626
+ id,
627
+ ...options
628
+ }) => /*#__PURE__*/jsx(Column, {
629
+ isRowHeader: true,
630
+ ...options,
631
+ children: label
632
+ }, id)
633
+ }), /*#__PURE__*/jsx(TableBody, {
634
+ items: items,
635
+ children: row => {
636
+ return /*#__PURE__*/jsx(Row, {
637
+ href: `/${list.path}/${row === null || row === void 0 ? void 0 : row.id}`,
638
+ children: key => {
639
+ const field = list.fields[key];
640
+ const value = row[key];
641
+ const CellContent = field.views.Cell;
642
+ return /*#__PURE__*/jsx(Cell$1, {
643
+ children: CellContent ? /*#__PURE__*/jsx(CellContent, {
644
+ value: value,
645
+ field: field.controller,
646
+ item: row
647
+ }) : /*#__PURE__*/jsx(Text, {
648
+ children: value === null || value === void 0 ? void 0 : value.toString()
649
+ })
650
+ });
651
+ }
652
+ });
653
+ }
654
+ })]
655
+ }), /*#__PURE__*/jsx(PaginationControls, {
656
+ currentPage: currentPage,
657
+ pageSize: pageSize,
658
+ plural: list.plural,
659
+ singular: list.singular,
660
+ total: value.count,
661
+ onChangePage: page => setCurrentPage(page),
662
+ onChangePageSize: size => setPageSize(size),
663
+ extraActions: /*#__PURE__*/jsxs(TooltipTrigger, {
664
+ children: [/*#__PURE__*/jsx(ActionButton, {
665
+ href: relatedItemHref,
666
+ children: /*#__PURE__*/jsx(Icon, {
667
+ src: arrowUpRightIcon
668
+ })
669
+ }), /*#__PURE__*/jsx(Tooltip, {
670
+ children: relatedItemLabel
671
+ })]
672
+ })
673
+ })]
674
+ })
675
+ });
676
+ }
677
+
678
+ function Field(props) {
679
+ const {
680
+ autoFocus,
681
+ field,
682
+ forceValidation = false,
683
+ onChange,
684
+ value,
685
+ isRequired
686
+ } = props;
687
+ const foreignList = useList(field.refListKey);
688
+ const [dialogIsOpen, setDialogOpen] = useState(false);
689
+ const description = field.description || undefined;
690
+ const isReadOnly = onChange === undefined;
691
+ const [counter, setCounter] = useState(1);
692
+ if (value.kind === 'count') {
693
+ if (field.display === 'table') {
694
+ return /*#__PURE__*/jsx(RelationshipTable, {
695
+ field: field,
696
+ value: value
697
+ });
698
+ }
699
+ const textField = /*#__PURE__*/jsx(TextField, {
700
+ autoFocus: autoFocus,
701
+ label: field.label,
702
+ description: description,
703
+ isReadOnly: true,
704
+ value: value.count.toString(),
705
+ width: "alias.singleLineWidth"
706
+ });
707
+ if (!field.refFieldKey) return textField;
708
+ return /*#__PURE__*/jsxs(HStack, {
709
+ gap: "small",
710
+ alignItems: "end",
711
+ children: [textField, /*#__PURE__*/jsx(ActionButton, {
712
+ href: `/${foreignList.path}?${buildQueryForRelationshipFieldWithForeignField(foreignList, field.refFieldKey, value.id)}`,
713
+ children: /*#__PURE__*/jsx(Icon, {
714
+ src: arrowUpRightIcon
715
+ })
716
+ })]
717
+ });
718
+ }
719
+ return /*#__PURE__*/jsxs(Fragment$1, {
720
+ children: [/*#__PURE__*/jsxs(VStack, {
721
+ gap: "medium",
722
+ children: [/*#__PURE__*/jsx(ContextualActions, {
723
+ onAdd: () => setDialogOpen(true),
724
+ ...props,
725
+ children: value.kind === 'many' ? /*#__PURE__*/jsx(ComboboxMany, {
726
+ autoFocus: autoFocus,
727
+ label: field.label,
728
+ description: description,
729
+ forceValidation: forceValidation,
730
+ isReadOnly: isReadOnly,
731
+ isRequired: isRequired,
732
+ list: foreignList,
733
+ labelField: field.refLabelField,
734
+ searchFields: field.refSearchFields,
735
+ filter: field.selectFilter,
736
+ sort: field.selectSort,
737
+ state: {
738
+ kind: 'many',
739
+ value: value.value,
740
+ onChange(newItems) {
741
+ onChange === null || onChange === void 0 || onChange({
742
+ ...value,
743
+ value: newItems
744
+ });
745
+ }
746
+ }
747
+ }) : /*#__PURE__*/jsx(ComboboxSingle, {
748
+ autoFocus: autoFocus,
749
+ label: field.label,
750
+ description: description,
751
+ forceValidation: forceValidation,
752
+ isReadOnly: isReadOnly,
753
+ isRequired: isRequired,
754
+ list: foreignList,
755
+ labelField: field.refLabelField,
756
+ searchFields: field.refSearchFields,
757
+ filter: field.selectFilter,
758
+ sort: field.selectSort,
759
+ state: {
760
+ kind: 'one',
761
+ value: value.value,
762
+ onChange(newItem) {
763
+ onChange === null || onChange === void 0 || onChange({
764
+ ...value,
765
+ value: newItem
766
+ });
767
+ }
768
+ }
769
+ })
770
+ }), value.kind === 'many' && /*#__PURE__*/jsx(TagGroup, {
771
+ "aria-label": `related ${foreignList.plural}`,
772
+ isRequired: isRequired,
773
+ items: value.value.map(item => {
774
+ var _item$id$toString, _item$label;
775
+ return {
776
+ id: (_item$id$toString = item.id.toString()) !== null && _item$id$toString !== void 0 ? _item$id$toString : '',
777
+ label: (_item$label = item.label) !== null && _item$label !== void 0 ? _item$label : '',
778
+ href: item.built ? '' : `/${foreignList.path}/${item.id}`
779
+ };
780
+ }),
781
+ maxRows: 2,
782
+ onRemove: isReadOnly ? undefined : keys => {
783
+ onChange === null || onChange === void 0 || onChange({
784
+ ...value,
785
+ value: value.value.filter(item => !keys.has(item.id))
786
+ });
787
+ },
788
+ renderEmptyState: () => /*#__PURE__*/jsxs(Text, {
789
+ color: "neutralSecondary",
790
+ size: "small",
791
+ children: ["No related ", foreignList.plural.toLowerCase(), "\u2026"]
792
+ }),
793
+ children: renderItem
794
+ })]
795
+ }), !isReadOnly && /*#__PURE__*/jsx(DialogContainer, {
796
+ onDismiss: () => setDialogOpen(false),
797
+ children: dialogIsOpen && /*#__PURE__*/jsx(BuildItemDialog, {
798
+ listKey: foreignList.key,
799
+ onChange: builtItemData => {
800
+ var _ref;
801
+ const id = `_____temporary_${counter}`;
802
+ const label = (_ref = builtItemData === null || builtItemData === void 0 ? void 0 : builtItemData[foreignList.labelField]) !== null && _ref !== void 0 ? _ref : `[Unnamed ${foreignList.singular} ${counter}]`;
803
+ setDialogOpen(false);
804
+ setCounter(counter + 1);
805
+ if (value.kind === 'many') {
806
+ onChange({
807
+ ...value,
808
+ value: [...value.value, {
809
+ id,
810
+ label,
811
+ data: builtItemData,
812
+ built: true
813
+ }]
814
+ });
815
+ } else if (value.kind === 'one') {
816
+ onChange({
817
+ ...value,
818
+ value: {
819
+ id,
820
+ label,
821
+ data: builtItemData,
822
+ built: true
823
+ }
824
+ });
825
+ }
826
+ }
827
+ })
828
+ })]
829
+ });
830
+ }
831
+
832
+ // NOTE: fix for `TagGroup` perf issue, should typically be okay to just
833
+ // inline the render function
834
+ function renderItem(item) {
835
+ if (item.href === '') return /*#__PURE__*/jsx(Item$2, {
836
+ children: item.label
837
+ });
838
+ return /*#__PURE__*/jsx(Item$2, {
839
+ href: item.href,
840
+ children: item.label
841
+ });
842
+ }
843
+ const Cell = ({
844
+ field,
845
+ item
846
+ }) => {
847
+ const list = useList(field.refListKey);
848
+ if (field.display === 'count' || field.display === 'table') {
849
+ const count = item[`${field.fieldKey}Count`];
850
+ return count != null ? /*#__PURE__*/jsx(Numeral, {
851
+ value: count,
852
+ abbreviate: true
853
+ }) : null;
854
+ }
855
+ const data = item[field.fieldKey];
856
+ const items = (Array.isArray(data) ? data : [data]).filter(Boolean);
857
+ const displayItems = items.length < 3 ? items : items.slice(0, 2);
858
+ const overflow = items.length < 3 ? 0 : items.length - 2;
859
+ return /*#__PURE__*/jsxs(Text, {
860
+ children: [displayItems.map((item, index) => /*#__PURE__*/jsxs(Fragment$1, {
861
+ children: [index ? ', ' : '', /*#__PURE__*/jsx(TextLink, {
862
+ href: `/${list.path}/${item.id}`,
863
+ children: item.label || item.id
864
+ })]
865
+ }, item.id)), overflow ? `, and ${overflow} more` : null]
866
+ });
867
+ };
868
+ function controller(config) {
869
+ const {
870
+ listKey,
871
+ fieldKey: fieldKey,
872
+ label,
873
+ description
874
+ } = config;
875
+ const {
876
+ displayMode,
877
+ hideCreate,
878
+ many,
879
+ refFieldKey,
880
+ refLabelField,
881
+ refListKey,
882
+ refSearchFields
883
+ } = config.fieldMeta;
884
+ return {
885
+ refFieldKey,
886
+ many,
887
+ listKey,
888
+ fieldKey,
889
+ label,
890
+ description,
891
+ display: displayMode,
892
+ refLabelField,
893
+ refSearchFields,
894
+ refListKey,
895
+ graphqlSelection: displayMode === 'count' || displayMode === 'table' ? `${fieldKey}Count` : `${fieldKey}${many && config.fieldMeta.sort ? `(orderBy: { ${config.fieldMeta.sort.field}: ${config.fieldMeta.sort.direction.toLowerCase()} })` : ''} {
896
+ id
897
+ label: ${refLabelField}
898
+ }`,
899
+ hideCreate: hideCreate || displayMode === 'table',
900
+ columns: displayMode === 'table' ? config.fieldMeta.columns : null,
901
+ initialSort: displayMode === 'table' ? config.fieldMeta.initialSort : null,
902
+ selectFilter: displayMode === 'select' ? config.fieldMeta.filter : null,
903
+ selectSort: displayMode === 'select' ? config.fieldMeta.sort : null,
904
+ // note we're not making the state kind: 'count' when ui.displayMode is set to 'count'.
905
+ // that ui.displayMode: 'count' is really just a way to have reasonable performance
906
+ // because our other UIs don't handle relationships with a large number of items well
907
+ // but that's not a problem here since we're creating a new item so we might as well them a better UI
908
+ defaultValue: many ? {
909
+ kind: 'many',
910
+ id: null,
911
+ initialValue: [],
912
+ value: []
913
+ } : {
914
+ kind: 'one',
915
+ id: null,
916
+ value: null,
917
+ initialValue: null
918
+ },
919
+ validate(value, opts) {
920
+ if ('count' in value) return true;
921
+ return opts.isRequired ? value.kind === 'one' ? value.value !== null : value.value.length > 0 : true;
922
+ },
923
+ deserialize: data => {
924
+ if (displayMode === 'count' || displayMode === 'table') {
925
+ var _data;
926
+ return {
927
+ id: data.id,
928
+ kind: 'count',
929
+ count: (_data = data[`${config.fieldKey}Count`]) !== null && _data !== void 0 ? _data : 0
930
+ };
931
+ }
932
+ if (many) {
933
+ const value = (data[config.fieldKey] || []).map(x => ({
934
+ id: x.id,
935
+ label: x.label || x.id
936
+ }));
937
+ return {
938
+ kind: 'many',
939
+ id: data.id,
940
+ initialValue: value,
941
+ value
942
+ };
943
+ }
944
+ let value = data[config.fieldKey];
945
+ if (value) {
946
+ value = {
947
+ id: value.id,
948
+ label: value.label || value.id
949
+ };
950
+ }
951
+ return {
952
+ kind: 'one',
953
+ id: data.id,
954
+ value,
955
+ initialValue: value
956
+ };
957
+ },
958
+ serialize: state => {
959
+ if (state.kind === 'many') {
960
+ const newAllIds = new Set(state.value.map(x => x.id));
961
+ const initialIds = new Set(state.initialValue.map(x => x.id));
962
+ const disconnect = state.initialValue.filter(x => !newAllIds.has(x.id)).map(x => ({
963
+ id: x.id
964
+ }));
965
+ const connect = state.value.filter(x => !x.built && !initialIds.has(x.id)).map(x => ({
966
+ id: x.id
967
+ }));
968
+ const create = state.value.filter(x => x.built).map(x => x.data);
969
+ const output = {
970
+ ...(disconnect.length ? {
971
+ disconnect
972
+ } : {}),
973
+ ...(connect.length ? {
974
+ connect
975
+ } : {}),
976
+ ...(create.length ? {
977
+ create
978
+ } : {})
979
+ };
980
+ if (Object.keys(output).length) {
981
+ return {
982
+ [config.fieldKey]: output
983
+ };
984
+ }
985
+ } else if (state.kind === 'one') {
986
+ var _state$value, _state$initialValue;
987
+ if (state.initialValue && !state.value) return {
988
+ [config.fieldKey]: {
989
+ disconnect: true
990
+ }
991
+ };
992
+ if ((_state$value = state.value) !== null && _state$value !== void 0 && _state$value.built) {
993
+ return {
994
+ [config.fieldKey]: {
995
+ create: state.value.data
996
+ }
997
+ };
998
+ }
999
+ if (state.value && state.value.id !== ((_state$initialValue = state.initialValue) === null || _state$initialValue === void 0 ? void 0 : _state$initialValue.id)) {
1000
+ return {
1001
+ [config.fieldKey]: {
1002
+ connect: {
1003
+ id: state.value.id
1004
+ }
1005
+ }
1006
+ };
1007
+ }
1008
+ }
1009
+ return {};
1010
+ },
1011
+ filter: {
1012
+ Filter(props) {
1013
+ const foreignList = useList(refListKey);
1014
+ if (props.type === 'empty' || props.type === 'not_empty') return null;
1015
+ // TODO: show labels rather than ids
1016
+ if (props.type === 'is' || props.type === 'not_is') {
1017
+ return /*#__PURE__*/jsx(ComboboxSingle, {
1018
+ autoFocus: true,
1019
+ "aria-label": label,
1020
+ isReadOnly: false,
1021
+ labelField: refLabelField,
1022
+ searchFields: refSearchFields,
1023
+ list: foreignList,
1024
+ state: {
1025
+ kind: 'one',
1026
+ value: typeof props.value === 'string' ? {
1027
+ id: props.value,
1028
+ label: props.value,
1029
+ built: false
1030
+ } : null,
1031
+ onChange(newItem) {
1032
+ props.onChange(newItem === null ? null : newItem.id.toString());
1033
+ }
1034
+ },
1035
+ filter: config.fieldMeta.displayMode === 'select' ? config.fieldMeta.filter : null,
1036
+ sort: config.fieldMeta.displayMode === 'select' ? config.fieldMeta.sort : null
1037
+ });
1038
+ }
1039
+ const ids = Array.isArray(props.value) ? props.value : [];
1040
+ const value = ids.map(id => ({
1041
+ id,
1042
+ label: id,
1043
+ built: false
1044
+ }));
1045
+ return /*#__PURE__*/jsxs(VStack, {
1046
+ gap: "medium",
1047
+ children: [/*#__PURE__*/jsx(ComboboxMany, {
1048
+ autoFocus: true,
1049
+ "aria-label": label,
1050
+ isReadOnly: false,
1051
+ labelField: refLabelField,
1052
+ searchFields: refSearchFields,
1053
+ list: foreignList,
1054
+ state: {
1055
+ kind: 'many',
1056
+ value,
1057
+ onChange(newItem) {
1058
+ props.onChange(newItem.map(x => x.id.toString()));
1059
+ }
1060
+ },
1061
+ filter: config.fieldMeta.displayMode === 'select' ? config.fieldMeta.filter : null,
1062
+ sort: config.fieldMeta.displayMode === 'select' ? config.fieldMeta.sort : null
1063
+ }), /*#__PURE__*/jsx(TagGroup, {
1064
+ "aria-label": `related ${foreignList.plural}`,
1065
+ items: value.map(item => {
1066
+ var _item$id$toString2, _item$label2;
1067
+ return {
1068
+ id: (_item$id$toString2 = item.id.toString()) !== null && _item$id$toString2 !== void 0 ? _item$id$toString2 : '',
1069
+ label: (_item$label2 = item.label) !== null && _item$label2 !== void 0 ? _item$label2 : '',
1070
+ href: item.built ? '' : `/${foreignList.path}/${item.id}`
1071
+ };
1072
+ }),
1073
+ maxRows: 2,
1074
+ onRemove: keys => {
1075
+ props.onChange(ids.filter(id => !keys.has(id)));
1076
+ },
1077
+ renderEmptyState: () => /*#__PURE__*/jsxs(Text, {
1078
+ color: "neutralSecondary",
1079
+ size: "small",
1080
+ children: ["Select related ", foreignList.plural.toLowerCase(), "\u2026"]
1081
+ }),
1082
+ children: renderItem
1083
+ })]
1084
+ });
1085
+ },
1086
+ Label({
1087
+ label,
1088
+ type,
1089
+ value
1090
+ }) {
1091
+ const listFormatter = useListFormatter({
1092
+ style: 'short',
1093
+ type: 'disjunction'
1094
+ });
1095
+ if (['empty', 'not_empty'].includes(type)) return label.toLowerCase();
1096
+ if (['is', 'not_is'].includes(type)) return `${label.toLowerCase()} ${value}`;
1097
+ return `${label.toLowerCase()} (${listFormatter.format(value || [''])})`;
1098
+ },
1099
+ graphql: ({
1100
+ type,
1101
+ value
1102
+ }) => {
1103
+ if (type === 'empty' && !many) return {
1104
+ [config.fieldKey]: {
1105
+ equals: null
1106
+ }
1107
+ };
1108
+ if (type === 'empty' && many) return {
1109
+ [config.fieldKey]: {
1110
+ none: {}
1111
+ }
1112
+ };
1113
+ if (type === 'not_empty' && !many) return {
1114
+ [config.fieldKey]: {
1115
+ not: {
1116
+ equals: null
1117
+ }
1118
+ }
1119
+ };
1120
+ if (type === 'not_empty' && many) return {
1121
+ [config.fieldKey]: {
1122
+ some: {}
1123
+ }
1124
+ };
1125
+ if (type === 'is') return {
1126
+ [config.fieldKey]: {
1127
+ id: {
1128
+ equals: value
1129
+ }
1130
+ }
1131
+ };
1132
+ if (type === 'not_is') return {
1133
+ [config.fieldKey]: {
1134
+ not: {
1135
+ id: {
1136
+ equals: value
1137
+ }
1138
+ }
1139
+ }
1140
+ };
1141
+ if (type === 'some') return {
1142
+ [config.fieldKey]: {
1143
+ some: {
1144
+ id: {
1145
+ in: value
1146
+ }
1147
+ }
1148
+ }
1149
+ };
1150
+ if (type === 'not_some') return {
1151
+ [config.fieldKey]: {
1152
+ not: {
1153
+ some: {
1154
+ id: {
1155
+ in: value
1156
+ }
1157
+ }
1158
+ }
1159
+ }
1160
+ };
1161
+ return {
1162
+ [config.fieldKey]: {
1163
+ [type]: value
1164
+ }
1165
+ }; // uh
1166
+ },
1167
+ parseGraphQL: () => [],
1168
+ types: {
1169
+ empty: {
1170
+ label: 'Is empty',
1171
+ initialValue: null
1172
+ },
1173
+ not_empty: {
1174
+ label: 'Is not empty',
1175
+ initialValue: null
1176
+ },
1177
+ ...(many ? {
1178
+ some: {
1179
+ label: 'Is one of',
1180
+ initialValue: []
1181
+ },
1182
+ not_some: {
1183
+ label: 'Is not one of',
1184
+ initialValue: []
1185
+ }
1186
+ } : {
1187
+ is: {
1188
+ label: 'Is',
1189
+ initialValue: null
1190
+ },
1191
+ not_is: {
1192
+ label: 'Is not',
1193
+ initialValue: null
1194
+ }
1195
+ })
1196
+ }
1197
+ }
1198
+ };
1199
+ }
1200
+
1201
+ export { Cell, ComboboxMany, ComboboxSingle, Field, controller };