@measured/puck 0.16.3-canary.af421c6 → 0.17.0-canary.35170f8

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/dist/index.css CHANGED
@@ -204,27 +204,27 @@
204
204
  }
205
205
 
206
206
  /* css-module:/home/runner/work/puck/puck/packages/core/components/AutoField/styles.module.css/#css-module-data */
207
- ._Input_3pq3z_1 {
207
+ ._InputWrapper_1l5m8_1 {
208
208
  color: var(--puck-color-grey-04);
209
209
  padding: 16px;
210
210
  padding-bottom: 12px;
211
211
  display: block;
212
212
  }
213
- ._Input_3pq3z_1 ._Input_3pq3z_1 {
213
+ ._InputWrapper_1l5m8_1 + ._InputWrapper_1l5m8_1 {
214
+ border-top: 1px solid var(--puck-color-grey-09);
215
+ margin-top: 8px;
216
+ }
217
+ ._Input_1l5m8_1 ._InputWrapper_1l5m8_1 {
214
218
  padding: 0px;
215
219
  }
216
- ._Input_3pq3z_1 * {
220
+ ._Input_1l5m8_1 * {
217
221
  box-sizing: border-box;
218
222
  }
219
- ._Input_3pq3z_1 + ._Input_3pq3z_1 {
220
- border-top: 1px solid var(--puck-color-grey-09);
221
- margin-top: 8px;
222
- }
223
- ._Input_3pq3z_1 ._Input_3pq3z_1 + ._Input_3pq3z_1 {
223
+ ._Input_1l5m8_1 ._InputWrapper_1l5m8_1 + ._InputWrapper_1l5m8_1 {
224
224
  border-top: 0px;
225
225
  margin-top: 12px;
226
226
  }
227
- ._Input-label_3pq3z_26 {
227
+ ._Input-label_1l5m8_26 {
228
228
  align-items: center;
229
229
  color: var(--puck-color-grey-04);
230
230
  display: flex;
@@ -232,17 +232,17 @@
232
232
  font-size: var(--puck-font-size-xxs);
233
233
  font-weight: 600;
234
234
  }
235
- ._Input-labelIcon_3pq3z_35 {
235
+ ._Input-labelIcon_1l5m8_35 {
236
236
  color: var(--puck-color-grey-07);
237
237
  display: flex;
238
238
  margin-right: 4px;
239
239
  padding-left: 4px;
240
240
  }
241
- ._Input-disabledIcon_3pq3z_42 {
241
+ ._Input-disabledIcon_1l5m8_42 {
242
242
  color: var(--puck-color-grey-05);
243
243
  margin-left: auto;
244
244
  }
245
- ._Input-input_3pq3z_47 {
245
+ ._Input-input_1l5m8_47 {
246
246
  background: var(--puck-color-white);
247
247
  border-width: 1px;
248
248
  border-style: solid;
@@ -254,7 +254,7 @@
254
254
  transition: border-color 50ms ease-in;
255
255
  width: 100%;
256
256
  }
257
- select._Input-input_3pq3z_47 {
257
+ select._Input-input_1l5m8_47 {
258
258
  appearance: none;
259
259
  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;
260
260
  background-size: 12px;
@@ -264,25 +264,25 @@ select._Input-input_3pq3z_47 {
264
264
  cursor: pointer;
265
265
  }
266
266
  @media (hover: hover) and (pointer: fine) {
267
- ._Input_3pq3z_1:has(> input):hover ._Input-input_3pq3z_47:not([readonly]),
268
- ._Input_3pq3z_1:has(> textarea):hover ._Input-input_3pq3z_47:not([readonly]) {
267
+ ._Input_1l5m8_1:has(> input):hover ._Input-input_1l5m8_47:not([readonly]),
268
+ ._Input_1l5m8_1:has(> textarea):hover ._Input-input_1l5m8_47:not([readonly]) {
269
269
  border-color: var(--puck-color-grey-05);
270
270
  transition: none;
271
271
  }
272
- ._Input_3pq3z_1:has(> select):hover ._Input-input_3pq3z_47:not([disabled]) {
272
+ ._Input_1l5m8_1:has(> select):hover ._Input-input_1l5m8_47:not([disabled]) {
273
273
  background-color: var(--puck-color-azure-12);
274
274
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%235a5a5a'><polygon points='0,0 100,0 50,50'/></svg>");
275
275
  border-color: var(--puck-color-grey-05);
276
276
  transition: none;
277
277
  }
278
278
  }
279
- ._Input-input_3pq3z_47:focus {
279
+ ._Input-input_1l5m8_47:focus {
280
280
  border-color: var(--puck-color-grey-05);
281
281
  outline: 2px solid var(--puck-color-azure-05);
282
282
  transition: none;
283
283
  }
284
- ._Input--readOnly_3pq3z_91 > ._Input-input_3pq3z_47,
285
- ._Input--readOnly_3pq3z_91 > select._Input-input_3pq3z_47 {
284
+ ._Input--readOnly_1l5m8_91 > ._Input-input_1l5m8_47,
285
+ ._Input--readOnly_1l5m8_91 > select._Input-input_1l5m8_47 {
286
286
  background-color: var(--puck-color-grey-11);
287
287
  border-color: var(--puck-color-grey-09);
288
288
  color: var(--puck-color-grey-04);
@@ -291,34 +291,34 @@ select._Input-input_3pq3z_47 {
291
291
  outline: 0;
292
292
  transition: none;
293
293
  }
294
- ._Input-radioGroupItems_3pq3z_102 {
294
+ ._Input-radioGroupItems_1l5m8_102 {
295
295
  display: flex;
296
296
  border: 1px solid var(--puck-color-grey-09);
297
297
  border-radius: 4px;
298
298
  flex-wrap: wrap;
299
299
  }
300
- ._Input-radio_3pq3z_102 {
300
+ ._Input-radio_1l5m8_102 {
301
301
  border-right: 1px solid var(--puck-color-grey-09);
302
302
  flex-grow: 1;
303
303
  }
304
- ._Input-radio_3pq3z_102:first-of-type {
304
+ ._Input-radio_1l5m8_102:first-of-type {
305
305
  border-bottom-left-radius: 4px;
306
306
  border-top-left-radius: 4px;
307
307
  }
308
- ._Input-radio_3pq3z_102:first-of-type ._Input-radioInner_3pq3z_119 {
308
+ ._Input-radio_1l5m8_102:first-of-type ._Input-radioInner_1l5m8_119 {
309
309
  border-bottom-left-radius: 3px;
310
310
  border-top-left-radius: 3px;
311
311
  }
312
- ._Input-radio_3pq3z_102:last-of-type {
312
+ ._Input-radio_1l5m8_102:last-of-type {
313
313
  border-bottom-right-radius: 4px;
314
314
  border-right: 0;
315
315
  border-top-right-radius: 4px;
316
316
  }
317
- ._Input-radio_3pq3z_102:last-of-type ._Input-radioInner_3pq3z_119 {
317
+ ._Input-radio_1l5m8_102:last-of-type ._Input-radioInner_1l5m8_119 {
318
318
  border-bottom-right-radius: 3px;
319
319
  border-top-right-radius: 3px;
320
320
  }
321
- ._Input-radioInner_3pq3z_119 {
321
+ ._Input-radioInner_1l5m8_119 {
322
322
  background-color: var(--puck-color-white);
323
323
  color: var(--puck-color-grey-04);
324
324
  cursor: pointer;
@@ -327,32 +327,32 @@ select._Input-input_3pq3z_47 {
327
327
  text-align: center;
328
328
  transition: background-color 50ms ease-in;
329
329
  }
330
- ._Input-radio_3pq3z_102:has(:focus-visible) {
330
+ ._Input-radio_1l5m8_102:has(:focus-visible) {
331
331
  outline: 2px solid var(--puck-color-azure-05);
332
332
  outline-offset: 2px;
333
333
  position: relative;
334
334
  }
335
335
  @media (hover: hover) and (pointer: fine) {
336
- ._Input-radioInner_3pq3z_119:hover {
336
+ ._Input-radioInner_1l5m8_119:hover {
337
337
  background-color: var(--puck-color-azure-12);
338
338
  transition: none;
339
339
  }
340
340
  }
341
- ._Input--readOnly_3pq3z_91 ._Input-radioInner_3pq3z_119 {
341
+ ._Input--readOnly_1l5m8_91 ._Input-radioInner_1l5m8_119 {
342
342
  background-color: var(--puck-color-white);
343
343
  color: var(--puck-color-grey-04);
344
344
  cursor: default;
345
345
  }
346
- ._Input-radio_3pq3z_102 ._Input-radioInput_3pq3z_164:checked ~ ._Input-radioInner_3pq3z_119 {
346
+ ._Input-radio_1l5m8_102 ._Input-radioInput_1l5m8_164:checked ~ ._Input-radioInner_1l5m8_119 {
347
347
  background-color: var(--puck-color-azure-11);
348
348
  color: var(--puck-color-azure-04);
349
349
  font-weight: 500;
350
350
  }
351
- ._Input--readOnly_3pq3z_91 ._Input-radioInput_3pq3z_164:checked ~ ._Input-radioInner_3pq3z_119 {
351
+ ._Input--readOnly_1l5m8_91 ._Input-radioInput_1l5m8_164:checked ~ ._Input-radioInner_1l5m8_119 {
352
352
  background-color: var(--puck-color-grey-11);
353
353
  color: var(--puck-color-grey-04);
354
354
  }
355
- ._Input-radio_3pq3z_102 ._Input-radioInput_3pq3z_164 {
355
+ ._Input-radio_1l5m8_102 ._Input-radioInput_1l5m8_164 {
356
356
  clip: rect(0 0 0 0);
357
357
  clip-path: inset(100%);
358
358
  height: 1px;
@@ -361,7 +361,7 @@ select._Input-input_3pq3z_47 {
361
361
  white-space: nowrap;
362
362
  width: 1px;
363
363
  }
364
- textarea._Input-input_3pq3z_47 {
364
+ textarea._Input-input_1l5m8_47 {
365
365
  margin-bottom: -4px;
366
366
  }
367
367
 
@@ -607,10 +607,10 @@ textarea._Input-input_3pq3z_47 {
607
607
  }
608
608
 
609
609
  /* css-module:/home/runner/work/puck/puck/packages/core/components/ExternalInput/styles.module.css/#css-module-data */
610
- ._ExternalInput-actions_wprq3_1 {
610
+ ._ExternalInput-actions_8wgzm_1 {
611
611
  display: flex;
612
612
  }
613
- ._ExternalInput-button_wprq3_5 {
613
+ ._ExternalInput-button_8wgzm_5 {
614
614
  display: flex;
615
615
  gap: 8px;
616
616
  align-items: center;
@@ -628,16 +628,16 @@ textarea._Input-input_3pq3z_47 {
628
628
  overflow: hidden;
629
629
  flex-grow: 1;
630
630
  }
631
- ._ExternalInput--dataSelected_wprq3_24 ._ExternalInput-button_wprq3_5 {
631
+ ._ExternalInput--dataSelected_8wgzm_24 ._ExternalInput-button_8wgzm_5 {
632
632
  color: var(--puck-color-grey-03);
633
633
  display: block;
634
634
  border-top-right-radius: 0px;
635
635
  border-bottom-right-radius: 0px;
636
636
  }
637
- ._ExternalInput--readOnly_wprq3_31 ._ExternalInput-button_wprq3_5 {
637
+ ._ExternalInput--readOnly_8wgzm_31 ._ExternalInput-button_8wgzm_5 {
638
638
  background-color: var(--puck-color-grey-11);
639
639
  }
640
- ._ExternalInput-detachButton_wprq3_35 {
640
+ ._ExternalInput-detachButton_8wgzm_35 {
641
641
  border: 1px solid var(--puck-color-grey-09);
642
642
  border-top-right-radius: 4px;
643
643
  border-bottom-right-radius: 4px;
@@ -652,28 +652,28 @@ textarea._Input-input_3pq3z_47 {
652
652
  transition: background-color 50ms ease-in, color 50ms ease-in;
653
653
  margin-left: -1px;
654
654
  }
655
- ._ExternalInput-button_wprq3_5:focus-visible,
656
- ._ExternalInput-detachButton_wprq3_35:focus-visible {
655
+ ._ExternalInput-button_8wgzm_5:focus-visible,
656
+ ._ExternalInput-detachButton_8wgzm_35:focus-visible {
657
657
  outline: 2px solid var(--puck-color-azure-05);
658
658
  outline-offset: 2px;
659
659
  z-index: 1;
660
660
  }
661
661
  @media (hover: hover) and (pointer: fine) {
662
- ._ExternalInput_wprq3_1:not(._ExternalInput--readOnly_wprq3_31) ._ExternalInput-button_wprq3_5:hover,
663
- ._ExternalInput_wprq3_1:not(._ExternalInput--readOnly_wprq3_31) ._ExternalInput-detachButton_wprq3_35:hover {
662
+ ._ExternalInput_8wgzm_1:not(._ExternalInput--readOnly_8wgzm_31) ._ExternalInput-button_8wgzm_5:hover,
663
+ ._ExternalInput_8wgzm_1:not(._ExternalInput--readOnly_8wgzm_31) ._ExternalInput-detachButton_8wgzm_35:hover {
664
664
  background: var(--puck-color-azure-12);
665
665
  transition: none;
666
666
  }
667
- ._ExternalInput_wprq3_1:not(._ExternalInput--readOnly_wprq3_31) ._ExternalInput-detachButton_wprq3_35:hover {
667
+ ._ExternalInput_8wgzm_1:not(._ExternalInput--readOnly_8wgzm_31) ._ExternalInput-detachButton_8wgzm_35:hover {
668
668
  color: var(--puck-color-azure-04);
669
669
  }
670
670
  }
671
- ._ExternalInput_wprq3_1:not(._ExternalInput--readOnly_wprq3_31) ._ExternalInput-button_wprq3_5:active,
672
- ._ExternalInput_wprq3_1:not(._ExternalInput--readOnly_wprq3_31) ._ExternalInput-detachButton_wprq3_35:active {
671
+ ._ExternalInput_8wgzm_1:not(._ExternalInput--readOnly_8wgzm_31) ._ExternalInput-button_8wgzm_5:active,
672
+ ._ExternalInput_8wgzm_1:not(._ExternalInput--readOnly_8wgzm_31) ._ExternalInput-detachButton_8wgzm_35:active {
673
673
  background: var(--puck-color-azure-11);
674
674
  transition: none;
675
675
  }
676
- ._ExternalInputModal_wprq3_79 {
676
+ ._ExternalInputModal_8wgzm_79 {
677
677
  color: var(--puck-color-black);
678
678
  display: grid;
679
679
  grid-template-rows: min-content minmax(128px, 100%) min-content;
@@ -682,35 +682,35 @@ textarea._Input-input_3pq3z_47 {
682
682
  min-height: 50dvh;
683
683
  max-height: 90dvh;
684
684
  }
685
- ._ExternalInputModal-grid_wprq3_89 {
685
+ ._ExternalInputModal-grid_8wgzm_89 {
686
686
  display: flex;
687
687
  flex-direction: column;
688
688
  }
689
689
  @media (min-width: 458px) {
690
- ._ExternalInputModal-grid_wprq3_89 {
690
+ ._ExternalInputModal-grid_8wgzm_89 {
691
691
  display: grid;
692
692
  grid-template-columns: 100%;
693
693
  }
694
- ._ExternalInputModal--filtersToggled_wprq3_100 ._ExternalInputModal-grid_wprq3_89 {
694
+ ._ExternalInputModal--filtersToggled_8wgzm_100 ._ExternalInputModal-grid_8wgzm_89 {
695
695
  grid-template-columns: 25% 75%;
696
696
  }
697
697
  }
698
- ._ExternalInputModal-filters_wprq3_105 {
698
+ ._ExternalInputModal-filters_8wgzm_105 {
699
699
  border-bottom: 1px solid var(--puck-color-grey-09);
700
700
  }
701
- ._ExternalInputModal--filtersToggled_wprq3_100 ._ExternalInputModal-filters_wprq3_105 {
701
+ ._ExternalInputModal--filtersToggled_8wgzm_100 ._ExternalInputModal-filters_8wgzm_105 {
702
702
  display: none;
703
703
  }
704
704
  @media (min-width: 458px) {
705
- ._ExternalInputModal-filters_wprq3_105 {
705
+ ._ExternalInputModal-filters_8wgzm_105 {
706
706
  border-right: 1px solid var(--puck-color-grey-09);
707
707
  display: none;
708
708
  }
709
- ._ExternalInputModal--filtersToggled_wprq3_100 ._ExternalInputModal-filters_wprq3_105 {
709
+ ._ExternalInputModal--filtersToggled_8wgzm_100 ._ExternalInputModal-filters_8wgzm_105 {
710
710
  display: block;
711
711
  }
712
712
  }
713
- ._ExternalInputModal-masthead_wprq3_124 {
713
+ ._ExternalInputModal-masthead_8wgzm_124 {
714
714
  background-color: var(--puck-color-grey-12);
715
715
  border-bottom: 1px solid var(--puck-color-grey-09);
716
716
  display: flex;
@@ -718,13 +718,13 @@ textarea._Input-input_3pq3z_47 {
718
718
  gap: 24px;
719
719
  padding: 24px;
720
720
  }
721
- ._ExternalInputModal-tableWrapper_wprq3_133 {
721
+ ._ExternalInputModal-tableWrapper_8wgzm_133 {
722
722
  position: relative;
723
723
  overflow-x: auto;
724
724
  overflow-y: auto;
725
725
  flex-grow: 1;
726
726
  }
727
- ._ExternalInputModal-table_wprq3_133 {
727
+ ._ExternalInputModal-table_8wgzm_133 {
728
728
  border-collapse: unset;
729
729
  border-spacing: 0px;
730
730
  color: var(--puck-color-grey-02);
@@ -732,51 +732,51 @@ textarea._Input-input_3pq3z_47 {
732
732
  z-index: 0;
733
733
  min-width: 100%;
734
734
  }
735
- ._ExternalInputModal-thead_wprq3_149 {
735
+ ._ExternalInputModal-thead_8wgzm_149 {
736
736
  background-color: var(--puck-color-white);
737
737
  position: sticky;
738
738
  top: 0;
739
739
  z-index: 1;
740
740
  }
741
- ._ExternalInputModal-th_wprq3_149 {
741
+ ._ExternalInputModal-th_8wgzm_149 {
742
742
  border-bottom: 1px solid var(--puck-color-grey-09);
743
743
  color: var(--puck-color-grey-04);
744
744
  font-weight: 500;
745
745
  font-size: 14px;
746
746
  padding: 16px 24px;
747
747
  }
748
- ._ExternalInputModal-td_wprq3_164 {
748
+ ._ExternalInputModal-td_8wgzm_164 {
749
749
  border-bottom: 1px solid var(--puck-color-grey-10);
750
750
  padding: 16px 24px;
751
751
  }
752
- ._ExternalInputModal-tr_wprq3_169 ._ExternalInputModal-td_wprq3_164:first-of-type {
752
+ ._ExternalInputModal-tr_8wgzm_169 ._ExternalInputModal-td_8wgzm_164:first-of-type {
753
753
  font-weight: 500;
754
754
  width: 1%;
755
755
  white-space: nowrap;
756
756
  }
757
757
  @media (hover: hover) and (pointer: fine) {
758
- ._ExternalInputModal-tbody_wprq3_176 ._ExternalInputModal-tr_wprq3_169:hover {
758
+ ._ExternalInputModal-tbody_8wgzm_176 ._ExternalInputModal-tr_8wgzm_169:hover {
759
759
  background: var(--puck-color-azure-12);
760
760
  color: var(--puck-color-azure-04);
761
761
  cursor: pointer;
762
762
  position: relative;
763
763
  margin-left: -5px;
764
764
  }
765
- ._ExternalInputModal-tbody_wprq3_176 ._ExternalInputModal-tr_wprq3_169:hover ._ExternalInputModal-td_wprq3_164:first-of-type {
765
+ ._ExternalInputModal-tbody_8wgzm_176 ._ExternalInputModal-tr_8wgzm_169:hover ._ExternalInputModal-td_8wgzm_164:first-of-type {
766
766
  border-left: 4px solid var(--puck-color-azure-04);
767
767
  padding-left: 20px;
768
768
  }
769
769
  }
770
- ._ExternalInputModal-tbody_wprq3_176 ._ExternalInputModal-tr_wprq3_169:last-of-type ._ExternalInputModal-td_wprq3_164 {
770
+ ._ExternalInputModal-tbody_8wgzm_176 ._ExternalInputModal-tr_8wgzm_169:last-of-type ._ExternalInputModal-td_8wgzm_164 {
771
771
  border-bottom: none;
772
772
  }
773
- ._ExternalInputModal-tableWrapper_wprq3_133 {
773
+ ._ExternalInputModal-tableWrapper_8wgzm_133 {
774
774
  display: none;
775
775
  }
776
- ._ExternalInputModal--hasData_wprq3_202 ._ExternalInputModal-tableWrapper_wprq3_133 {
776
+ ._ExternalInputModal--hasData_8wgzm_202 ._ExternalInputModal-tableWrapper_8wgzm_133 {
777
777
  display: block;
778
778
  }
779
- ._ExternalInputModal-loadingBanner_wprq3_206 {
779
+ ._ExternalInputModal-loadingBanner_8wgzm_206 {
780
780
  display: none;
781
781
  background-color: color-mix(in srgb, var(--puck-color-white) 90%, transparent);
782
782
  padding: 64px;
@@ -788,21 +788,21 @@ textarea._Input-input_3pq3z_47 {
788
788
  right: 0;
789
789
  bottom: 0;
790
790
  }
791
- ._ExternalInputModal--isLoading_wprq3_223 ._ExternalInputModal-loadingBanner_wprq3_206 {
791
+ ._ExternalInputModal--isLoading_8wgzm_223 ._ExternalInputModal-loadingBanner_8wgzm_206 {
792
792
  display: flex;
793
793
  }
794
- ._ExternalInputModal-searchForm_wprq3_227 {
794
+ ._ExternalInputModal-searchForm_8wgzm_227 {
795
795
  display: flex;
796
796
  flex-wrap: wrap;
797
797
  gap: 12px;
798
798
  flex-grow: 1;
799
799
  }
800
800
  @media (min-width: 458px) {
801
- ._ExternalInputModal-searchForm_wprq3_227 {
801
+ ._ExternalInputModal-searchForm_8wgzm_227 {
802
802
  flex-wrap: nowrap;
803
803
  }
804
804
  }
805
- ._ExternalInputModal-search_wprq3_227 {
805
+ ._ExternalInputModal-search_8wgzm_227 {
806
806
  display: flex;
807
807
  background: var(--puck-color-white);
808
808
  border-width: 1px;
@@ -812,18 +812,18 @@ textarea._Input-input_3pq3z_47 {
812
812
  flex-grow: 1;
813
813
  transition: border-color 50ms ease-in;
814
814
  }
815
- ._ExternalInputModal-search_wprq3_227:focus-within {
815
+ ._ExternalInputModal-search_8wgzm_227:focus-within {
816
816
  border-color: var(--puck-color-grey-05);
817
817
  outline: 2px solid var(--puck-color-azure-05);
818
818
  transition: none;
819
819
  }
820
820
  @media (hover: hover) and (pointer: fine) {
821
- ._ExternalInputModal-search_wprq3_227:hover {
821
+ ._ExternalInputModal-search_8wgzm_227:hover {
822
822
  border-color: var(--puck-color-grey-05);
823
823
  transition: none;
824
824
  }
825
825
  }
826
- ._ExternalInputModal-searchIcon_wprq3_264 {
826
+ ._ExternalInputModal-searchIcon_8wgzm_264 {
827
827
  align-items: center;
828
828
  background: var(--puck-color-grey-12);
829
829
  border-bottom-left-radius: 4px;
@@ -835,17 +835,17 @@ textarea._Input-input_3pq3z_47 {
835
835
  padding: 12px 15px;
836
836
  transition: color 50ms ease-in;
837
837
  }
838
- ._ExternalInputModal-search_wprq3_227:focus-within ._ExternalInputModal-searchIcon_wprq3_264 {
838
+ ._ExternalInputModal-search_8wgzm_227:focus-within ._ExternalInputModal-searchIcon_8wgzm_264 {
839
839
  color: var(--puck-color-grey-04);
840
840
  transition: none;
841
841
  }
842
842
  @media (hover: hover) and (pointer: fine) {
843
- ._ExternalInputModal-search_wprq3_227:hover ._ExternalInputModal-searchIcon_wprq3_264 {
843
+ ._ExternalInputModal-search_8wgzm_227:hover ._ExternalInputModal-searchIcon_8wgzm_264 {
844
844
  color: var(--puck-color-grey-04);
845
845
  transition: none;
846
846
  }
847
847
  }
848
- ._ExternalInputModal-searchIconText_wprq3_289 {
848
+ ._ExternalInputModal-searchIconText_8wgzm_289 {
849
849
  clip: rect(0 0 0 0);
850
850
  clip-path: inset(100%);
851
851
  height: 1px;
@@ -854,7 +854,7 @@ textarea._Input-input_3pq3z_47 {
854
854
  white-space: nowrap;
855
855
  width: 1px;
856
856
  }
857
- ._ExternalInputModal-searchInput_wprq3_299 {
857
+ ._ExternalInputModal-searchInput_8wgzm_299 {
858
858
  border: none;
859
859
  border-radius: 4px;
860
860
  background: var(--puck-color-white);
@@ -863,30 +863,32 @@ textarea._Input-input_3pq3z_47 {
863
863
  padding: 12px 15px;
864
864
  width: 100%;
865
865
  }
866
- ._ExternalInputModal-searchInput_wprq3_299:focus {
866
+ ._ExternalInputModal-searchInput_8wgzm_299:focus {
867
867
  outline: 0;
868
868
  }
869
- ._ExternalInputModal-searchActions_wprq3_313 {
869
+ ._ExternalInputModal-searchActions_8wgzm_313 {
870
870
  display: flex;
871
871
  gap: 8px;
872
872
  height: 44px;
873
873
  width: 100%;
874
874
  }
875
875
  @media (min-width: 458px) {
876
- ._ExternalInputModal-searchActions_wprq3_313 {
876
+ ._ExternalInputModal-searchActions_8wgzm_313 {
877
877
  width: auto;
878
878
  }
879
879
  }
880
- ._ExternalInputModal-searchActionIcon_wprq3_326 {
880
+ ._ExternalInputModal-searchActionIcon_8wgzm_326 {
881
881
  align-self: center;
882
882
  }
883
- ._ExternalInputModal-footer_wprq3_330 {
883
+ ._ExternalInputModal-footerContainer_8wgzm_330 {
884
884
  background-color: var(--puck-color-grey-12);
885
885
  border-top: 1px solid var(--puck-color-grey-09);
886
886
  color: var(--puck-color-grey-04);
887
+ padding: 16px;
888
+ }
889
+ ._ExternalInputModal-footer_8wgzm_330 {
887
890
  font-weight: 500;
888
891
  font-size: 14px;
889
- padding: 16px;
890
892
  text-align: right;
891
893
  }
892
894
 
package/dist/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
- import { F as FieldProps, a as Field, C as Config, D as Data, I as ItemSelector, P as PuckAction, b as DropZoneProps, U as UserGenerics, c as UiState, O as OnAction, d as Permissions, e as Plugin, f as Overrides, V as Viewports, g as IframeConfig, h as InitialHistory, i as DefaultComponentProps, j as DefaultRootFieldProps, H as History, A as AppState, E as ExtractPropsFromConfig, k as ExtractRootPropsFromConfig, l as ComponentDataMap } from './resolve-all-data-BoWgijLi.mjs';
2
- export { L as Adaptor, J as ArrayField, r as ArrayState, a2 as AsFieldProps, B as BaseData, y as BaseField, t as ComponentConfig, w as ComponentData, x as Content, X as CustomField, $ as DefaultRootProps, _ as DefaultRootRenderProps, W as ExternalField, Q as ExternalFieldWithAdaptor, p as FieldRenderFunctions, Y as Fields, q as ItemWithId, M as MappedItem, N as NumberField, K as ObjectField, n as OverrideKey, s as PuckComponent, Z as PuckContext, G as RadioField, v as RootData, R as RootDataWithProps, u as RootDataWithoutProps, S as SelectField, T as TextField, z as TextareaField, m as Viewport, a3 as WithChildren, a0 as WithId, a1 as WithPuckProps, o as overrideKeys, a4 as resolveAllData } from './resolve-all-data-BoWgijLi.mjs';
1
+ import { F as FieldProps, a as Field, C as Config, D as Data, I as ItemSelector, P as PuckAction, b as DropZoneProps, U as UserGenerics, c as UiState, O as OnAction, d as Permissions, e as Plugin, f as Overrides, V as Viewports, g as IframeConfig, h as InitialHistory, i as DefaultComponentProps, j as DefaultRootFieldProps, H as History, A as AppState, E as ExtractPropsFromConfig, k as ExtractRootPropsFromConfig, l as ComponentDataMap } from './resolve-all-data-Ch-Pcasj.mjs';
2
+ export { L as Adaptor, J as ArrayField, r as ArrayState, a2 as AsFieldProps, B as BaseData, y as BaseField, t as ComponentConfig, w as ComponentData, x as Content, X as CustomField, $ as DefaultRootProps, _ as DefaultRootRenderProps, W as ExternalField, Q as ExternalFieldWithAdaptor, p as FieldRenderFunctions, Y as Fields, q as ItemWithId, M as MappedItem, N as NumberField, K as ObjectField, n as OverrideKey, s as PuckComponent, Z as PuckContext, G as RadioField, v as RootData, R as RootDataWithProps, u as RootDataWithoutProps, S as SelectField, T as TextField, z as TextareaField, m as Viewport, a3 as WithChildren, a0 as WithId, a1 as WithPuckProps, o as overrideKeys, a4 as resolveAllData } from './resolve-all-data-Ch-Pcasj.mjs';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import * as react from 'react';
5
5
  import { ReactNode, SyntheticEvent, ReactElement, CSSProperties } from 'react';
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { F as FieldProps, a as Field, C as Config, D as Data, I as ItemSelector, P as PuckAction, b as DropZoneProps, U as UserGenerics, c as UiState, O as OnAction, d as Permissions, e as Plugin, f as Overrides, V as Viewports, g as IframeConfig, h as InitialHistory, i as DefaultComponentProps, j as DefaultRootFieldProps, H as History, A as AppState, E as ExtractPropsFromConfig, k as ExtractRootPropsFromConfig, l as ComponentDataMap } from './resolve-all-data-BoWgijLi.js';
2
- export { L as Adaptor, J as ArrayField, r as ArrayState, a2 as AsFieldProps, B as BaseData, y as BaseField, t as ComponentConfig, w as ComponentData, x as Content, X as CustomField, $ as DefaultRootProps, _ as DefaultRootRenderProps, W as ExternalField, Q as ExternalFieldWithAdaptor, p as FieldRenderFunctions, Y as Fields, q as ItemWithId, M as MappedItem, N as NumberField, K as ObjectField, n as OverrideKey, s as PuckComponent, Z as PuckContext, G as RadioField, v as RootData, R as RootDataWithProps, u as RootDataWithoutProps, S as SelectField, T as TextField, z as TextareaField, m as Viewport, a3 as WithChildren, a0 as WithId, a1 as WithPuckProps, o as overrideKeys, a4 as resolveAllData } from './resolve-all-data-BoWgijLi.js';
1
+ import { F as FieldProps, a as Field, C as Config, D as Data, I as ItemSelector, P as PuckAction, b as DropZoneProps, U as UserGenerics, c as UiState, O as OnAction, d as Permissions, e as Plugin, f as Overrides, V as Viewports, g as IframeConfig, h as InitialHistory, i as DefaultComponentProps, j as DefaultRootFieldProps, H as History, A as AppState, E as ExtractPropsFromConfig, k as ExtractRootPropsFromConfig, l as ComponentDataMap } from './resolve-all-data-Ch-Pcasj.js';
2
+ export { L as Adaptor, J as ArrayField, r as ArrayState, a2 as AsFieldProps, B as BaseData, y as BaseField, t as ComponentConfig, w as ComponentData, x as Content, X as CustomField, $ as DefaultRootProps, _ as DefaultRootRenderProps, W as ExternalField, Q as ExternalFieldWithAdaptor, p as FieldRenderFunctions, Y as Fields, q as ItemWithId, M as MappedItem, N as NumberField, K as ObjectField, n as OverrideKey, s as PuckComponent, Z as PuckContext, G as RadioField, v as RootData, R as RootDataWithProps, u as RootDataWithoutProps, S as SelectField, T as TextField, z as TextareaField, m as Viewport, a3 as WithChildren, a0 as WithId, a1 as WithPuckProps, o as overrideKeys, a4 as resolveAllData } from './resolve-all-data-Ch-Pcasj.js';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import * as react from 'react';
5
5
  import { ReactNode, SyntheticEvent, ReactElement, CSSProperties } from 'react';
package/dist/index.js CHANGED
@@ -276,7 +276,7 @@ init_react_import();
276
276
 
277
277
  // css-module:/home/runner/work/puck/puck/packages/core/components/AutoField/styles.module.css#css-module
278
278
  init_react_import();
279
- var styles_module_default2 = { "Input": "_Input_3pq3z_1", "Input-label": "_Input-label_3pq3z_26", "Input-labelIcon": "_Input-labelIcon_3pq3z_35", "Input-disabledIcon": "_Input-disabledIcon_3pq3z_42", "Input-input": "_Input-input_3pq3z_47", "Input--readOnly": "_Input--readOnly_3pq3z_91", "Input-radioGroupItems": "_Input-radioGroupItems_3pq3z_102", "Input-radio": "_Input-radio_3pq3z_102", "Input-radioInner": "_Input-radioInner_3pq3z_119", "Input-radioInput": "_Input-radioInput_3pq3z_164" };
279
+ var styles_module_default2 = { "InputWrapper": "_InputWrapper_1l5m8_1", "Input": "_Input_1l5m8_1", "Input-label": "_Input-label_1l5m8_26", "Input-labelIcon": "_Input-labelIcon_1l5m8_35", "Input-disabledIcon": "_Input-disabledIcon_1l5m8_42", "Input-input": "_Input-input_1l5m8_47", "Input--readOnly": "_Input--readOnly_1l5m8_91", "Input-radioGroupItems": "_Input-radioGroupItems_1l5m8_102", "Input-radio": "_Input-radio_1l5m8_102", "Input-radioInner": "_Input-radioInner_1l5m8_119", "Input-radioInput": "_Input-radioInput_1l5m8_164" };
280
280
 
281
281
  // components/AutoField/index.tsx
282
282
  var import_react13 = require("react");
@@ -1071,7 +1071,8 @@ var defaultAppState = {
1071
1071
  },
1072
1072
  options: [],
1073
1073
  controlsVisible: true
1074
- }
1074
+ },
1075
+ field: { focus: null }
1075
1076
  }
1076
1077
  };
1077
1078
  var defaultContext = {
@@ -1415,11 +1416,13 @@ var ArrayField = ({
1415
1416
  event.source.index,
1416
1417
  (_b = event.destination) == null ? void 0 : _b.index
1417
1418
  );
1418
- onChange(newValue, {
1419
+ const newUi = {
1419
1420
  arrayState: __spreadProps(__spreadValues({}, state.ui.arrayState), {
1420
1421
  [id]: __spreadProps(__spreadValues({}, arrayState), { items: newArrayStateItems })
1421
1422
  })
1422
- });
1423
+ };
1424
+ setUi(newUi, false);
1425
+ onChange(newValue, newUi);
1423
1426
  setLocalState({
1424
1427
  value: newValue,
1425
1428
  arrayState: __spreadProps(__spreadValues({}, arrayState), { items: newArrayStateItems })
@@ -1485,32 +1488,60 @@ var ArrayField = ({
1485
1488
  children: [
1486
1489
  field.getItemSummary ? field.getItemSummary(data, i) : `Item #${_originalIndex}`,
1487
1490
  /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: getClassNameItem("rhs"), children: [
1488
- !readOnly && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: getClassNameItem("actions"), children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: getClassNameItem("action"), children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1489
- IconButton,
1490
- {
1491
- type: "button",
1492
- disabled: field.min !== void 0 && field.min >= localState.arrayState.items.length,
1493
- onClick: (e) => {
1494
- e.stopPropagation();
1495
- const existingValue = [
1496
- ...value || []
1497
- ];
1498
- const existingItems = [
1499
- ...arrayState.items || []
1500
- ];
1501
- existingValue.splice(i, 1);
1502
- existingItems.splice(i, 1);
1503
- onChange(
1504
- existingValue,
1505
- mapArrayStateToUi({
1506
- items: existingItems
1507
- })
1508
- );
1509
- },
1510
- title: "Delete",
1511
- children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Trash, { size: 16 })
1512
- }
1513
- ) }) }),
1491
+ !readOnly && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: getClassNameItem("actions"), children: [
1492
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: getClassNameItem("action"), children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1493
+ IconButton,
1494
+ {
1495
+ type: "button",
1496
+ disabled: !!addDisabled,
1497
+ onClick: (e) => {
1498
+ e.stopPropagation();
1499
+ const existingValue = [
1500
+ ...value || []
1501
+ ];
1502
+ existingValue.splice(
1503
+ i,
1504
+ 0,
1505
+ existingValue[i]
1506
+ );
1507
+ onChange(
1508
+ existingValue,
1509
+ mapArrayStateToUi(
1510
+ regenerateArrayState(existingValue)
1511
+ )
1512
+ );
1513
+ },
1514
+ title: "Duplicate",
1515
+ children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Copy, { size: 16 })
1516
+ }
1517
+ ) }),
1518
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: getClassNameItem("action"), children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1519
+ IconButton,
1520
+ {
1521
+ type: "button",
1522
+ disabled: field.min !== void 0 && field.min >= localState.arrayState.items.length,
1523
+ onClick: (e) => {
1524
+ e.stopPropagation();
1525
+ const existingValue = [
1526
+ ...value || []
1527
+ ];
1528
+ const existingItems = [
1529
+ ...arrayState.items || []
1530
+ ];
1531
+ existingValue.splice(i, 1);
1532
+ existingItems.splice(i, 1);
1533
+ onChange(
1534
+ existingValue,
1535
+ mapArrayStateToUi({
1536
+ items: existingItems
1537
+ })
1538
+ );
1539
+ },
1540
+ title: "Delete",
1541
+ children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Trash, { size: 16 })
1542
+ }
1543
+ ) })
1544
+ ] }),
1514
1545
  /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(DragIcon, {}) })
1515
1546
  ] })
1516
1547
  ]
@@ -1607,7 +1638,7 @@ var DefaultField = ({
1607
1638
  autoComplete: "off",
1608
1639
  type: field.type,
1609
1640
  name,
1610
- value: typeof value === "undefined" ? "" : value,
1641
+ value: typeof value === "undefined" ? "" : value.toString(),
1611
1642
  onChange: (e) => {
1612
1643
  if (field.type === "number") {
1613
1644
  onChange(Number(e.currentTarget.value));
@@ -1636,7 +1667,7 @@ var import_react10 = require("react");
1636
1667
 
1637
1668
  // css-module:/home/runner/work/puck/puck/packages/core/components/ExternalInput/styles.module.css#css-module
1638
1669
  init_react_import();
1639
- var styles_module_default6 = { "ExternalInput-actions": "_ExternalInput-actions_wprq3_1", "ExternalInput-button": "_ExternalInput-button_wprq3_5", "ExternalInput--dataSelected": "_ExternalInput--dataSelected_wprq3_24", "ExternalInput--readOnly": "_ExternalInput--readOnly_wprq3_31", "ExternalInput-detachButton": "_ExternalInput-detachButton_wprq3_35", "ExternalInput": "_ExternalInput_wprq3_1", "ExternalInputModal": "_ExternalInputModal_wprq3_79", "ExternalInputModal-grid": "_ExternalInputModal-grid_wprq3_89", "ExternalInputModal--filtersToggled": "_ExternalInputModal--filtersToggled_wprq3_100", "ExternalInputModal-filters": "_ExternalInputModal-filters_wprq3_105", "ExternalInputModal-masthead": "_ExternalInputModal-masthead_wprq3_124", "ExternalInputModal-tableWrapper": "_ExternalInputModal-tableWrapper_wprq3_133", "ExternalInputModal-table": "_ExternalInputModal-table_wprq3_133", "ExternalInputModal-thead": "_ExternalInputModal-thead_wprq3_149", "ExternalInputModal-th": "_ExternalInputModal-th_wprq3_149", "ExternalInputModal-td": "_ExternalInputModal-td_wprq3_164", "ExternalInputModal-tr": "_ExternalInputModal-tr_wprq3_169", "ExternalInputModal-tbody": "_ExternalInputModal-tbody_wprq3_176", "ExternalInputModal--hasData": "_ExternalInputModal--hasData_wprq3_202", "ExternalInputModal-loadingBanner": "_ExternalInputModal-loadingBanner_wprq3_206", "ExternalInputModal--isLoading": "_ExternalInputModal--isLoading_wprq3_223", "ExternalInputModal-searchForm": "_ExternalInputModal-searchForm_wprq3_227", "ExternalInputModal-search": "_ExternalInputModal-search_wprq3_227", "ExternalInputModal-searchIcon": "_ExternalInputModal-searchIcon_wprq3_264", "ExternalInputModal-searchIconText": "_ExternalInputModal-searchIconText_wprq3_289", "ExternalInputModal-searchInput": "_ExternalInputModal-searchInput_wprq3_299", "ExternalInputModal-searchActions": "_ExternalInputModal-searchActions_wprq3_313", "ExternalInputModal-searchActionIcon": "_ExternalInputModal-searchActionIcon_wprq3_326", "ExternalInputModal-footer": "_ExternalInputModal-footer_wprq3_330" };
1670
+ var styles_module_default6 = { "ExternalInput-actions": "_ExternalInput-actions_8wgzm_1", "ExternalInput-button": "_ExternalInput-button_8wgzm_5", "ExternalInput--dataSelected": "_ExternalInput--dataSelected_8wgzm_24", "ExternalInput--readOnly": "_ExternalInput--readOnly_8wgzm_31", "ExternalInput-detachButton": "_ExternalInput-detachButton_8wgzm_35", "ExternalInput": "_ExternalInput_8wgzm_1", "ExternalInputModal": "_ExternalInputModal_8wgzm_79", "ExternalInputModal-grid": "_ExternalInputModal-grid_8wgzm_89", "ExternalInputModal--filtersToggled": "_ExternalInputModal--filtersToggled_8wgzm_100", "ExternalInputModal-filters": "_ExternalInputModal-filters_8wgzm_105", "ExternalInputModal-masthead": "_ExternalInputModal-masthead_8wgzm_124", "ExternalInputModal-tableWrapper": "_ExternalInputModal-tableWrapper_8wgzm_133", "ExternalInputModal-table": "_ExternalInputModal-table_8wgzm_133", "ExternalInputModal-thead": "_ExternalInputModal-thead_8wgzm_149", "ExternalInputModal-th": "_ExternalInputModal-th_8wgzm_149", "ExternalInputModal-td": "_ExternalInputModal-td_8wgzm_164", "ExternalInputModal-tr": "_ExternalInputModal-tr_8wgzm_169", "ExternalInputModal-tbody": "_ExternalInputModal-tbody_8wgzm_176", "ExternalInputModal--hasData": "_ExternalInputModal--hasData_8wgzm_202", "ExternalInputModal-loadingBanner": "_ExternalInputModal-loadingBanner_8wgzm_206", "ExternalInputModal--isLoading": "_ExternalInputModal--isLoading_8wgzm_223", "ExternalInputModal-searchForm": "_ExternalInputModal-searchForm_8wgzm_227", "ExternalInputModal-search": "_ExternalInputModal-search_8wgzm_227", "ExternalInputModal-searchIcon": "_ExternalInputModal-searchIcon_8wgzm_264", "ExternalInputModal-searchIconText": "_ExternalInputModal-searchIconText_8wgzm_289", "ExternalInputModal-searchInput": "_ExternalInputModal-searchInput_8wgzm_299", "ExternalInputModal-searchActions": "_ExternalInputModal-searchActions_8wgzm_313", "ExternalInputModal-searchActionIcon": "_ExternalInputModal-searchActionIcon_8wgzm_326", "ExternalInputModal-footerContainer": "_ExternalInputModal-footerContainer_8wgzm_330", "ExternalInputModal-footer": "_ExternalInputModal-footer_8wgzm_330" };
1640
1671
 
1641
1672
  // components/Modal/index.tsx
1642
1673
  init_react_import();
@@ -1793,7 +1824,7 @@ var ExternalInput = ({
1793
1824
  const validKeys = /* @__PURE__ */ new Set();
1794
1825
  for (const item of mappedData) {
1795
1826
  for (const key of Object.keys(item)) {
1796
- if (typeof item[key] === "string" || typeof item[key] === "number") {
1827
+ if (typeof item[key] === "string" || typeof item[key] === "number" || (0, import_react10.isValidElement)(item[key])) {
1797
1828
  validKeys.add(key);
1798
1829
  }
1799
1830
  }
@@ -1814,6 +1845,14 @@ var ExternalInput = ({
1814
1845
  }),
1815
1846
  [id, field]
1816
1847
  );
1848
+ const Footer = (0, import_react10.useCallback)(
1849
+ (props) => field.renderFooter ? field.renderFooter(props) : /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("span", { className: getClassNameModal("footer"), children: [
1850
+ props.items.length,
1851
+ " result",
1852
+ props.items.length === 1 ? "" : "s"
1853
+ ] }),
1854
+ [field.renderFooter]
1855
+ );
1817
1856
  (0, import_react10.useEffect)(() => {
1818
1857
  search(searchQuery, filters);
1819
1858
  }, []);
@@ -1953,11 +1992,7 @@ var ExternalInput = ({
1953
1992
  /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: getClassNameModal("loadingBanner"), children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Loader, { size: 24 }) })
1954
1993
  ] })
1955
1994
  ] }),
1956
- /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: getClassNameModal("footer"), children: [
1957
- mappedData.length,
1958
- " result",
1959
- mappedData.length === 1 ? "" : "s"
1960
- ] })
1995
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: getClassNameModal("footerContainer"), children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Footer, { items: mappedData }) })
1961
1996
  ]
1962
1997
  }
1963
1998
  ) })
@@ -2237,6 +2272,7 @@ var useSafeId = () => {
2237
2272
  // components/AutoField/index.tsx
2238
2273
  var import_jsx_runtime20 = require("react/jsx-runtime");
2239
2274
  var getClassName15 = get_class_name_factory_default("Input", styles_module_default2);
2275
+ var getClassNameWrapper = get_class_name_factory_default("InputWrapper", styles_module_default2);
2240
2276
  var FieldLabel = ({
2241
2277
  children,
2242
2278
  icon,
@@ -2284,7 +2320,7 @@ var FieldLabelInternal2 = ({
2284
2320
  };
2285
2321
  function AutoFieldInternal(props) {
2286
2322
  var _a, _b, _c, _d, _e, _f, _g, _h;
2287
- const { overrides } = useAppContext();
2323
+ const { dispatch, overrides } = useAppContext();
2288
2324
  const { id, Label = FieldLabelInternal2 } = props;
2289
2325
  const field = props.field;
2290
2326
  const label = field.label;
@@ -2316,23 +2352,45 @@ function AutoFieldInternal(props) {
2316
2352
  Label,
2317
2353
  id: resolvedId
2318
2354
  });
2355
+ const onFocus = (0, import_react13.useCallback)(
2356
+ (e) => {
2357
+ if (mergedProps.name && e.target.nodeName === "INPUT") {
2358
+ e.stopPropagation();
2359
+ dispatch({
2360
+ type: "setUi",
2361
+ ui: {
2362
+ field: { focus: mergedProps.name }
2363
+ }
2364
+ });
2365
+ }
2366
+ },
2367
+ [mergedProps.name]
2368
+ );
2369
+ const onBlur = (0, import_react13.useCallback)((e) => {
2370
+ if ("name" in e.target) {
2371
+ dispatch({
2372
+ type: "setUi",
2373
+ ui: {
2374
+ field: { focus: null }
2375
+ }
2376
+ });
2377
+ }
2378
+ }, []);
2319
2379
  if (field.type === "custom") {
2320
2380
  if (!field.render) {
2321
2381
  return null;
2322
2382
  }
2323
2383
  const CustomField = field.render;
2324
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: getClassName15(), children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(CustomField, __spreadValues({}, mergedProps)) });
2384
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: getClassNameWrapper(), onFocus, onBlur, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: getClassName15(), children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(CustomField, __spreadValues({}, mergedProps)) }) });
2325
2385
  }
2326
2386
  const children = defaultFields[field.type](mergedProps);
2327
2387
  const Render2 = render[field.type];
2328
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Render2, __spreadProps(__spreadValues({}, mergedProps), { children }));
2388
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: getClassNameWrapper(), onFocus, onBlur, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Render2, __spreadProps(__spreadValues({}, mergedProps), { children })) });
2329
2389
  }
2330
- var RECENT_CHANGE_TIMEOUT = 200;
2331
2390
  function AutoFieldPrivate(props) {
2391
+ const { state } = useAppContext();
2332
2392
  const { value, onChange } = props;
2333
2393
  const [localValue, setLocalValue] = (0, import_react13.useState)(value);
2334
- const [recentlyChanged, setRecentlyChanged] = (0, import_react13.useState)(false);
2335
- const timeoutRef = (0, import_react13.useRef)();
2336
2394
  const onChangeDb = (0, import_use_debounce.useDebouncedCallback)(
2337
2395
  (val, ui) => {
2338
2396
  onChange(val, ui);
@@ -2342,15 +2400,10 @@ function AutoFieldPrivate(props) {
2342
2400
  );
2343
2401
  const onChangeLocal = (0, import_react13.useCallback)((val, ui) => {
2344
2402
  setLocalValue(val);
2345
- setRecentlyChanged(true);
2346
- clearTimeout(timeoutRef.current);
2347
- timeoutRef.current = setTimeout(() => {
2348
- setRecentlyChanged(false);
2349
- }, RECENT_CHANGE_TIMEOUT);
2350
2403
  onChangeDb(val, ui);
2351
2404
  }, []);
2352
2405
  (0, import_react13.useEffect)(() => {
2353
- if (!recentlyChanged) {
2406
+ if (state.ui.field.focus !== props.name) {
2354
2407
  setLocalValue(value);
2355
2408
  }
2356
2409
  }, [value]);
package/dist/index.mjs CHANGED
@@ -178,14 +178,13 @@ init_react_import();
178
178
 
179
179
  // css-module:/home/runner/work/puck/puck/packages/core/components/AutoField/styles.module.css#css-module
180
180
  init_react_import();
181
- var styles_module_default2 = { "Input": "_Input_3pq3z_1", "Input-label": "_Input-label_3pq3z_26", "Input-labelIcon": "_Input-labelIcon_3pq3z_35", "Input-disabledIcon": "_Input-disabledIcon_3pq3z_42", "Input-input": "_Input-input_3pq3z_47", "Input--readOnly": "_Input--readOnly_3pq3z_91", "Input-radioGroupItems": "_Input-radioGroupItems_3pq3z_102", "Input-radio": "_Input-radio_3pq3z_102", "Input-radioInner": "_Input-radioInner_3pq3z_119", "Input-radioInput": "_Input-radioInput_3pq3z_164" };
181
+ var styles_module_default2 = { "InputWrapper": "_InputWrapper_1l5m8_1", "Input": "_Input_1l5m8_1", "Input-label": "_Input-label_1l5m8_26", "Input-labelIcon": "_Input-labelIcon_1l5m8_35", "Input-disabledIcon": "_Input-disabledIcon_1l5m8_42", "Input-input": "_Input-input_1l5m8_47", "Input--readOnly": "_Input--readOnly_1l5m8_91", "Input-radioGroupItems": "_Input-radioGroupItems_1l5m8_102", "Input-radio": "_Input-radio_1l5m8_102", "Input-radioInner": "_Input-radioInner_1l5m8_119", "Input-radioInput": "_Input-radioInput_1l5m8_164" };
182
182
 
183
183
  // components/AutoField/index.tsx
184
184
  import {
185
185
  useCallback as useCallback5,
186
186
  useEffect as useEffect9,
187
187
  useMemo as useMemo2,
188
- useRef as useRef2,
189
188
  useState as useState10
190
189
  } from "react";
191
190
 
@@ -880,7 +879,8 @@ var defaultAppState = {
880
879
  },
881
880
  options: [],
882
881
  controlsVisible: true
883
- }
882
+ },
883
+ field: { focus: null }
884
884
  }
885
885
  };
886
886
  var defaultContext = {
@@ -1228,11 +1228,13 @@ var ArrayField = ({
1228
1228
  event.source.index,
1229
1229
  (_b = event.destination) == null ? void 0 : _b.index
1230
1230
  );
1231
- onChange(newValue, {
1231
+ const newUi = {
1232
1232
  arrayState: __spreadProps(__spreadValues({}, state.ui.arrayState), {
1233
1233
  [id]: __spreadProps(__spreadValues({}, arrayState), { items: newArrayStateItems })
1234
1234
  })
1235
- });
1235
+ };
1236
+ setUi(newUi, false);
1237
+ onChange(newValue, newUi);
1236
1238
  setLocalState({
1237
1239
  value: newValue,
1238
1240
  arrayState: __spreadProps(__spreadValues({}, arrayState), { items: newArrayStateItems })
@@ -1298,32 +1300,60 @@ var ArrayField = ({
1298
1300
  children: [
1299
1301
  field.getItemSummary ? field.getItemSummary(data, i) : `Item #${_originalIndex}`,
1300
1302
  /* @__PURE__ */ jsxs4("div", { className: getClassNameItem("rhs"), children: [
1301
- !readOnly && /* @__PURE__ */ jsx9("div", { className: getClassNameItem("actions"), children: /* @__PURE__ */ jsx9("div", { className: getClassNameItem("action"), children: /* @__PURE__ */ jsx9(
1302
- IconButton,
1303
- {
1304
- type: "button",
1305
- disabled: field.min !== void 0 && field.min >= localState.arrayState.items.length,
1306
- onClick: (e) => {
1307
- e.stopPropagation();
1308
- const existingValue = [
1309
- ...value || []
1310
- ];
1311
- const existingItems = [
1312
- ...arrayState.items || []
1313
- ];
1314
- existingValue.splice(i, 1);
1315
- existingItems.splice(i, 1);
1316
- onChange(
1317
- existingValue,
1318
- mapArrayStateToUi({
1319
- items: existingItems
1320
- })
1321
- );
1322
- },
1323
- title: "Delete",
1324
- children: /* @__PURE__ */ jsx9(Trash, { size: 16 })
1325
- }
1326
- ) }) }),
1303
+ !readOnly && /* @__PURE__ */ jsxs4("div", { className: getClassNameItem("actions"), children: [
1304
+ /* @__PURE__ */ jsx9("div", { className: getClassNameItem("action"), children: /* @__PURE__ */ jsx9(
1305
+ IconButton,
1306
+ {
1307
+ type: "button",
1308
+ disabled: !!addDisabled,
1309
+ onClick: (e) => {
1310
+ e.stopPropagation();
1311
+ const existingValue = [
1312
+ ...value || []
1313
+ ];
1314
+ existingValue.splice(
1315
+ i,
1316
+ 0,
1317
+ existingValue[i]
1318
+ );
1319
+ onChange(
1320
+ existingValue,
1321
+ mapArrayStateToUi(
1322
+ regenerateArrayState(existingValue)
1323
+ )
1324
+ );
1325
+ },
1326
+ title: "Duplicate",
1327
+ children: /* @__PURE__ */ jsx9(Copy, { size: 16 })
1328
+ }
1329
+ ) }),
1330
+ /* @__PURE__ */ jsx9("div", { className: getClassNameItem("action"), children: /* @__PURE__ */ jsx9(
1331
+ IconButton,
1332
+ {
1333
+ type: "button",
1334
+ disabled: field.min !== void 0 && field.min >= localState.arrayState.items.length,
1335
+ onClick: (e) => {
1336
+ e.stopPropagation();
1337
+ const existingValue = [
1338
+ ...value || []
1339
+ ];
1340
+ const existingItems = [
1341
+ ...arrayState.items || []
1342
+ ];
1343
+ existingValue.splice(i, 1);
1344
+ existingItems.splice(i, 1);
1345
+ onChange(
1346
+ existingValue,
1347
+ mapArrayStateToUi({
1348
+ items: existingItems
1349
+ })
1350
+ );
1351
+ },
1352
+ title: "Delete",
1353
+ children: /* @__PURE__ */ jsx9(Trash, { size: 16 })
1354
+ }
1355
+ ) })
1356
+ ] }),
1327
1357
  /* @__PURE__ */ jsx9("div", { children: /* @__PURE__ */ jsx9(DragIcon, {}) })
1328
1358
  ] })
1329
1359
  ]
@@ -1420,7 +1450,7 @@ var DefaultField = ({
1420
1450
  autoComplete: "off",
1421
1451
  type: field.type,
1422
1452
  name,
1423
- value: typeof value === "undefined" ? "" : value,
1453
+ value: typeof value === "undefined" ? "" : value.toString(),
1424
1454
  onChange: (e) => {
1425
1455
  if (field.type === "number") {
1426
1456
  onChange(Number(e.currentTarget.value));
@@ -1445,11 +1475,17 @@ import { useEffect as useEffect8 } from "react";
1445
1475
 
1446
1476
  // components/ExternalInput/index.tsx
1447
1477
  init_react_import();
1448
- import { useMemo, useEffect as useEffect7, useState as useState8, useCallback as useCallback4 } from "react";
1478
+ import {
1479
+ useMemo,
1480
+ useEffect as useEffect7,
1481
+ useState as useState8,
1482
+ useCallback as useCallback4,
1483
+ isValidElement
1484
+ } from "react";
1449
1485
 
1450
1486
  // css-module:/home/runner/work/puck/puck/packages/core/components/ExternalInput/styles.module.css#css-module
1451
1487
  init_react_import();
1452
- var styles_module_default6 = { "ExternalInput-actions": "_ExternalInput-actions_wprq3_1", "ExternalInput-button": "_ExternalInput-button_wprq3_5", "ExternalInput--dataSelected": "_ExternalInput--dataSelected_wprq3_24", "ExternalInput--readOnly": "_ExternalInput--readOnly_wprq3_31", "ExternalInput-detachButton": "_ExternalInput-detachButton_wprq3_35", "ExternalInput": "_ExternalInput_wprq3_1", "ExternalInputModal": "_ExternalInputModal_wprq3_79", "ExternalInputModal-grid": "_ExternalInputModal-grid_wprq3_89", "ExternalInputModal--filtersToggled": "_ExternalInputModal--filtersToggled_wprq3_100", "ExternalInputModal-filters": "_ExternalInputModal-filters_wprq3_105", "ExternalInputModal-masthead": "_ExternalInputModal-masthead_wprq3_124", "ExternalInputModal-tableWrapper": "_ExternalInputModal-tableWrapper_wprq3_133", "ExternalInputModal-table": "_ExternalInputModal-table_wprq3_133", "ExternalInputModal-thead": "_ExternalInputModal-thead_wprq3_149", "ExternalInputModal-th": "_ExternalInputModal-th_wprq3_149", "ExternalInputModal-td": "_ExternalInputModal-td_wprq3_164", "ExternalInputModal-tr": "_ExternalInputModal-tr_wprq3_169", "ExternalInputModal-tbody": "_ExternalInputModal-tbody_wprq3_176", "ExternalInputModal--hasData": "_ExternalInputModal--hasData_wprq3_202", "ExternalInputModal-loadingBanner": "_ExternalInputModal-loadingBanner_wprq3_206", "ExternalInputModal--isLoading": "_ExternalInputModal--isLoading_wprq3_223", "ExternalInputModal-searchForm": "_ExternalInputModal-searchForm_wprq3_227", "ExternalInputModal-search": "_ExternalInputModal-search_wprq3_227", "ExternalInputModal-searchIcon": "_ExternalInputModal-searchIcon_wprq3_264", "ExternalInputModal-searchIconText": "_ExternalInputModal-searchIconText_wprq3_289", "ExternalInputModal-searchInput": "_ExternalInputModal-searchInput_wprq3_299", "ExternalInputModal-searchActions": "_ExternalInputModal-searchActions_wprq3_313", "ExternalInputModal-searchActionIcon": "_ExternalInputModal-searchActionIcon_wprq3_326", "ExternalInputModal-footer": "_ExternalInputModal-footer_wprq3_330" };
1488
+ var styles_module_default6 = { "ExternalInput-actions": "_ExternalInput-actions_8wgzm_1", "ExternalInput-button": "_ExternalInput-button_8wgzm_5", "ExternalInput--dataSelected": "_ExternalInput--dataSelected_8wgzm_24", "ExternalInput--readOnly": "_ExternalInput--readOnly_8wgzm_31", "ExternalInput-detachButton": "_ExternalInput-detachButton_8wgzm_35", "ExternalInput": "_ExternalInput_8wgzm_1", "ExternalInputModal": "_ExternalInputModal_8wgzm_79", "ExternalInputModal-grid": "_ExternalInputModal-grid_8wgzm_89", "ExternalInputModal--filtersToggled": "_ExternalInputModal--filtersToggled_8wgzm_100", "ExternalInputModal-filters": "_ExternalInputModal-filters_8wgzm_105", "ExternalInputModal-masthead": "_ExternalInputModal-masthead_8wgzm_124", "ExternalInputModal-tableWrapper": "_ExternalInputModal-tableWrapper_8wgzm_133", "ExternalInputModal-table": "_ExternalInputModal-table_8wgzm_133", "ExternalInputModal-thead": "_ExternalInputModal-thead_8wgzm_149", "ExternalInputModal-th": "_ExternalInputModal-th_8wgzm_149", "ExternalInputModal-td": "_ExternalInputModal-td_8wgzm_164", "ExternalInputModal-tr": "_ExternalInputModal-tr_8wgzm_169", "ExternalInputModal-tbody": "_ExternalInputModal-tbody_8wgzm_176", "ExternalInputModal--hasData": "_ExternalInputModal--hasData_8wgzm_202", "ExternalInputModal-loadingBanner": "_ExternalInputModal-loadingBanner_8wgzm_206", "ExternalInputModal--isLoading": "_ExternalInputModal--isLoading_8wgzm_223", "ExternalInputModal-searchForm": "_ExternalInputModal-searchForm_8wgzm_227", "ExternalInputModal-search": "_ExternalInputModal-search_8wgzm_227", "ExternalInputModal-searchIcon": "_ExternalInputModal-searchIcon_8wgzm_264", "ExternalInputModal-searchIconText": "_ExternalInputModal-searchIconText_8wgzm_289", "ExternalInputModal-searchInput": "_ExternalInputModal-searchInput_8wgzm_299", "ExternalInputModal-searchActions": "_ExternalInputModal-searchActions_8wgzm_313", "ExternalInputModal-searchActionIcon": "_ExternalInputModal-searchActionIcon_8wgzm_326", "ExternalInputModal-footerContainer": "_ExternalInputModal-footerContainer_8wgzm_330", "ExternalInputModal-footer": "_ExternalInputModal-footer_8wgzm_330" };
1453
1489
 
1454
1490
  // components/Modal/index.tsx
1455
1491
  init_react_import();
@@ -1606,7 +1642,7 @@ var ExternalInput = ({
1606
1642
  const validKeys = /* @__PURE__ */ new Set();
1607
1643
  for (const item of mappedData) {
1608
1644
  for (const key of Object.keys(item)) {
1609
- if (typeof item[key] === "string" || typeof item[key] === "number") {
1645
+ if (typeof item[key] === "string" || typeof item[key] === "number" || isValidElement(item[key])) {
1610
1646
  validKeys.add(key);
1611
1647
  }
1612
1648
  }
@@ -1627,6 +1663,14 @@ var ExternalInput = ({
1627
1663
  }),
1628
1664
  [id, field]
1629
1665
  );
1666
+ const Footer = useCallback4(
1667
+ (props) => field.renderFooter ? field.renderFooter(props) : /* @__PURE__ */ jsxs7("span", { className: getClassNameModal("footer"), children: [
1668
+ props.items.length,
1669
+ " result",
1670
+ props.items.length === 1 ? "" : "s"
1671
+ ] }),
1672
+ [field.renderFooter]
1673
+ );
1630
1674
  useEffect7(() => {
1631
1675
  search(searchQuery, filters);
1632
1676
  }, []);
@@ -1766,11 +1810,7 @@ var ExternalInput = ({
1766
1810
  /* @__PURE__ */ jsx14("div", { className: getClassNameModal("loadingBanner"), children: /* @__PURE__ */ jsx14(Loader, { size: 24 }) })
1767
1811
  ] })
1768
1812
  ] }),
1769
- /* @__PURE__ */ jsxs7("div", { className: getClassNameModal("footer"), children: [
1770
- mappedData.length,
1771
- " result",
1772
- mappedData.length === 1 ? "" : "s"
1773
- ] })
1813
+ /* @__PURE__ */ jsx14("div", { className: getClassNameModal("footerContainer"), children: /* @__PURE__ */ jsx14(Footer, { items: mappedData }) })
1774
1814
  ]
1775
1815
  }
1776
1816
  ) })
@@ -2050,6 +2090,7 @@ var useSafeId = () => {
2050
2090
  // components/AutoField/index.tsx
2051
2091
  import { Fragment as Fragment8, jsx as jsx20, jsxs as jsxs9 } from "react/jsx-runtime";
2052
2092
  var getClassName15 = get_class_name_factory_default("Input", styles_module_default2);
2093
+ var getClassNameWrapper = get_class_name_factory_default("InputWrapper", styles_module_default2);
2053
2094
  var FieldLabel = ({
2054
2095
  children,
2055
2096
  icon,
@@ -2097,7 +2138,7 @@ var FieldLabelInternal2 = ({
2097
2138
  };
2098
2139
  function AutoFieldInternal(props) {
2099
2140
  var _a, _b, _c, _d, _e, _f, _g, _h;
2100
- const { overrides } = useAppContext();
2141
+ const { dispatch, overrides } = useAppContext();
2101
2142
  const { id, Label = FieldLabelInternal2 } = props;
2102
2143
  const field = props.field;
2103
2144
  const label = field.label;
@@ -2129,23 +2170,45 @@ function AutoFieldInternal(props) {
2129
2170
  Label,
2130
2171
  id: resolvedId
2131
2172
  });
2173
+ const onFocus = useCallback5(
2174
+ (e) => {
2175
+ if (mergedProps.name && e.target.nodeName === "INPUT") {
2176
+ e.stopPropagation();
2177
+ dispatch({
2178
+ type: "setUi",
2179
+ ui: {
2180
+ field: { focus: mergedProps.name }
2181
+ }
2182
+ });
2183
+ }
2184
+ },
2185
+ [mergedProps.name]
2186
+ );
2187
+ const onBlur = useCallback5((e) => {
2188
+ if ("name" in e.target) {
2189
+ dispatch({
2190
+ type: "setUi",
2191
+ ui: {
2192
+ field: { focus: null }
2193
+ }
2194
+ });
2195
+ }
2196
+ }, []);
2132
2197
  if (field.type === "custom") {
2133
2198
  if (!field.render) {
2134
2199
  return null;
2135
2200
  }
2136
2201
  const CustomField = field.render;
2137
- return /* @__PURE__ */ jsx20("div", { className: getClassName15(), children: /* @__PURE__ */ jsx20(CustomField, __spreadValues({}, mergedProps)) });
2202
+ return /* @__PURE__ */ jsx20("div", { className: getClassNameWrapper(), onFocus, onBlur, children: /* @__PURE__ */ jsx20("div", { className: getClassName15(), children: /* @__PURE__ */ jsx20(CustomField, __spreadValues({}, mergedProps)) }) });
2138
2203
  }
2139
2204
  const children = defaultFields[field.type](mergedProps);
2140
2205
  const Render2 = render[field.type];
2141
- return /* @__PURE__ */ jsx20(Render2, __spreadProps(__spreadValues({}, mergedProps), { children }));
2206
+ return /* @__PURE__ */ jsx20("div", { className: getClassNameWrapper(), onFocus, onBlur, children: /* @__PURE__ */ jsx20(Render2, __spreadProps(__spreadValues({}, mergedProps), { children })) });
2142
2207
  }
2143
- var RECENT_CHANGE_TIMEOUT = 200;
2144
2208
  function AutoFieldPrivate(props) {
2209
+ const { state } = useAppContext();
2145
2210
  const { value, onChange } = props;
2146
2211
  const [localValue, setLocalValue] = useState10(value);
2147
- const [recentlyChanged, setRecentlyChanged] = useState10(false);
2148
- const timeoutRef = useRef2();
2149
2212
  const onChangeDb = useDebouncedCallback(
2150
2213
  (val, ui) => {
2151
2214
  onChange(val, ui);
@@ -2155,15 +2218,10 @@ function AutoFieldPrivate(props) {
2155
2218
  );
2156
2219
  const onChangeLocal = useCallback5((val, ui) => {
2157
2220
  setLocalValue(val);
2158
- setRecentlyChanged(true);
2159
- clearTimeout(timeoutRef.current);
2160
- timeoutRef.current = setTimeout(() => {
2161
- setRecentlyChanged(false);
2162
- }, RECENT_CHANGE_TIMEOUT);
2163
2221
  onChangeDb(val, ui);
2164
2222
  }, []);
2165
2223
  useEffect9(() => {
2166
- if (!recentlyChanged) {
2224
+ if (state.ui.field.focus !== props.name) {
2167
2225
  setLocalValue(value);
2168
2226
  }
2169
2227
  }, [value]);
@@ -91,9 +91,12 @@ type ExternalField<Props extends {
91
91
  filters: Record<string, any>;
92
92
  }) => Promise<any[] | null>;
93
93
  mapProp?: (value: any) => Props;
94
- mapRow?: (value: any) => Record<string, string | number>;
94
+ mapRow?: (value: any) => Record<string, string | number | ReactElement>;
95
95
  getItemSummary?: (item: Props, index?: number) => string;
96
96
  showSearch?: boolean;
97
+ renderFooter?: (props: {
98
+ items: any[];
99
+ }) => ReactElement;
97
100
  initialQuery?: string;
98
101
  filterFields?: Record<string, Field>;
99
102
  initialFilters?: Record<string, any>;
@@ -271,6 +274,9 @@ type UiState = {
271
274
  controlsVisible: boolean;
272
275
  options: Viewport[];
273
276
  };
277
+ field: {
278
+ focus?: string | null;
279
+ };
274
280
  };
275
281
  type AppState<UserData extends Data = Data> = {
276
282
  data: UserData;
@@ -91,9 +91,12 @@ type ExternalField<Props extends {
91
91
  filters: Record<string, any>;
92
92
  }) => Promise<any[] | null>;
93
93
  mapProp?: (value: any) => Props;
94
- mapRow?: (value: any) => Record<string, string | number>;
94
+ mapRow?: (value: any) => Record<string, string | number | ReactElement>;
95
95
  getItemSummary?: (item: Props, index?: number) => string;
96
96
  showSearch?: boolean;
97
+ renderFooter?: (props: {
98
+ items: any[];
99
+ }) => ReactElement;
97
100
  initialQuery?: string;
98
101
  filterFields?: Record<string, Field>;
99
102
  initialFilters?: Record<string, any>;
@@ -271,6 +274,9 @@ type UiState = {
271
274
  controlsVisible: boolean;
272
275
  options: Viewport[];
273
276
  };
277
+ field: {
278
+ focus?: string | null;
279
+ };
274
280
  };
275
281
  type AppState<UserData extends Data = Data> = {
276
282
  data: UserData;
package/dist/rsc.d.mts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { C as Config, D as Data } from './resolve-all-data-BoWgijLi.mjs';
3
- export { a4 as resolveAllData } from './resolve-all-data-BoWgijLi.mjs';
2
+ import { C as Config, D as Data } from './resolve-all-data-Ch-Pcasj.mjs';
3
+ export { a4 as resolveAllData } from './resolve-all-data-Ch-Pcasj.mjs';
4
4
  import 'react';
5
5
 
6
6
  declare function Render<UserConfig extends Config = Config>({ config, data, }: {
package/dist/rsc.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { C as Config, D as Data } from './resolve-all-data-BoWgijLi.js';
3
- export { a4 as resolveAllData } from './resolve-all-data-BoWgijLi.js';
2
+ import { C as Config, D as Data } from './resolve-all-data-Ch-Pcasj.js';
3
+ export { a4 as resolveAllData } from './resolve-all-data-Ch-Pcasj.js';
4
4
  import 'react';
5
5
 
6
6
  declare function Render<UserConfig extends Config = Config>({ config, data, }: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@measured/puck",
3
- "version": "0.16.3-canary.af421c6",
3
+ "version": "0.17.0-canary.35170f8",
4
4
  "author": "Measured Corporation Ltd <hello@measured.co>",
5
5
  "repository": "measuredco/puck",
6
6
  "bugs": "https://github.com/measuredco/puck/issues",