@pilotiq/pilotiq 0.4.0 → 0.6.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 (81) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +11 -1
  3. package/dist/Column.d.ts +36 -0
  4. package/dist/Column.d.ts.map +1 -1
  5. package/dist/Column.js +24 -0
  6. package/dist/Column.js.map +1 -1
  7. package/dist/RenderHook.d.ts +2 -2
  8. package/dist/RenderHook.d.ts.map +1 -1
  9. package/dist/RenderHook.js +8 -0
  10. package/dist/RenderHook.js.map +1 -1
  11. package/dist/applyPageHooks.d.ts.map +1 -1
  12. package/dist/applyPageHooks.js +76 -0
  13. package/dist/applyPageHooks.js.map +1 -1
  14. package/dist/elements/dispatchForm.d.ts +14 -6
  15. package/dist/elements/dispatchForm.d.ts.map +1 -1
  16. package/dist/elements/dispatchForm.js +28 -8
  17. package/dist/elements/dispatchForm.js.map +1 -1
  18. package/dist/fields/TextField.d.ts +10 -0
  19. package/dist/fields/TextField.d.ts.map +1 -1
  20. package/dist/fields/TextField.js +11 -0
  21. package/dist/fields/TextField.js.map +1 -1
  22. package/dist/index.d.ts +1 -0
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +1 -0
  25. package/dist/index.js.map +1 -1
  26. package/dist/pageData.d.ts.map +1 -1
  27. package/dist/pageData.js +32 -4
  28. package/dist/pageData.js.map +1 -1
  29. package/dist/react/SchemaRenderer.d.ts.map +1 -1
  30. package/dist/react/SchemaRenderer.js +25 -4
  31. package/dist/react/SchemaRenderer.js.map +1 -1
  32. package/dist/react/cells/EditableCell.d.ts.map +1 -1
  33. package/dist/react/cells/EditableCell.js +6 -1
  34. package/dist/react/cells/EditableCell.js.map +1 -1
  35. package/dist/routes.d.ts.map +1 -1
  36. package/dist/routes.js +35 -0
  37. package/dist/routes.js.map +1 -1
  38. package/dist/schema/SlotComponent.d.ts +49 -0
  39. package/dist/schema/SlotComponent.d.ts.map +1 -0
  40. package/dist/schema/SlotComponent.js +65 -0
  41. package/dist/schema/SlotComponent.js.map +1 -0
  42. package/dist/schema/Wizard.d.ts +37 -0
  43. package/dist/schema/Wizard.d.ts.map +1 -1
  44. package/dist/schema/Wizard.js +21 -0
  45. package/dist/schema/Wizard.js.map +1 -1
  46. package/dist/schema/index.d.ts +1 -0
  47. package/dist/schema/index.d.ts.map +1 -1
  48. package/dist/schema/index.js +1 -0
  49. package/dist/schema/index.js.map +1 -1
  50. package/dist/slot-components/index.d.ts +2 -0
  51. package/dist/slot-components/index.d.ts.map +1 -0
  52. package/dist/slot-components/index.js +6 -0
  53. package/dist/slot-components/index.js.map +1 -0
  54. package/dist/slot-components/registry.d.ts +41 -0
  55. package/dist/slot-components/registry.d.ts.map +1 -0
  56. package/dist/slot-components/registry.js +17 -0
  57. package/dist/slot-components/registry.js.map +1 -0
  58. package/package.json +5 -1
  59. package/src/Column.test.ts +23 -0
  60. package/src/Column.ts +44 -0
  61. package/src/RenderHook.ts +16 -0
  62. package/src/applyPageHooks.test.ts +167 -2
  63. package/src/applyPageHooks.ts +88 -0
  64. package/src/elements/dispatchForm.test.ts +23 -1
  65. package/src/elements/dispatchForm.ts +33 -9
  66. package/src/fields/TextField.test.ts +45 -0
  67. package/src/fields/TextField.ts +13 -0
  68. package/src/index.ts +1 -0
  69. package/src/pageData.test.ts +83 -0
  70. package/src/pageData.ts +37 -4
  71. package/src/react/SchemaRenderer.tsx +43 -4
  72. package/src/react/cells/EditableCell.tsx +5 -1
  73. package/src/routes.test.ts +141 -0
  74. package/src/routes.ts +32 -0
  75. package/src/schema/SlotComponent.test.ts +77 -0
  76. package/src/schema/SlotComponent.ts +71 -0
  77. package/src/schema/Wizard.ts +45 -0
  78. package/src/schema/containers.test.ts +28 -0
  79. package/src/schema/index.ts +1 -0
  80. package/src/slot-components/index.ts +10 -0
  81. package/src/slot-components/registry.ts +56 -0
@@ -0,0 +1,56 @@
1
+ import type { ComponentType } from 'react'
2
+
3
+ /**
4
+ * Render-time component registry for `SlotComponent` schema elements.
5
+ * Mirrors the widget / entry registry pattern: users register components
6
+ * by name in their app's `bootstrap/providers.ts` (or via a plugin's
7
+ * `register(panel)` hook), the `SlotComponent` ships the registered name
8
+ * on the wire (`{ component: 'BookmarkButton' }`), and the renderer
9
+ * looks up the actual component at render through `getSlotComponent()`.
10
+ *
11
+ * Why a runtime registry rather than the build-time `_components.ts`
12
+ * manifest the icon system uses: slot components typically live in plugin
13
+ * packages or app-level bootstrap files, not on Resource / Global / Page
14
+ * top-level statics, so the existing manifest walker doesn't see them. A
15
+ * runtime register-by-name keeps the wire compact and mirrors the
16
+ * `registerWidgetComponents / registerEntryComponents` precedent.
17
+ *
18
+ * @example
19
+ * // bootstrap/providers.ts
20
+ * import { registerSlotComponents } from '@pilotiq/pilotiq/slot-components'
21
+ * import { BookmarkButton } from '#components/BookmarkButton.js'
22
+ * registerSlotComponents({ BookmarkButton })
23
+ *
24
+ * // Then a render-hook contribution (or any schema slot) can reference it:
25
+ * panel.renderHook(
26
+ * 'panels::resource.pages.edit-record.header.actions.before',
27
+ * () => [SlotComponent.make('BookmarkButton').props({ … })],
28
+ * )
29
+ */
30
+
31
+ /**
32
+ * Props handed to every registered slot component. The schema-side
33
+ * `SlotComponent.props({...})` setter ships through verbatim — pack
34
+ * everything the component needs into that bag (basePath, recordId,
35
+ * pre-resolved agent metas, etc).
36
+ */
37
+ export type SlotComponentProps = Record<string, unknown>
38
+ export type SlotComponent = ComponentType<SlotComponentProps>
39
+
40
+ const registry: Record<string, SlotComponent> = {}
41
+
42
+ export function registerSlotComponents(map: Record<string, SlotComponent>): void {
43
+ for (const key of Object.keys(map)) {
44
+ const c = map[key]
45
+ if (c) registry[key] = c
46
+ }
47
+ }
48
+
49
+ export function getSlotComponent(name: string): SlotComponent | undefined {
50
+ return registry[name]
51
+ }
52
+
53
+ /** Test-only: clear the registry. Not exported from the public entry. */
54
+ export function _resetSlotComponentRegistryForTests(): void {
55
+ for (const key of Object.keys(registry)) delete registry[key]
56
+ }