@pilotiq/pilotiq 0.23.1 → 0.24.2

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 (500) hide show
  1. package/CHANGELOG.md +91 -0
  2. package/boost/guidelines.md +566 -0
  3. package/boost/skills/pilotiq-fields/SKILL.md +47 -0
  4. package/boost/skills/pilotiq-fields/rules/field-catalog.md +288 -0
  5. package/boost/skills/pilotiq-fields/rules/reactive-fields.md +199 -0
  6. package/boost/skills/pilotiq-fields/rules/validation.md +198 -0
  7. package/boost/skills/pilotiq-relations/SKILL.md +47 -0
  8. package/boost/skills/pilotiq-relations/rules/relation-managers.md +256 -0
  9. package/boost/skills/pilotiq-relations/rules/repeater-relationship.md +177 -0
  10. package/boost/skills/pilotiq-resource/SKILL.md +61 -0
  11. package/boost/skills/pilotiq-resource/rules/authorization.md +242 -0
  12. package/boost/skills/pilotiq-resource/rules/defining-resources.md +228 -0
  13. package/boost/skills/pilotiq-resource/rules/page-overrides.md +296 -0
  14. package/dist/actions/exportFactory.d.ts +10 -0
  15. package/dist/actions/exportFactory.d.ts.map +1 -1
  16. package/dist/actions/exportFactory.js +10 -0
  17. package/dist/actions/exportFactory.js.map +1 -1
  18. package/dist/react/CollabRoomContext.d.ts +5 -5
  19. package/dist/react/index.d.ts +0 -1
  20. package/dist/react/index.d.ts.map +1 -1
  21. package/dist/react/index.js +0 -1
  22. package/dist/react/index.js.map +1 -1
  23. package/dist/routes/helpers.d.ts.map +1 -1
  24. package/dist/routes/helpers.js +6 -2
  25. package/dist/routes/helpers.js.map +1 -1
  26. package/dist/routes/relations.d.ts.map +1 -1
  27. package/dist/routes/relations.js +12 -0
  28. package/dist/routes/relations.js.map +1 -1
  29. package/package.json +6 -1
  30. package/.turbo/turbo-build.log +0 -8
  31. package/CLAUDE.md +0 -265
  32. package/dist/react/useCollabSeed.d.ts +0 -23
  33. package/dist/react/useCollabSeed.d.ts.map +0 -1
  34. package/dist/react/useCollabSeed.js +0 -82
  35. package/dist/react/useCollabSeed.js.map +0 -1
  36. package/src/Cluster.test.ts +0 -283
  37. package/src/Cluster.ts +0 -83
  38. package/src/Column.test.ts +0 -199
  39. package/src/Column.ts +0 -710
  40. package/src/Global.test.ts +0 -367
  41. package/src/Global.ts +0 -169
  42. package/src/Page.test.ts +0 -114
  43. package/src/Page.ts +0 -208
  44. package/src/Pilotiq.perf.test.ts +0 -252
  45. package/src/Pilotiq.test.ts +0 -129
  46. package/src/Pilotiq.ts +0 -1158
  47. package/src/PilotiqRegistry.ts +0 -36
  48. package/src/PilotiqServiceProvider.ts +0 -121
  49. package/src/RelationManager.test.ts +0 -400
  50. package/src/RelationManager.ts +0 -527
  51. package/src/RenderHook.test.ts +0 -252
  52. package/src/RenderHook.ts +0 -242
  53. package/src/Resource.test.ts +0 -284
  54. package/src/Resource.ts +0 -526
  55. package/src/RightPanel.test.ts +0 -202
  56. package/src/RightPanel.ts +0 -132
  57. package/src/Tab.test.ts +0 -91
  58. package/src/Tab.ts +0 -156
  59. package/src/UserMenuItem.ts +0 -145
  60. package/src/actions/Action.test.ts +0 -2526
  61. package/src/actions/Action.ts +0 -1515
  62. package/src/actions/ActionGroup.test.ts +0 -112
  63. package/src/actions/ActionGroup.ts +0 -173
  64. package/src/actions/attachFactory.ts +0 -172
  65. package/src/actions/bulkFactories.ts +0 -168
  66. package/src/actions/crudFactories.ts +0 -220
  67. package/src/actions/exportFactory.ts +0 -215
  68. package/src/actions/factoryHelpers.ts +0 -177
  69. package/src/actions/importFactory.ts +0 -243
  70. package/src/actions/index.ts +0 -17
  71. package/src/actions/m2mFactories.ts +0 -193
  72. package/src/actions/relationFactories.ts +0 -372
  73. package/src/applyPageHooks.test.ts +0 -463
  74. package/src/applyPageHooks.ts +0 -330
  75. package/src/authorization.test.ts +0 -483
  76. package/src/breadcrumbs.test.ts +0 -238
  77. package/src/cells/coerce.test.ts +0 -85
  78. package/src/cells/coerce.ts +0 -84
  79. package/src/clusterPaths.ts +0 -35
  80. package/src/columns/BadgeColumn.test.ts +0 -54
  81. package/src/columns/BadgeColumn.ts +0 -32
  82. package/src/columns/BooleanColumn.test.ts +0 -41
  83. package/src/columns/BooleanColumn.ts +0 -18
  84. package/src/columns/ColorColumn.test.ts +0 -37
  85. package/src/columns/ColorColumn.ts +0 -38
  86. package/src/columns/IconColumn.test.ts +0 -54
  87. package/src/columns/IconColumn.ts +0 -37
  88. package/src/columns/ImageColumn.test.ts +0 -41
  89. package/src/columns/ImageColumn.ts +0 -28
  90. package/src/columns/SelectColumn.ts +0 -98
  91. package/src/columns/TextColumn.test.ts +0 -190
  92. package/src/columns/TextColumn.ts +0 -20
  93. package/src/columns/TextInputColumn.ts +0 -68
  94. package/src/columns/ToggleColumn.ts +0 -46
  95. package/src/columns/editableColumns.test.ts +0 -238
  96. package/src/columns/index.ts +0 -9
  97. package/src/defaultGlobalPages.ts +0 -95
  98. package/src/defaultPages.test.ts +0 -634
  99. package/src/defaultPages.ts +0 -617
  100. package/src/defaultViewPage.test.ts +0 -147
  101. package/src/elements/Form.test.ts +0 -223
  102. package/src/elements/Form.ts +0 -416
  103. package/src/elements/ListTabs.ts +0 -28
  104. package/src/elements/Table.test.ts +0 -422
  105. package/src/elements/Table.ts +0 -850
  106. package/src/elements/TableGroup.test.ts +0 -260
  107. package/src/elements/TableGroup.ts +0 -334
  108. package/src/elements/dispatchAction.test.ts +0 -463
  109. package/src/elements/dispatchAction.ts +0 -355
  110. package/src/elements/dispatchForm.test.ts +0 -477
  111. package/src/elements/dispatchForm.ts +0 -1993
  112. package/src/elements/dispatchTable.test.ts +0 -1514
  113. package/src/elements/dispatchTable.ts +0 -745
  114. package/src/elements/index.ts +0 -21
  115. package/src/entries/BadgeEntry.ts +0 -39
  116. package/src/entries/CodeEntry.test.ts +0 -40
  117. package/src/entries/CodeEntry.ts +0 -52
  118. package/src/entries/ColorEntry.ts +0 -63
  119. package/src/entries/ComponentEntry.test.ts +0 -173
  120. package/src/entries/ComponentEntry.ts +0 -95
  121. package/src/entries/Entry.ts +0 -304
  122. package/src/entries/IconEntry.ts +0 -49
  123. package/src/entries/ImageEntry.ts +0 -61
  124. package/src/entries/KeyValueEntry.ts +0 -47
  125. package/src/entries/RepeatableEntry.test.ts +0 -239
  126. package/src/entries/RepeatableEntry.ts +0 -173
  127. package/src/entries/TextEntry.test.ts +0 -394
  128. package/src/entries/TextEntry.ts +0 -60
  129. package/src/entries/index.ts +0 -12
  130. package/src/entries/leaves.test.ts +0 -306
  131. package/src/entries/registry.ts +0 -54
  132. package/src/fields/BuilderField.test.ts +0 -1188
  133. package/src/fields/BuilderField.ts +0 -605
  134. package/src/fields/BuilderRelationship.test.ts +0 -811
  135. package/src/fields/CheckboxField.test.ts +0 -44
  136. package/src/fields/CheckboxField.ts +0 -27
  137. package/src/fields/CheckboxListField.test.ts +0 -99
  138. package/src/fields/CheckboxListField.ts +0 -66
  139. package/src/fields/ColorPickerField.test.ts +0 -33
  140. package/src/fields/ColorPickerField.ts +0 -25
  141. package/src/fields/DateField.ts +0 -54
  142. package/src/fields/DateTimeField.test.ts +0 -55
  143. package/src/fields/EmailField.ts +0 -16
  144. package/src/fields/Field.test.ts +0 -654
  145. package/src/fields/Field.ts +0 -817
  146. package/src/fields/FileUploadField.test.ts +0 -143
  147. package/src/fields/FileUploadField.ts +0 -159
  148. package/src/fields/HiddenField.test.ts +0 -27
  149. package/src/fields/HiddenField.ts +0 -28
  150. package/src/fields/KeyValueField.test.ts +0 -105
  151. package/src/fields/KeyValueField.ts +0 -55
  152. package/src/fields/MarkdownField.test.ts +0 -167
  153. package/src/fields/MarkdownField.ts +0 -162
  154. package/src/fields/NumberField.ts +0 -33
  155. package/src/fields/RadioField.test.ts +0 -94
  156. package/src/fields/RadioField.ts +0 -67
  157. package/src/fields/RepeaterField.test.ts +0 -1806
  158. package/src/fields/RepeaterField.ts +0 -939
  159. package/src/fields/RepeaterRelationship.test.ts +0 -1923
  160. package/src/fields/RepeaterSimple.test.ts +0 -248
  161. package/src/fields/RowButton.test.ts +0 -219
  162. package/src/fields/RowButton.ts +0 -135
  163. package/src/fields/SelectField.test.ts +0 -192
  164. package/src/fields/SelectField.ts +0 -235
  165. package/src/fields/SliderField.test.ts +0 -50
  166. package/src/fields/SliderField.ts +0 -53
  167. package/src/fields/SlugField.ts +0 -24
  168. package/src/fields/TagsInputField.test.ts +0 -154
  169. package/src/fields/TagsInputField.ts +0 -133
  170. package/src/fields/TextField.test.ts +0 -213
  171. package/src/fields/TextField.ts +0 -177
  172. package/src/fields/TextareaField.test.ts +0 -58
  173. package/src/fields/TextareaField.ts +0 -59
  174. package/src/fields/ToggleButtonsField.test.ts +0 -106
  175. package/src/fields/ToggleButtonsField.ts +0 -59
  176. package/src/fields/ToggleField.ts +0 -16
  177. package/src/fields/disableOptionsWhenSelectedInSiblingRepeaterItems.test.ts +0 -319
  178. package/src/fields/optionsResolver.ts +0 -95
  179. package/src/fields/resolveField.ts +0 -28
  180. package/src/filters/BooleanFilter.ts +0 -35
  181. package/src/filters/DateRangeFilter.test.ts +0 -194
  182. package/src/filters/DateRangeFilter.ts +0 -148
  183. package/src/filters/Filter.test.ts +0 -268
  184. package/src/filters/Filter.ts +0 -184
  185. package/src/filters/FormFilter.test.ts +0 -238
  186. package/src/filters/FormFilter.ts +0 -215
  187. package/src/filters/MultiSelectFilter.test.ts +0 -119
  188. package/src/filters/MultiSelectFilter.ts +0 -78
  189. package/src/filters/QueryBuilderFilter.test.ts +0 -662
  190. package/src/filters/QueryBuilderFilter.ts +0 -398
  191. package/src/filters/SelectFilter.ts +0 -46
  192. package/src/filters/TernaryFilter.test.ts +0 -160
  193. package/src/filters/TernaryFilter.ts +0 -72
  194. package/src/filters/TrashedFilter.test.ts +0 -149
  195. package/src/filters/TrashedFilter.ts +0 -55
  196. package/src/filters/queryBuilder/BooleanConstraint.ts +0 -31
  197. package/src/filters/queryBuilder/Constraint.ts +0 -115
  198. package/src/filters/queryBuilder/DateConstraint.ts +0 -69
  199. package/src/filters/queryBuilder/NumberConstraint.ts +0 -66
  200. package/src/filters/queryBuilder/SelectConstraint.ts +0 -72
  201. package/src/filters/queryBuilder/TextConstraint.ts +0 -64
  202. package/src/filters/queryBuilder/index.ts +0 -12
  203. package/src/icons/index.ts +0 -2
  204. package/src/icons/lucide.ts +0 -204
  205. package/src/icons/registry.test.ts +0 -56
  206. package/src/icons/registry.ts +0 -41
  207. package/src/icons/types.ts +0 -47
  208. package/src/index.ts +0 -525
  209. package/src/io/csv.test.ts +0 -142
  210. package/src/io/csv.ts +0 -170
  211. package/src/nestedRelationManagerData.test.ts +0 -547
  212. package/src/notifications/Notification.test.ts +0 -210
  213. package/src/notifications/Notification.ts +0 -354
  214. package/src/notifications/broadcast.test.ts +0 -110
  215. package/src/notifications/broadcast.ts +0 -95
  216. package/src/notifications/database.test.ts +0 -383
  217. package/src/notifications/database.ts +0 -398
  218. package/src/notifications/databaseNotifications.test.ts +0 -187
  219. package/src/notifications/dispatchNotificationAction.test.ts +0 -341
  220. package/src/notifications/dispatchNotificationAction.ts +0 -142
  221. package/src/notifications/flash.test.ts +0 -89
  222. package/src/notifications/flash.ts +0 -71
  223. package/src/notifications/index.ts +0 -45
  224. package/src/notifications/registerBroadcastAuth.test.ts +0 -134
  225. package/src/notifications/registerBroadcastAuth.ts +0 -100
  226. package/src/notifications/resolveSavedNotification.test.ts +0 -82
  227. package/src/notifications/resolveSavedNotification.ts +0 -59
  228. package/src/notifications/types.ts +0 -93
  229. package/src/orm/m2mAccessor.ts +0 -66
  230. package/src/orm/modelDefaults.test.ts +0 -633
  231. package/src/orm/modelDefaults.ts +0 -666
  232. package/src/pageData/breadcrumbs.ts +0 -288
  233. package/src/pageData/forms.ts +0 -578
  234. package/src/pageData/helpers.ts +0 -857
  235. package/src/pageData/misc.ts +0 -347
  236. package/src/pageData/navigation.ts +0 -842
  237. package/src/pageData/relationPages.ts +0 -1248
  238. package/src/pageData/relationTabs.ts +0 -286
  239. package/src/pageData/resourcePages.ts +0 -609
  240. package/src/pageData.test.ts +0 -1545
  241. package/src/pageData.ts +0 -341
  242. package/src/plugins/index.ts +0 -8
  243. package/src/plugins/themeEditor.test.ts +0 -36
  244. package/src/plugins/themeEditor.ts +0 -45
  245. package/src/react/AppShell.tsx +0 -251
  246. package/src/react/CollabExtensionFactoryRegistry.ts +0 -55
  247. package/src/react/CollabRoomContext.ts +0 -98
  248. package/src/react/CollabTextRendererRegistry.ts +0 -102
  249. package/src/react/CommandPalette.tsx +0 -375
  250. package/src/react/CurrentUserContext.tsx +0 -50
  251. package/src/react/CustomPageWrapperGate.tsx +0 -69
  252. package/src/react/CustomPageWrapperRegistry.ts +0 -45
  253. package/src/react/FieldFocusReporterRegistry.ts +0 -37
  254. package/src/react/FieldLabelSlotRegistry.ts +0 -30
  255. package/src/react/FieldPresenceRegistry.ts +0 -46
  256. package/src/react/FormCollabBindingRegistry.ts +0 -242
  257. package/src/react/FormStateContext.tsx +0 -591
  258. package/src/react/HeadHooks.tsx +0 -126
  259. package/src/react/MarkdownEditorRegistry.test.ts +0 -38
  260. package/src/react/MarkdownEditorRegistry.ts +0 -107
  261. package/src/react/NotificationActionStrip.tsx +0 -263
  262. package/src/react/NotificationBell.tsx +0 -426
  263. package/src/react/PendingSuggestionApplierRegistry.test.ts +0 -97
  264. package/src/react/PendingSuggestionApplierRegistry.ts +0 -98
  265. package/src/react/PendingSuggestionOverlayRegistry.ts +0 -54
  266. package/src/react/PendingSuggestionsContext.tsx +0 -172
  267. package/src/react/RecordWrapperGate.tsx +0 -58
  268. package/src/react/RecordWrapperRegistry.ts +0 -39
  269. package/src/react/RenderHookSlot.tsx +0 -32
  270. package/src/react/RightSidebar.tsx +0 -257
  271. package/src/react/RightSidebarContext.tsx +0 -234
  272. package/src/react/RightSidebarTrigger.tsx +0 -53
  273. package/src/react/RowCoordsContext.tsx +0 -23
  274. package/src/react/SchemaRenderer.tsx +0 -549
  275. package/src/react/SearchTrigger.tsx +0 -46
  276. package/src/react/ThemeProvider.tsx +0 -93
  277. package/src/react/ThemeSettingsPage.tsx +0 -579
  278. package/src/react/ThemeToggle.tsx +0 -20
  279. package/src/react/Toaster.tsx +0 -158
  280. package/src/react/UserMenu.tsx +0 -196
  281. package/src/react/WidgetDataContext.tsx +0 -157
  282. package/src/react/cells/EditableCell.tsx +0 -389
  283. package/src/react/component-slots.test.ts +0 -103
  284. package/src/react/component-slots.ts +0 -116
  285. package/src/react/fieldJsHandler.test.ts +0 -166
  286. package/src/react/fieldJsHandler.ts +0 -79
  287. package/src/react/fields/BuilderInput.tsx +0 -1078
  288. package/src/react/fields/CheckboxInput.tsx +0 -39
  289. package/src/react/fields/CheckboxListInput.tsx +0 -102
  290. package/src/react/fields/ColorInput.tsx +0 -71
  291. package/src/react/fields/DateFieldInput.tsx +0 -70
  292. package/src/react/fields/DateTimeInput.tsx +0 -62
  293. package/src/react/fields/FieldShell.tsx +0 -348
  294. package/src/react/fields/FileUploadInput.tsx +0 -639
  295. package/src/react/fields/HiddenInput.tsx +0 -17
  296. package/src/react/fields/KeyValueInput.tsx +0 -230
  297. package/src/react/fields/MarkdownInput.tsx +0 -560
  298. package/src/react/fields/RadioInput.tsx +0 -81
  299. package/src/react/fields/RepeaterInput.test.ts +0 -116
  300. package/src/react/fields/RepeaterInput.tsx +0 -1420
  301. package/src/react/fields/SelectFieldInput.tsx +0 -280
  302. package/src/react/fields/SliderInput.tsx +0 -81
  303. package/src/react/fields/TagsInput.tsx +0 -283
  304. package/src/react/fields/TextLikeInput.tsx +0 -256
  305. package/src/react/fields/ToggleButtonsInput.tsx +0 -60
  306. package/src/react/fields/ToggleFieldInput.tsx +0 -56
  307. package/src/react/fields/relationshipRenameDispatch.test.ts +0 -106
  308. package/src/react/fields/relationshipRenameDispatch.ts +0 -97
  309. package/src/react/fields/repeaterReconcile.test.ts +0 -114
  310. package/src/react/fields/repeaterReconcile.ts +0 -104
  311. package/src/react/fields/rowChromeButton.tsx +0 -336
  312. package/src/react/fields/rowState.ts +0 -106
  313. package/src/react/fields/syncRowGates.test.ts +0 -202
  314. package/src/react/fields/syncRowGates.ts +0 -66
  315. package/src/react/fields/textInputControls.tsx +0 -238
  316. package/src/react/fields/useRowReorderDnd.ts +0 -78
  317. package/src/react/formStateHelpers.test.ts +0 -508
  318. package/src/react/formStateHelpers.ts +0 -381
  319. package/src/react/hooks/use-mobile.ts +0 -19
  320. package/src/react/icon-context.tsx +0 -60
  321. package/src/react/index.ts +0 -195
  322. package/src/react/layouts/SidebarLayout.tsx +0 -250
  323. package/src/react/layouts/TopbarLayout.tsx +0 -258
  324. package/src/react/navigate.tsx +0 -37
  325. package/src/react/onProviderSynced.test.ts +0 -90
  326. package/src/react/parseRecordEditUrl.test.ts +0 -122
  327. package/src/react/parseRecordEditUrl.ts +0 -94
  328. package/src/react/persistedState.ts +0 -40
  329. package/src/react/registry.ts +0 -48
  330. package/src/react/right-panel-registry.tsx +0 -47
  331. package/src/react/schemaRenderer/AlertRenderer.tsx +0 -112
  332. package/src/react/schemaRenderer/EntryRenderer.tsx +0 -501
  333. package/src/react/schemaRenderer/SectionRenderer.tsx +0 -120
  334. package/src/react/schemaRenderer/SimpleElements.tsx +0 -306
  335. package/src/react/schemaRenderer/TabsRenderer.tsx +0 -62
  336. package/src/react/schemaRenderer/WizardRenderer.tsx +0 -338
  337. package/src/react/schemaRenderer/action/ActionGroupTrigger.tsx +0 -177
  338. package/src/react/schemaRenderer/action/ActionModalDialog.tsx +0 -273
  339. package/src/react/schemaRenderer/action/ConfirmActionDialog.tsx +0 -61
  340. package/src/react/schemaRenderer/action/HandlerActionButton.tsx +0 -43
  341. package/src/react/schemaRenderer/action/MethodActionButton.tsx +0 -64
  342. package/src/react/schemaRenderer/action/buttons.tsx +0 -99
  343. package/src/react/schemaRenderer/action/helpers.ts +0 -140
  344. package/src/react/schemaRenderer/action/renderAction.tsx +0 -245
  345. package/src/react/schemaRenderer/columnFormat.ts +0 -65
  346. package/src/react/schemaRenderer/constants.ts +0 -50
  347. package/src/react/schemaRenderer/form/FormRenderer.tsx +0 -274
  348. package/src/react/schemaRenderer/form/renderField.tsx +0 -511
  349. package/src/react/schemaRenderer/helpers.tsx +0 -81
  350. package/src/react/schemaRenderer/table/CardsLayoutBody.tsx +0 -308
  351. package/src/react/schemaRenderer/table/TableRenderer.tsx +0 -123
  352. package/src/react/schemaRenderer/table/TableRendererBody.tsx +0 -974
  353. package/src/react/schemaRenderer/table/filters.tsx +0 -1233
  354. package/src/react/schemaRenderer/table/formatCell.tsx +0 -264
  355. package/src/react/schemaRenderer/table/links.tsx +0 -112
  356. package/src/react/schemaRenderer/table/renderRowActions.tsx +0 -52
  357. package/src/react/schemaRenderer/table/url.tsx +0 -143
  358. package/src/react/theme-preview/apply.ts +0 -99
  359. package/src/react/theme-preview/build-html.ts +0 -436
  360. package/src/react/ui/button.tsx +0 -51
  361. package/src/react/ui/calendar.tsx +0 -67
  362. package/src/react/ui/checkbox.tsx +0 -29
  363. package/src/react/ui/dialog.tsx +0 -108
  364. package/src/react/ui/dropdown-menu.tsx +0 -97
  365. package/src/react/ui/input.tsx +0 -20
  366. package/src/react/ui/label.tsx +0 -21
  367. package/src/react/ui/popover.tsx +0 -50
  368. package/src/react/ui/select.tsx +0 -169
  369. package/src/react/ui/separator.tsx +0 -25
  370. package/src/react/ui/sheet.tsx +0 -136
  371. package/src/react/ui/sidebar.tsx +0 -723
  372. package/src/react/ui/skeleton.tsx +0 -13
  373. package/src/react/ui/slider.tsx +0 -34
  374. package/src/react/ui/switch.tsx +0 -28
  375. package/src/react/ui/table.tsx +0 -105
  376. package/src/react/ui/tabs.tsx +0 -63
  377. package/src/react/ui/textarea.tsx +0 -18
  378. package/src/react/ui/tooltip.tsx +0 -64
  379. package/src/react/useCollabSeed.ts +0 -86
  380. package/src/react/useResizableWidth.ts +0 -139
  381. package/src/react/utils.ts +0 -6
  382. package/src/react/widgetRegistry.test.ts +0 -43
  383. package/src/react/widgetRegistry.ts +0 -50
  384. package/src/react/widgets/StatsOverviewRenderer.tsx +0 -232
  385. package/src/react/widgets/TableWidgetRenderer.tsx +0 -231
  386. package/src/react/widgets/ViewRenderer.tsx +0 -71
  387. package/src/relationManagerData.test.ts +0 -1595
  388. package/src/richtext/index.ts +0 -8
  389. package/src/richtext/registry.ts +0 -89
  390. package/src/routes/globals.ts +0 -148
  391. package/src/routes/guard.test.ts +0 -325
  392. package/src/routes/helpers.ts +0 -700
  393. package/src/routes/pages.ts +0 -175
  394. package/src/routes/panel.ts +0 -204
  395. package/src/routes/relations.ts +0 -1227
  396. package/src/routes/resources.ts +0 -781
  397. package/src/routes/theme.ts +0 -91
  398. package/src/routes-nested-relations.test.ts +0 -676
  399. package/src/routes-relations.test.ts +0 -972
  400. package/src/routes.test.ts +0 -2027
  401. package/src/routes.ts +0 -303
  402. package/src/schema/Alert.test.ts +0 -109
  403. package/src/schema/Alert.ts +0 -131
  404. package/src/schema/Block.ts +0 -169
  405. package/src/schema/Breadcrumbs.ts +0 -40
  406. package/src/schema/Card.ts +0 -35
  407. package/src/schema/Divider.ts +0 -20
  408. package/src/schema/Element.ts +0 -219
  409. package/src/schema/EmptyState.test.ts +0 -37
  410. package/src/schema/EmptyState.ts +0 -63
  411. package/src/schema/Fieldset.ts +0 -43
  412. package/src/schema/Grid.ts +0 -43
  413. package/src/schema/Group.ts +0 -30
  414. package/src/schema/Heading.ts +0 -39
  415. package/src/schema/Html.ts +0 -67
  416. package/src/schema/Icon.ts +0 -54
  417. package/src/schema/Image.ts +0 -57
  418. package/src/schema/LinkTag.ts +0 -41
  419. package/src/schema/Markdown.ts +0 -85
  420. package/src/schema/MetaTag.ts +0 -41
  421. package/src/schema/RelationTabs.ts +0 -71
  422. package/src/schema/ScriptTag.ts +0 -55
  423. package/src/schema/Section.ts +0 -160
  424. package/src/schema/ServerDataElement.test.ts +0 -140
  425. package/src/schema/ServerDataElement.ts +0 -156
  426. package/src/schema/SlotComponent.test.ts +0 -77
  427. package/src/schema/SlotComponent.ts +0 -71
  428. package/src/schema/Split.ts +0 -50
  429. package/src/schema/Stat.test.ts +0 -118
  430. package/src/schema/Stat.ts +0 -154
  431. package/src/schema/StatsOverview.test.ts +0 -141
  432. package/src/schema/StatsOverview.ts +0 -119
  433. package/src/schema/StyleTag.ts +0 -35
  434. package/src/schema/TableWidget.test.ts +0 -297
  435. package/src/schema/TableWidget.ts +0 -289
  436. package/src/schema/Tabs.ts +0 -79
  437. package/src/schema/Text.ts +0 -58
  438. package/src/schema/UnorderedList.ts +0 -49
  439. package/src/schema/View.test.ts +0 -111
  440. package/src/schema/View.ts +0 -127
  441. package/src/schema/Wizard.ts +0 -220
  442. package/src/schema/containers.test.ts +0 -564
  443. package/src/schema/headTags.test.ts +0 -134
  444. package/src/schema/index.ts +0 -40
  445. package/src/schema/primes.test.ts +0 -269
  446. package/src/schema/resolveSchema.test.ts +0 -379
  447. package/src/schema/resolveSchema.ts +0 -917
  448. package/src/schema/sanitize.ts +0 -58
  449. package/src/search.test.ts +0 -446
  450. package/src/search.ts +0 -178
  451. package/src/sessionFilters.test.ts +0 -375
  452. package/src/sessionFilters.ts +0 -143
  453. package/src/slot-components/index.ts +0 -10
  454. package/src/slot-components/registry.ts +0 -56
  455. package/src/styles/file-upload.css +0 -13
  456. package/src/summarizers/Summarizer.test.ts +0 -84
  457. package/src/summarizers/Summarizer.ts +0 -123
  458. package/src/summarizers/index.ts +0 -11
  459. package/src/theme/base-colors.ts +0 -68
  460. package/src/theme/chart-colors.ts +0 -50
  461. package/src/theme/colors.ts +0 -447
  462. package/src/theme/generate-css.test.ts +0 -139
  463. package/src/theme/generate-css.ts +0 -44
  464. package/src/theme/generate-scale.test.ts +0 -106
  465. package/src/theme/generate-scale.ts +0 -97
  466. package/src/theme/icon-map.ts +0 -42
  467. package/src/theme/index.ts +0 -34
  468. package/src/theme/migrate.test.ts +0 -178
  469. package/src/theme/migrate.ts +0 -81
  470. package/src/theme/presets.ts +0 -135
  471. package/src/theme/radius.ts +0 -18
  472. package/src/theme/resolve.test.ts +0 -238
  473. package/src/theme/resolve.ts +0 -96
  474. package/src/theme/spacing.ts +0 -18
  475. package/src/theme/storage.test.ts +0 -126
  476. package/src/theme/storage.ts +0 -106
  477. package/src/theme/theme-colors.ts +0 -88
  478. package/src/theme/types.ts +0 -125
  479. package/src/uploads/UploadAdapter.ts +0 -35
  480. package/src/uploads/index.ts +0 -2
  481. package/src/uploads/localUpload.test.ts +0 -70
  482. package/src/uploads/localUpload.ts +0 -84
  483. package/src/validation/Validator.ts +0 -49
  484. package/src/validation/index.ts +0 -28
  485. package/src/validation/rules.ts +0 -78
  486. package/src/validation/runValidators.ts +0 -435
  487. package/src/validation/uniqueValidator.test.ts +0 -196
  488. package/src/validation/uniqueValidator.ts +0 -133
  489. package/src/validation/validators.test.ts +0 -268
  490. package/src/vite.test.ts +0 -184
  491. package/src/vite.ts +0 -787
  492. package/src/widgets/index.ts +0 -10
  493. package/src/widgets/registry.ts +0 -45
  494. package/src/widgets.test.ts +0 -592
  495. package/tsconfig.build.json +0 -11
  496. package/tsconfig.json +0 -4
  497. package/tsconfig.test.json +0 -10
  498. package/views/react/Dashboard.tsx +0 -27
  499. package/views/react/Resources/Form.tsx +0 -102
  500. package/views/react/Resources/Index.tsx +0 -49
@@ -1,304 +0,0 @@
1
- import { Element, type ElementMeta } from '../schema/Element.js'
2
- import type { RenderContext } from '../schema/resolveSchema.js'
3
-
4
- /**
5
- * Per-record formatter callback. Receives the resolved state value and the
6
- * full record; returns the rendered string. Runs server-side at resolve
7
- * time — output is stamped on `EntryMeta._formatted` so the renderer can
8
- * skip re-running the format spec.
9
- */
10
- export type EntryFormatStateHandler = (
11
- value: unknown,
12
- record: Record<string, unknown>,
13
- ) => string
14
-
15
- /**
16
- * Override for `Entry.resolveValue`. String form is dotted-path traversal
17
- * (`'author.name'`, `'tags.0.name'`); function form runs the user handler
18
- * with the full record. Used for joins, computed columns, or anywhere the
19
- * value isn't `record[name]`.
20
- */
21
- export type EntryStateResolver =
22
- | string
23
- | ((record: Record<string, unknown>) => unknown)
24
-
25
- /** Built-in formatters — same shape as `ColumnFormat` so the renderer
26
- * reuses `applyColumnFormat()` unchanged. */
27
- export type EntryFormat =
28
- | { kind: 'dateTime'; pattern?: string }
29
- | { kind: 'since' }
30
- | { kind: 'money'; currency: string; locale?: string }
31
- | { kind: 'numeric'; decimals?: number; locale?: string }
32
- | { kind: 'limit'; chars: number }
33
-
34
- export type EntryWeight = 'normal' | 'medium' | 'semibold' | 'bold'
35
- export type EntryColor = 'default' | 'muted' | 'primary' | 'destructive' | 'success' | 'warning' | 'info'
36
- export type EntrySize = 'xs' | 'sm' | 'base' | 'lg' | 'xl'
37
-
38
- /**
39
- * JSON shape sent to the client for every entry. Subclasses extend the
40
- * union via `entryType` (`'text' | 'badge' | 'icon' | 'image'`) and
41
- * tack on subclass-specific keys without further widening.
42
- */
43
- export interface EntryMeta extends ElementMeta {
44
- type: 'entry'
45
- entryType: string
46
- name: string
47
- label: string
48
- value: unknown
49
- inlineLabel?: boolean
50
- default?: string
51
- helperText?: string
52
- tooltip?: string
53
- weight?: EntryWeight
54
- color?: EntryColor
55
- size?: EntrySize
56
- format?: EntryFormat
57
- copyable?: { label?: string }
58
- /**
59
- * Server-evaluated `formatStateUsing` output. The renderer prefers this
60
- * over re-applying `format` when present (mirrors the `Column._formatted`
61
- * convention from Plan #2).
62
- */
63
- _formatted?: string
64
- lineClamp?: number
65
- wrap?: boolean
66
- }
67
-
68
- /**
69
- * Read-only sibling of `Field`. Renders a label-value pair on `ViewPage`
70
- * (or anywhere `Resource.detail()` returns elements).
71
- *
72
- * Entries resolve their value from `ctx.record[name]` at meta-build time
73
- * — they're inert templates with no input components, no validators, no
74
- * submit chrome. The cosmetic surface (`color / weight / size / tooltip`)
75
- * mirrors the `Column` chrome so rows of a table and detail-page entries
76
- * stay visually consistent.
77
- *
78
- * Subclasses set the `entryType` discriminator (`'text' | 'badge' | …`)
79
- * which the renderer dispatches on; everything else lives on the base.
80
- */
81
- export abstract class Entry extends Element {
82
- protected _name: string
83
- protected _label?: string
84
- protected _inlineLabel = false
85
- protected _default?: string
86
- protected _helperText?: string
87
- protected _tooltip?: string
88
- protected _weight?: EntryWeight
89
- protected _color?: EntryColor
90
- protected _size?: EntrySize
91
- protected _format?: EntryFormat
92
- protected _formatState?: EntryFormatStateHandler
93
- protected _state?: EntryStateResolver
94
- protected _copyable?: { label?: string }
95
- protected _lineClamp?: number
96
- protected _wrap = false
97
-
98
- protected constructor(name: string) {
99
- super()
100
- this._name = name
101
- }
102
-
103
- /** Subclasses set the wire-side discriminator (`'text' | 'badge' | …`). */
104
- protected abstract getEntryType(): string
105
-
106
- getType(): string { return 'entry' }
107
- getName(): string { return this._name }
108
-
109
- // ─── Chrome ───────────────────────────────────────────
110
-
111
- /** Override the auto-derived label. Default = startCase of `name`. */
112
- label(text: string): this { this._label = text; return this }
113
-
114
- /** Render label to the left of the value rather than above it. */
115
- inlineLabel(v = true): this { this._inlineLabel = v; return this }
116
-
117
- /** Fallback string when the resolved value is null / undefined / empty. */
118
- default(s: string): this { this._default = s; return this }
119
- /** Alias matching the field-side spelling. */
120
- placeholder(s: string): this { return this.default(s) }
121
-
122
- helperText(text: string): this { this._helperText = text; return this }
123
- tooltip(text: string): this { this._tooltip = text; return this }
124
-
125
- weight(w: EntryWeight): this { this._weight = w; return this }
126
- color(c: EntryColor): this { this._color = c; return this }
127
- size(s: EntrySize): this { this._size = s; return this }
128
-
129
- /** Truncate the value with an ellipsis when it spills onto more than `n`
130
- * lines (CSS `-webkit-line-clamp`). Mutually exclusive with `wrap()`. */
131
- lineClamp(n: number): this { this._lineClamp = n; return this }
132
-
133
- /** Allow the value to wrap onto multiple lines. Without this the value
134
- * is rendered with `whitespace-nowrap`. */
135
- wrap(v = true): this { this._wrap = v; return this }
136
-
137
- // ─── Built-in formatters (mirrors Column) ─────────────
138
-
139
- dateTime(pattern?: string): this {
140
- this._format = pattern ? { kind: 'dateTime', pattern } : { kind: 'dateTime' }
141
- return this
142
- }
143
-
144
- since(): this {
145
- this._format = { kind: 'since' }
146
- return this
147
- }
148
-
149
- money(currency: string, locale?: string): this {
150
- this._format = locale ? { kind: 'money', currency, locale } : { kind: 'money', currency }
151
- return this
152
- }
153
-
154
- numeric(opts: { decimals?: number; locale?: string } = {}): this {
155
- this._format = {
156
- kind: 'numeric',
157
- ...(opts.decimals !== undefined ? { decimals: opts.decimals } : {}),
158
- ...(opts.locale !== undefined ? { locale: opts.locale } : {}),
159
- }
160
- return this
161
- }
162
-
163
- limit(chars: number): this {
164
- this._format = { kind: 'limit', chars }
165
- return this
166
- }
167
-
168
- /** Per-record formatter — receives the resolved state value and the full
169
- * record, returns the display string. Wins over `format` when both are
170
- * set (output stamped on `_formatted`). */
171
- formatStateUsing(fn: EntryFormatStateHandler): this {
172
- this._formatState = fn
173
- return this
174
- }
175
-
176
- /** Render a copy-icon button next to the value. v1 copies via the
177
- * client `navigator.clipboard.writeText` of the *raw* state value, or
178
- * the formatted string when `formatStateUsing` is set. */
179
- copyable(label?: string): this {
180
- this._copyable = label !== undefined ? { label } : {}
181
- return this
182
- }
183
-
184
- /**
185
- * Override the default `record[name]` lookup. String form does dotted-
186
- * path traversal — `'author.name'`, `'tags.0.label'`; missing
187
- * intermediates resolve to `undefined`. Function form runs the
188
- * user-supplied accessor with the full record.
189
- *
190
- * The entry's `name` still drives the auto-derived label and the wire-
191
- * side discriminator key, so use `.label(...)` alongside when the path
192
- * doesn't read well as a heading.
193
- *
194
- * @example
195
- * TextEntry.make('authorName').state('author.name').label('Author')
196
- * TextEntry.make('total').state(r => Number(r.subtotal) + Number(r.tax))
197
- */
198
- state(resolver: EntryStateResolver): this {
199
- this._state = resolver
200
- return this
201
- }
202
-
203
- // ─── Resolution ───────────────────────────────────────
204
-
205
- /** Read the state value out of the loaded record. Honors `state()`
206
- * override (string dotted-path or accessor fn) when set; otherwise
207
- * falls back to `record[name]`. */
208
- resolveValue(ctx?: RenderContext): unknown {
209
- const record = ctx?.record as Record<string, unknown> | undefined
210
- if (record === undefined || record === null) return undefined
211
- if (this._state === undefined) return record[this._name]
212
- if (typeof this._state === 'function') {
213
- try { return this._state(record) }
214
- catch { return undefined }
215
- }
216
- return readDottedPath(record, this._state)
217
- }
218
-
219
- /** Default label = startCase of the attribute name. */
220
- protected deriveLabel(): string {
221
- if (this._label !== undefined) return this._label
222
- if (!this._name) return ''
223
- return this._name
224
- .replace(/([A-Z])/g, ' $1')
225
- .replace(/[_-]+/g, ' ')
226
- .replace(/^./, c => c.toUpperCase())
227
- .trim()
228
- }
229
-
230
- /**
231
- * Build the wire-side meta. Subclasses override to add type-specific
232
- * keys; all should call `super.toMeta(ctx)` first and spread.
233
- *
234
- * Async because `formatStateUsing` may want to await a lookup; v1
235
- * callers pass synchronous handlers but the contract leaves room.
236
- */
237
- toMeta(ctx?: RenderContext): EntryMeta | Promise<EntryMeta> {
238
- const value = this.resolveValue(ctx)
239
- const record = (ctx?.record ?? {}) as Record<string, unknown>
240
-
241
- const meta: EntryMeta = {
242
- type: 'entry',
243
- entryType: this.getEntryType(),
244
- name: this._name,
245
- label: this.deriveLabel(),
246
- value,
247
- }
248
- if (this._inlineLabel) meta.inlineLabel = true
249
- if (this._default !== undefined) meta.default = this._default
250
- if (this._helperText !== undefined) meta.helperText = this._helperText
251
- if (this._tooltip !== undefined) meta.tooltip = this._tooltip
252
- if (this._weight !== undefined) meta.weight = this._weight
253
- if (this._color !== undefined) meta.color = this._color
254
- if (this._size !== undefined) meta.size = this._size
255
- if (this._format !== undefined) meta.format = this._format
256
- if (this._copyable !== undefined) meta.copyable = this._copyable
257
- if (this._lineClamp !== undefined) meta.lineClamp = this._lineClamp
258
- if (this._wrap) meta.wrap = true
259
-
260
- if (this._formatState) {
261
- try {
262
- meta._formatted = this._formatState(value, record)
263
- } catch {
264
- // Fail-soft — drop the formatted string and let the client fall
265
- // back to the raw value or built-in `format`. Matches the
266
- // posture of `Column.formatStateUsing` (errors don't crash the
267
- // page-data builder).
268
- }
269
- }
270
-
271
- return meta
272
- }
273
- }
274
-
275
- /** Type guard mirroring `isServerDataElement` / `isRepeaterField`. Lets
276
- * walkers branch on entries without `instanceof`-tripping over Vite
277
- * module-cache duplication (`feedback_vite_ssr_module_dup_instanceof`). */
278
- export function isEntry(el: Element): el is Entry {
279
- return el.getType() === 'entry'
280
- }
281
-
282
- /** Walk a dotted path against an arbitrary record / array shape; bail to
283
- * `undefined` on any missing intermediate. Numeric segments index into
284
- * arrays. Inlined here rather than reused from `dispatchForm.ts` because
285
- * Entry has no other dependency on the form pipeline and keeping the
286
- * schema layer free of submit-side imports avoids a cycle. */
287
- function readDottedPath(record: Record<string, unknown>, path: string): unknown {
288
- if (path === '') return record
289
- const segments = path.split('.')
290
- let cur: unknown = record
291
- for (const seg of segments) {
292
- if (cur === null || cur === undefined) return undefined
293
- if (Array.isArray(cur)) {
294
- const idx = Number(seg)
295
- if (!Number.isInteger(idx)) return undefined
296
- cur = cur[idx]
297
- } else if (typeof cur === 'object') {
298
- cur = (cur as Record<string, unknown>)[seg]
299
- } else {
300
- return undefined
301
- }
302
- }
303
- return cur
304
- }
@@ -1,49 +0,0 @@
1
- import { Entry, type EntryMeta } from './Entry.js'
2
- import type { RenderContext } from '../schema/resolveSchema.js'
3
-
4
- /** Per-value icon mapping. `icon` is a registry name (`getIcon(name)`);
5
- * `color` is one of the standard column-color tokens; `label` overrides
6
- * the accessible label (defaults to the raw value). */
7
- export interface IconEntryOption {
8
- icon: string
9
- color?: string
10
- label?: string
11
- }
12
-
13
- /**
14
- * Read-only sibling of `IconColumn` / `BooleanColumn`. Renders an icon
15
- * for the resolved state value via a value→icon map. Use for status
16
- * indicators on detail pages (active/inactive, paid/unpaid, …).
17
- *
18
- * @example
19
- * IconEntry.make('verified').options({
20
- * true: { icon: 'check-circle', color: 'success', label: 'Verified' },
21
- * false: { icon: 'x-circle', color: 'destructive', label: 'Unverified' },
22
- * })
23
- */
24
- export class IconEntry extends Entry {
25
- private _options: Record<string, IconEntryOption> = {}
26
-
27
- private constructor(name: string) {
28
- super(name)
29
- }
30
-
31
- static make(name: string): IconEntry {
32
- return new IconEntry(name)
33
- }
34
-
35
- options(map: Record<string, IconEntryOption>): this {
36
- this._options = { ...this._options, ...map }
37
- return this
38
- }
39
-
40
- protected override getEntryType(): string { return 'icon' }
41
-
42
- override async toMeta(ctx?: RenderContext): Promise<EntryMeta> {
43
- const meta = await Promise.resolve(super.toMeta(ctx)) as EntryMeta & { options?: Record<string, IconEntryOption> }
44
- if (Object.keys(this._options).length > 0) {
45
- meta.options = this._options
46
- }
47
- return meta
48
- }
49
- }
@@ -1,61 +0,0 @@
1
- import { Entry, type EntryMeta } from './Entry.js'
2
- import type { RenderContext } from '../schema/resolveSchema.js'
3
-
4
- export type ImageEntryShape = 'square' | 'rounded' | 'circle'
5
-
6
- /**
7
- * Read-only sibling of `ImageColumn` / the `Image` display prime, but
8
- * record-bound. The state value is the image URL; `.width(px) / .height(px)`
9
- * (or the `.dimensions(px)` square sugar) control the rendered size;
10
- * `.square() / .rounded() / .circle()` pick the border-radius shape.
11
- *
12
- * `Entry.size(EntrySize)` is inherited but doesn't affect image rendering
13
- * — it's the text-size token used by `TextEntry`. Use `dimensions()` for
14
- * pixel sizing instead.
15
- *
16
- * @example
17
- * ImageEntry.make('avatarUrl').dimensions(96).circle()
18
- */
19
- export class ImageEntry extends Entry {
20
- private _width = 64
21
- private _height = 64
22
- private _imageShape: ImageEntryShape = 'rounded'
23
-
24
- private constructor(name: string) {
25
- super(name)
26
- }
27
-
28
- static make(name: string): ImageEntry {
29
- return new ImageEntry(name)
30
- }
31
-
32
- width(px: number): this { this._width = px; return this }
33
- height(px: number): this { this._height = px; return this }
34
-
35
- /** Square sugar — sets width and height to the same pixel value. */
36
- dimensions(px: number): this {
37
- this._width = px
38
- this._height = px
39
- return this
40
- }
41
-
42
- square(): this { this._imageShape = 'square'; return this }
43
- rounded(): this { this._imageShape = 'rounded'; return this }
44
- circle(): this { this._imageShape = 'circle'; return this }
45
-
46
- protected override getEntryType(): string { return 'image' }
47
-
48
- override async toMeta(ctx?: RenderContext): Promise<EntryMeta> {
49
- const meta = await Promise.resolve(super.toMeta(ctx)) as EntryMeta & {
50
- imageSize?: number
51
- imageWidth?: number
52
- imageHeight?: number
53
- imageShape?: ImageEntryShape
54
- }
55
- meta.imageWidth = this._width
56
- meta.imageHeight = this._height
57
- meta.imageShape = this._imageShape
58
- if (this._width === this._height) meta.imageSize = this._width
59
- return meta
60
- }
61
- }
@@ -1,47 +0,0 @@
1
- import { Entry, type EntryMeta } from './Entry.js'
2
- import type { RenderContext } from '../schema/resolveSchema.js'
3
-
4
- /**
5
- * Read-only sibling of `KeyValueField`. Renders a `Record<string, unknown>`
6
- * (or any plain object) as a two-column key/value table. Useful for debug
7
- * surfaces — request headers, webhook payloads, settings blobs.
8
- *
9
- * The state value at `ctx.record[name]` may be:
10
- * - a plain object → rendered as key→value rows
11
- * - a JSON string → parsed and rendered (admin-trusted; non-JSON falls
12
- * through as a single "value" entry)
13
- * - null / undefined / empty → renders the `default()` placeholder
14
- *
15
- * Values that are themselves objects / arrays are stringified via JSON
16
- * for compactness; primitives render as their string form.
17
- *
18
- * @example
19
- * KeyValueEntry.make('headers').keyLabel('Header').valueLabel('Value')
20
- */
21
- export class KeyValueEntry extends Entry {
22
- private _keyLabel = 'Key'
23
- private _valueLabel = 'Value'
24
-
25
- private constructor(name: string) {
26
- super(name)
27
- }
28
-
29
- static make(name: string): KeyValueEntry {
30
- return new KeyValueEntry(name)
31
- }
32
-
33
- keyLabel(label: string): this { this._keyLabel = label; return this }
34
- valueLabel(label: string): this { this._valueLabel = label; return this }
35
-
36
- protected override getEntryType(): string { return 'keyValue' }
37
-
38
- override async toMeta(ctx?: RenderContext): Promise<EntryMeta> {
39
- const meta = await Promise.resolve(super.toMeta(ctx)) as EntryMeta & {
40
- keyLabel?: string
41
- valueLabel?: string
42
- }
43
- meta.keyLabel = this._keyLabel
44
- meta.valueLabel = this._valueLabel
45
- return meta
46
- }
47
- }