@panneau/core 4.0.73 → 4.0.75

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.
@@ -1,5 +1,6 @@
1
1
  import * as react from 'react';
2
2
  import { ElementType, ReactNode, ComponentType } from 'react';
3
+ import { MessageDescriptor } from 'react-intl';
3
4
  export { RoutesContext, RoutesProvider, useRoutes, useUrlGenerator } from '@folklore/routes';
4
5
  export { TrackingContext } from '@folklore/tracking';
5
6
 
@@ -10,7 +11,7 @@ declare class ComponentsManager {
10
11
  addComponents(components: Record<string, ElementType>, namespace?: string | null): this;
11
12
  merge(manager: ComponentsManager, namespace?: string | null): this;
12
13
  addNamespace(namespace: string | null): this;
13
- getComponent(name: string, namespace?: string | null): ElementType | null;
14
+ getComponent(name: string | ElementType, namespace?: string | null): ElementType | null;
14
15
  getComponents(namespace?: string | null): Record<string, ElementType> | null;
15
16
  hasComponent(name: string, namespace?: string | null): boolean;
16
17
  }
@@ -20,20 +21,95 @@ interface Definition$1 {
20
21
  component?: unknown;
21
22
  [key: string]: unknown;
22
23
  }
23
- declare class DefinitionsManager {
24
- definitions: Definition$1[];
25
- constructor(definitions?: Definition$1[]);
26
- addDefinition(definition: Definition$1 | Definition$1[]): this;
27
- addDefinitions(definitions: Definition$1[]): this;
28
- merge(manager: DefinitionsManager): this;
29
- getDefinition(id: string | null): Definition$1 | null;
30
- getDefinitions(): Definition$1[];
24
+ declare class DefinitionsManager<T extends Definition$1 = Definition$1> {
25
+ definitions: T[];
26
+ constructor(definitions?: T[]);
27
+ addDefinition(definition: T | T[]): this;
28
+ addDefinitions(definitions: T[]): this;
29
+ merge(manager: DefinitionsManager<T>): this;
30
+ getDefinition(id: string | null): T | null;
31
+ getDefinitions(): T[];
31
32
  hasDefinition(id: string): boolean;
32
33
  getComponent(id: string): unknown;
33
34
  getComponents(): Record<string, unknown>;
34
35
  }
35
36
 
36
- declare class FieldsManager extends DefinitionsManager {
37
+ /**
38
+ * Core UI Types
39
+ */
40
+
41
+ /**
42
+ * Internationalization message definition
43
+ */
44
+ type Message = MessageDescriptor;
45
+ /**
46
+ * Label can be either a message object or any React node
47
+ */
48
+ type Label = Message | ReactNode;
49
+ /**
50
+ * Form control size
51
+ */
52
+ type ControlSize = 'lg' | 'sm' | null;
53
+ /**
54
+ * Font definition
55
+ */
56
+ interface Font {
57
+ name: string;
58
+ }
59
+ /**
60
+ * Generic definition
61
+ */
62
+ interface Definition {
63
+ id: string;
64
+ component?: string | ElementType;
65
+ [key: string]: unknown;
66
+ }
67
+ interface RouteDefinition {
68
+ path?: string;
69
+ route?: string;
70
+ component: string | ElementType;
71
+ [key: string]: unknown;
72
+ }
73
+ interface PageDefinition {
74
+ component: string | ElementType;
75
+ }
76
+
77
+ /**
78
+ * Form Types
79
+ * TypeScript interfaces for form-related components
80
+ */
81
+
82
+ /**
83
+ * Field definition
84
+ */
85
+ interface Field {
86
+ name?: string;
87
+ type?: string;
88
+ label?: Label;
89
+ component?: string;
90
+ size?: ControlSize;
91
+ [key: string]: unknown;
92
+ }
93
+ interface FieldDefinition extends Omit<Field, 'component'>, Definition {
94
+ }
95
+ /**
96
+ * Form definition
97
+ */
98
+ interface Form {
99
+ title?: ReactNode;
100
+ fields?: Field[];
101
+ method?: string | null;
102
+ action?: string | null;
103
+ submitButtonLabel?: Label | null;
104
+ [key: string]: unknown;
105
+ }
106
+ interface FormDefinition extends Form, Definition {
107
+ }
108
+
109
+ declare class FieldsManager extends DefinitionsManager<FieldDefinition> {
110
+ }
111
+
112
+ declare class FormsManager extends DefinitionsManager<FormDefinition> {
37
113
  }
38
114
 
39
115
  declare const MODALS_NAMESPACE = "modals";
@@ -131,39 +207,6 @@ interface ComponentsProviderProps {
131
207
  }
132
208
  declare function ComponentsProvider({ components, manager, namespace, children, }: ComponentsProviderProps): react.JSX.Element;
133
209
 
134
- /**
135
- * Core UI Types
136
- */
137
-
138
- /**
139
- * Font definition
140
- */
141
- interface Font {
142
- name: string;
143
- }
144
-
145
- /**
146
- * Form Types
147
- * TypeScript interfaces for form-related components
148
- */
149
-
150
- /**
151
- * Field definition
152
- */
153
- interface Field {
154
- name?: string;
155
- type?: string;
156
- component?: string | ElementType;
157
- label?: ReactNode;
158
- }
159
- /**
160
- * Form definition
161
- */
162
- interface Form {
163
- title: ReactNode;
164
- fields?: Field[];
165
- }
166
-
167
210
  /**
168
211
  * Resource Types
169
212
  * TypeScript interfaces for resources, items, users, media, and other entities
@@ -193,7 +236,7 @@ interface Action {
193
236
  target?: string;
194
237
  onClick?: (() => void) | null;
195
238
  endpoint?: string | null;
196
- withConfirmation?: boolean;
239
+ withoutConfirmation?: boolean;
197
240
  [key: string]: unknown;
198
241
  }
199
242
  type ActionDefinition = string | Action;
@@ -219,15 +262,33 @@ interface ResourceIndex {
219
262
  fields?: Field[];
220
263
  [key: string]: unknown;
221
264
  }
265
+ interface ResourcePages {
266
+ index?: PageDefinition;
267
+ show?: PageDefinition;
268
+ create?: PageDefinition;
269
+ edit?: PageDefinition;
270
+ delete?: PageDefinition;
271
+ duplicate?: PageDefinition;
272
+ [key: string]: PageDefinition | undefined;
273
+ }
274
+ interface ResourceForms {
275
+ default: FormDefinition | null;
276
+ create: FormDefinition | null;
277
+ edit: FormDefinition | null;
278
+ delete: FormDefinition | null;
279
+ modal: FormDefinition | null;
280
+ [key: string]: FormDefinition | null;
281
+ }
222
282
  interface Resource {
223
283
  id: string;
224
284
  name: string;
225
285
  intl?: ResourceIntl;
226
286
  fields?: Field[];
227
287
  index?: ResourceIndex;
228
- forms?: Record<string, Form>;
229
- shows_in_navbar?: boolean;
288
+ forms?: ResourceForms;
230
289
  settings?: Record<string, unknown>;
290
+ extraRoutes?: RouteDefinition[];
291
+ pages?: ResourcePages;
231
292
  }
232
293
  /**
233
294
  * Filter definition
@@ -247,25 +308,18 @@ interface Filter {
247
308
  * Panneau route configuration
248
309
  */
249
310
  interface Routes {
250
- 'resources.index': string;
251
- 'resources.create': string;
252
- 'resources.store': string;
253
- 'resources.show': string;
254
- 'resources.edit': string;
255
- 'resources.update': string;
256
- 'resources.delete': string;
257
- 'resources.destroy': string;
258
- 'resources.duplicate': string;
259
- 'resources.clone': string;
260
- 'resources.restore': string;
261
- [key: string]: string;
262
- }
263
- /**
264
- * Page definition
265
- */
266
- interface Page {
267
- component: string;
268
- [key: string]: unknown;
311
+ 'resources.index': RouteDefinition | string;
312
+ 'resources.create': RouteDefinition | string;
313
+ 'resources.store': RouteDefinition | string;
314
+ 'resources.show': RouteDefinition | string;
315
+ 'resources.edit': RouteDefinition | string;
316
+ 'resources.update': RouteDefinition | string;
317
+ 'resources.delete': RouteDefinition | string;
318
+ 'resources.destroy': RouteDefinition | string;
319
+ 'resources.duplicate': RouteDefinition | string;
320
+ 'resources.clone': RouteDefinition | string;
321
+ 'resources.restore': RouteDefinition | string;
322
+ [key: string]: RouteDefinition | string;
269
323
  }
270
324
  interface PanneauTheme {
271
325
  colorScheme?: string | null;
@@ -286,24 +340,26 @@ interface PanneauIntl {
286
340
  messages?: Record<string, string>;
287
341
  values?: PanneauIntlValues;
288
342
  }
289
- /**
290
- * Generic definition
291
- */
292
- interface Definition {
293
- name?: string;
294
- [key: string]: unknown;
343
+ interface PanneauPages extends ResourcePages {
344
+ home?: PageDefinition;
345
+ login?: PageDefinition;
346
+ account?: PageDefinition;
347
+ error?: PageDefinition;
295
348
  }
296
349
  /**
297
350
  * Panneau definition (main configuration)
298
351
  */
299
- interface PanneauDefinition extends Definition {
352
+ interface PanneauDefinition {
353
+ name?: string;
300
354
  resources?: Resource[];
301
355
  routes?: Routes;
302
- pages?: Record<string, Page>;
356
+ pages?: PanneauPages;
303
357
  intl?: PanneauIntl;
304
358
  theme?: PanneauTheme;
305
359
  components?: PanneauComponents;
306
360
  settings?: Record<string, unknown>;
361
+ forms?: FormDefinition[];
362
+ fields?: FieldDefinition[];
307
363
  }
308
364
  /**
309
365
  * Tracking variables
@@ -320,10 +376,10 @@ declare function DefinitionProvider({ definition, children }: DefinitionProvider
320
376
 
321
377
  declare const FieldsContext: react.Context<FieldsManager>;
322
378
  declare function useFieldsManager(): FieldsManager | null;
323
- declare function useField(id: string): Field | null;
324
- declare function useFields(): Field[];
379
+ declare function useFieldDefinition(id: string): FieldDefinition | null;
380
+ declare function useFieldDefinitions(): FieldDefinition[];
325
381
  interface FieldsProviderProps {
326
- fields?: Field[] | null;
382
+ fields?: FieldDefinition[] | null;
327
383
  manager?: FieldsManager | null;
328
384
  children: ReactNode;
329
385
  }
@@ -364,6 +420,17 @@ interface FormProviderProps {
364
420
  }
365
421
  declare function FormProvider({ value, setValue, children }: FormProviderProps): react.JSX.Element;
366
422
 
423
+ declare const FormsContext: react.Context<FormsManager>;
424
+ declare function useFormsManager(): FormsManager | null;
425
+ declare function useFormDefinition(id: string): FormDefinition | null;
426
+ declare function useFormDefinitions(): FormDefinition[];
427
+ interface FormsProviderProps {
428
+ forms?: FormDefinition[] | null;
429
+ manager?: FormsManager | null;
430
+ children: ReactNode;
431
+ }
432
+ declare function FormsProvider({ forms, manager, children }: FormsProviderProps): react.JSX.Element;
433
+
367
434
  declare const GoogleApiClientContext: react.Context<any>;
368
435
  declare function useGoogleApiClient(): any | null;
369
436
  declare function withGoogleApiClient(WrappedComponent: ComponentType<any>): {
@@ -498,5 +565,5 @@ interface TrackingProviderProps {
498
565
  }
499
566
  declare function TrackingProvider({ variables, children }: TrackingProviderProps): react.JSX.Element;
500
567
 
501
- export { ACTIONS_NAMESPACE, APP_NAMESPACE, BUTTONS_NAMESPACE, ComponentsContext, ComponentsProvider, DISPLAYS_NAMESPACE, DefinitionProvider, FIELDS_NAMESPACE, FILTERS_NAMESPACE, FORMS_NAMESPACE, FieldsContext, FieldsProvider, FontsContext, FontsProvider, FormProvider, GoogleApiClientContext, GoogleApiClientProvider, GoogleKeysContext, GoogleKeysProvider, GoogleMapsClientContext, GoogleMapsClientProvider, LISTS_NAMESPACE, LocalesContext, LocalesProvider, MODALS_NAMESPACE, ModalContext, ModalProvider, PAGES_NAMESPACE, PREVIEWS_NAMESPACE, PanelsContext, PanelsProvider, PanneauProvider, ResourceProvider, TrackingProvider, useActionComponent, useActionsComponents, useActionsComponentsManager, useAppComponent, useAppComponents, useAppComponentsManager, useButtonComponent, useButtonsComponents, useButtonsComponentsManager, useComponent, useComponents, useComponentsManager, useDefinition, useDefinitionContext, useDisplayComponent, useDisplaysComponents, useDisplaysComponentsManager, useField, useFieldComponent, useFields, useFieldsComponents, useFieldsComponentsManager, useFieldsManager, useFilterComponent, useFiltersComponents, useFiltersComponentsManager, useFonts, useFormComponent, useFormContext, useFormSetValue, useFormValue, useFormsComponents, useFormsComponentsManager, useGoogleApiClient, useGoogleFonts, useGoogleKeys, useGoogleMapsClient, useListComponent, useListsComponents, useListsComponentsManager, useLocales, useLocalesContext, useModal, useModalComponent, useModalsComponents, useModalsComponentsManager, useOtherLocales, usePageComponent, usePagesComponents, usePagesComponentsManager, usePanels, usePanneau, usePanneauAuth, usePanneauColorScheme, usePanneauComponent, usePanneauComponents, usePanneauResource, usePanneauResources, usePanneauSettings, usePreviewComponent, usePreviewsComponents, usePreviewsComponentsManager, useResource, useRouteBack, useRoutePush, useTracking, withGoogleApiClient, withGoogleMapsClient, withPanels };
568
+ export { ACTIONS_NAMESPACE, APP_NAMESPACE, BUTTONS_NAMESPACE, ComponentsContext, ComponentsProvider, DISPLAYS_NAMESPACE, DefinitionProvider, FIELDS_NAMESPACE, FILTERS_NAMESPACE, FORMS_NAMESPACE, FieldsContext, FieldsProvider, FontsContext, FontsProvider, FormProvider, FormsContext, FormsProvider, GoogleApiClientContext, GoogleApiClientProvider, GoogleKeysContext, GoogleKeysProvider, GoogleMapsClientContext, GoogleMapsClientProvider, LISTS_NAMESPACE, LocalesContext, LocalesProvider, MODALS_NAMESPACE, ModalContext, ModalProvider, PAGES_NAMESPACE, PREVIEWS_NAMESPACE, PanelsContext, PanelsProvider, PanneauProvider, ResourceProvider, TrackingProvider, useActionComponent, useActionsComponents, useActionsComponentsManager, useAppComponent, useAppComponents, useAppComponentsManager, useButtonComponent, useButtonsComponents, useButtonsComponentsManager, useComponent, useComponents, useComponentsManager, useDefinition, useDefinitionContext, useDisplayComponent, useDisplaysComponents, useDisplaysComponentsManager, useFieldComponent, useFieldDefinition, useFieldDefinitions, useFieldsComponents, useFieldsComponentsManager, useFieldsManager, useFilterComponent, useFiltersComponents, useFiltersComponentsManager, useFonts, useFormComponent, useFormContext, useFormDefinition, useFormDefinitions, useFormSetValue, useFormValue, useFormsComponents, useFormsComponentsManager, useFormsManager, useGoogleApiClient, useGoogleFonts, useGoogleKeys, useGoogleMapsClient, useListComponent, useListsComponents, useListsComponentsManager, useLocales, useLocalesContext, useModal, useModalComponent, useModalsComponents, useModalsComponentsManager, useOtherLocales, usePageComponent, usePagesComponents, usePagesComponentsManager, usePanels, usePanneau, usePanneauAuth, usePanneauColorScheme, usePanneauComponent, usePanneauComponents, usePanneauResource, usePanneauResources, usePanneauSettings, usePreviewComponent, usePreviewsComponents, usePreviewsComponentsManager, useResource, useRouteBack, useRoutePush, useTracking, withGoogleApiClient, withGoogleMapsClient, withPanels };
502
569
  export type { ModalContextValue, ModalData };
package/dist/contexts.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { c } from 'react/compiler-runtime';
2
2
  import isString from 'lodash-es/isString';
3
- import { createContext, useContext, useState, use, useEffect, useRef } from 'react';
4
- import { ComponentsManager, FieldsManager, Tracking } from '@panneau/core';
3
+ import { createContext, useContext, use, useState, useEffect, useRef } from 'react';
4
+ import { ComponentsManager, FieldsManager, FormsManager, Tracking } from '@panneau/core';
5
5
  import { jsx } from 'react/jsx-runtime';
6
6
  import uniqBy from 'lodash-es/uniqBy';
7
7
  import { getJSON } from '@folklore/fetch';
@@ -441,9 +441,9 @@ function DefinitionProvider(t0) {
441
441
 
442
442
  const FieldsContext = /*#__PURE__*/createContext(null);
443
443
  function useFieldsManager() {
444
- return useContext(FieldsContext);
444
+ return use(FieldsContext);
445
445
  }
446
- function useField(id) {
446
+ function useFieldDefinition(id) {
447
447
  const $ = c(3);
448
448
  const manager = useFieldsManager();
449
449
  let t0;
@@ -457,7 +457,7 @@ function useField(id) {
457
457
  }
458
458
  return t0;
459
459
  }
460
- function useFields() {
460
+ function useFieldDefinitions() {
461
461
  const $ = c(2);
462
462
  const manager = useFieldsManager();
463
463
  let t0;
@@ -482,7 +482,7 @@ function FieldsProvider(t0) {
482
482
  const previousManager = useFieldsManager() || null;
483
483
  let t3;
484
484
  if ($[0] !== fields || $[1] !== manager || $[2] !== previousManager) {
485
- const newFields = uniqBy([...(fields || []), ...(manager !== null ? manager.getDefinitions() : []), ...(previousManager !== null ? previousManager.getDefinitions() : [])], _temp$1).reverse();
485
+ const newFields = uniqBy([...(fields || []), ...(manager !== null ? manager.getDefinitions() : []), ...(previousManager !== null ? previousManager.getDefinitions() : [])], _temp$2).reverse();
486
486
  t3 = new FieldsManager(newFields);
487
487
  $[0] = fields;
488
488
  $[1] = manager;
@@ -535,7 +535,7 @@ function FieldsProvider(t0) {
535
535
  }
536
536
  return t6;
537
537
  }
538
- function _temp$1(t0) {
538
+ function _temp$2(t0) {
539
539
  const {
540
540
  id
541
541
  } = t0;
@@ -622,7 +622,7 @@ function useGoogleFonts(t0) {
622
622
  } = t6;
623
623
  const items = t7 === undefined ? [] : t7;
624
624
  if (!canceled) {
625
- const newFonts = items.map(_temp);
625
+ const newFonts = items.map(_temp$1);
626
626
  if (setFonts !== null) {
627
627
  setFonts(newFonts);
628
628
  } else {
@@ -648,7 +648,7 @@ function useGoogleFonts(t0) {
648
648
  useEffect(t4, t5);
649
649
  return googleFonts;
650
650
  }
651
- function _temp(it) {
651
+ function _temp$1(it) {
652
652
  return {
653
653
  type: "google",
654
654
  name: it.family,
@@ -847,6 +847,109 @@ function FormProvider(t0) {
847
847
  return t2;
848
848
  }
849
849
 
850
+ const FormsContext = /*#__PURE__*/createContext(null);
851
+ function useFormsManager() {
852
+ return use(FormsContext);
853
+ }
854
+ function useFormDefinition(id) {
855
+ const $ = c(3);
856
+ const manager = useFormsManager();
857
+ let t0;
858
+ if ($[0] !== id || $[1] !== manager) {
859
+ t0 = manager.getDefinition(id);
860
+ $[0] = id;
861
+ $[1] = manager;
862
+ $[2] = t0;
863
+ } else {
864
+ t0 = $[2];
865
+ }
866
+ return t0;
867
+ }
868
+ function useFormDefinitions() {
869
+ const $ = c(2);
870
+ const manager = useFormsManager();
871
+ let t0;
872
+ if ($[0] !== manager) {
873
+ t0 = manager.getDefinitions();
874
+ $[0] = manager;
875
+ $[1] = t0;
876
+ } else {
877
+ t0 = $[1];
878
+ }
879
+ return t0;
880
+ }
881
+ function FormsProvider(t0) {
882
+ const $ = c(12);
883
+ const {
884
+ forms: t1,
885
+ manager: t2,
886
+ children
887
+ } = t0;
888
+ const forms = t1 === undefined ? null : t1;
889
+ const manager = t2 === undefined ? null : t2;
890
+ const previousManager = useFormsManager() || null;
891
+ let t3;
892
+ if ($[0] !== forms || $[1] !== manager || $[2] !== previousManager) {
893
+ const newForms = uniqBy([...(forms || []), ...(manager !== null ? manager.getDefinitions() : []), ...(previousManager !== null ? previousManager.getDefinitions() : [])], _temp).reverse();
894
+ t3 = new FormsManager(newForms);
895
+ $[0] = forms;
896
+ $[1] = manager;
897
+ $[2] = previousManager;
898
+ $[3] = t3;
899
+ } else {
900
+ t3 = $[3];
901
+ }
902
+ const finalManager = t3;
903
+ let t4;
904
+ if ($[4] !== finalManager) {
905
+ const newComponents = finalManager.getComponents();
906
+ t4 = Object.keys(newComponents).reduce((map, id_0) => {
907
+ const component = newComponents[id_0];
908
+ return isString(component) ? map : {
909
+ ...map,
910
+ [id_0]: component
911
+ };
912
+ }, {});
913
+ $[4] = finalManager;
914
+ $[5] = t4;
915
+ } else {
916
+ t4 = $[5];
917
+ }
918
+ const components = t4;
919
+ let t5;
920
+ if ($[6] !== children || $[7] !== components) {
921
+ t5 = /*#__PURE__*/jsx(ComponentsProvider, {
922
+ namespace: FORMS_NAMESPACE,
923
+ components: components,
924
+ children: children
925
+ });
926
+ $[6] = children;
927
+ $[7] = components;
928
+ $[8] = t5;
929
+ } else {
930
+ t5 = $[8];
931
+ }
932
+ let t6;
933
+ if ($[9] !== finalManager || $[10] !== t5) {
934
+ t6 = /*#__PURE__*/jsx(FormsContext, {
935
+ value: finalManager,
936
+ children: t5
937
+ });
938
+ $[9] = finalManager;
939
+ $[10] = t5;
940
+ $[11] = t6;
941
+ } else {
942
+ t6 = $[11];
943
+ }
944
+ return t6;
945
+ }
946
+ function _temp(t0) {
947
+ const {
948
+ id
949
+ } = t0;
950
+ return id;
951
+ }
952
+
850
953
  const GoogleApiClientContext = /*#__PURE__*/createContext(null);
851
954
  function useGoogleApiClient() {
852
955
  return useContext(GoogleApiClientContext);
@@ -1651,4 +1754,4 @@ function TrackingProvider(t0) {
1651
1754
  return t3;
1652
1755
  }
1653
1756
 
1654
- export { ACTIONS_NAMESPACE, APP_NAMESPACE, BUTTONS_NAMESPACE, ComponentsContext, ComponentsProvider, DISPLAYS_NAMESPACE, DefinitionProvider, FIELDS_NAMESPACE, FILTERS_NAMESPACE, FORMS_NAMESPACE, FieldsContext, FieldsProvider, FontsContext, FontsProvider, FormProvider, GoogleApiClientContext, GoogleApiClientProvider, GoogleKeysContext, GoogleKeysProvider, GoogleMapsClientContext, GoogleMapsClientProvider, LISTS_NAMESPACE, LocalesContext, LocalesProvider, MODALS_NAMESPACE, ModalContext, ModalProvider, PAGES_NAMESPACE, PREVIEWS_NAMESPACE, PanelsContext, PanelsProvider, PanneauProvider, ResourceProvider, TrackingProvider, useActionComponent, useActionsComponents, useActionsComponentsManager, useAppComponent, useAppComponents, useAppComponentsManager, useButtonComponent, useButtonsComponents, useButtonsComponentsManager, useComponent, useComponents, useComponentsManager, useDefinition, useDefinitionContext, useDisplayComponent, useDisplaysComponents, useDisplaysComponentsManager, useField, useFieldComponent, useFields, useFieldsComponents, useFieldsComponentsManager, useFieldsManager, useFilterComponent, useFiltersComponents, useFiltersComponentsManager, useFonts, useFormComponent, useFormContext, useFormSetValue, useFormValue, useFormsComponents, useFormsComponentsManager, useGoogleApiClient, useGoogleFonts, useGoogleKeys, useGoogleMapsClient, useListComponent, useListsComponents, useListsComponentsManager, useLocales, useLocalesContext, useModal, useModalComponent, useModalsComponents, useModalsComponentsManager, useOtherLocales, usePageComponent, usePagesComponents, usePagesComponentsManager, usePanels, usePanneau, usePanneauAuth, usePanneauColorScheme, usePanneauComponent, usePanneauComponents, usePanneauResource, usePanneauResources, usePanneauSettings, usePreviewComponent, usePreviewsComponents, usePreviewsComponentsManager, useResource, useRouteBack, useRoutePush, useTracking, withGoogleApiClient, withGoogleMapsClient, withPanels };
1757
+ export { ACTIONS_NAMESPACE, APP_NAMESPACE, BUTTONS_NAMESPACE, ComponentsContext, ComponentsProvider, DISPLAYS_NAMESPACE, DefinitionProvider, FIELDS_NAMESPACE, FILTERS_NAMESPACE, FORMS_NAMESPACE, FieldsContext, FieldsProvider, FontsContext, FontsProvider, FormProvider, FormsContext, FormsProvider, GoogleApiClientContext, GoogleApiClientProvider, GoogleKeysContext, GoogleKeysProvider, GoogleMapsClientContext, GoogleMapsClientProvider, LISTS_NAMESPACE, LocalesContext, LocalesProvider, MODALS_NAMESPACE, ModalContext, ModalProvider, PAGES_NAMESPACE, PREVIEWS_NAMESPACE, PanelsContext, PanelsProvider, PanneauProvider, ResourceProvider, TrackingProvider, useActionComponent, useActionsComponents, useActionsComponentsManager, useAppComponent, useAppComponents, useAppComponentsManager, useButtonComponent, useButtonsComponents, useButtonsComponentsManager, useComponent, useComponents, useComponentsManager, useDefinition, useDefinitionContext, useDisplayComponent, useDisplaysComponents, useDisplaysComponentsManager, useFieldComponent, useFieldDefinition, useFieldDefinitions, useFieldsComponents, useFieldsComponentsManager, useFieldsManager, useFilterComponent, useFiltersComponents, useFiltersComponentsManager, useFonts, useFormComponent, useFormContext, useFormDefinition, useFormDefinitions, useFormSetValue, useFormValue, useFormsComponents, useFormsComponentsManager, useFormsManager, useGoogleApiClient, useGoogleFonts, useGoogleKeys, useGoogleMapsClient, useListComponent, useListsComponents, useListsComponentsManager, useLocales, useLocalesContext, useModal, useModalComponent, useModalsComponents, useModalsComponentsManager, useOtherLocales, usePageComponent, usePagesComponents, usePagesComponentsManager, usePanels, usePanneau, usePanneauAuth, usePanneauColorScheme, usePanneauComponent, usePanneauComponents, usePanneauResource, usePanneauResources, usePanneauSettings, usePreviewComponent, usePreviewsComponents, usePreviewsComponentsManager, useResource, useRouteBack, useRoutePush, useTracking, withGoogleApiClient, withGoogleMapsClient, withPanels };
package/dist/hooks.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { Dayjs } from 'dayjs';
2
- import { ElementType, ReactNode, SubmitEvent, RefObject } from 'react';
2
+ import { ReactNode, ElementType, SubmitEvent, RefObject } from 'react';
3
+ import { MessageDescriptor } from 'react-intl';
3
4
 
4
5
  interface UseAnimationFrameOptions {
5
6
  disabled?: boolean;
@@ -20,6 +21,40 @@ declare function useFormattedTime({ format, showNow, timeGap, }?: UseFormattedTi
20
21
 
21
22
  declare const useDocumentEvent: (event: string, callback: (...args: unknown[]) => void, enabled?: boolean) => void;
22
23
 
24
+ /**
25
+ * Core UI Types
26
+ */
27
+
28
+ /**
29
+ * Internationalization message definition
30
+ */
31
+ type Message = MessageDescriptor;
32
+ /**
33
+ * Label can be either a message object or any React node
34
+ */
35
+ type Label = Message | ReactNode;
36
+ /**
37
+ * Form control size
38
+ */
39
+ type ControlSize = 'lg' | 'sm' | null;
40
+ /**
41
+ * Generic definition
42
+ */
43
+ interface Definition {
44
+ id: string;
45
+ component?: string | ElementType;
46
+ [key: string]: unknown;
47
+ }
48
+ interface RouteDefinition {
49
+ path?: string;
50
+ route?: string;
51
+ component: string | ElementType;
52
+ [key: string]: unknown;
53
+ }
54
+ interface PageDefinition {
55
+ component: string | ElementType;
56
+ }
57
+
23
58
  /**
24
59
  * Form Types
25
60
  * TypeScript interfaces for form-related components
@@ -31,15 +66,23 @@ declare const useDocumentEvent: (event: string, callback: (...args: unknown[]) =
31
66
  interface Field$1 {
32
67
  name?: string;
33
68
  type?: string;
34
- component?: string | ElementType;
35
- label?: ReactNode;
69
+ label?: Label;
70
+ component?: string;
71
+ size?: ControlSize;
72
+ [key: string]: unknown;
36
73
  }
37
74
  /**
38
75
  * Form definition
39
76
  */
40
77
  interface Form {
41
- title: ReactNode;
78
+ title?: ReactNode;
42
79
  fields?: Field$1[];
80
+ method?: string | null;
81
+ action?: string | null;
82
+ submitButtonLabel?: Label | null;
83
+ [key: string]: unknown;
84
+ }
85
+ interface FormDefinition extends Form, Definition {
43
86
  }
44
87
 
45
88
  /**
@@ -71,7 +114,7 @@ interface Action {
71
114
  target?: string;
72
115
  onClick?: (() => void) | null;
73
116
  endpoint?: string | null;
74
- withConfirmation?: boolean;
117
+ withoutConfirmation?: boolean;
75
118
  [key: string]: unknown;
76
119
  }
77
120
  type ActionDefinition = string | Action;
@@ -97,15 +140,33 @@ interface ResourceIndex {
97
140
  fields?: Field$1[];
98
141
  [key: string]: unknown;
99
142
  }
143
+ interface ResourcePages {
144
+ index?: PageDefinition;
145
+ show?: PageDefinition;
146
+ create?: PageDefinition;
147
+ edit?: PageDefinition;
148
+ delete?: PageDefinition;
149
+ duplicate?: PageDefinition;
150
+ [key: string]: PageDefinition | undefined;
151
+ }
152
+ interface ResourceForms {
153
+ default: FormDefinition | null;
154
+ create: FormDefinition | null;
155
+ edit: FormDefinition | null;
156
+ delete: FormDefinition | null;
157
+ modal: FormDefinition | null;
158
+ [key: string]: FormDefinition | null;
159
+ }
100
160
  interface Resource {
101
161
  id: string;
102
162
  name: string;
103
163
  intl?: ResourceIntl;
104
164
  fields?: Field$1[];
105
165
  index?: ResourceIndex;
106
- forms?: Record<string, Form>;
107
- shows_in_navbar?: boolean;
166
+ forms?: ResourceForms;
108
167
  settings?: Record<string, unknown>;
168
+ extraRoutes?: RouteDefinition[];
169
+ pages?: ResourcePages;
109
170
  }
110
171
  /**
111
172
  * Filter definition