@lattice-php/lattice 0.19.0 → 0.21.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 (343) hide show
  1. package/dist/action/components/action-form.d.ts +6 -1
  2. package/dist/action/components/action-form.js +34 -49
  3. package/dist/action/components/action-form.js.map +1 -1
  4. package/dist/action/components/action-trigger-provider.d.ts +1 -1
  5. package/dist/action/components/action-trigger-provider.js.map +1 -1
  6. package/dist/action/hooks/use-action.d.ts +1 -1
  7. package/dist/action/hooks/use-action.js +3 -1
  8. package/dist/action/hooks/use-action.js.map +1 -1
  9. package/dist/action/index.d.ts +0 -2
  10. package/dist/action/index.js +1 -2
  11. package/dist/chat/plugin.d.ts +0 -1
  12. package/dist/chat/plugin.js.map +1 -1
  13. package/dist/clipboard/index.d.ts +0 -4
  14. package/dist/clipboard/index.js +1 -15
  15. package/dist/{events → core}/event-names.js +1 -1
  16. package/dist/core/event-names.js.map +1 -0
  17. package/dist/core/hooks/use-window-event.d.ts +8 -0
  18. package/dist/core/hooks/use-window-event.js +22 -0
  19. package/dist/core/hooks/use-window-event.js.map +1 -0
  20. package/dist/core/index.js +1 -1
  21. package/dist/core/types.d.ts +8 -61
  22. package/dist/create-app.d.ts +31 -3
  23. package/dist/create-app.js +48 -10
  24. package/dist/create-app.js.map +1 -1
  25. package/dist/effects/dispatch.js +1 -1
  26. package/dist/effects/dispatch.js.map +1 -1
  27. package/dist/effects/registry.d.ts +2 -18
  28. package/dist/effects/registry.js +5 -9
  29. package/dist/effects/registry.js.map +1 -1
  30. package/dist/event-bridge.js +10 -23
  31. package/dist/event-bridge.js.map +1 -1
  32. package/dist/form/components/base/field.d.ts +2 -2
  33. package/dist/form/components/base/field.js +2 -2
  34. package/dist/form/components/base/field.js.map +1 -1
  35. package/dist/form/components/fields/color-picker-field.d.ts +2 -0
  36. package/dist/form/components/fields/color-picker-field.js +57 -0
  37. package/dist/form/components/fields/color-picker-field.js.map +1 -0
  38. package/dist/form/components/fields/date-input.js +1 -1
  39. package/dist/form/components/fields/date-time-input.js +1 -1
  40. package/dist/form/components/fields/file-upload.js +11 -18
  41. package/dist/form/components/fields/file-upload.js.map +1 -1
  42. package/dist/form/components/fields/number-input.js +1 -1
  43. package/dist/form/components/fields/rich-editor-field.js +35 -276
  44. package/dist/form/components/fields/rich-editor-field.js.map +1 -1
  45. package/dist/form/components/fields/row-action-menu.js +2 -2
  46. package/dist/form/components/fields/row-action-menu.js.map +1 -1
  47. package/dist/form/components/fields/row-actions.js +3 -1
  48. package/dist/form/components/fields/row-actions.js.map +1 -1
  49. package/dist/form/components/fields/select.js +60 -17
  50. package/dist/form/components/fields/select.js.map +1 -1
  51. package/dist/form/components/fields/table-rows.js +5 -17
  52. package/dist/form/components/fields/table-rows.js.map +1 -1
  53. package/dist/form/components/fields/text-input.js +8 -1
  54. package/dist/form/components/fields/text-input.js.map +1 -1
  55. package/dist/form/components/fields/time-input.js +1 -1
  56. package/dist/form/components/form.js +8 -23
  57. package/dist/form/components/form.js.map +1 -1
  58. package/dist/form/components/index.d.ts +1 -0
  59. package/dist/form/components/index.js +2 -1
  60. package/dist/form/embed.d.ts +5 -0
  61. package/dist/form/embed.js +4 -1
  62. package/dist/form/hooks/use-form-resolver.js.map +1 -1
  63. package/dist/form/index.js +2 -1
  64. package/dist/form/lib/collect-fields.d.ts +7 -0
  65. package/dist/form/lib/collect-fields.js +19 -0
  66. package/dist/form/lib/collect-fields.js.map +1 -0
  67. package/dist/form/lib/conditions.d.ts +4 -10
  68. package/dist/form/lib/conditions.js.map +1 -1
  69. package/dist/form/lib/field-errors.d.ts +3 -0
  70. package/dist/form/lib/field-errors.js +11 -0
  71. package/dist/form/lib/field-errors.js.map +1 -0
  72. package/dist/form/lib/field-props.d.ts +4 -18
  73. package/dist/form/lib/field-props.js.map +1 -1
  74. package/dist/form/plugin.js +2 -0
  75. package/dist/form/plugin.js.map +1 -1
  76. package/dist/form/rich-editor/builtins.d.ts +6 -0
  77. package/dist/form/rich-editor/builtins.js +400 -0
  78. package/dist/form/rich-editor/builtins.js.map +1 -0
  79. package/dist/form/rich-editor/index.d.ts +7 -0
  80. package/dist/form/rich-editor/index.js +3 -0
  81. package/dist/form/rich-editor/registry.d.ts +67 -0
  82. package/dist/form/rich-editor/registry.js +79 -0
  83. package/dist/form/rich-editor/registry.js.map +1 -0
  84. package/dist/form/rich-editor/toolbar-button.d.ts +12 -0
  85. package/dist/form/rich-editor/toolbar-button.js +28 -0
  86. package/dist/form/rich-editor/toolbar-button.js.map +1 -0
  87. package/dist/form/types.d.ts +1 -6
  88. package/dist/format/date-time.d.ts +3 -2
  89. package/dist/format/date-time.js.map +1 -1
  90. package/dist/format/format-context.d.ts +6 -0
  91. package/dist/format/format-context.js +17 -0
  92. package/dist/format/format-context.js.map +1 -0
  93. package/dist/i18n/date-time.d.ts +3 -2
  94. package/dist/i18n/date-time.js.map +1 -1
  95. package/dist/i18n/index.js +3 -2
  96. package/dist/i18n/locale-reload.d.ts +1 -1
  97. package/dist/i18n/locale-reload.js +7 -6
  98. package/dist/i18n/locale-reload.js.map +1 -1
  99. package/dist/i18n/locale.js +1 -1
  100. package/dist/i18n/locale.js.map +1 -1
  101. package/dist/i18n/page-props.d.ts +3 -2
  102. package/dist/i18n/page-props.js +1 -15
  103. package/dist/i18n/page-props.js.map +1 -1
  104. package/dist/i18n/shared-props.d.ts +7 -0
  105. package/dist/i18n/shared-props.js +23 -0
  106. package/dist/i18n/shared-props.js.map +1 -0
  107. package/dist/i18n/timezone.js +1 -1
  108. package/dist/i18n/timezone.js.map +1 -1
  109. package/dist/index.d.ts +11 -10
  110. package/dist/index.js +5 -5
  111. package/dist/lattice.css +212 -47
  112. package/dist/layout/components/breadcrumbs.js +3 -1
  113. package/dist/layout/components/breadcrumbs.js.map +1 -1
  114. package/dist/layout/components/sidebar.js +15 -48
  115. package/dist/layout/components/sidebar.js.map +1 -1
  116. package/dist/layout/plugin.d.ts +0 -1
  117. package/dist/layout/plugin.js.map +1 -1
  118. package/dist/lib/color.d.ts +9 -0
  119. package/dist/lib/color.js +48 -0
  120. package/dist/lib/color.js.map +1 -0
  121. package/dist/lib/is-truthy.d.ts +2 -0
  122. package/dist/lib/is-truthy.js +9 -0
  123. package/dist/lib/is-truthy.js.map +1 -0
  124. package/dist/lib/use-debounced-callback.d.ts +10 -0
  125. package/dist/lib/use-debounced-callback.js +34 -0
  126. package/dist/lib/use-debounced-callback.js.map +1 -0
  127. package/dist/lib/use-media-query.d.ts +5 -0
  128. package/dist/lib/use-media-query.js +26 -0
  129. package/dist/lib/use-media-query.js.map +1 -0
  130. package/dist/lib/use-persistent-state.d.ts +13 -0
  131. package/dist/lib/use-persistent-state.js +62 -0
  132. package/dist/lib/use-persistent-state.js.map +1 -0
  133. package/dist/notifications/api.d.ts +6 -6
  134. package/dist/notifications/api.js.map +1 -1
  135. package/dist/notifications/components/notifications.js +3 -1
  136. package/dist/notifications/components/notifications.js.map +1 -1
  137. package/dist/notifications/plugin.d.ts +0 -1
  138. package/dist/notifications/plugin.js.map +1 -1
  139. package/dist/notifications/types.d.ts +2 -10
  140. package/dist/provider-base.js +1 -1
  141. package/dist/realtime/build-effects.js +5 -5
  142. package/dist/realtime/build-effects.js.map +1 -1
  143. package/dist/realtime/listeners.d.ts +2 -2
  144. package/dist/realtime/listeners.js +1 -1
  145. package/dist/realtime/listeners.js.map +1 -1
  146. package/dist/realtime/subscriptions.d.ts +2 -2
  147. package/dist/realtime/subscriptions.js.map +1 -1
  148. package/dist/registry.d.ts +5 -0
  149. package/dist/registry.js.map +1 -1
  150. package/dist/remote/components/data-list.js +1 -1
  151. package/dist/remote/plugin.d.ts +0 -1
  152. package/dist/remote/plugin.js.map +1 -1
  153. package/dist/table/components/bulk-bar.js +7 -5
  154. package/dist/table/components/bulk-bar.js.map +1 -1
  155. package/dist/table/components/cells/badge-cell.js +4 -1
  156. package/dist/table/components/cells/badge-cell.js.map +1 -1
  157. package/dist/table/components/cells/boolean-cell.js +4 -4
  158. package/dist/table/components/cells/boolean-cell.js.map +1 -1
  159. package/dist/table/components/cells/copyable-cell.d.ts +9 -0
  160. package/dist/table/components/cells/copyable-cell.js +17 -0
  161. package/dist/table/components/cells/copyable-cell.js.map +1 -0
  162. package/dist/table/components/cells/icon-cell.js +5 -2
  163. package/dist/table/components/cells/icon-cell.js.map +1 -1
  164. package/dist/table/components/cells/image-cell.js +8 -9
  165. package/dist/table/components/cells/image-cell.js.map +1 -1
  166. package/dist/table/components/cells/money-cell.js +7 -10
  167. package/dist/table/components/cells/money-cell.js.map +1 -1
  168. package/dist/table/components/cells/number-cell.js +14 -19
  169. package/dist/table/components/cells/number-cell.js.map +1 -1
  170. package/dist/table/components/cells/numeric-cell.d.ts +10 -0
  171. package/dist/table/components/cells/numeric-cell.js +25 -0
  172. package/dist/table/components/cells/numeric-cell.js.map +1 -0
  173. package/dist/table/components/cells/stack-cell.js +1 -1
  174. package/dist/table/components/cells/text-cell.js +8 -6
  175. package/dist/table/components/cells/text-cell.js.map +1 -1
  176. package/dist/table/components/column-filter-control.js +25 -32
  177. package/dist/table/components/column-filter-control.js.map +1 -1
  178. package/dist/table/components/column-header.d.ts +3 -3
  179. package/dist/table/components/column-header.js +5 -3
  180. package/dist/table/components/column-header.js.map +1 -1
  181. package/dist/table/components/column-visibility-menu.js +6 -11
  182. package/dist/table/components/column-visibility-menu.js.map +1 -1
  183. package/dist/table/components/filter-bar.d.ts +2 -2
  184. package/dist/table/components/filter-bar.js +13 -22
  185. package/dist/table/components/filter-bar.js.map +1 -1
  186. package/dist/table/components/filter-controls.d.ts +2 -1
  187. package/dist/table/components/filter-controls.js +37 -38
  188. package/dist/table/components/filter-controls.js.map +1 -1
  189. package/dist/table/components/filter-value-input.d.ts +0 -1
  190. package/dist/table/components/filter-value-input.js +21 -20
  191. package/dist/table/components/filter-value-input.js.map +1 -1
  192. package/dist/table/components/pagination.js +16 -20
  193. package/dist/table/components/pagination.js.map +1 -1
  194. package/dist/table/components/sort-bar.d.ts +3 -3
  195. package/dist/table/components/sort-bar.js +11 -12
  196. package/dist/table/components/sort-bar.js.map +1 -1
  197. package/dist/table/components/table-cell.js.map +1 -1
  198. package/dist/table/components/table-search.d.ts +9 -0
  199. package/dist/table/components/table-search.js +72 -0
  200. package/dist/table/components/table-search.js.map +1 -0
  201. package/dist/table/components/table.js +73 -21
  202. package/dist/table/components/table.js.map +1 -1
  203. package/dist/table/hooks/use-column-visibility.js +29 -58
  204. package/dist/table/hooks/use-column-visibility.js.map +1 -1
  205. package/dist/table/hooks/use-expanded-rows.d.ts +8 -0
  206. package/dist/table/hooks/use-expanded-rows.js +24 -0
  207. package/dist/table/hooks/use-expanded-rows.js.map +1 -0
  208. package/dist/table/hooks/use-table.d.ts +5 -3
  209. package/dist/table/hooks/use-table.js +59 -55
  210. package/dist/table/hooks/use-table.js.map +1 -1
  211. package/dist/table/lib/bulk.d.ts +2 -0
  212. package/dist/table/lib/bulk.js +3 -1
  213. package/dist/table/lib/bulk.js.map +1 -1
  214. package/dist/table/lib/payload.d.ts +3 -2
  215. package/dist/table/lib/payload.js +16 -10
  216. package/dist/table/lib/payload.js.map +1 -1
  217. package/dist/table/lib/query.d.ts +5 -5
  218. package/dist/table/lib/query.js +21 -19
  219. package/dist/table/lib/query.js.map +1 -1
  220. package/dist/table/plugin.d.ts +0 -1
  221. package/dist/table/plugin.js.map +1 -1
  222. package/dist/table/types.d.ts +5 -81
  223. package/dist/toast/callout.js +2 -4
  224. package/dist/toast/callout.js.map +1 -1
  225. package/dist/toast/index.d.ts +1 -1
  226. package/dist/toast/index.js +2 -2
  227. package/dist/toast/toast.d.ts +1 -7
  228. package/dist/toast/toast.js +3 -15
  229. package/dist/toast/toast.js.map +1 -1
  230. package/dist/toast/toaster.js.map +1 -1
  231. package/dist/types/generated.d.ts +444 -225
  232. package/dist/types/index.d.ts +1 -1
  233. package/dist/ui/affix-group.d.ts +2 -1
  234. package/dist/ui/affix-group.js +9 -7
  235. package/dist/ui/affix-group.js.map +1 -1
  236. package/dist/ui/avatar.d.ts +3 -0
  237. package/dist/ui/avatar.js +52 -0
  238. package/dist/ui/avatar.js.map +1 -0
  239. package/dist/ui/button.d.ts +5 -3
  240. package/dist/ui/button.js +10 -3
  241. package/dist/ui/button.js.map +1 -1
  242. package/dist/ui/chart-view.js +155 -28
  243. package/dist/ui/chart-view.js.map +1 -1
  244. package/dist/ui/click-behavior.d.ts +4 -4
  245. package/dist/ui/click-behavior.js.map +1 -1
  246. package/dist/ui/collapsible.js +3 -15
  247. package/dist/ui/collapsible.js.map +1 -1
  248. package/dist/ui/color-picker.d.ts +8 -0
  249. package/dist/ui/color-picker.js +59 -0
  250. package/dist/ui/color-picker.js.map +1 -0
  251. package/dist/ui/combobox.d.ts +11 -2
  252. package/dist/ui/combobox.js +57 -11
  253. package/dist/ui/combobox.js.map +1 -1
  254. package/dist/ui/confirm-dialog.js +1 -1
  255. package/dist/ui/confirm-dialog.js.map +1 -1
  256. package/dist/ui/control.d.ts +1 -1
  257. package/dist/ui/copyable-text.d.ts +7 -0
  258. package/dist/ui/copyable-text.js +21 -13
  259. package/dist/ui/copyable-text.js.map +1 -1
  260. package/dist/ui/dialog.d.ts +6 -2
  261. package/dist/ui/dialog.js +29 -5
  262. package/dist/ui/dialog.js.map +1 -1
  263. package/dist/ui/fragment.js +1 -1
  264. package/dist/ui/fragment.js.map +1 -1
  265. package/dist/ui/heading.js +39 -21
  266. package/dist/ui/heading.js.map +1 -1
  267. package/dist/ui/icon-button.d.ts +22 -0
  268. package/dist/ui/icon-button.js +51 -0
  269. package/dist/ui/icon-button.js.map +1 -0
  270. package/dist/ui/icon.js +10 -11
  271. package/dist/ui/icon.js.map +1 -1
  272. package/dist/ui/image-preview.d.ts +12 -0
  273. package/dist/ui/image-preview.js +65 -0
  274. package/dist/ui/image-preview.js.map +1 -0
  275. package/dist/ui/image.d.ts +3 -0
  276. package/dist/ui/image.js +21 -0
  277. package/dist/ui/image.js.map +1 -0
  278. package/dist/ui/index.d.ts +2 -1
  279. package/dist/ui/index.js +4 -3
  280. package/dist/ui/info-tooltip.js +1 -1
  281. package/dist/ui/info-tooltip.js.map +1 -1
  282. package/dist/ui/input.d.ts +3 -1
  283. package/dist/ui/input.js +2 -2
  284. package/dist/ui/input.js.map +1 -1
  285. package/dist/ui/modal.js +17 -4
  286. package/dist/ui/modal.js.map +1 -1
  287. package/dist/ui/native-select.d.ts +10 -0
  288. package/dist/ui/native-select.js +23 -0
  289. package/dist/ui/native-select.js.map +1 -0
  290. package/dist/ui/pill.d.ts +2 -0
  291. package/dist/ui/pill.js +10 -0
  292. package/dist/ui/pill.js.map +1 -0
  293. package/dist/ui/plugin.js +11 -1
  294. package/dist/ui/plugin.js.map +1 -1
  295. package/dist/ui/progress.d.ts +3 -0
  296. package/dist/ui/progress.js +114 -0
  297. package/dist/ui/progress.js.map +1 -0
  298. package/dist/ui/section.js +2 -15
  299. package/dist/ui/section.js.map +1 -1
  300. package/dist/ui/segmented-pills.js +2 -1
  301. package/dist/ui/segmented-pills.js.map +1 -1
  302. package/dist/ui/separator.d.ts +3 -0
  303. package/dist/ui/separator.js +15 -0
  304. package/dist/ui/separator.js.map +1 -0
  305. package/dist/ui/tabs.js +12 -10
  306. package/dist/ui/tabs.js.map +1 -1
  307. package/dist/ui/text.js +5 -10
  308. package/dist/ui/text.js.map +1 -1
  309. package/dist/ui/tree-context.d.ts +33 -0
  310. package/dist/ui/tree-context.js +135 -0
  311. package/dist/ui/tree-context.js.map +1 -0
  312. package/dist/ui/tree.d.ts +19 -0
  313. package/dist/ui/tree.js +187 -0
  314. package/dist/ui/tree.js.map +1 -0
  315. package/dist/ui/use-collapsible-state.d.ts +7 -0
  316. package/dist/ui/use-collapsible-state.js +21 -0
  317. package/dist/ui/use-collapsible-state.js.map +1 -0
  318. package/dist-standalone/chunks/chart-view-C6R5iPra.js +36 -0
  319. package/dist-standalone/chunks/date-picker-field-DhhEB-Mh.js +1 -0
  320. package/dist-standalone/chunks/jsx-runtime-Drll_-DD.js +1 -0
  321. package/dist-standalone/chunks/locale-CXqr7LPR.js +1 -0
  322. package/dist-standalone/chunks/page-props-DOfg30l5.js +1 -0
  323. package/dist-standalone/chunks/rich-editor-field-DORXTHPw.js +154 -0
  324. package/dist-standalone/chunks/{subscriptions-B3UuDBmx.js → subscriptions-B_ISgA7V.js} +1 -1
  325. package/dist-standalone/chunks/use-effect-dispatcher-D1wPPwHj.js +97 -0
  326. package/dist-standalone/lattice.css +1 -1
  327. package/dist-standalone/lattice.js +15 -15
  328. package/dist-standalone/manifest.json +11 -9
  329. package/dist-standalone/sprite.svg +1 -1
  330. package/package.json +6 -1
  331. package/resources/icons/code-xml.svg +17 -0
  332. package/resources/icons/heading.svg +17 -0
  333. package/dist/clipboard/index.js.map +0 -1
  334. package/dist/events/event-names.js.map +0 -1
  335. package/dist/table/components/table-action-node.d.ts +0 -4
  336. package/dist/table/components/table-action-node.js +0 -24
  337. package/dist/table/components/table-action-node.js.map +0 -1
  338. package/dist-standalone/chunks/chart-view-CK5fKIkR.js +0 -36
  339. package/dist-standalone/chunks/date-picker-field-BlCPFhZd.js +0 -1
  340. package/dist-standalone/chunks/jsx-runtime-CJ_btYLc.js +0 -1
  341. package/dist-standalone/chunks/rich-editor-field-DH5dS5c1.js +0 -154
  342. package/dist-standalone/chunks/use-effect-dispatcher-k98Nzf9M.js +0 -97
  343. /package/dist/{events → core}/event-names.d.ts +0 -0
@@ -1,11 +1,116 @@
1
+ export type NodeProps = Record<string, unknown>;
2
+ export type CommonNodeProps = {
3
+ dataBindings?: Record<string, string> | null;
4
+ hideWhenCollapsed?: boolean | null;
5
+ };
6
+ /**
7
+ * Augmentable map of wire `type` string → props for consumer components. Apps
8
+ * extend it via `declare module "@lattice-php/lattice"` so their custom components
9
+ * gain strong prop types; the entries are generated by `php artisan lattice:typescript`.
10
+ * Built-in components resolve through the generated `ComponentPropsMap` below.
11
+ * Types in neither fall back to a loose bag.
12
+ */
13
+ export interface ComponentProps {
14
+ }
15
+ /** The column counterpart of `ComponentProps`. */
16
+ export interface ColumnProps {
17
+ }
18
+ /** The filter counterpart of `ComponentProps`. */
19
+ export interface FilterProps {
20
+ }
21
+ /** The effect counterpart of `ComponentProps`. */
22
+ export interface EffectProps {
23
+ }
24
+ /**
25
+ * Resolves a `type` string to its payload: consumer augmentations (`TAugment`)
26
+ * win over generated built-ins (`TBuiltins`), then a loose fallback. The one
27
+ * resolver behind the component, column, filter and effect maps.
28
+ */
29
+ export type ResolveProps<TAugment, TBuiltins, TType extends string, TFallback> = TType extends keyof TAugment ? TAugment[TType] : TType extends keyof TBuiltins ? TBuiltins[TType] : TFallback;
30
+ export type ComponentPropsOf<TType extends string> = ResolveProps<ComponentProps, ComponentPropsMap, TType, NodeProps> & CommonNodeProps;
31
+ /**
32
+ * The loose wire node an unknown/untyped `type` resolves to: the shape every node
33
+ * shares, with a loose `props` bag. The single source of the wire-node shape —
34
+ * `Node` (i.e. `Node<string>`) is this.
35
+ */
36
+ type LooseNode = {
37
+ id?: string;
38
+ key?: string;
39
+ type: string;
40
+ props?: NodeProps;
41
+ schema?: Schema;
42
+ };
43
+ /**
44
+ * Built-in `props` is required, not optional — the wire serializes the full prop
45
+ * object, so reads need no optional chaining. Unknown types fall back to `LooseNode`.
46
+ */
47
+ export type Node<TType extends string = string> = string extends TType ? LooseNode : {
48
+ id?: string;
49
+ key?: string;
50
+ props: ComponentPropsOf<TType>;
51
+ schema?: Schema;
52
+ type: TType;
53
+ };
54
+ /**
55
+ * Distributes so `NodeUnionOf<"a" | "b">` is `Node<"a"> | Node<"b">` — a
56
+ * discriminated union where `node.type` narrows `node.props`. Domains build
57
+ * their node union from a generated `…NodeType` string union with this.
58
+ */
59
+ export type NodeUnionOf<TTypes extends string> = TTypes extends string ? Node<TTypes> : never;
60
+ export type Schema = Node[];
61
+ /**
62
+ * The generated `Column` base props (serialized by every column regardless of
63
+ * type) back the fallback, so even an unaugmented custom column keeps its
64
+ * common concerns typed.
65
+ */
66
+ export type ColumnPropsOf<TType extends string> = ResolveProps<ColumnProps, ColumnPropsMap, TType, Column & Record<string, unknown>>;
67
+ export type CommonColumnProps = Column;
68
+ /**
69
+ * A column node, authored and consumed like a field/component: `key`/`type`
70
+ * stay top-level, every common concern (`label`/`width`/`filter`/…) lives in
71
+ * `props` on each generated column type. `schema` is only present for a
72
+ * container column: the bound component nodes rendered per row. The column
73
+ * counterpart of `Node`.
74
+ */
75
+ export type ColumnNode<TType extends string = string> = {
76
+ type: TType;
77
+ key: string;
78
+ props: ColumnPropsOf<TType>;
79
+ schema?: Schema;
80
+ };
81
+ export type FilterPropsOf<TType extends string> = ResolveProps<FilterProps, FilterPropsMap, TType, Filter & Record<string, unknown>>;
82
+ /**
83
+ * A dedicated table filter, authored and consumed like a field/component:
84
+ * `key`/`type` stay top-level, `props` carries `label` plus whatever the
85
+ * filter type contributes. `schema` is the bound field(s) rendering the
86
+ * filter's control and is absent when empty. The filter counterpart of
87
+ * `ColumnNode`.
88
+ */
89
+ export type FilterNode<TType extends string = string> = {
90
+ type: TType;
91
+ key: string;
92
+ props: FilterPropsOf<TType>;
93
+ schema?: Schema;
94
+ };
95
+ export type EffectPropsOf<TType extends string> = ResolveProps<EffectProps, EffectPropsMap, TType, Record<string, unknown>>;
96
+ /**
97
+ * Deliberate exception to the `XNode` naming: an effect is a `{type, props}`
98
+ * envelope without id/key/schema — it is not a node.
99
+ */
100
+ export type EffectOf<TType extends string> = string extends TType ? Effect : {
101
+ type: TType;
102
+ props: EffectPropsOf<TType>;
103
+ };
1
104
  export type Action = {
2
105
  confirmation: Confirmation | null;
3
106
  endpoint: string | null;
4
- form: WireNode | null;
107
+ form: Node<"form"> | null;
5
108
  icon: string | null;
6
109
  label: string | null;
7
110
  lazyForm: boolean;
8
111
  method: HttpMethod | null;
112
+ modalSide: Side | null;
113
+ modalWidth: ModalWidth | null;
9
114
  ref: string | null;
10
115
  variant: ButtonVariant | null;
11
116
  };
@@ -16,7 +121,6 @@ export type ActionGroup = {
16
121
  };
17
122
  export type ActionNodeType = "action" | "action.bulk" | "action.group";
18
123
  export type ActionResult = {
19
- readonly ok: boolean;
20
124
  readonly data: Record<string, unknown>;
21
125
  readonly effects: Effect[];
22
126
  };
@@ -25,12 +129,17 @@ export type Affix = {
25
129
  readonly text: string | null;
26
130
  };
27
131
  export type Align = "center" | "left" | "start" | "stretch";
132
+ export type Avatar = {
133
+ name: string | null;
134
+ size: Size;
135
+ src: string | null;
136
+ };
28
137
  export type Badge = {
29
138
  label: string;
30
139
  };
31
140
  export type BadgeColumn = {
32
141
  align: ColumnAlign;
33
- colors: Record<string | number, string> | null;
142
+ colors: Record<string | number, Color> | null;
34
143
  filter: ColumnFilter | null;
35
144
  hiddenByDefault: boolean;
36
145
  label: string | null;
@@ -47,23 +156,22 @@ export type BooleanColumn = {
47
156
  toggleable: boolean;
48
157
  width: ColumnWidth;
49
158
  };
159
+ export type Breadcrumb = {
160
+ readonly href: string;
161
+ readonly title: string;
162
+ };
50
163
  export type Breadcrumbs = Record<string, never>;
51
164
  export type BrowserToken = {
52
165
  readonly accessToken: string;
53
- readonly tokenType: string;
54
- readonly expiresIn: number;
55
166
  readonly audience: string;
167
+ readonly expiresIn: number;
56
168
  readonly scopes: string[];
169
+ readonly tokenType: string;
57
170
  };
58
171
  export type Builder = {
59
172
  addLabel: string | null;
60
173
  columnWidth: ColumnWidth;
61
- conditions: {
62
- visible?: Condition[];
63
- required?: Condition[];
64
- readOnly?: Condition[];
65
- disabled?: Condition[];
66
- } | null;
174
+ conditions: FieldConditions | null;
67
175
  defaultItems: number;
68
176
  dependsOnAny: boolean;
69
177
  dependsOnKeys: string[] | null;
@@ -89,16 +197,18 @@ export type Builder = {
89
197
  export type BulkAction = {
90
198
  confirmation: Confirmation | null;
91
199
  endpoint: string | null;
92
- form: WireNode | null;
200
+ form: Node<"form"> | null;
93
201
  icon: string | null;
94
202
  label: string | null;
95
203
  lazyForm: boolean;
96
204
  method: HttpMethod | null;
205
+ modalSide: Side | null;
206
+ modalWidth: ModalWidth | null;
97
207
  ref: string | null;
98
208
  variant: ButtonVariant | null;
99
209
  };
100
210
  export type Button = {
101
- action: WireNode | null;
211
+ action: Node<"action"> | Node<"action.bulk"> | null;
102
212
  buttonType: ButtonType;
103
213
  effects: Effect[];
104
214
  href: string | null;
@@ -110,14 +220,11 @@ export type Button = {
110
220
  export type ButtonType = "button" | "submit" | "reset";
111
221
  export type ButtonVariant = "default" | "destructive" | "ghost" | "info" | "link" | "outline" | "secondary" | "success";
112
222
  export type Callout = {
113
- title: string | null;
223
+ action: Node | null;
114
224
  dismissible: boolean;
115
- action: WireNode | null;
116
- variant: Variant;
117
225
  message: string;
118
- };
119
- export type CalloutEffect = {
120
- readonly callout: Callout;
226
+ title: string | null;
227
+ variant: Variant;
121
228
  };
122
229
  export type Callouts = Record<string, never>;
123
230
  export type Card = {
@@ -142,14 +249,16 @@ export type Chart = {
142
249
  yAxis: boolean;
143
250
  };
144
251
  export type ChartSeries = {
145
- readonly type: ChartSeriesType;
252
+ readonly color: Color | null;
146
253
  readonly dataKey: string;
147
- readonly name: string | null;
148
- readonly color: string | null;
149
- readonly stackId: string | null;
254
+ readonly innerRadius: string;
255
+ readonly maxValue: number | null;
256
+ readonly name: string;
150
257
  readonly nameKey: string | null;
258
+ readonly stackId: string | null;
259
+ readonly type: ChartSeriesType;
151
260
  };
152
- export type ChartSeriesType = "area" | "bar" | "line" | "pie";
261
+ export type ChartSeriesType = "area" | "bar" | "distribution" | "gauge" | "line" | "pie";
153
262
  export type ChatBox = {
154
263
  fill: boolean;
155
264
  historyEndpoint: string | null;
@@ -160,19 +269,15 @@ export type ChatBox = {
160
269
  };
161
270
  export type ChatMessage = {
162
271
  readonly id: string;
272
+ readonly parts: Node[];
163
273
  readonly role: ChatRole;
164
- readonly parts: WireNode[];
165
274
  };
275
+ export type ChatNodeType = "chat.box" | "chat.part.text" | "chat.part.tool-call";
166
276
  export type ChatRole = "user" | "assistant" | "system";
167
277
  export type Checkbox = {
168
278
  autoFocus: boolean;
169
279
  columnWidth: ColumnWidth;
170
- conditions: {
171
- visible?: Condition[];
172
- required?: Condition[];
173
- readOnly?: Condition[];
174
- disabled?: Condition[];
175
- } | null;
280
+ conditions: FieldConditions | null;
176
281
  dependsOnAny: boolean;
177
282
  dependsOnKeys: string[] | null;
178
283
  disabled: boolean;
@@ -191,12 +296,7 @@ export type Checkbox = {
191
296
  export type Choice = {
192
297
  autoFocus: boolean;
193
298
  columnWidth: ColumnWidth;
194
- conditions: {
195
- visible?: Condition[];
196
- required?: Condition[];
197
- readOnly?: Condition[];
198
- disabled?: Condition[];
199
- } | null;
299
+ conditions: FieldConditions | null;
200
300
  dependsOnAny: boolean;
201
301
  dependsOnKeys: string[] | null;
202
302
  disabled: boolean;
@@ -213,36 +313,71 @@ export type Choice = {
213
313
  tooltip: string | null;
214
314
  value: unknown;
215
315
  };
216
- export type CloseModalEffect = {
316
+ export type CloseModal = {
217
317
  readonly modal: string | null;
218
318
  };
219
319
  export type Collapsible = {
220
320
  collapsed: boolean;
221
321
  rememberState: boolean;
222
322
  tooltip: string | null;
223
- trigger: WireNode[];
323
+ trigger: Node[];
324
+ };
325
+ export type Color = {
326
+ readonly dark: string | null;
327
+ readonly kind: ColorKind;
328
+ readonly value: string;
329
+ };
330
+ export type ColorKind = "named" | "css";
331
+ export type ColorName = "default" | "muted" | "primary" | "success" | "info" | "warning" | "danger" | "gray" | "red" | "orange" | "yellow" | "green" | "blue" | "purple";
332
+ export type ColorPicker = {
333
+ columnWidth: ColumnWidth;
334
+ conditions: FieldConditions | null;
335
+ dependsOnAny: boolean;
336
+ dependsOnKeys: string[] | null;
337
+ disabled: boolean;
338
+ editablePrefill: boolean;
339
+ helperText: string | null;
340
+ label: string | null;
341
+ name: string;
342
+ palette: string[];
343
+ placeholder: string | null;
344
+ prefillRefreshOn: string[] | null;
345
+ prefillResetOn: string[] | null;
346
+ readOnly: boolean;
347
+ required: boolean;
348
+ tooltip: string | null;
349
+ value: unknown;
350
+ };
351
+ export type Column = {
352
+ align: ColumnAlign;
353
+ filter: ColumnFilter | null;
354
+ hiddenByDefault: boolean;
355
+ label: string | null;
356
+ sortable: boolean;
357
+ toggleable: boolean;
358
+ width: ColumnWidth;
224
359
  };
225
- export type Color = "default" | "muted" | "primary" | "success" | "info" | "warning" | "danger";
226
360
  export type ColumnAlign = "start" | "center" | "end";
227
361
  export type ColumnFilter = {
228
- readonly type: FilterType;
229
- readonly operators: Op[];
230
- readonly defaultOperator: Op;
362
+ readonly clauseOptions: ColumnFilterOption[];
231
363
  readonly control: FilterControl | null;
232
- readonly options: Option[];
364
+ readonly defaultOperator: Op;
233
365
  readonly multiple: boolean;
366
+ readonly operators: Op[];
367
+ readonly options: Option[];
234
368
  readonly searchable: boolean;
235
- readonly clauseOptions?: ColumnFilterOption[];
369
+ readonly type: FilterType;
236
370
  };
237
371
  export type ColumnFilterOption = {
372
+ readonly clauses: ColumnFilterOptionClause[];
238
373
  readonly label: string;
239
374
  readonly value: string;
240
- readonly clauses: ColumnFilterOptionClause[];
241
375
  };
242
376
  export type ColumnFilterOptionClause = {
243
377
  readonly operator: Op;
244
378
  readonly value: string;
245
379
  };
380
+ export type ColumnNodeType = "column.badge" | "column.boolean" | "column.icon" | "column.image" | "column.money" | "column.number" | "column.stack" | "column.text";
246
381
  export type ColumnPropsMap = {
247
382
  "column.badge": BadgeColumn;
248
383
  "column.boolean": BooleanColumn;
@@ -253,12 +388,12 @@ export type ColumnPropsMap = {
253
388
  "column.stack": StackColumn;
254
389
  "column.text": TextColumn;
255
390
  };
256
- export type ColumnType = "column.text" | "column.boolean" | "column.number" | "column.money" | "column.stack" | "column.badge" | "column.icon" | "column.image";
257
391
  export type ColumnWidth = "xs" | "sm" | "md" | "lg" | "xl";
258
392
  export type ComponentPropsMap = {
259
393
  action: Action;
260
394
  "action.bulk": BulkAction;
261
395
  "action.group": ActionGroup;
396
+ avatar: Avatar;
262
397
  badge: Badge;
263
398
  breadcrumbs: Breadcrumbs;
264
399
  button: Button;
@@ -273,6 +408,7 @@ export type ComponentPropsMap = {
273
408
  "field.builder": Builder;
274
409
  "field.checkbox": Checkbox;
275
410
  "field.choice": Choice;
411
+ "field.color-picker": ColorPicker;
276
412
  "field.date-input": DateInput;
277
413
  "field.date-time-input": DateTimeInput;
278
414
  "field.file-upload": FileUpload;
@@ -293,16 +429,19 @@ export type ComponentPropsMap = {
293
429
  grid: Grid;
294
430
  heading: Heading;
295
431
  icon: Icon;
432
+ image: Image;
296
433
  link: Link;
297
434
  menu: Menu;
298
435
  "menu-item": MenuItem;
299
436
  modal: Modal;
300
437
  notifications: Notifications;
301
438
  outlet: Outlet;
439
+ progress: Progress;
302
440
  "raw-block": RawBlock;
303
441
  "remote.data-list": DataList;
304
442
  section: Section;
305
443
  "segmented-control": SegmentedControl;
444
+ separator: Separator;
306
445
  sidebar: Sidebar;
307
446
  stack: Stack;
308
447
  tab: Tab;
@@ -311,6 +450,7 @@ export type ComponentPropsMap = {
311
450
  text: Text;
312
451
  tooltip: Tooltip;
313
452
  topbar: Topbar;
453
+ tree: Tree;
314
454
  };
315
455
  export type Condition = {
316
456
  readonly field: string;
@@ -318,10 +458,10 @@ export type Condition = {
318
458
  readonly value: unknown;
319
459
  };
320
460
  export type Confirmation = {
321
- readonly title: string;
322
- readonly description: string | null;
323
- readonly confirmLabel: string | null;
324
461
  readonly cancelLabel: string | null;
462
+ readonly confirmLabel: string | null;
463
+ readonly description: string | null;
464
+ readonly title: string;
325
465
  };
326
466
  export type DataList = {
327
467
  dataEndpoint: string | null;
@@ -329,21 +469,16 @@ export type DataList = {
329
469
  remote: RemoteAccess | null;
330
470
  };
331
471
  export type DateFormat = {
472
+ dateStyle: DateTimeStyle | null;
332
473
  kind: string;
333
- dateStyle: string | null;
334
- timeStyle: string | null;
335
474
  month: string | null;
475
+ timeStyle: DateTimeStyle | null;
336
476
  year: string | null;
337
477
  };
338
478
  export type DateInput = {
339
479
  autoFocus: boolean;
340
480
  columnWidth: ColumnWidth;
341
- conditions: {
342
- visible?: Condition[];
343
- required?: Condition[];
344
- readOnly?: Condition[];
345
- disabled?: Condition[];
346
- } | null;
481
+ conditions: FieldConditions | null;
347
482
  dependsOnAny: boolean;
348
483
  dependsOnKeys: string[] | null;
349
484
  disabled: boolean;
@@ -367,12 +502,7 @@ export type DateRangeFilter = {
367
502
  export type DateTimeInput = {
368
503
  autoFocus: boolean;
369
504
  columnWidth: ColumnWidth;
370
- conditions: {
371
- visible?: Condition[];
372
- required?: Condition[];
373
- readOnly?: Condition[];
374
- disabled?: Condition[];
375
- } | null;
505
+ conditions: FieldConditions | null;
376
506
  convertTimezone: boolean;
377
507
  dependsOnAny: boolean;
378
508
  dependsOnKeys: string[] | null;
@@ -394,39 +524,93 @@ export type DateTimeInput = {
394
524
  value: unknown;
395
525
  };
396
526
  export type DateTimeStyle = "full" | "long" | "medium" | "short";
397
- export type DownloadEffect = {
527
+ export type Download = {
398
528
  readonly url: string;
399
529
  };
400
530
  export type Dropdown = {
401
531
  placement: Placement;
402
- trigger: WireNode[];
403
- };
532
+ trigger: Node[];
533
+ };
534
+ export type EditorBlockquote = Record<string, never>;
535
+ export type EditorBold = Record<string, never>;
536
+ export type EditorBulletList = Record<string, never>;
537
+ export type EditorCode = Record<string, never>;
538
+ export type EditorCodeBlock = Record<string, never>;
539
+ export type EditorDetails = Record<string, never>;
540
+ export type EditorEmoji = {
541
+ emojis: string[];
542
+ };
543
+ export type EditorExtension = {
544
+ type: string;
545
+ props: Record<string, unknown>;
546
+ };
547
+ export type EditorExtensionPropsMap = {
548
+ blockquote: EditorBlockquote;
549
+ bold: EditorBold;
550
+ "bullet-list": EditorBulletList;
551
+ code: EditorCode;
552
+ "code-block": EditorCodeBlock;
553
+ details: EditorDetails;
554
+ emoji: EditorEmoji;
555
+ heading: EditorHeading;
556
+ highlight: EditorHighlight;
557
+ "horizontal-rule": EditorHorizontalRule;
558
+ italic: EditorItalic;
559
+ link: EditorLink;
560
+ "ordered-list": EditorOrderedList;
561
+ strike: EditorStrike;
562
+ table: EditorTable;
563
+ "text-align": EditorTextAlign;
564
+ underline: EditorUnderline;
565
+ };
566
+ export type EditorHeading = {
567
+ levels: number[];
568
+ };
569
+ export type EditorHighlight = Record<string, never>;
570
+ export type EditorHorizontalRule = Record<string, never>;
571
+ export type EditorItalic = Record<string, never>;
572
+ export type EditorLink = {
573
+ openOnClick: boolean;
574
+ protocols: string[];
575
+ };
576
+ export type EditorOrderedList = Record<string, never>;
577
+ export type EditorStrike = Record<string, never>;
578
+ export type EditorTable = {
579
+ cols: number;
580
+ rows: number;
581
+ withHeaderRow: boolean;
582
+ };
583
+ export type EditorTextAlign = {
584
+ alignments: string[];
585
+ };
586
+ export type EditorUnderline = Record<string, never>;
404
587
  export type Effect = {
405
588
  type: string;
406
- } & Record<string, unknown>;
589
+ props: Record<string, unknown>;
590
+ };
407
591
  export type EffectPropsMap = {
408
- callout: CalloutEffect;
409
- "close-modal": CloseModalEffect;
410
- download: DownloadEffect;
411
- "locale-change": LocaleChangeEffect;
412
- "open-modal": OpenModalEffect;
413
- redirect: RedirectEffect;
414
- "reload-component": ReloadComponentEffect;
415
- "reload-page": ReloadPageEffect;
416
- "reset-form": ResetFormEffect;
417
- toast: ToastEffect;
418
- "toggle-sidebar": ToggleSidebarEffect;
419
- };
420
- export type FieldType = "field.builder" | "field.checkbox" | "field.choice" | "field.date-input" | "field.date-time-input" | "field.file-upload" | "field.hidden-input" | "field.number-input" | "field.otp" | "field.password-input" | "field.repeater" | "field.rich-editor" | "field.select" | "field.textarea" | "field.text-input" | "field.time-input" | "field.toggle";
592
+ callout: Callout;
593
+ "close-modal": CloseModal;
594
+ download: Download;
595
+ "locale-change": LocaleChange;
596
+ "open-modal": OpenModal;
597
+ redirect: Redirect;
598
+ "reload-component": ReloadComponent;
599
+ "reload-page": ReloadPage;
600
+ "reset-form": ResetForm;
601
+ toast: Toast;
602
+ "toggle-sidebar": ToggleSidebar;
603
+ };
604
+ export type FieldConditions = {
605
+ readonly disabled: Condition[];
606
+ readonly readOnly: Condition[];
607
+ readonly required: Condition[];
608
+ readonly visible: Condition[];
609
+ };
421
610
  export type FileUpload = {
422
611
  accept: string | null;
423
612
  columnWidth: ColumnWidth;
424
- conditions: {
425
- visible?: Condition[];
426
- required?: Condition[];
427
- readOnly?: Condition[];
428
- disabled?: Condition[];
429
- } | null;
613
+ conditions: FieldConditions | null;
430
614
  dependsOnAny: boolean;
431
615
  dependsOnKeys: string[] | null;
432
616
  disabled: boolean;
@@ -453,9 +637,12 @@ export type FileUpload = {
453
637
  tooltip: string | null;
454
638
  value: unknown;
455
639
  };
640
+ export type Filter = {
641
+ label: string | null;
642
+ };
456
643
  export type FilterClause = {
457
644
  readonly field: string;
458
- readonly operator: string;
645
+ readonly operator: Op;
459
646
  readonly value: string;
460
647
  };
461
648
  export type FilterControl = "filter.select" | "filter.ternary" | "filter.date-range" | "filter.toggle";
@@ -464,6 +651,7 @@ export type FilterIndicator = {
464
651
  readonly label: string;
465
652
  readonly value: string;
466
653
  };
654
+ export type FilterNodeType = "filter.date-range" | "filter.select" | "filter.ternary" | "filter.toggle";
467
655
  export type FilterPropsMap = {
468
656
  "filter.date-range": DateRangeFilter;
469
657
  "filter.select": SelectFilter;
@@ -475,7 +663,7 @@ export type FloatingPanel = {
475
663
  label: string | null;
476
664
  offset: number;
477
665
  placement: FloatingPlacement;
478
- trigger: WireNode[];
666
+ trigger: Node[];
479
667
  };
480
668
  export type FloatingPlacement = "bottom-end" | "bottom-start" | "top-end" | "top-start";
481
669
  export type Form = {
@@ -493,19 +681,24 @@ export type Form = {
493
681
  validationSummaryLabel: string;
494
682
  validationTimeout: number | null;
495
683
  };
496
- export type FormFieldNodeType = "field.builder" | "field.checkbox" | "field.choice" | "field.date-input" | "field.date-time-input" | "field.file-upload" | "field.hidden-input" | "field.number-input" | "field.otp" | "field.password-input" | "field.repeater" | "field.rich-editor" | "field.select" | "field.text-input" | "field.textarea" | "field.time-input" | "field.toggle";
497
- export type FormNodeType = "field.builder" | "field.checkbox" | "field.choice" | "field.date-input" | "field.date-time-input" | "field.file-upload" | "field.hidden-input" | "field.number-input" | "field.otp" | "field.password-input" | "field.repeater" | "field.rich-editor" | "field.select" | "field.text-input" | "field.textarea" | "field.time-input" | "field.toggle" | "form";
684
+ export type FormFieldNodeType = "field.builder" | "field.checkbox" | "field.choice" | "field.color-picker" | "field.date-input" | "field.date-time-input" | "field.file-upload" | "field.hidden-input" | "field.number-input" | "field.otp" | "field.password-input" | "field.repeater" | "field.rich-editor" | "field.select" | "field.text-input" | "field.textarea" | "field.time-input" | "field.toggle";
685
+ export type FormNodeType = "field.builder" | "field.checkbox" | "field.choice" | "field.color-picker" | "field.date-input" | "field.date-time-input" | "field.file-upload" | "field.hidden-input" | "field.number-input" | "field.otp" | "field.password-input" | "field.repeater" | "field.rich-editor" | "field.select" | "field.text-input" | "field.textarea" | "field.time-input" | "field.toggle" | "form";
498
686
  export type Fragment = {
499
687
  endpoint: string | null;
500
688
  lazy: boolean;
501
689
  ref: string | null;
502
690
  size: Size;
503
691
  };
692
+ export type FragmentNodeType = "fragment";
693
+ export type FragmentResponse = {
694
+ readonly schema: Node[];
695
+ };
504
696
  export type Gap = "none" | "xs" | "sm" | "md" | "lg" | "xl";
505
697
  export type Grid = {
506
698
  columns: number | null;
507
699
  };
508
700
  export type Heading = {
701
+ copyable: boolean;
509
702
  level: number;
510
703
  text: string;
511
704
  tooltip: string | null;
@@ -513,12 +706,7 @@ export type Heading = {
513
706
  export type Height = "full" | "screen";
514
707
  export type HiddenInput = {
515
708
  columnWidth: ColumnWidth;
516
- conditions: {
517
- visible?: Condition[];
518
- required?: Condition[];
519
- readOnly?: Condition[];
520
- disabled?: Condition[];
521
- } | null;
709
+ conditions: FieldConditions | null;
522
710
  dependsOnAny: boolean;
523
711
  dependsOnKeys: string[] | null;
524
712
  disabled: boolean;
@@ -536,9 +724,9 @@ export type HiddenInput = {
536
724
  export type HttpMethod = import('@inertiajs/core').Method;
537
725
  export type I18nConfig = {
538
726
  readonly enabled: boolean;
539
- readonly saveMissing: boolean;
540
727
  readonly locales: string[];
541
728
  readonly preloadLocales: string[];
729
+ readonly saveMissing: boolean;
542
730
  readonly timezone: string | null;
543
731
  };
544
732
  export type Icon = {
@@ -549,7 +737,7 @@ export type Icon = {
549
737
  };
550
738
  export type IconColumn = {
551
739
  align: ColumnAlign;
552
- colors: Record<string | number, string> | null;
740
+ colors: Record<string | number, Color> | null;
553
741
  filter: ColumnFilter | null;
554
742
  hiddenByDefault: boolean;
555
743
  icon: string | null;
@@ -559,20 +747,34 @@ export type IconColumn = {
559
747
  toggleable: boolean;
560
748
  width: ColumnWidth;
561
749
  };
750
+ export type Image = {
751
+ alt: string | null;
752
+ circular: boolean;
753
+ previewable: boolean;
754
+ size: number | null;
755
+ src: string;
756
+ };
562
757
  export type ImageColumn = {
563
758
  align: ColumnAlign;
564
759
  circular: boolean;
565
760
  filter: ColumnFilter | null;
566
761
  hiddenByDefault: boolean;
567
762
  label: string | null;
763
+ previewable: boolean;
568
764
  size: number | null;
569
765
  sortable: boolean;
570
766
  toggleable: boolean;
571
767
  width: ColumnWidth;
572
768
  };
573
769
  export type Justify = "start" | "center" | "end" | "between" | "around" | "evenly";
770
+ export type LabelAction = {
771
+ readonly href: string;
772
+ readonly label: string;
773
+ readonly tabIndex: number | null;
774
+ };
775
+ export type LayoutNodeType = "breadcrumbs" | "callouts" | "dropdown" | "menu" | "menu-item" | "outlet" | "sidebar" | "topbar";
574
776
  export type Link = {
575
- action: WireNode | null;
777
+ action: Node<"action"> | Node<"action.bulk"> | null;
576
778
  effects: Effect[];
577
779
  href: string | null;
578
780
  icon: string | null;
@@ -582,18 +784,18 @@ export type Link = {
582
784
  suffix: Affix | null;
583
785
  tabIndex: number | null;
584
786
  };
585
- export type ListenerPayload = {
787
+ export type Listen = {
586
788
  readonly channel: string;
789
+ effects: Effect[];
790
+ events: string[];
587
791
  readonly visibility: ChannelVisibility;
588
- readonly events: string[];
589
- readonly effects: Effect[];
590
792
  };
591
- export type LocaleChangeEffect = {
793
+ export type LocaleChange = {
592
794
  readonly locale: string;
593
795
  };
594
796
  export type Menu = Record<string, never>;
595
797
  export type MenuItem = {
596
- action: WireNode | null;
798
+ action: Node<"action"> | Node<"action.bulk"> | null;
597
799
  effects: Effect[];
598
800
  href: string | null;
599
801
  icon: string | null;
@@ -607,10 +809,14 @@ export type Modal = {
607
809
  description: string | null;
608
810
  open: boolean;
609
811
  ref: string | null;
812
+ side: Side | null;
610
813
  title: string | null;
814
+ width: ModalWidth;
611
815
  };
816
+ export type ModalWidth = "sm" | "md" | "lg" | "xl" | "2xl" | "3xl";
612
817
  export type MoneyColumn = {
613
818
  align: ColumnAlign;
819
+ copyable: boolean;
614
820
  currency: string | null;
615
821
  currencyField: string | null;
616
822
  filter: ColumnFilter | null;
@@ -622,18 +828,24 @@ export type MoneyColumn = {
622
828
  toggleable: boolean;
623
829
  width: ColumnWidth;
624
830
  };
625
- export type NodeType = "action" | "action.bulk" | "action.group" | "badge" | "breadcrumbs" | "button" | "callouts" | "card" | "chart" | "chat.box" | "chat.part.text" | "chat.part.tool-call" | "collapsible" | "dropdown" | "field.builder" | "field.checkbox" | "field.choice" | "field.date-input" | "field.date-time-input" | "field.file-upload" | "field.hidden-input" | "field.number-input" | "field.otp" | "field.password-input" | "field.repeater" | "field.rich-editor" | "field.select" | "field.text-input" | "field.textarea" | "field.time-input" | "field.toggle" | "floating-panel" | "form" | "fragment" | "grid" | "heading" | "icon" | "link" | "menu" | "menu-item" | "modal" | "notifications" | "outlet" | "raw-block" | "remote.data-list" | "section" | "segmented-control" | "sidebar" | "stack" | "tab" | "table" | "tabs" | "text" | "tooltip" | "topbar";
831
+ export type NodeType = "action" | "action.bulk" | "action.group" | "avatar" | "badge" | "breadcrumbs" | "button" | "callouts" | "card" | "chart" | "chat.box" | "chat.part.text" | "chat.part.tool-call" | "collapsible" | "dropdown" | "field.builder" | "field.checkbox" | "field.choice" | "field.color-picker" | "field.date-input" | "field.date-time-input" | "field.file-upload" | "field.hidden-input" | "field.number-input" | "field.otp" | "field.password-input" | "field.repeater" | "field.rich-editor" | "field.select" | "field.text-input" | "field.textarea" | "field.time-input" | "field.toggle" | "floating-panel" | "form" | "fragment" | "grid" | "heading" | "icon" | "image" | "link" | "menu" | "menu-item" | "modal" | "notifications" | "outlet" | "progress" | "raw-block" | "remote.data-list" | "section" | "segmented-control" | "separator" | "sidebar" | "stack" | "tab" | "table" | "tabs" | "text" | "tooltip" | "topbar" | "tree";
626
832
  export type NotificationItem = {
627
- readonly id: string;
628
- readonly title: string | null;
833
+ readonly actions: Node[];
629
834
  readonly body: string | null;
630
- readonly icon: string | null;
631
- readonly variant: Variant | null;
835
+ readonly createdAt: string | null;
632
836
  readonly href: string | null;
837
+ readonly icon: string | null;
838
+ readonly id: string;
633
839
  readonly isRead: boolean;
634
- readonly createdAt: string | null;
635
- readonly actions: WireNode[];
840
+ readonly title: string | null;
841
+ readonly variant: Variant | null;
636
842
  };
843
+ export type NotificationList = {
844
+ readonly hasMore: boolean;
845
+ readonly notifications: NotificationItem[];
846
+ readonly unreadCount: number;
847
+ };
848
+ export type NotificationNodeType = "notifications";
637
849
  export type Notifications = {
638
850
  channel: string;
639
851
  endpoint: string;
@@ -643,6 +855,7 @@ export type Notifications = {
643
855
  export type NumberColumn = {
644
856
  align: ColumnAlign;
645
857
  compact: boolean;
858
+ copyable: boolean;
646
859
  filter: ColumnFilter | null;
647
860
  hiddenByDefault: boolean;
648
861
  label: string | null;
@@ -654,23 +867,18 @@ export type NumberColumn = {
654
867
  width: ColumnWidth;
655
868
  };
656
869
  export type NumberFormat = {
870
+ currency: string | null;
657
871
  kind: string;
658
- notation: string;
659
- minimumFractionDigits: number | null;
660
872
  maximumFractionDigits: number | null;
661
- currency: string | null;
873
+ minimumFractionDigits: number | null;
874
+ notation: string;
662
875
  unit: NumberFormatUnit | null;
663
876
  };
664
877
  export type NumberFormatUnit = "percent" | "kilogram" | "gram" | "kilometer" | "meter" | "byte" | "kilobyte" | "megabyte" | "gigabyte" | "millisecond" | "second" | "minute" | "hour" | "celsius" | "fahrenheit";
665
878
  export type NumberInput = {
666
879
  autoFocus: boolean;
667
880
  columnWidth: ColumnWidth;
668
- conditions: {
669
- visible?: Condition[];
670
- required?: Condition[];
671
- readOnly?: Condition[];
672
- disabled?: Condition[];
673
- } | null;
881
+ conditions: FieldConditions | null;
674
882
  dependsOnAny: boolean;
675
883
  dependsOnKeys: string[] | null;
676
884
  disabled: boolean;
@@ -694,10 +902,11 @@ export type NumberInput = {
694
902
  value: unknown;
695
903
  };
696
904
  export type Op = "contains" | "starts_with" | "ends_with" | "eq" | "neq" | "gt" | "gte" | "lt" | "lte" | "in" | "not_in" | "before" | "after" | "empty" | "filled";
697
- export type OpenModalEffect = {
905
+ export type OpenModal = {
698
906
  readonly modal: string;
699
907
  };
700
908
  export type Option = {
909
+ readonly data: Record<string, unknown> | null;
701
910
  readonly label: string;
702
911
  readonly value: string;
703
912
  };
@@ -705,12 +914,7 @@ export type Orientation = "horizontal" | "vertical";
705
914
  export type OtpInput = {
706
915
  autoFocus: boolean;
707
916
  columnWidth: ColumnWidth;
708
- conditions: {
709
- visible?: Condition[];
710
- required?: Condition[];
711
- readOnly?: Condition[];
712
- disabled?: Condition[];
713
- } | null;
917
+ conditions: FieldConditions | null;
714
918
  dependsOnAny: boolean;
715
919
  dependsOnKeys: string[] | null;
716
920
  disabled: boolean;
@@ -729,17 +933,24 @@ export type OtpInput = {
729
933
  export type Outlet = Record<string, never>;
730
934
  export type PageContainer = "centered" | "default";
731
935
  export type PageLayout = "app" | "auth" | "none";
936
+ export type PageLayoutPayload = {
937
+ readonly key: string;
938
+ readonly schema: Node[];
939
+ };
940
+ export type PagePayload = {
941
+ readonly breadcrumbs: Breadcrumb[];
942
+ readonly container: string;
943
+ readonly layout: PageLayoutPayload | null;
944
+ readonly listeners: Listen[];
945
+ readonly schema: Node[];
946
+ readonly title: string | null;
947
+ };
732
948
  export type PaginationType = "none" | "simple" | "table" | "infinite";
733
949
  export type PasswordInput = {
734
950
  autoComplete: string | null;
735
951
  autoFocus: boolean;
736
952
  columnWidth: ColumnWidth;
737
- conditions: {
738
- visible?: Condition[];
739
- required?: Condition[];
740
- readOnly?: Condition[];
741
- disabled?: Condition[];
742
- } | null;
953
+ conditions: FieldConditions | null;
743
954
  confirmation: {
744
955
  label: string;
745
956
  name: string;
@@ -751,11 +962,7 @@ export type PasswordInput = {
751
962
  editablePrefill: boolean;
752
963
  helperText: string | null;
753
964
  label: string | null;
754
- labelAction: {
755
- href: string;
756
- label: string;
757
- tabIndex?: number;
758
- } | null;
965
+ labelAction: LabelAction | null;
759
966
  name: string;
760
967
  passwordRules: string | null;
761
968
  placeholder: string | null;
@@ -770,34 +977,39 @@ export type PasswordInput = {
770
977
  value: unknown;
771
978
  };
772
979
  export type Placement = "top" | "bottom" | "right";
980
+ export type Progress = {
981
+ color: Color | null;
982
+ max: number;
983
+ showValue: boolean;
984
+ size: Size;
985
+ value: number;
986
+ variant: ProgressVariant;
987
+ };
988
+ export type ProgressVariant = "bar" | "circle";
773
989
  export type RawBlock = {
774
990
  html: string;
775
991
  };
776
- export type RedirectEffect = {
992
+ export type Redirect = {
777
993
  readonly url: string;
778
994
  };
779
- export type ReloadComponentEffect = {
995
+ export type ReloadComponent = {
780
996
  readonly component: string;
781
997
  };
782
- export type ReloadPageEffect = object;
998
+ export type ReloadPage = Record<string, never>;
783
999
  export type RemoteAccess = {
784
- readonly source: string;
785
1000
  readonly audience: string;
786
- readonly scopes: string[];
787
1001
  readonly nodeId: string;
788
1002
  readonly nodeType: string;
789
- readonly tokenEndpoint: string;
790
1003
  readonly ref: string;
1004
+ readonly scopes: string[];
1005
+ readonly source: string;
1006
+ readonly tokenEndpoint: string;
791
1007
  };
1008
+ export type RemoteNodeType = "remote.data-list";
792
1009
  export type Repeater = {
793
1010
  addLabel: string | null;
794
1011
  columnWidth: ColumnWidth;
795
- conditions: {
796
- visible?: Condition[];
797
- required?: Condition[];
798
- readOnly?: Condition[];
799
- disabled?: Condition[];
800
- } | null;
1012
+ conditions: FieldConditions | null;
801
1013
  defaultItems: number;
802
1014
  dependsOnAny: boolean;
803
1015
  dependsOnKeys: string[] | null;
@@ -821,21 +1033,22 @@ export type Repeater = {
821
1033
  tooltip: string | null;
822
1034
  value: unknown;
823
1035
  };
824
- export type ResetFormEffect = {
1036
+ export type ResetForm = {
825
1037
  readonly form: string | null;
826
1038
  };
1039
+ export type ResolveResponse = {
1040
+ readonly fields: Record<string, Node>;
1041
+ readonly prefill: Record<string, unknown>;
1042
+ readonly values: Record<string, unknown>;
1043
+ };
827
1044
  export type RichEditor = {
828
1045
  columnWidth: ColumnWidth;
829
- conditions: {
830
- visible?: Condition[];
831
- required?: Condition[];
832
- readOnly?: Condition[];
833
- disabled?: Condition[];
834
- } | null;
1046
+ conditions: FieldConditions | null;
835
1047
  dependsOnAny: boolean;
836
1048
  dependsOnKeys: string[] | null;
837
1049
  disabled: boolean;
838
1050
  editablePrefill: boolean;
1051
+ extensions: EditorExtension[];
839
1052
  helperText: string | null;
840
1053
  label: string | null;
841
1054
  name: string;
@@ -848,11 +1061,11 @@ export type RichEditor = {
848
1061
  value: unknown;
849
1062
  };
850
1063
  export type RowAction = {
851
- type: RowActionType;
852
- key: string;
853
1064
  destructive: boolean;
854
1065
  icon: string | null;
1066
+ key: string;
855
1067
  label: string | null;
1068
+ type: RowActionType;
856
1069
  };
857
1070
  export type RowActionType = "duplicate" | "remove";
858
1071
  export type RowLayout = "stack" | "table";
@@ -860,7 +1073,7 @@ export type Section = {
860
1073
  collapsed: boolean;
861
1074
  collapsible: boolean;
862
1075
  description: string | null;
863
- headerActions: WireNode[];
1076
+ headerActions: Node[];
864
1077
  rememberState: boolean;
865
1078
  title: string | null;
866
1079
  tooltip: string | null;
@@ -875,12 +1088,8 @@ export type SegmentedControl = {
875
1088
  export type Select = {
876
1089
  autoFocus: boolean;
877
1090
  columnWidth: ColumnWidth;
878
- conditions: {
879
- visible?: Condition[];
880
- required?: Condition[];
881
- readOnly?: Condition[];
882
- disabled?: Condition[];
883
- } | null;
1091
+ conditions: FieldConditions | null;
1092
+ creatable: boolean;
884
1093
  dependsOnAny: boolean;
885
1094
  dependsOnKeys: string[] | null;
886
1095
  disabled: boolean;
@@ -909,16 +1118,25 @@ export type SelectFilter = {
909
1118
  placeholder: string | null;
910
1119
  searchable: boolean;
911
1120
  };
1121
+ export type Separator = {
1122
+ orientation: Orientation;
1123
+ };
912
1124
  export type Side = "start" | "end";
913
1125
  export type Sidebar = {
914
1126
  collapsible: boolean;
915
1127
  rememberState: boolean;
916
1128
  };
1129
+ export type SignedUpload = {
1130
+ readonly headers: Record<string, unknown>;
1131
+ readonly key: string;
1132
+ readonly method: HttpMethod;
1133
+ readonly url: string;
1134
+ };
917
1135
  export type Size = "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl";
918
1136
  export type SortDirection = "asc" | "desc";
919
1137
  export type Stack = {
920
1138
  align: Align | null;
921
- direction: string | null;
1139
+ direction: StackDirection | null;
922
1140
  float: Side | null;
923
1141
  gap: Gap | null;
924
1142
  height: Height | null;
@@ -934,51 +1152,60 @@ export type StackColumn = {
934
1152
  toggleable: boolean;
935
1153
  width: ColumnWidth;
936
1154
  };
1155
+ export type StackDirection = "row" | "column";
937
1156
  export type Tab = {
938
1157
  confirm: {
939
1158
  required: boolean;
940
1159
  redirectUrl: string;
941
- timeout?: number;
1160
+ timeout: number | null;
942
1161
  } | null;
943
1162
  label: string;
944
1163
  value: string;
945
1164
  };
946
1165
  export type Table = {
947
- actionsLabel: string;
948
- bulkActions: WireNode[];
949
- columns: Record<string, unknown>[];
950
- emptyLabel: string;
1166
+ actionsLabel: string | null;
1167
+ bulkActions: (Node<"action"> | Node<"action.bulk">)[];
1168
+ columns: ColumnNode[];
1169
+ emptyLabel: string | null;
951
1170
  endpoint: string | null;
952
- filters: WireNode[];
1171
+ filters: FilterNode[];
953
1172
  layout: string | null;
954
1173
  lazy: boolean;
955
1174
  ref: string | null;
956
1175
  resizableColumns: boolean;
957
1176
  resizeIndicator: boolean;
1177
+ searchable: boolean;
958
1178
  striped: boolean;
959
1179
  };
1180
+ export type TableNodeType = "table";
960
1181
  export type TablePagination = {
961
- readonly mode: PaginationType;
962
1182
  readonly currentPage: number | null;
963
- readonly lastPage: number | null;
964
- readonly perPage: number | null;
965
- readonly total: number | null;
966
1183
  readonly from: number | null;
967
- readonly to: number | null;
968
1184
  readonly hasMore: boolean;
1185
+ readonly lastPage: number | null;
1186
+ readonly mode: PaginationType;
969
1187
  readonly nextPage: number | null;
1188
+ readonly perPage: number | null;
1189
+ readonly to: number | null;
1190
+ readonly total: number | null;
970
1191
  };
971
1192
  export type TableQuery = {
972
1193
  readonly filters: FilterClause[];
973
- readonly sorts: TableSort[];
974
1194
  readonly page: number;
975
1195
  readonly perPage: number;
976
- readonly tableFilters: Record<string, Record<string, unknown>>;
1196
+ readonly search: string;
1197
+ readonly sorts: TableSort[];
977
1198
  readonly tableFilterIndicators: FilterIndicator[];
1199
+ readonly tableFilters: Record<string, Record<string, unknown>>;
1200
+ };
1201
+ export type TableResult = {
1202
+ readonly data: Record<string, unknown>[];
1203
+ readonly pagination: TablePagination | null;
1204
+ readonly query: TableQuery;
978
1205
  };
979
1206
  export type TableSort = {
980
- readonly key: string;
981
1207
  readonly direction: SortDirection;
1208
+ readonly key: string;
982
1209
  };
983
1210
  export type Tabs = {
984
1211
  activeValue: string;
@@ -1008,8 +1235,8 @@ export type TextColumn = {
1008
1235
  } | null;
1009
1236
  copyable: boolean;
1010
1237
  date: {
1011
- dateStyle: string | null;
1012
- timeStyle: string | null;
1238
+ dateStyle: DateTimeStyle | null;
1239
+ timeStyle: DateTimeStyle | null;
1013
1240
  } | null;
1014
1241
  filter: ColumnFilter | null;
1015
1242
  hiddenByDefault: boolean;
@@ -1027,12 +1254,8 @@ export type TextInput = {
1027
1254
  autoComplete: string | null;
1028
1255
  autoFocus: boolean;
1029
1256
  columnWidth: ColumnWidth;
1030
- conditions: {
1031
- visible?: Condition[];
1032
- required?: Condition[];
1033
- readOnly?: Condition[];
1034
- disabled?: Condition[];
1035
- } | null;
1257
+ conditions: FieldConditions | null;
1258
+ copyable: boolean;
1036
1259
  dependsOnAny: boolean;
1037
1260
  dependsOnKeys: string[] | null;
1038
1261
  disabled: boolean;
@@ -1058,12 +1281,7 @@ export type TextPart = {
1058
1281
  export type Textarea = {
1059
1282
  autoFocus: boolean;
1060
1283
  columnWidth: ColumnWidth;
1061
- conditions: {
1062
- visible?: Condition[];
1063
- required?: Condition[];
1064
- readOnly?: Condition[];
1065
- disabled?: Condition[];
1066
- } | null;
1284
+ conditions: FieldConditions | null;
1067
1285
  dependsOnAny: boolean;
1068
1286
  dependsOnKeys: string[] | null;
1069
1287
  disabled: boolean;
@@ -1084,12 +1302,7 @@ export type Textarea = {
1084
1302
  export type TimeInput = {
1085
1303
  autoFocus: boolean;
1086
1304
  columnWidth: ColumnWidth;
1087
- conditions: {
1088
- visible?: Condition[];
1089
- required?: Condition[];
1090
- readOnly?: Condition[];
1091
- disabled?: Condition[];
1092
- } | null;
1305
+ conditions: FieldConditions | null;
1093
1306
  dependsOnAny: boolean;
1094
1307
  dependsOnKeys: string[] | null;
1095
1308
  disabled: boolean;
@@ -1108,26 +1321,18 @@ export type TimeInput = {
1108
1321
  tooltip: string | null;
1109
1322
  value: unknown;
1110
1323
  };
1111
- export type ToastEffect = {
1112
- readonly toast: ToastMessage;
1113
- };
1114
- export type ToastMessage = {
1324
+ export type Toast = {
1325
+ action: Node | null;
1326
+ dismissible: boolean;
1115
1327
  duration: number | null;
1328
+ message: Translatable | string;
1116
1329
  persistent: boolean;
1117
- dismissible: boolean;
1118
- action: WireNode | null;
1119
1330
  variant: Variant;
1120
- message: Translatable | string;
1121
1331
  };
1122
1332
  export type Toggle = {
1123
1333
  autoFocus: boolean;
1124
1334
  columnWidth: ColumnWidth;
1125
- conditions: {
1126
- visible?: Condition[];
1127
- required?: Condition[];
1128
- readOnly?: Condition[];
1129
- disabled?: Condition[];
1130
- } | null;
1335
+ conditions: FieldConditions | null;
1131
1336
  dependsOnAny: boolean;
1132
1337
  dependsOnKeys: string[] | null;
1133
1338
  disabled: boolean;
@@ -1146,7 +1351,7 @@ export type Toggle = {
1146
1351
  export type ToggleFilter = {
1147
1352
  label: string | null;
1148
1353
  };
1149
- export type ToggleSidebarEffect = {
1354
+ export type ToggleSidebar = {
1150
1355
  readonly target: string | null;
1151
1356
  };
1152
1357
  export type ToolCallPart = {
@@ -1155,22 +1360,36 @@ export type ToolCallPart = {
1155
1360
  };
1156
1361
  export type Tooltip = {
1157
1362
  content: string | null;
1158
- trigger: WireNode[];
1363
+ trigger: Node[];
1159
1364
  };
1160
1365
  export type Topbar = {
1161
1366
  sticky: boolean;
1162
1367
  };
1163
1368
  export type Translatable = {
1369
+ key: string;
1164
1370
  payload: Record<string, string>;
1165
1371
  replacements: Record<string, string | number | boolean>;
1166
- key: string;
1372
+ };
1373
+ export type Tree = {
1374
+ activeId: string | null;
1375
+ defaultExpanded: string[];
1376
+ rememberState: boolean;
1377
+ };
1378
+ export type TreeNode = {
1379
+ actions: Node<"action"> | Node<"action.bulk"> | Node<"action.group"> | null;
1380
+ badge: string | null;
1381
+ children: TreeNode[];
1382
+ disabled: boolean;
1383
+ hasChildren: boolean;
1384
+ href: string | null;
1385
+ icon: string | null;
1386
+ readonly id: string;
1387
+ readonly label: string;
1388
+ };
1389
+ export type UiNodeType = "avatar" | "badge" | "button" | "card" | "chart" | "collapsible" | "floating-panel" | "grid" | "heading" | "icon" | "image" | "link" | "modal" | "progress" | "raw-block" | "section" | "segmented-control" | "separator" | "stack" | "tab" | "tabs" | "text" | "tooltip" | "tree";
1390
+ export type UnreadCount = {
1391
+ readonly unreadCount: number;
1167
1392
  };
1168
1393
  export type Variant = "success" | "info" | "warning" | "error";
1169
1394
  export type Width = "full" | "auto" | "sm" | "md" | "lg" | "fill";
1170
- export type WireNode = {
1171
- id?: string;
1172
- key?: string;
1173
- type: string;
1174
- props?: Record<string, unknown>;
1175
- schema?: WireNode[];
1176
- };
1395
+ export {};