tinacms 3.7.1 → 3.7.2

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.js CHANGED
@@ -34773,6 +34773,13 @@ const CollectionListPageSearchEvent = "collection-list-page-search";
34773
34773
  const CloudConfigNavComponentClickedEvent = "cloud-config-nav-component-clicked";
34774
34774
  const SlashCommandOpenedEvent = "slash-command-opened";
34775
34775
  const SlashCommandUsedEvent = "slash-command-used";
34776
+ const MediaUsageDashboardOpenedEvent = "media-dashboard-opened";
34777
+ const MediaUsageDashboardRefreshedEvent = "media-dashboard-refreshed";
34778
+ const MediaUsageDashboardTypeFilterEvent = "media-dashboard-type-filter-changed";
34779
+ const MediaUsageDashboardUsageFilterChangedEvent = "media-dashboard-usage-filter-changed";
34780
+ const MediaUsageDashboardRowExpandedEvent = "media-dashboard-row-expanded";
34781
+ const MediaUsageDashboardPreviewOpenedEvent = "media-dashboard-preview-opened";
34782
+ const MediaUsageDashboardDocumentLinkClickedEvent = "media-dashboard-document-link-clicked";
34776
34783
  let posthogClient = null;
34777
34784
  let isInitialized = false;
34778
34785
  let initializationPromise = null;
@@ -46047,7 +46054,7 @@ function ListMediaItem({ item, onClick, active }) {
46047
46054
  return /* @__PURE__ */ React__default.createElement(
46048
46055
  "li",
46049
46056
  {
46050
- className: `group relative flex shrink-0 items-center transition duration-150 ease-out cursor-pointer border-b border-gray-150 ${active ? "bg-gradient-to-r from-white to-gray-50/50 text-blue-500 hover:bg-gray-50" : "bg-white hover:bg-gray-50/50 hover:text-blue-500"}`,
46057
+ className: `group relative flex shrink-0 items-center transition duration-150 ease-out cursor-pointer border-b border-gray-150 ${active ? "bg-gradient-to-r from-white to-gray-50/50 text-tina-orange hover:bg-gray-50" : "bg-white hover:bg-gray-50/50 hover:text-tina-orange"}`,
46051
46058
  onClick: () => {
46052
46059
  if (!active) {
46053
46060
  onClick(item);
@@ -46065,7 +46072,12 @@ function ListMediaItem({ item, onClick, active }) {
46065
46072
  src: thumbnail,
46066
46073
  alt: item.filename
46067
46074
  }
46068
- ) : /* @__PURE__ */ React__default.createElement(FileIcon, { className: "w-1/2 h-full fill-gray-300" })),
46075
+ ) : /* @__PURE__ */ React__default.createElement(
46076
+ FileIcon,
46077
+ {
46078
+ className: `w-1/2 h-full ${item.type === "dir" ? "fill-tina-orange" : "fill-gray-300"}`
46079
+ }
46080
+ )),
46069
46081
  /* @__PURE__ */ React__default.createElement(
46070
46082
  "span",
46071
46083
  {
@@ -46088,9 +46100,10 @@ function GridMediaItem({ item, active, onClick }) {
46088
46100
  "button",
46089
46101
  {
46090
46102
  className: cn(
46091
- "relative flex flex-col items-center justify-center w-full",
46103
+ "relative flex flex-col items-center justify-center w-full outline-none",
46092
46104
  {
46093
46105
  "shadow hover:shadow-md hover:scale-103 hover:border-gray-150": !active,
46106
+ "ring-2 ring-tina-orange": active,
46094
46107
  "cursor-pointer": item.type === "dir"
46095
46108
  }
46096
46109
  ),
@@ -46107,7 +46120,7 @@ function GridMediaItem({ item, active, onClick }) {
46107
46120
  {
46108
46121
  className: cn(
46109
46122
  "absolute bottom-0 left-0 w-full text-xs text-white px-2 py-1 truncate z-10",
46110
- active ? "bg-blue-500/60" : "bg-black/60"
46123
+ active ? "bg-tina-orange/60" : "bg-black/60"
46111
46124
  ),
46112
46125
  style: { pointerEvents: "none" }
46113
46126
  },
@@ -46118,14 +46131,19 @@ function GridMediaItem({ item, active, onClick }) {
46118
46131
  "img",
46119
46132
  {
46120
46133
  className: cn(
46121
- "block overflow-hidden object-center object-contain max-w-full max-h-[16rem] m-auto shadow",
46122
- { "border border-blue-500": active }
46134
+ "block overflow-hidden object-center object-contain max-w-full max-h-[16rem] m-auto shadow"
46123
46135
  ),
46124
46136
  style: checkerboardStyle,
46125
46137
  src: thumbnail,
46126
46138
  alt: item.filename
46127
46139
  }
46128
- )) : /* @__PURE__ */ React__default.createElement("div", { className: "p-4 w-full flex flex-col gap-4 items-center justify-center" }, /* @__PURE__ */ React__default.createElement(FileIcon, { className: "w-[40%] h-auto fill-gray-300", size: 40 })))
46140
+ )) : /* @__PURE__ */ React__default.createElement("div", { className: "p-4 w-full flex flex-col gap-4 items-center justify-center" }, /* @__PURE__ */ React__default.createElement(
46141
+ FileIcon,
46142
+ {
46143
+ className: `w-[40%] h-auto ${item.type === "dir" ? "fill-tina-orange" : "fill-gray-300"}`,
46144
+ size: 40
46145
+ }
46146
+ )))
46129
46147
  ));
46130
46148
  }
46131
46149
  const DeleteModal$1 = ({
@@ -46530,7 +46548,7 @@ function MediaPicker({
46530
46548
  className: "whitespace-nowrap"
46531
46549
  },
46532
46550
  "New Folder",
46533
- /* @__PURE__ */ React__default.createElement(BiFolder, { className: "w-6 h-full ml-2 opacity-70 text-blue-500" })
46551
+ /* @__PURE__ */ React__default.createElement(BiFolder, { className: "w-6 h-full ml-2 opacity-70 text-tina-orange" })
46534
46552
  ), /* @__PURE__ */ React__default.createElement(UploadButton, { onClick, uploading }))), /* @__PURE__ */ React__default.createElement("div", { className: "flex h-full overflow-hidden bg-white" }, /* @__PURE__ */ React__default.createElement("div", { className: "flex w-full flex-col h-full @container" }, /* @__PURE__ */ React__default.createElement(
46535
46553
  "ul",
46536
46554
  {
@@ -47207,6 +47225,9 @@ const MediaLightbox = ({
47207
47225
  const usageCount = item.usedIn.length;
47208
47226
  const mediaSrc = item.media.src;
47209
47227
  const directory = item.media.directory || "/";
47228
+ useEffect(() => {
47229
+ captureEvent(MediaUsageDashboardPreviewOpenedEvent);
47230
+ }, []);
47210
47231
  return /* @__PURE__ */ React__default.createElement(Dialog, { open: true, onOpenChange: (isOpen) => !isOpen && onClose() }, /* @__PURE__ */ React__default.createElement(DialogContent, { className: "w-auto max-w-[95vw] border border-gray-200 bg-white px-4 pt-12 pb-4 shadow-xl sm:max-w-fit" }, /* @__PURE__ */ React__default.createElement(DialogTitle, { className: "sr-only" }, "Preview: ", item.media.filename), /* @__PURE__ */ React__default.createElement(DialogDescription, { className: "sr-only" }, usageCount > 0 ? `Used in ${usageCount} ${usageCount === 1 ? "document" : "documents"}` : "Unused media file"), /* @__PURE__ */ React__default.createElement("div", { className: "mx-auto w-fit max-w-full rounded-lg border border-gray-200 bg-gray-50 p-2 sm:p-3" }, item.type === "video" ? /* @__PURE__ */ React__default.createElement(
47211
47232
  VideoLightboxContent,
47212
47233
  {
@@ -47537,7 +47558,13 @@ const MediaUsageTable = ({
47537
47558
  TableRow,
47538
47559
  {
47539
47560
  style: { contentVisibility: "auto" },
47540
- onClick: getUsageCount(row.original) > 0 ? row.getToggleExpandedHandler() : void 0,
47561
+ onClick: () => {
47562
+ getUsageCount(row.original) > 0;
47563
+ {
47564
+ row.toggleExpanded();
47565
+ captureEvent(MediaUsageDashboardRowExpandedEvent);
47566
+ }
47567
+ },
47541
47568
  className: getUsageCount(row.original) > 0 ? row.getIsExpanded() ? "cursor-pointer bg-[#FFF8F6] hover:bg-[#FFF8F6]" : "cursor-pointer" : ""
47542
47569
  },
47543
47570
  row.getVisibleCells().map((cell) => /* @__PURE__ */ React__default.createElement(
@@ -47578,7 +47605,12 @@ const MediaFilters = ({
47578
47605
  Select,
47579
47606
  {
47580
47607
  value: typeFilter,
47581
- onValueChange: (value) => setTypeFilter(value)
47608
+ onValueChange: (value) => {
47609
+ setTypeFilter(value);
47610
+ captureEvent(MediaUsageDashboardTypeFilterEvent, {
47611
+ type: value
47612
+ });
47613
+ }
47582
47614
  },
47583
47615
  /* @__PURE__ */ React__default.createElement(
47584
47616
  SelectTrigger,
@@ -47593,7 +47625,12 @@ const MediaFilters = ({
47593
47625
  Select,
47594
47626
  {
47595
47627
  value: usageFilter,
47596
- onValueChange: (value) => setUsageFilter(value)
47628
+ onValueChange: (value) => {
47629
+ setUsageFilter(value);
47630
+ captureEvent(MediaUsageDashboardUsageFilterChangedEvent, {
47631
+ usage: value
47632
+ });
47633
+ }
47597
47634
  },
47598
47635
  /* @__PURE__ */ React__default.createElement(
47599
47636
  SelectTrigger,
@@ -47625,7 +47662,10 @@ const ExpandedRowContent = ({
47625
47662
  "a",
47626
47663
  {
47627
47664
  href: `#/collections/${doc.collectionName}/~`,
47628
- onClick: () => onClose == null ? void 0 : onClose(),
47665
+ onClick: () => {
47666
+ onClose == null ? void 0 : onClose();
47667
+ captureEvent(MediaUsageDashboardDocumentLinkClickedEvent);
47668
+ },
47629
47669
  className: "underline hover:text-tina-orange-dark transition-colors"
47630
47670
  },
47631
47671
  doc.collectionLabel
@@ -47634,7 +47674,12 @@ const ExpandedRowContent = ({
47634
47674
  "a",
47635
47675
  {
47636
47676
  href: doc.editUrl,
47637
- onClick: () => onClose == null ? void 0 : onClose(),
47677
+ onClick: () => {
47678
+ onClose == null ? void 0 : onClose();
47679
+ captureEvent(
47680
+ MediaUsageDashboardDocumentLinkClickedEvent
47681
+ );
47682
+ },
47638
47683
  className: "underline hover:text-tina-orange-dark transition-colors break-all"
47639
47684
  },
47640
47685
  breadcrumb
@@ -47645,6 +47690,10 @@ const ExpandedRowContent = ({
47645
47690
  const MediaUsageDashboard = ({
47646
47691
  close: onClose
47647
47692
  }) => {
47693
+ useEffect(() => {
47694
+ console.log("MediaUsageDashboard");
47695
+ captureEvent(MediaUsageDashboardOpenedEvent);
47696
+ }, []);
47648
47697
  const { mediaItems, isLoading, errorOccurred, progress, refresh } = useMediaUsageScanner();
47649
47698
  const [lightboxImage, setLightboxImage] = useState(null);
47650
47699
  const stats = useMemo(() => {
@@ -47679,7 +47728,13 @@ const MediaUsageDashboard = ({
47679
47728
  Button,
47680
47729
  {
47681
47730
  variant: "outline",
47682
- onClick: refresh,
47731
+ onClick: async () => {
47732
+ await refresh();
47733
+ const payload = {
47734
+ errorOccured: errorOccurred
47735
+ };
47736
+ captureEvent(MediaUsageDashboardRefreshedEvent, payload);
47737
+ },
47683
47738
  disabled: isLoading,
47684
47739
  className: "flex items-center gap-2 shadow-sm font-medium transition-colors"
47685
47740
  },
@@ -47949,7 +48004,7 @@ const NavProvider = ({
47949
48004
  const name = "tinacms";
47950
48005
  const type = "module";
47951
48006
  const typings = "dist/index.d.ts";
47952
- const version$1 = "3.7.1";
48007
+ const version$1 = "3.7.2";
47953
48008
  const main = "dist/index.js";
47954
48009
  const module = "./dist/index.js";
47955
48010
  const exports = {
@@ -66117,6 +66172,12 @@ const CreateBranchModal = ({
66117
66172
  throw new Error("Branch creation failed.");
66118
66173
  }
66119
66174
  setCurrentBranch(result.branchName);
66175
+ if (result.warning) {
66176
+ cms.alerts.warn(
66177
+ `${result.warning} Please reconnect GitHub authoring here: ${tinaApi.gitSettingsLink}`,
66178
+ 0
66179
+ );
66180
+ }
66120
66181
  cms.alerts.success(
66121
66182
  `Branch created successfully - Pull Request at ${result.pullRequestUrl}`,
66122
66183
  0
@@ -66128,7 +66189,7 @@ const CreateBranchModal = ({
66128
66189
  close2();
66129
66190
  } catch (e3) {
66130
66191
  console.error(e3);
66131
- let errorMessage2 = "Branch operation failed, please try again. If the problem persists please contact support.";
66192
+ let errorMessage2 = "Branch operation failed. Talking to GitHub was unsuccessful, please try again. If the problem persists please contact support at https://tina.io/support 🦙";
66132
66193
  const err = e3;
66133
66194
  if (err.errorCode) {
66134
66195
  switch (err.errorCode) {
@@ -66141,6 +66202,9 @@ const CreateBranchModal = ({
66141
66202
  case EDITORIAL_WORKFLOW_ERROR.VALIDATION_FAILED:
66142
66203
  errorMessage2 = err.message || "Invalid branch name";
66143
66204
  break;
66205
+ default:
66206
+ errorMessage2 = err.message || errorMessage2;
66207
+ break;
66144
66208
  }
66145
66209
  } else if (err.message) {
66146
66210
  if (err.message.toLowerCase().includes("already exists")) {
@@ -121593,6 +121657,9 @@ mutation addPendingDocumentMutation(
121593
121657
  get appDashboardLink() {
121594
121658
  return `${this.frontendUrl}/projects/${this.clientId}`;
121595
121659
  }
121660
+ get gitSettingsLink() {
121661
+ return `${this.frontendUrl}/account/git`;
121662
+ }
121596
121663
  async checkSyncStatus({
121597
121664
  assetsSyncing
121598
121665
  }) {
@@ -121872,29 +121939,50 @@ mutation addPendingDocumentMutation(
121872
121939
  while (attempts < maxAttempts) {
121873
121940
  await new Promise((resolve) => setTimeout(resolve, pollInterval));
121874
121941
  attempts++;
121875
- const statusUrl = `${this.contentApiBase}/editorial-workflow/${this.clientId}/status/${requestId}`;
121876
- const statusResponse = await this.authProvider.fetchWithToken(statusUrl);
121877
- if (!statusResponse.ok) {
121878
- throw new Error(
121879
- `Failed to check workflow status: ${statusResponse.statusText}`
121880
- );
121881
- }
121882
- const statusResponseBody = await statusResponse.json();
121883
- if (options.onStatusUpdate) {
121884
- options.onStatusUpdate({
121885
- status: statusResponseBody.status,
121886
- message: statusResponseBody.message || `Status: ${statusResponseBody.status}`
121887
- });
121888
- }
121889
- if (statusResponse.status === 200) {
121890
- return {
121891
- branchName: statusResponseBody.branchName,
121892
- pullRequestUrl: statusResponseBody.pullRequestUrl
121893
- };
121894
- }
121895
- if (!statusResponse.ok) {
121896
- throw new Error(
121897
- statusResponseBody.message || "Editorial workflow failed"
121942
+ try {
121943
+ const statusUrl = `${this.contentApiBase}/editorial-workflow/${this.clientId}/status/${requestId}`;
121944
+ const statusResponse = await this.authProvider.fetchWithToken(statusUrl);
121945
+ const statusResponseBody = await statusResponse.json();
121946
+ if (options.onStatusUpdate) {
121947
+ options.onStatusUpdate({
121948
+ status: statusResponseBody.status,
121949
+ message: statusResponseBody.message || `Status: ${statusResponseBody.status}`
121950
+ });
121951
+ }
121952
+ if (statusResponseBody.status === EDITORIAL_WORKFLOW_STATUS.ERROR || statusResponse.status === 500) {
121953
+ if (statusResponseBody.pullRequestUrl) {
121954
+ return {
121955
+ branchName: statusResponseBody.branchName,
121956
+ pullRequestUrl: statusResponseBody.pullRequestUrl,
121957
+ warning: statusResponseBody.message
121958
+ };
121959
+ }
121960
+ const error2 = new Error(
121961
+ statusResponseBody.message || "Editorial workflow failed"
121962
+ );
121963
+ error2.errorCode = statusResponseBody.errorCode || "WORKFLOW_FAILED";
121964
+ throw error2;
121965
+ }
121966
+ if (statusResponse.status === 200) {
121967
+ return {
121968
+ branchName: statusResponseBody.branchName,
121969
+ pullRequestUrl: statusResponseBody.pullRequestUrl
121970
+ };
121971
+ }
121972
+ if (statusResponse.status !== 202) {
121973
+ const error2 = new Error(
121974
+ statusResponseBody.message || `Failed to check workflow status: ${statusResponse.statusText}`
121975
+ );
121976
+ error2.errorCode = "WORKFLOW_STATUS_FAILED";
121977
+ throw error2;
121978
+ }
121979
+ } catch (error2) {
121980
+ if (error2.errorCode) {
121981
+ throw error2;
121982
+ }
121983
+ console.warn(
121984
+ `Editorial workflow status poll failed (attempt ${attempts}/${maxAttempts}), retrying...`,
121985
+ error2
121898
121986
  );
121899
121987
  }
121900
121988
  }
@@ -122121,7 +122209,7 @@ const AuthWallInner = ({
122121
122209
  const loginScreen = client.authProvider.getLoginScreen();
122122
122210
  if (loginStrategy === "LoginScreen" && !loginScreen) {
122123
122211
  throw new Error(
122124
- "LoginScreen is set as the login strategy but no login screen component was provided"
122212
+ "LoginScreen is set as the login strategy but no login screen component was provided."
122125
122213
  );
122126
122214
  }
122127
122215
  const [activeModal, setActiveModal] = useState(null);
@@ -122148,7 +122236,7 @@ const AuthWallInner = ({
122148
122236
  } else {
122149
122237
  setErrorMessage({
122150
122238
  title: "Access Denied:",
122151
- message: "Not Authorized To Edit"
122239
+ message: "Not authorized to edit."
122152
122240
  });
122153
122241
  setActiveModal("error");
122154
122242
  }
@@ -122207,16 +122295,16 @@ const AuthWallInner = ({
122207
122295
  });
122208
122296
  }
122209
122297
  };
122210
- let modalTitle = "Let’s get you editing with TinaCMS...";
122298
+ let modalTitle = "Let’s get you editing with TinaCMS!";
122211
122299
  if (activeModal === "authenticate" && loginStrategy === "Redirect" && !isTinaCloud) {
122212
122300
  modalTitle = "Enter into edit mode";
122213
122301
  } else if (activeModal === "authenticate" && loginStrategy === "UsernamePassword") {
122214
- modalTitle = "Let’s get you editing with TinaCMS...";
122302
+ modalTitle = "Let’s get you editing with TinaCMS!";
122215
122303
  } else if (activeModal === "error") {
122216
122304
  if (loginStrategy === "Redirect" && !isTinaCloud) {
122217
122305
  modalTitle = "Enter into edit mode";
122218
122306
  } else if (loginStrategy === "UsernamePassword") {
122219
- modalTitle = "Let’s get you editing with TinaCMS...";
122307
+ modalTitle = "Let’s get you editing with TinaCMS!";
122220
122308
  }
122221
122309
  }
122222
122310
  return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, activeModal === "authenticate" && loginStrategy === "Redirect" && /* @__PURE__ */ React__default.createElement(
@@ -122230,7 +122318,7 @@ const AuthWallInner = ({
122230
122318
  alt: "Tina the Llama playing a large orange key like a guitar.",
122231
122319
  width: 816,
122232
122320
  height: 816,
122233
- style: { maxWidth: "100%", margin: "0 auto", display: "block" }
122321
+ style: { width: "16rem", margin: "0 auto", display: "block" }
122234
122322
  }
122235
122323
  ) : "When you save, changes will be saved to the local filesystem.",
122236
122324
  close,
@@ -9,6 +9,7 @@ interface TinaSearchConfig {
9
9
  fuzzyOptions?: FuzzySearchOptions;
10
10
  }
11
11
  import gql from 'graphql-tag';
12
+ import { EditorialWorkflowResult } from '../toolkit/form-builder/editorial-workflow-constants';
12
13
  import { TinaCloudProject } from './types';
13
14
  export * from './authProvider';
14
15
  export type OnLoginFunc = (args: {
@@ -86,6 +87,7 @@ export declare class Client {
86
87
  variables: object;
87
88
  }): Promise<ReturnType>;
88
89
  get appDashboardLink(): string;
90
+ get gitSettingsLink(): string;
89
91
  checkSyncStatus({ assetsSyncing, }: {
90
92
  assetsSyncing: string[];
91
93
  }): Promise<{
@@ -165,7 +167,7 @@ export declare class Client {
165
167
  status: string;
166
168
  message?: string;
167
169
  }) => void;
168
- }): Promise<any>;
170
+ }): Promise<EditorialWorkflowResult>;
169
171
  }
170
172
  export declare const DEFAULT_LOCAL_TINA_GQL_SERVER_URL = "http://localhost:4001/graphql";
171
173
  export declare class LocalClient extends Client {
@@ -72,3 +72,23 @@ export declare const SlashCommandUsedEvent: string;
72
72
  export type SlashCommandUsedPayload = {
73
73
  command: string;
74
74
  };
75
+ export declare const MediaUsageDashboardOpenedEvent: string;
76
+ export type MediaUsageDashboardOpenedPayload = Record<string, never>;
77
+ export declare const MediaUsageDashboardRefreshedEvent: string;
78
+ export type MediaUsageDashboardRefreshedPayload = {
79
+ errorOccured?: boolean;
80
+ };
81
+ export declare const MediaUsageDashboardTypeFilterEvent: string;
82
+ export type MediaUsageDashboardTypeFilterPayload = {
83
+ type: 'all' | 'image' | 'video' | 'other';
84
+ };
85
+ export declare const MediaUsageDashboardUsageFilterChangedEvent: string;
86
+ export type MediaUsageDashboardUsageFilterChangedPayload = {
87
+ usage: 'all' | 'used' | 'unused';
88
+ };
89
+ export declare const MediaUsageDashboardRowExpandedEvent: string;
90
+ export type MediaUsageDashboardRowExpandedEvent = Record<string, never>;
91
+ export declare const MediaUsageDashboardPreviewOpenedEvent: string;
92
+ export type MediaUsageDashboardPreviewOpenedPayload = Record<string, never>;
93
+ export declare const MediaUsageDashboardDocumentLinkClickedEvent: string;
94
+ export type MediaUsageDashboardDocumentLinkClickedEvent = Record<string, never>;
@@ -1,4 +1,5 @@
1
- export type ToolbarOverrideType = 'heading' | 'link' | 'image' | 'quote' | 'ul' | 'ol' | 'code' | 'codeBlock' | 'bold' | 'italic' | 'strikethrough' | 'highlight' | 'mermaid' | 'raw' | 'embed' | 'table' | 'hr';
1
+ import type { ToolbarOverrideType } from '@tinacms/schema-tools';
2
+ export type { ToolbarOverrideType };
2
3
  export declare const STANDARD_ICON_WIDTH = 32;
3
4
  export declare const HEADING_ICON_WITH_TEXT = 127;
4
5
  export declare const HEADING_ICON_ONLY = 58;
@@ -32,3 +32,11 @@ export type EditorialWorkflowErrorDetails = Error & {
32
32
  errorCode?: string;
33
33
  conflictingBranch?: string;
34
34
  };
35
+ /**
36
+ * Result from a completed editorial workflow operation
37
+ */
38
+ export interface EditorialWorkflowResult {
39
+ branchName: string;
40
+ pullRequestUrl: string;
41
+ warning?: string;
42
+ }
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "tinacms",
3
3
  "type": "module",
4
4
  "typings": "dist/index.d.ts",
5
- "version": "3.7.1",
5
+ "version": "3.7.2",
6
6
  "main": "dist/index.js",
7
7
  "module": "./dist/index.js",
8
8
  "exports": {
@@ -114,9 +114,9 @@
114
114
  "webfontloader": "1.6.28",
115
115
  "yup": "^1.6.1",
116
116
  "zod": "^3.24.2",
117
- "@tinacms/mdx": "2.1.0",
118
- "@tinacms/schema-tools": "2.7.0",
119
- "@tinacms/search": "1.2.8"
117
+ "@tinacms/mdx": "2.1.1",
118
+ "@tinacms/schema-tools": "2.7.1",
119
+ "@tinacms/search": "1.2.9"
120
120
  },
121
121
  "devDependencies": {
122
122
  "@graphql-tools/utils": "^10.8.1",