@firecms/core 3.0.0-canary.136 → 3.0.0-canary.138

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/README.md +1 -1
  2. package/dist/components/PropertyConfigBadge.d.ts +2 -1
  3. package/dist/index.es.js +49 -52
  4. package/dist/index.es.js.map +1 -1
  5. package/dist/index.umd.js +50 -53
  6. package/dist/index.umd.js.map +1 -1
  7. package/dist/types/property_config.d.ts +0 -2
  8. package/dist/util/resolutions.d.ts +6 -6
  9. package/package.json +5 -5
  10. package/src/app/Scaffold.tsx +3 -4
  11. package/src/components/DeleteEntityDialog.tsx +1 -1
  12. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +1 -1
  13. package/src/components/EntityCollectionView/EntityCollectionView.tsx +2 -2
  14. package/src/components/EntityPreview.tsx +1 -1
  15. package/src/components/EntityView.tsx +1 -1
  16. package/src/components/PropertyConfigBadge.tsx +9 -3
  17. package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +1 -2
  18. package/src/components/common/default_entity_actions.tsx +2 -2
  19. package/src/core/DefaultAppBar.tsx +69 -73
  20. package/src/core/EntityEditView.tsx +4 -4
  21. package/src/core/FireCMS.tsx +1 -4
  22. package/src/form/PropertyFieldBinding.tsx +2 -2
  23. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +0 -1
  24. package/src/hooks/data/save.ts +3 -3
  25. package/src/internal/useBuildDataSource.ts +1 -1
  26. package/src/preview/PropertyPreview.tsx +1 -1
  27. package/src/preview/components/ImagePreview.tsx +2 -2
  28. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +1 -1
  29. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +1 -1
  30. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +1 -1
  31. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +1 -1
  32. package/src/preview/property_previews/ArrayOneOfPreview.tsx +1 -1
  33. package/src/preview/property_previews/ArrayPropertyPreview.tsx +1 -1
  34. package/src/types/property_config.tsx +0 -2
  35. package/src/util/property_utils.tsx +1 -1
  36. package/src/util/resolutions.ts +8 -8
package/README.md CHANGED
@@ -89,7 +89,7 @@ navigating through **subcollections** and accessing custom views (such as custom
89
89
  forms or blog previews). This functionality can also be accessed
90
90
  programmatically using the `useSideEntityController` hook.
91
91
 
92
- FireCMS includes **over 15 built-in fields** with numerous customization and
92
+ FireCMS includes **over 20 built-in fields** with numerous customization and
93
93
  validation options. The components have been carefully designed for an
94
94
  outstanding user experience, including advanced features like **references** to
95
95
  other collections, **markdown**, and **array reordering**.
@@ -1,4 +1,5 @@
1
1
  import { PropertyConfig } from "../types";
2
- export declare function PropertyConfigBadge({ propertyConfig }: {
2
+ export declare function PropertyConfigBadge({ propertyConfig, disabled }: {
3
3
  propertyConfig: PropertyConfig | undefined;
4
+ disabled?: boolean;
4
5
  }): React.ReactNode;
package/dist/index.es.js CHANGED
@@ -1,10 +1,10 @@
1
1
  import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
3
  import React__default, { useRef, useEffect, useContext, useCallback, useMemo, useState, createElement, createRef, createContext, forwardRef, useLayoutEffect } from "react";
4
+ import { getColorSchemeForSeed, CHIP_COLORS, Tooltip, ErrorIcon, Typography, CircleIcon, FunctionsIcon, iconKeys, coolIconKeys, Icon, IconButton, ContentCopyIcon, OpenInNewIcon, DescriptionIcon, cls, Skeleton, Chip, defaultBorderMixin, KeyboardTabIcon, Checkbox, Markdown, TextareaAutosize, focusedDisabled, MultiSelect, MultiSelectItem, Select, SelectItem, BooleanSwitch, DateTimeField, paperMixin, ErrorOutlineIcon, EditIcon, RemoveCircleIcon, Menu, MoreVertIcon, MenuItem, CircularProgress, SearchBar, Badge, ArrowUpwardIcon, Popover, FilterListIcon, Button, CenteredView, AssignmentIcon, Label, TextField, ClearIcon, BooleanSwitchWithLabel, useOutsideAlerter, Dialog, DialogContent, DialogActions, FileCopyIcon, ArchiveIcon, DeleteIcon, AddIcon, ExpandablePanel, Card, ArrowForwardIcon, cardMixin, cardClickableMixin, StarIcon, StarBorderIcon, Collapse, Container, FilterListOffIcon, SearchIcon, LoadingButton, Avatar, DarkModeIcon, LightModeIcon, LogoutIcon, HandleIcon, RemoveIcon, debounce, InfoIcon, CloseIcon, fieldBackgroundMixin, fieldBackgroundDisabledMixin, fieldBackgroundHoverMixin, ArrowDropDownIcon, ShortTextIcon, SubjectIcon, FormatQuoteIcon, HttpIcon, EmailIcon, FlagIcon, ListIcon, ListAltIcon, NumbersIcon, FormatListNumberedIcon, UploadFileIcon, DriveFolderUploadIcon, LinkIcon, AddLinkIcon, ScheduleIcon, BallotIcon, RepeatIcon, ViewStreamIcon, NotesIcon, Tab, Tabs, Alert, Sheet, MenuIcon, ChevronLeftIcon } from "@firecms/ui";
4
5
  import { SnackbarProvider as SnackbarProvider$1, useSnackbar } from "notistack";
5
6
  import hash from "object-hash";
6
7
  import { useCreateFormex, Formex, setIn, Field, getIn, useFormex } from "@firecms/formex";
7
- import { getColorSchemeForSeed, CHIP_COLORS, Tooltip, ErrorIcon, Typography, CircleIcon, FunctionsIcon, iconKeys, coolIconKeys, Icon, IconButton, ContentCopyIcon, OpenInNewIcon, DescriptionIcon, cls, Skeleton, Chip, defaultBorderMixin, KeyboardTabIcon, Checkbox, Markdown, TextareaAutosize, focusedDisabled, MultiSelect, MultiSelectItem, Select, SelectItem, BooleanSwitch, DateTimeField, paperMixin, ErrorOutlineIcon, EditIcon, RemoveCircleIcon, Menu, MoreVertIcon, MenuItem, CircularProgress, SearchBar, Badge, ArrowUpwardIcon, Popover, FilterListIcon, Button, CenteredView, AssignmentIcon, Label, TextField, ClearIcon, BooleanSwitchWithLabel, useOutsideAlerter, Dialog, DialogContent, DialogActions, FileCopyIcon, ArchiveIcon, DeleteIcon, AddIcon, ExpandablePanel, Card, ArrowForwardIcon, cardMixin, cardClickableMixin, StarIcon, StarBorderIcon, Collapse, Container, FilterListOffIcon, SearchIcon, LoadingButton, Avatar, DarkModeIcon, LightModeIcon, LogoutIcon, HandleIcon, RemoveIcon, debounce, InfoIcon, CloseIcon, fieldBackgroundMixin, fieldBackgroundDisabledMixin, fieldBackgroundHoverMixin, ArrowDropDownIcon, ShortTextIcon, SubjectIcon, FormatQuoteIcon, HttpIcon, EmailIcon, FlagIcon, ListIcon, ListAltIcon, NumbersIcon, FormatListNumberedIcon, UploadFileIcon, DriveFolderUploadIcon, LinkIcon, AddLinkIcon, ScheduleIcon, BallotIcon, RepeatIcon, ViewStreamIcon, NotesIcon, Tab, Tabs, Alert, Sheet, useLocaleConfig, MenuIcon, ChevronLeftIcon } from "@firecms/ui";
8
8
  import equal from "react-fast-compare";
9
9
  import { Link, useNavigate, useLocation, UNSAFE_NavigationContext, NavLink, Route, Routes } from "react-router-dom";
10
10
  import { format } from "date-fns";
@@ -672,7 +672,7 @@ function isReferenceProperty(propertyOrBuilder, fields) {
672
672
  propertyKey: "ignore",
673
673
  // TODO
674
674
  propertyOrBuilder,
675
- fields
675
+ propertyConfigs: fields
676
676
  });
677
677
  if (!resolvedProperty) return null;
678
678
  if (resolvedProperty.dataType === "reference") {
@@ -3577,7 +3577,7 @@ async function saveEntityWithCallbacks({
3577
3577
  path,
3578
3578
  values: previousValues,
3579
3579
  entityId,
3580
- fields: customizationController.propertyConfigs
3580
+ propertyConfigs: customizationController.propertyConfigs
3581
3581
  });
3582
3582
  updatedValues = await callbacks.onPreSave({
3583
3583
  collection: resolvedCollection,
@@ -3618,7 +3618,7 @@ async function saveEntityWithCallbacks({
3618
3618
  path,
3619
3619
  values: updatedValues,
3620
3620
  entityId,
3621
- fields: customizationController.propertyConfigs
3621
+ propertyConfigs: customizationController.propertyConfigs
3622
3622
  });
3623
3623
  callbacks.onSaveSuccess({
3624
3624
  collection: resolvedCollection,
@@ -3645,7 +3645,7 @@ async function saveEntityWithCallbacks({
3645
3645
  path,
3646
3646
  values: updatedValues,
3647
3647
  entityId,
3648
- fields: customizationController.propertyConfigs
3648
+ propertyConfigs: customizationController.propertyConfigs
3649
3649
  });
3650
3650
  callbacks.onSaveFailure({
3651
3651
  collection: resolvedCollection,
@@ -4613,7 +4613,7 @@ function ImagePreview({
4613
4613
  ContentCopyIcon,
4614
4614
  {
4615
4615
  className: "text-gray-700 dark:text-gray-300",
4616
- size: "small"
4616
+ size: "smallest"
4617
4617
  }
4618
4618
  )
4619
4619
  }
@@ -4635,7 +4635,7 @@ function ImagePreview({
4635
4635
  OpenInNewIcon,
4636
4636
  {
4637
4637
  className: "text-gray-700 dark:text-gray-300",
4638
- size: "small"
4638
+ size: "smallest"
4639
4639
  }
4640
4640
  )
4641
4641
  }
@@ -5109,7 +5109,7 @@ function ArrayPropertyPreview({
5109
5109
  const property = resolveArrayProperty({
5110
5110
  propertyKey,
5111
5111
  property: inputProperty,
5112
- fields: customizationController.propertyConfigs
5112
+ propertyConfigs: customizationController.propertyConfigs
5113
5113
  });
5114
5114
  if (!property.of) {
5115
5115
  throw Error(`You need to specify an 'of' prop (or specify a custom field) in your array property ${propertyKey}`);
@@ -5164,7 +5164,7 @@ function EntityPreview({
5164
5164
  collection,
5165
5165
  path: entity.path,
5166
5166
  values: entity.values,
5167
- fields: customizationController.propertyConfigs
5167
+ propertyConfigs: customizationController.propertyConfigs
5168
5168
  }), [collection]);
5169
5169
  const listProperties = useMemo(
5170
5170
  () => getEntityPreviewKeys(resolvedCollection, customizationController.propertyConfigs, previewProperties, size === "small" || size === "medium" ? 3 : 1),
@@ -5466,7 +5466,7 @@ function ArrayOfReferencesPreview({
5466
5466
  const property = resolveArrayProperty({
5467
5467
  propertyKey,
5468
5468
  property: inputProperty,
5469
- fields: customizationController.propertyConfigs
5469
+ propertyConfigs: customizationController.propertyConfigs
5470
5470
  });
5471
5471
  if (Array.isArray(property?.of)) {
5472
5472
  throw Error("Using array properties instead of single one in `of` in ArrayProperty");
@@ -5509,7 +5509,7 @@ function ArrayOfStorageComponentsPreview({
5509
5509
  const property = resolveArrayProperty({
5510
5510
  propertyKey,
5511
5511
  property: inputProperty,
5512
- fields: customizationController.propertyConfigs
5512
+ propertyConfigs: customizationController.propertyConfigs
5513
5513
  });
5514
5514
  if (Array.isArray(property.of)) {
5515
5515
  throw Error("Using array properties instead of single one in `of` in ArrayProperty");
@@ -5587,7 +5587,7 @@ function ArrayOfStringsPreview({
5587
5587
  const property = resolveArrayProperty({
5588
5588
  propertyKey,
5589
5589
  property: inputProperty,
5590
- fields: customizationController.propertyConfigs
5590
+ propertyConfigs: customizationController.propertyConfigs
5591
5591
  });
5592
5592
  if (Array.isArray(property.of)) {
5593
5593
  throw Error("Using array properties instead of single one in `of` in ArrayProperty");
@@ -5621,7 +5621,7 @@ function ArrayOneOfPreview({
5621
5621
  const property = resolveArrayProperty({
5622
5622
  propertyKey,
5623
5623
  property: inputProperty,
5624
- fields: customizationController.propertyConfigs
5624
+ propertyConfigs: customizationController.propertyConfigs
5625
5625
  });
5626
5626
  if (property?.dataType !== "array")
5627
5627
  throw Error("Picked wrong preview component ArrayPreview");
@@ -5871,7 +5871,7 @@ const PropertyPreview = React__default.memo(function PropertyPreview2(props) {
5871
5871
  const property = resolveProperty({
5872
5872
  propertyKey,
5873
5873
  propertyOrBuilder: inputProperty,
5874
- fields: customizationController.propertyConfigs
5874
+ propertyConfigs: customizationController.propertyConfigs
5875
5875
  });
5876
5876
  if (value === void 0 || property === null) {
5877
5877
  content = /* @__PURE__ */ jsx(EmptyValue, {});
@@ -6108,7 +6108,7 @@ function ArrayOfMapsPreview({
6108
6108
  const property = resolveArrayProperty({
6109
6109
  propertyKey,
6110
6110
  property: inputProperty,
6111
- fields: customizationController.propertyConfigs
6111
+ propertyConfigs: customizationController.propertyConfigs
6112
6112
  });
6113
6113
  if (Array.isArray(property?.of)) {
6114
6114
  throw Error("Using array properties instead of single one in `of` in ArrayProperty");
@@ -6195,7 +6195,7 @@ function EntityView({
6195
6195
  path,
6196
6196
  entityId: entity.id,
6197
6197
  values: entity.values,
6198
- fields: customizationController.propertyConfigs
6198
+ propertyConfigs: customizationController.propertyConfigs
6199
6199
  }), [collection, path, entity, customizationController.propertyConfigs]);
6200
6200
  const properties = resolvedCollection.properties;
6201
6201
  return /* @__PURE__ */ jsx("div", { className: "w-full " + className, children: /* @__PURE__ */ jsxs("div", { className: "w-full mb-4", children: [
@@ -10644,7 +10644,7 @@ function DeleteEntityDialog({
10644
10644
  const resolvedCollection = useMemo(() => resolveCollection({
10645
10645
  collection,
10646
10646
  path,
10647
- fields: customizationController.propertyConfigs
10647
+ propertyConfigs: customizationController.propertyConfigs
10648
10648
  }), [collection, path]);
10649
10649
  const handleCancel = useCallback(() => {
10650
10650
  onClose();
@@ -10803,7 +10803,7 @@ function getRecentIds(collectionId) {
10803
10803
  return JSON.parse(stored);
10804
10804
  }
10805
10805
  const editEntityAction = {
10806
- icon: /* @__PURE__ */ jsx(KeyboardTabIcon, {}),
10806
+ icon: /* @__PURE__ */ jsx(EditIcon, {}),
10807
10807
  name: "Edit",
10808
10808
  collapsed: false,
10809
10809
  onClick({
@@ -10942,7 +10942,6 @@ function ReferenceSelectionTable({
10942
10942
  const analyticsController = useAnalyticsController();
10943
10943
  const customizationController = useCustomizationController();
10944
10944
  const fullPath = navigation.resolveAliasesFrom(pathInput);
10945
- console.trace("Opening reference dialog for path " + fullPath);
10946
10945
  const dataSource = useDataSource();
10947
10946
  const [entitiesDisplayedFirst, setEntitiesDisplayedFirst] = useState([]);
10948
10947
  const toggleEntitySelection = (entity) => {
@@ -11068,7 +11067,7 @@ function ReferenceSelectionTable({
11068
11067
  collection,
11069
11068
  path: fullPath,
11070
11069
  values: {},
11071
- fields: customizationController.propertyConfigs
11070
+ propertyConfigs: customizationController.propertyConfigs
11072
11071
  }), [collection, customizationController.propertyConfigs, fullPath]);
11073
11072
  const displayedColumnIds = useColumnIds(resolvedCollection, false);
11074
11073
  const tableController = useDataSourceEntityCollectionTableController({
@@ -11937,7 +11936,7 @@ function PopupFormFieldInternal({
11937
11936
  path,
11938
11937
  values: internalValue,
11939
11938
  entityId,
11940
- fields: customizationController.propertyConfigs
11939
+ propertyConfigs: customizationController.propertyConfigs
11941
11940
  }) : void 0;
11942
11941
  const windowSize = useWindowSize();
11943
11942
  const draggableRef = React__default.useRef(null);
@@ -12470,7 +12469,7 @@ const EntityCollectionView = React__default.memo(
12470
12469
  const resolvedCollection = useMemo(() => resolveCollection({
12471
12470
  collection,
12472
12471
  path: fullPath,
12473
- fields: customizationController.propertyConfigs
12472
+ propertyConfigs: customizationController.propertyConfigs
12474
12473
  }), [collection, fullPath]);
12475
12474
  const getPropertyFor = useCallback(({
12476
12475
  propertyKey,
@@ -12486,7 +12485,7 @@ const EntityCollectionView = React__default.memo(
12486
12485
  path: entity.path,
12487
12486
  values: entity.values,
12488
12487
  entityId: entity.id,
12489
- fields: customizationController.propertyConfigs
12488
+ propertyConfigs: customizationController.propertyConfigs
12490
12489
  });
12491
12490
  }, [collection.properties, customizationController.propertyConfigs, resolvedCollection.properties]);
12492
12491
  const displayedColumnIds = useColumnIds(resolvedCollection, true);
@@ -12937,15 +12936,18 @@ function EntityIdHeaderWidget({
12937
12936
  }
12938
12937
  ) });
12939
12938
  }
12940
- function PropertyConfigBadge({ propertyConfig }) {
12941
- const classes = "h-8 w-8 p-1 rounded-full shadow text-white";
12939
+ function PropertyConfigBadge({
12940
+ propertyConfig,
12941
+ disabled
12942
+ }) {
12943
+ const classes = "h-8 w-8 p-1 rounded-full shadow text-white " + (disabled ? "bg-gray-400 dark:bg-gray-600" : "");
12942
12944
  const defaultPropertyConfig = typeof propertyConfig?.property === "object" ? getDefaultFieldConfig(propertyConfig.property) : void 0;
12943
12945
  return /* @__PURE__ */ jsx(
12944
12946
  "div",
12945
12947
  {
12946
12948
  className: classes,
12947
12949
  style: {
12948
- background: propertyConfig?.color ?? defaultPropertyConfig?.color ?? "#888"
12950
+ background: !disabled ? propertyConfig?.color ?? defaultPropertyConfig?.color ?? "#888" : void 0
12949
12951
  },
12950
12952
  children: propertyConfig?.Icon ? getIconForWidget(propertyConfig, "medium") : getIconForWidget(defaultPropertyConfig, "medium")
12951
12953
  }
@@ -13267,24 +13269,22 @@ const DefaultAppBar = function DefaultAppBar2({
13267
13269
  const initial = user?.displayName ? user.displayName[0].toUpperCase() : user?.email ? user.email[0].toUpperCase() : "A";
13268
13270
  avatarComponent = /* @__PURE__ */ jsx(Avatar, { children: initial });
13269
13271
  }
13270
- return /* @__PURE__ */ jsx(
13272
+ return /* @__PURE__ */ jsxs(
13271
13273
  "div",
13272
13274
  {
13273
13275
  style,
13274
13276
  className: cls(
13275
- "w-full h-16 transition-all ease-in duration-75 fixed",
13277
+ "w-full h-16 transition-all ease-in duration-75 absolute top-0 max-w-full overflow-x-auto no-scrollbar",
13278
+ "flex flex-row gap-2 px-4 items-center",
13276
13279
  {
13277
- "pl-[17rem]": drawerOpen && largeLayout,
13278
- "pl-20": hasDrawer && !(drawerOpen && largeLayout),
13280
+ "pl-[19rem]": drawerOpen && largeLayout,
13281
+ "pl-24": hasDrawer && !(drawerOpen && largeLayout),
13279
13282
  "z-10": largeLayout,
13280
- // "w-full": !hasDrawer,
13281
- // "w-[calc(100%-64px)]": hasDrawer && !(drawerOpen && largeLayout),
13282
- // "w-[calc(100%-17rem)]": hasDrawer && (drawerOpen && largeLayout),
13283
- "duration-150": drawerOpen && largeLayout
13283
+ "duration-100": drawerOpen && largeLayout
13284
13284
  },
13285
13285
  className
13286
13286
  ),
13287
- children: /* @__PURE__ */ jsxs("div", { className: "flex flex-row gap-2 px-4 h-full items-center", children: [
13287
+ children: [
13288
13288
  navigation && /* @__PURE__ */ jsx("div", { className: "mr-8 hidden lg:block", children: /* @__PURE__ */ jsx(
13289
13289
  Link,
13290
13290
  {
@@ -13338,7 +13338,7 @@ const DefaultAppBar = function DefaultAppBar2({
13338
13338
  "Log Out"
13339
13339
  ] })
13340
13340
  ] })
13341
- ] })
13341
+ ]
13342
13342
  }
13343
13343
  );
13344
13344
  };
@@ -14180,7 +14180,6 @@ function ArrayOfReferencesFieldBinding({
14180
14180
  throw Error(`Couldn't find the corresponding collection for the path: ${ofProperty.path}`);
14181
14181
  }
14182
14182
  const onMultipleEntitiesSelected = useCallback((entities) => {
14183
- console.debug("onMultipleEntitiesSelected", entities);
14184
14183
  setValue(entities.map((e) => getReferenceFrom(e)));
14185
14184
  }, [setValue]);
14186
14185
  const referenceDialogController = useReferenceDialog(
@@ -15134,7 +15133,7 @@ function PropertyFieldBindingInternal({
15134
15133
  values: fieldProps.form.values,
15135
15134
  path: context.path,
15136
15135
  entityId: context.entityId,
15137
- fields: customizationController.propertyConfigs,
15136
+ propertyConfigs: customizationController.propertyConfigs,
15138
15137
  index
15139
15138
  });
15140
15139
  if (resolvedProperty === null || isHidden(resolvedProperty)) {
@@ -15162,7 +15161,7 @@ function PropertyFieldBindingInternal({
15162
15161
  values: fieldProps.form.values,
15163
15162
  path: context.path,
15164
15163
  entityId: context.entityId,
15165
- fields: customizationController.propertyConfigs,
15164
+ propertyConfigs: customizationController.propertyConfigs,
15166
15165
  index
15167
15166
  });
15168
15167
  Component = configProperty.Field;
@@ -16885,7 +16884,7 @@ const resolveCollection = ({
16885
16884
  values,
16886
16885
  previousValues,
16887
16886
  userConfigPersistence,
16888
- fields,
16887
+ propertyConfigs,
16889
16888
  ignoreMissingFields = false
16890
16889
  }) => {
16891
16890
  const collectionOverride = userConfigPersistence?.getCollectionConfig(path);
@@ -16901,7 +16900,7 @@ const resolveCollection = ({
16901
16900
  previousValues: usedPreviousValues,
16902
16901
  path,
16903
16902
  entityId,
16904
- fields,
16903
+ propertyConfigs,
16905
16904
  ignoreMissingFields
16906
16905
  });
16907
16906
  if (!childResolvedProperty) return {};
@@ -16983,7 +16982,7 @@ function resolveProperty({
16983
16982
  };
16984
16983
  }
16985
16984
  if (resolvedProperty.propertyConfig && !isDefaultFieldConfigId(resolvedProperty.propertyConfig)) {
16986
- const cmsFields = props.fields;
16985
+ const cmsFields = props.propertyConfigs;
16987
16986
  if (!cmsFields && !ignoreMissingFields) {
16988
16987
  throw Error(`Trying to resolve a property with key '${resolvedProperty.propertyConfig}' that inherits from a custom property config but no custom property configs were provided. Use the property 'propertyConfigs' in your app config to provide them`);
16989
16988
  }
@@ -17455,7 +17454,7 @@ function EntityEditViewInner({
17455
17454
  collection: inputCollection,
17456
17455
  path,
17457
17456
  values: entity?.values,
17458
- fields: customizationController.propertyConfigs
17457
+ propertyConfigs: customizationController.propertyConfigs
17459
17458
  }), [entity?.values, path, customizationController.propertyConfigs]);
17460
17459
  const initialStatus = copy ? "copy" : entityIdProp ? "existing" : "new";
17461
17460
  const [status, setStatus] = useState(initialStatus);
@@ -17656,7 +17655,7 @@ function EntityEditViewInner({
17656
17655
  entityId,
17657
17656
  values: formex.values,
17658
17657
  previousValues: formex.initialValues,
17659
- fields: customizationController.propertyConfigs
17658
+ propertyConfigs: customizationController.propertyConfigs
17660
17659
  });
17661
17660
  const lastSavedValues = useRef(entity?.values);
17662
17661
  const save = (values) => {
@@ -17824,7 +17823,7 @@ function EntityEditViewInner({
17824
17823
  });
17825
17824
  setEntityId(updatedId);
17826
17825
  } catch (e) {
17827
- onIdUpdateError && onIdUpdateError(e);
17826
+ onIdUpdateError?.(e);
17828
17827
  console.error(e);
17829
17828
  }
17830
17829
  setCustomIdLoading(false);
@@ -18027,7 +18026,7 @@ function EntityEditViewInner({
18027
18026
  children: pluginActions
18028
18027
  }
18029
18028
  ),
18030
- /* @__PURE__ */ jsx("div", { className: "h-full overflow-auto", children: /* @__PURE__ */ jsxs("div", { className: "pt-12 pb-16 pl-8 pr-8 md:pl-10 md:pr-10", children: [
18029
+ /* @__PURE__ */ jsx("div", { className: "h-full overflow-auto", children: /* @__PURE__ */ jsxs("div", { className: "pt-12 pb-16 pl-4 sm:px-8 md:px-10", children: [
18031
18030
  /* @__PURE__ */ jsxs(
18032
18031
  "div",
18033
18032
  {
@@ -18946,7 +18945,7 @@ function useBuildDataSource({
18946
18945
  collection,
18947
18946
  path,
18948
18947
  entityId,
18949
- fields: propertyConfigs
18948
+ propertyConfigs
18950
18949
  }) : void 0;
18951
18950
  const properties = resolvedCollection?.properties;
18952
18951
  const firestoreValues = usedDelegate.cmsToDelegateModel(
@@ -19114,7 +19113,6 @@ function FireCMS(props) {
19114
19113
  navigationController,
19115
19114
  apiKey
19116
19115
  } = props;
19117
- useLocaleConfig(locale);
19118
19116
  const dataSource = useBuildDataSource({
19119
19117
  delegate: dataSourceDelegate,
19120
19118
  propertyConfigs,
@@ -19350,7 +19348,7 @@ const Scaffold = React__default.memo(
19350
19348
  equal
19351
19349
  );
19352
19350
  const DrawerHeader = () => {
19353
- return /* @__PURE__ */ jsx("div", { className: "flex flex-col min-h-[68px]" });
19351
+ return /* @__PURE__ */ jsx("div", { className: "flex flex-col min-h-16" });
19354
19352
  };
19355
19353
  function DrawerWrapper(props) {
19356
19354
  const width = !props.displayed ? 0 : props.open ? DRAWER_WIDTH : 72;
@@ -19373,13 +19371,12 @@ function DrawerWrapper(props) {
19373
19371
  children: /* @__PURE__ */ jsx(
19374
19372
  "div",
19375
19373
  {
19376
- className: "ml-2 fixed top-2 left-3 !bg-gray-50 dark:!bg-gray-900 rounded-full w-fit z-20",
19374
+ className: "ml-2 fixed top-1 left-2 sm:top-2 sm:left-3 !bg-gray-50 dark:!bg-gray-900 rounded-full w-fit z-20",
19377
19375
  children: /* @__PURE__ */ jsx(
19378
19376
  IconButton,
19379
19377
  {
19380
19378
  color: "inherit",
19381
19379
  "aria-label": "Open menu",
19382
- className: "sticky top-2 left-3 ",
19383
19380
  onClick: () => props.setDrawerOpen(true),
19384
19381
  size: "large",
19385
19382
  children: /* @__PURE__ */ jsx(MenuIcon, {})
@@ -19419,7 +19416,7 @@ function DrawerWrapper(props) {
19419
19416
  "aria-label": "Open drawer",
19420
19417
  onClick: () => props.setDrawerOpen(true),
19421
19418
  size: "large",
19422
- className: "absolute top-2 left-5",
19419
+ className: "absolute sm:top-2 sm:left-5 top-1 left-2",
19423
19420
  children: /* @__PURE__ */ jsx(MenuIcon, {})
19424
19421
  }
19425
19422
  ),