@measured/puck 0.9.1-canary.efa4f45 → 0.10.0-canary.18b3473

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.
package/README.md CHANGED
@@ -112,19 +112,32 @@ The plugin API follows a React paradigm. Each plugin passed to the Puck editor c
112
112
  - `renderRootFields` (`Component`): Render the root fields
113
113
  - `renderFields` (`Component`): Render the fields for the currently selected component
114
114
 
115
- Each render function receives the `children` prop, which you must render, and the `data` prop, which can be used to read the data model.
115
+ Each render function receives three props:
116
+
117
+ - **children** (`ReactNode`): The normal contents of the root or field. You must render this.
118
+ - **state** (`AppState`): The current application state, including data and UI state
119
+ - **dispatch** (`(action: PuckAction) => void`): The Puck dispatcher, used for making data changes or updating the UI. See the [action definitions](https://github.com/measuredco/puck/blob/main/packages/core/reducer/actions.tsx) for a full reference of available mutations.
116
120
 
117
121
  #### Example
118
122
 
119
- Here's a basic plugin that renders a "My plugin" heading in the root field area:
123
+ Here's an example plugin that creates a button to toggle the left side-bar:
120
124
 
121
125
  ```jsx
122
126
  const myPlugin = {
123
- renderRootFields: (props) => (
127
+ renderRootFields: ({ children, dispatch, state }) => (
124
128
  <div>
125
- {props.children}
126
-
127
- <h2>My plugin</h2>
129
+ {children}
130
+
131
+ <button
132
+ onClick={() => {
133
+ dispatch({
134
+ type: "setUi",
135
+ ui: { leftSideBarVisible: !state.ui.leftSideBarVisible },
136
+ });
137
+ }}
138
+ >
139
+ Toggle side-bar
140
+ </button>
128
141
  </div>
129
142
  ),
130
143
  };
@@ -285,9 +298,19 @@ A `Field` represents a user input field shown in the Puck interface.
285
298
  - **onChange** (`(value: any) => void`): Callback to change the value
286
299
  - **readOnly** (`boolean` | `undefined`): Whether or not the field should be in readOnly mode
287
300
 
301
+ ### `AppState`
302
+
303
+ The `AppState` object stores the puck application state.
304
+
305
+ - **data** (`Data`): The page data currently being rendered
306
+ - **ui** (`object`):
307
+ - **leftSideBarVisible** (boolean): Whether or not the left side bar is visible
308
+ - **itemSelector** (object): An object describing which item is selected
309
+ - **arrayState** (object): An object describing the internal state of array items
310
+
288
311
  ### `Data`
289
312
 
290
- The `Data` object stores the puck state.
313
+ The `Data` object stores the puck page data.
291
314
 
292
315
  - **root** (`object`):
293
316
  - **title** (string): Title of the content, typically used for the page title
package/dist/index.css CHANGED
@@ -382,6 +382,222 @@
382
382
  cursor: pointer;
383
383
  }
384
384
 
385
+ /* css-module:/home/runner/work/puck/puck/packages/core/components/InputOrGroup/styles.module.css/#css-module-data */
386
+ ._Input_nkpu6_1 {
387
+ color: var(--puck-color-grey-3);
388
+ padding: 16px;
389
+ padding-bottom: 12px;
390
+ display: block;
391
+ font-family: var(--puck-font-stack);
392
+ }
393
+ ._Input_nkpu6_1 ._Input_nkpu6_1 {
394
+ padding: 0px;
395
+ }
396
+ ._Input_nkpu6_1 * {
397
+ box-sizing: border-box;
398
+ }
399
+ ._Input_nkpu6_1 + ._Input_nkpu6_1 {
400
+ border-top: 1px solid var(--puck-color-grey-8);
401
+ margin-top: 8px;
402
+ }
403
+ ._Input_nkpu6_1 ._Input_nkpu6_1 + ._Input_nkpu6_1 {
404
+ border-top: 0px;
405
+ margin-top: 12px;
406
+ }
407
+ ._Input-label_nkpu6_27 {
408
+ display: flex;
409
+ padding-bottom: 12px;
410
+ font-size: var(--puck-font-size-xxs);
411
+ font-weight: 600;
412
+ }
413
+ ._Input-labelIcon_nkpu6_34 {
414
+ color: var(--puck-color-grey-6);
415
+ margin-right: 4px;
416
+ }
417
+ ._Input-input_nkpu6_39 {
418
+ border-width: 1px;
419
+ border-style: solid;
420
+ border-color: var(--puck-color-grey-8);
421
+ border-radius: 4px;
422
+ font-family: inherit;
423
+ padding: 12px 16px;
424
+ width: 100%;
425
+ }
426
+ ._Input_nkpu6_1 select._Input-input_nkpu6_39 {
427
+ appearance: none;
428
+ background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%23c3c3c3'><polygon points='0,0 100,0 50,50'/></svg>") no-repeat;
429
+ background-size: 12px;
430
+ background-position: calc(100% - 12px) calc(50% + 3px);
431
+ background-repeat: no-repeat;
432
+ background-color: white;
433
+ }
434
+ ._Input--readOnly_nkpu6_60 ._Input-input_nkpu6_39 {
435
+ background-color: var(--puck-color-grey-10);
436
+ border-color: var(--puck-color-grey-8);
437
+ }
438
+ ._Input-input_nkpu6_39:hover {
439
+ border-color: var(--puck-color-neutral-3);
440
+ }
441
+ ._Input-radioGroupItems_nkpu6_69 {
442
+ display: flex;
443
+ border: 1px solid var(--puck-color-grey-7);
444
+ border-radius: 4px;
445
+ flex-wrap: wrap;
446
+ overflow: hidden;
447
+ }
448
+ ._Input-radio_nkpu6_69 {
449
+ border-right: 1px solid var(--puck-color-grey-7);
450
+ flex-grow: 1;
451
+ }
452
+ ._Input-radio_nkpu6_69:last-of-type {
453
+ border-right: none;
454
+ }
455
+ ._Input-radioInner_nkpu6_86 {
456
+ color: var(--puck-color-grey-4);
457
+ font-size: var(--puck-font-size-xxxs);
458
+ padding: 8px 12px;
459
+ text-align: center;
460
+ }
461
+ ._Input-radioInner_nkpu6_86:hover {
462
+ background-color: var(--puck-color-azure-9);
463
+ cursor: pointer;
464
+ }
465
+ ._Input-radio_nkpu6_69 ._Input-radioInput_nkpu6_98:checked ~ ._Input-radioInner_nkpu6_86 {
466
+ background-color: var(--puck-color-azure-9);
467
+ color: var(--puck-color-grey-2);
468
+ font-weight: 500;
469
+ }
470
+ ._Input-radio_nkpu6_69 ._Input-radioInput_nkpu6_98 {
471
+ display: none;
472
+ }
473
+ ._Input_nkpu6_1 textarea._Input-input_nkpu6_39 {
474
+ margin-bottom: -4px;
475
+ }
476
+
477
+ /* css-module:/home/runner/work/puck/puck/packages/core/components/InputOrGroup/fields/ArrayField/styles.module.css/#css-module-data */
478
+ ._ArrayField_zp334_5 {
479
+ display: flex;
480
+ flex-direction: column;
481
+ background-color: var(--puck-color-grey-8);
482
+ border: 1px solid var(--puck-color-grey-8);
483
+ border-radius: 4px;
484
+ }
485
+ ._ArrayField--isDraggingFrom_zp334_13 {
486
+ background-color: var(--puck-color-azure-9);
487
+ }
488
+ ._ArrayField-addButton_zp334_17 {
489
+ background-color: white;
490
+ border: none;
491
+ border-radius: 4px;
492
+ display: flex;
493
+ color: var(--puck-color-azure-4);
494
+ justify-content: center;
495
+ cursor: pointer;
496
+ width: 100%;
497
+ margin: 0;
498
+ padding: 16px;
499
+ text-align: left;
500
+ }
501
+ ._ArrayField--hasItems_zp334_31 > ._ArrayField-addButton_zp334_17 {
502
+ border-top-left-radius: 0;
503
+ border-top-right-radius: 0;
504
+ }
505
+ ._ArrayField_zp334_5:not(._ArrayField--isDraggingFrom_zp334_13) > ._ArrayField-addButton_zp334_17:hover {
506
+ background: var(--puck-color-azure-9);
507
+ color: var(--puck-color-azure-4);
508
+ }
509
+ ._ArrayFieldItem_zp334_45 {
510
+ background: white;
511
+ border-top-left-radius: 4px;
512
+ border-top-right-radius: 4px;
513
+ display: block;
514
+ margin-bottom: 1px;
515
+ }
516
+ ._ArrayField--isDraggingFrom_zp334_13 > ._ArrayFieldItem_zp334_45:not(._ArrayFieldItem--isDragging_zp334_53) {
517
+ border-bottom: 1px solid var(--puck-color-grey-8);
518
+ margin-bottom: 0;
519
+ }
520
+ ._ArrayFieldItem--isExpanded_zp334_58 {
521
+ border-bottom: 0;
522
+ outline: 1px solid var(--puck-color-azure-6);
523
+ }
524
+ ._ArrayFieldItem--isDragging_zp334_53 {
525
+ box-shadow: rgba(140, 152, 164, 0.25) 0 3px 6px 0;
526
+ }
527
+ ._ArrayFieldItem_zp334_45 + ._ArrayFieldItem_zp334_45 {
528
+ border-top-left-radius: 0;
529
+ border-top-right-radius: 0;
530
+ }
531
+ ._ArrayFieldItem-summary_zp334_72 {
532
+ color: var(--puck-color-grey-3);
533
+ display: flex;
534
+ align-items: center;
535
+ justify-content: space-between;
536
+ font-size: var(--puck-font-size-xxs);
537
+ list-style: none;
538
+ padding: 12px 16px;
539
+ position: relative;
540
+ overflow: hidden;
541
+ }
542
+ ._ArrayFieldItem--isExpanded_zp334_58 > ._ArrayFieldItem-summary_zp334_72 {
543
+ font-weight: 600;
544
+ }
545
+ ._ArrayFieldItem_zp334_45:first-of-type > ._ArrayFieldItem-summary_zp334_72 {
546
+ border-top-left-radius: 4px;
547
+ border-top-right-radius: 4px;
548
+ }
549
+ ._ArrayFieldItem-summary_zp334_72:hover,
550
+ ._ArrayFieldItem--isExpanded_zp334_58 > ._ArrayFieldItem-summary_zp334_72 {
551
+ background: var(--puck-color-azure-9);
552
+ cursor: pointer;
553
+ color: var(--puck-color-azure-4);
554
+ }
555
+ ._ArrayFieldItem-summary_zp334_72::-webkit-details-marker {
556
+ display: none;
557
+ }
558
+ ._ArrayFieldItem-body_zp334_104 {
559
+ display: none;
560
+ }
561
+ ._ArrayFieldItem--isExpanded_zp334_58 > ._ArrayFieldItem-body_zp334_104 {
562
+ display: block;
563
+ }
564
+ ._ArrayFieldItem-fieldset_zp334_112 {
565
+ border: none;
566
+ border-top: 1px solid var(--puck-color-grey-8);
567
+ margin: 0;
568
+ padding: 16px;
569
+ }
570
+ ._ArrayFieldItem-rhs_zp334_119 {
571
+ display: flex;
572
+ gap: 8px;
573
+ align-items: center;
574
+ }
575
+ ._ArrayFieldItem-actions_zp334_125 {
576
+ display: flex;
577
+ gap: 8px;
578
+ opacity: 0;
579
+ }
580
+ ._ArrayFieldItem-summary_zp334_72:hover > ._ArrayFieldItem-rhs_zp334_119 > ._ArrayFieldItem-actions_zp334_125 {
581
+ opacity: 1;
582
+ }
583
+ ._ArrayFieldItem-action_zp334_125:hover {
584
+ background: var(--puck-color-grey-9);
585
+ border-radius: 4px;
586
+ color: var(--puck-color-blue);
587
+ cursor: pointer;
588
+ }
589
+
590
+ /* css-module:/home/runner/work/puck/puck/packages/core/components/DragIcon/styles.module.css/#css-module-data */
591
+ ._DragIcon_o29on_1 {
592
+ color: var(--puck-color-grey-4);
593
+ padding: 4px;
594
+ border-radius: 4px;
595
+ }
596
+ ._DragIcon_o29on_1:hover {
597
+ cursor: grab;
598
+ background: var(--puck-color-grey-9);
599
+ }
600
+
385
601
  /* css-module:/home/runner/work/puck/puck/packages/core/components/ExternalInput/styles.module.css/#css-module-data */
386
602
  ._ExternalInput_l4bks_1 {
387
603
  font-family: var(--puck-font-stack);
@@ -506,196 +722,33 @@
506
722
  padding-left: 20px;
507
723
  }
508
724
 
509
- /* css-module:/home/runner/work/puck/puck/packages/core/components/InputOrGroup/styles.module.css/#css-module-data */
510
- ._Input_izwhv_1 {
511
- color: var(--puck-color-grey-3);
512
- padding: 16px;
513
- padding-bottom: 12px;
514
- display: block;
515
- font-family: var(--puck-font-stack);
516
- }
517
- ._Input_izwhv_1 ._Input_izwhv_1 {
518
- padding: 0px;
519
- }
520
- ._Input_izwhv_1 * {
521
- box-sizing: border-box;
522
- }
523
- ._Input_izwhv_1 + ._Input_izwhv_1 {
524
- border-top: 1px solid var(--puck-color-grey-8);
525
- margin-top: 8px;
526
- }
527
- ._Input_izwhv_1 ._Input_izwhv_1 + ._Input_izwhv_1 {
528
- border-top: 0px;
529
- margin-top: 12px;
530
- }
531
- ._Input-label_izwhv_27 {
532
- display: flex;
533
- padding-bottom: 12px;
534
- font-size: var(--puck-font-size-xxs);
535
- font-weight: 600;
536
- }
537
- ._Input-labelIcon_izwhv_34 {
538
- color: var(--puck-color-grey-6);
539
- margin-right: 4px;
540
- }
541
- ._Input-input_izwhv_39 {
542
- border-width: 1px;
543
- border-style: solid;
544
- border-color: var(--puck-color-grey-8);
545
- border-radius: 4px;
546
- font-family: inherit;
547
- padding: 12px 16px;
548
- width: 100%;
549
- }
550
- ._Input_izwhv_1 select {
551
- appearance: none;
552
- background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%23c3c3c3'><polygon points='0,0 100,0 50,50'/></svg>") no-repeat;
553
- background-size: 12px;
554
- background-position: calc(100% - 12px) calc(50% + 3px);
555
- background-repeat: no-repeat;
556
- background-color: white;
557
- }
558
- ._Input--readOnly_izwhv_60 ._Input-input_izwhv_39 {
559
- background-color: var(--puck-color-grey-10);
560
- border-color: var(--puck-color-grey-8);
561
- }
562
- ._Input-input_izwhv_39:hover {
563
- border-color: var(--puck-color-neutral-3);
564
- }
565
- ._Input-arrayItem_izwhv_69 {
566
- background: white;
567
- border: 1px solid var(--puck-color-grey-8);
568
- border-radius: 4px;
569
- }
570
- ._Input-arrayItem_izwhv_69 > summary {
571
- color: var(--puck-color-grey-3);
572
- display: flex;
573
- align-items: center;
574
- justify-content: space-between;
575
- font-size: var(--puck-font-size-xxs);
576
- list-style: none;
577
- padding: 12px 16px;
578
- position: relative;
579
- }
580
- ._Input-arrayItem_izwhv_69 > summary:hover {
581
- cursor: pointer;
582
- color: var(--puck-color-blue);
583
- }
584
- ._Input-arrayItem_izwhv_69 > summary::-webkit-details-marker {
585
- display: none;
586
- }
587
- ._Input-arrayItem_izwhv_69 > ._Input-fieldset_izwhv_95 {
588
- background-color: var(--puck-color-grey-11);
589
- border: none;
590
- border-top: 1px solid var(--puck-color-grey-8);
591
- margin: 0;
592
- padding: 16px;
593
- }
594
- ._Input-arrayItem_izwhv_69 > ._Input-fieldset_izwhv_95 ._Input_izwhv_1 + ._Input-arrayItem_izwhv_69 > ._Input-fieldset_izwhv_95 ._Input_izwhv_1 {
595
- margin-top: 16px;
596
- }
597
- ._Input-arrayItem_izwhv_69 > ._Input-fieldset_izwhv_95 ._Input-label_izwhv_27 {
598
- padding-bottom: 4px;
599
- }
600
- ._Input-arrayItem_izwhv_69 ._Input-arrayItemAction_izwhv_116 {
601
- border-radius: 4px;
602
- opacity: 0;
603
- }
604
- ._Input-arrayItem_izwhv_69 summary:hover ._Input-arrayItemAction_izwhv_116 {
605
- opacity: 1;
606
- }
607
- ._Input-arrayItem_izwhv_69 ._Input-arrayItemAction_izwhv_116:hover {
608
- background: var(--puck-color-grey-9);
609
- color: var(--puck-color-blue);
610
- cursor: pointer;
611
- }
612
- ._Input-arrayItem_izwhv_69 + ._Input-arrayItem_izwhv_69 {
613
- margin-top: 12px;
614
- }
615
- ._Input-addButton_izwhv_135 {
616
- background-color: white;
617
- border: none;
618
- border-radius: 4px;
619
- color: var(--puck-color-blue);
620
- cursor: pointer;
621
- width: 100%;
622
- margin: 0;
623
- margin-top: 12px;
624
- padding: 12px 16px;
625
- text-align: left;
626
- }
627
- ._Input-addButton_izwhv_135:hover {
628
- background: var(--puck-color-grey-10);
629
- }
630
- ._Input-array_izwhv_69 {
631
- overflow: hidden;
632
- }
633
- ._Input-radioGroupItems_izwhv_156 {
634
- display: flex;
635
- border: 1px solid var(--puck-color-grey-7);
636
- border-radius: 4px;
637
- flex-wrap: wrap;
638
- overflow: hidden;
639
- }
640
- ._Input-radio_izwhv_156 {
641
- border-right: 1px solid var(--puck-color-grey-7);
642
- flex-grow: 1;
643
- }
644
- ._Input-radio_izwhv_156:last-of-type {
645
- border-right: none;
646
- }
647
- ._Input-radioInner_izwhv_173 {
648
- color: var(--puck-color-grey-4);
649
- font-size: var(--puck-font-size-xxxs);
650
- padding: 8px 12px;
651
- text-align: center;
652
- }
653
- ._Input-radioInner_izwhv_173:hover {
654
- background-color: var(--puck-color-azure-9);
655
- cursor: pointer;
656
- }
657
- ._Input-radio_izwhv_156 ._Input-radioInput_izwhv_185:checked ~ ._Input-radioInner_izwhv_173 {
658
- background-color: var(--puck-color-azure-9);
659
- color: var(--puck-color-grey-2);
660
- font-weight: 500;
661
- }
662
- ._Input-radio_izwhv_156 ._Input-radioInput_izwhv_185 {
663
- display: none;
664
- }
665
- ._Input_izwhv_1 textarea._Input-input_izwhv_39 {
666
- margin-bottom: -4px;
667
- }
668
-
669
725
  /* css-module:/home/runner/work/puck/puck/packages/core/components/ComponentList/styles.module.css/#css-module-data */
670
- ._ComponentList_1ybn0_1 {
671
- display: grid;
726
+ ._ComponentList_bvy0z_1 {
672
727
  font-family: var(--puck-font-stack);
673
- grid-template-columns: 1fr;
674
728
  max-width: 100%;
675
- grid-gap: 12px;
676
729
  }
677
- ._ComponentList-item_1ybn0_9,
678
- ._ComponentList-itemShadow_1ybn0_10 {
730
+ ._ComponentList-item_bvy0z_6 {
679
731
  background: white;
680
732
  padding: 12px;
681
733
  display: flex;
682
734
  border: 1px var(--puck-color-grey-8) solid;
683
- border-radius: 8px;
735
+ border-radius: 4px;
684
736
  font-size: var(--puck-font-size-xxs);
685
737
  justify-content: space-between;
686
738
  align-items: center;
687
739
  gap: 12px;
688
740
  cursor: grab;
741
+ margin-bottom: 12px;
689
742
  }
690
- ._ComponentList-item_1ybn0_9:last-of-type,
691
- ._ComponentList-itemShadow_1ybn0_10:last-of-type {
743
+ ._ComponentList-item_bvy0z_6:last-of-type {
692
744
  margin-bottom: 0px;
693
745
  }
694
- ._ComponentList-itemIcon_1ybn0_28 {
746
+ ._ComponentList-itemIcon_bvy0z_24 {
695
747
  color: var(--puck-color-grey-4);
696
748
  }
697
- ._ComponentList-item_1ybn0_9:hover {
749
+ ._ComponentList_bvy0z_1:not(._ComponentList--isDraggingFrom_bvy0z_28) ._ComponentList-item_bvy0z_6:hover {
698
750
  background-color: var(--puck-color-azure-9);
751
+ color: var(--puck-color-azure-4);
699
752
  }
700
753
 
701
754
  /* css-module:/home/runner/work/puck/puck/packages/core/components/SidebarSection/styles.module.css/#css-module-data */
package/dist/index.d.ts CHANGED
@@ -3,6 +3,11 @@ import { ReactElement, ReactNode, CSSProperties } from 'react';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import { DragStart, DragUpdate } from 'react-beautiful-dnd';
5
5
 
6
+ type ItemSelector = {
7
+ index: number;
8
+ zone?: string;
9
+ };
10
+
6
11
  type Adaptor<AdaptorParams = {}> = {
7
12
  name: string;
8
13
  fetchList: (adaptorParams?: AdaptorParams) => Promise<Record<string, any>[] | null>;
@@ -98,6 +103,23 @@ type Data<Props extends {
98
103
  content: Content<Props>;
99
104
  zones?: Record<string, Content<Props>>;
100
105
  };
106
+ type ItemWithId = {
107
+ _arrayId: string;
108
+ data: any;
109
+ };
110
+ type ArrayState = {
111
+ items: ItemWithId[];
112
+ openId: string;
113
+ };
114
+ type UiState = {
115
+ leftSideBarVisible: boolean;
116
+ itemSelector: ItemSelector | null;
117
+ arrayState: Record<string, ArrayState | undefined>;
118
+ };
119
+ type AppState = {
120
+ data: Data;
121
+ ui: UiState;
122
+ };
101
123
 
102
124
  declare const Button: ({ children, href, onClick, variant, type, disabled, tabIndex, newTab, fullWidth, icon, size, }: {
103
125
  children: ReactNode;
@@ -113,11 +135,6 @@ declare const Button: ({ children, href, onClick, variant, type, disabled, tabIn
113
135
  size?: "medium" | "large" | undefined;
114
136
  }) => react_jsx_runtime.JSX.Element;
115
137
 
116
- type ItemSelector = {
117
- index: number;
118
- zone?: string;
119
- };
120
-
121
138
  type InsertAction = {
122
139
  type: "insert";
123
140
  componentType: string;
@@ -153,10 +170,18 @@ type RemoveAction = {
153
170
  index: number;
154
171
  zone: string;
155
172
  };
173
+ type SetStateAction = {
174
+ type: "setUi";
175
+ ui: Partial<UiState>;
176
+ };
156
177
  type SetDataAction = {
157
- type: "set";
178
+ type: "setData";
158
179
  data: Partial<Data>;
159
180
  };
181
+ type SetAction = {
182
+ type: "set";
183
+ state: Partial<AppState>;
184
+ };
160
185
  type RegisterZoneAction = {
161
186
  type: "registerZone";
162
187
  zone: string;
@@ -165,12 +190,14 @@ type UnregisterZoneAction = {
165
190
  type: "unregisterZone";
166
191
  zone: string;
167
192
  };
168
- type PuckAction = ReorderAction | InsertAction | MoveAction | ReplaceAction | RemoveAction | DuplicateAction | SetDataAction | RegisterZoneAction | UnregisterZoneAction;
193
+ type PuckAction = {
194
+ recordHistory?: boolean;
195
+ } & (ReorderAction | InsertAction | MoveAction | ReplaceAction | RemoveAction | DuplicateAction | SetAction | SetDataAction | SetStateAction | RegisterZoneAction | UnregisterZoneAction);
169
196
 
170
197
  type PathData = Record<string, {
171
- selector: ItemSelector | null;
198
+ path: string[];
172
199
  label: string;
173
- }[]>;
200
+ }>;
174
201
  type DropZoneContext = {
175
202
  data: Data;
176
203
  config: Config;
@@ -223,15 +250,18 @@ declare const IconButton: ({ children, href, onClick, variant, type, disabled, t
223
250
  type Plugin = {
224
251
  renderRootFields?: (props: {
225
252
  children: ReactNode;
226
- data: Data;
253
+ dispatch: (action: PuckAction) => void;
254
+ state: AppState;
227
255
  }) => ReactElement<any>;
228
256
  renderRoot?: (props: {
229
257
  children: ReactNode;
230
- data: Data;
258
+ dispatch: (action: PuckAction) => void;
259
+ state: AppState;
231
260
  }) => ReactElement<any>;
232
261
  renderFields?: (props: {
233
262
  children: ReactNode;
234
- data: Data;
263
+ dispatch: (action: PuckAction) => void;
264
+ state: AppState;
235
265
  }) => ReactElement<any>;
236
266
  };
237
267
 
@@ -243,11 +273,11 @@ declare function Puck({ config, data: initialData, onChange, onPublish, plugins,
243
273
  plugins?: Plugin[];
244
274
  renderHeader?: (props: {
245
275
  children: ReactNode;
246
- data: Data;
247
276
  dispatch: (action: PuckAction) => void;
277
+ state: AppState;
248
278
  }) => ReactElement;
249
279
  renderHeaderActions?: (props: {
250
- data: Data;
280
+ state: AppState;
251
281
  dispatch: (action: PuckAction) => void;
252
282
  }) => ReactElement;
253
283
  headerTitle?: string;
@@ -265,4 +295,4 @@ declare const FieldLabel: ({ children, icon, label, }: {
265
295
  label: string;
266
296
  }) => react_jsx_runtime.JSX.Element;
267
297
 
268
- export { Adaptor, Button, ComponentConfig, Config, Content, Data, DefaultComponentProps, DefaultRootProps, DropZone, DropZoneProvider, Field, FieldLabel, Fields, IconButton, Puck, Render, dropZoneContext };
298
+ export { Adaptor, AppState, ArrayState, Button, ComponentConfig, Config, Content, Data, DefaultComponentProps, DefaultRootProps, DropZone, DropZoneProvider, Field, FieldLabel, Fields, IconButton, ItemWithId, MappedItem, Puck, Render, UiState, dropZoneContext };