tinacms 0.69.13 → 0.69.15

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.d.ts CHANGED
@@ -26,12 +26,12 @@ export type { TinaCMSProviderDefaultProps };
26
26
  export default TinaCMSProvider2;
27
27
  import { TinaCMS } from '@tinacms/toolkit';
28
28
  import { formifyCallback } from './hooks/use-graphql-forms';
29
- import type { TinaCloudSchema as TinaCloudSchemaBase, TinaCloudCollection as TinaCloudCollectionBase, TinaCloudTemplateBase as TinaTemplate, TinaFieldBase, TinaCMSConfig } from '@tinacms/schema-tools';
29
+ import type { TinaCloudSchema as TinaCloudSchemaBase, TinaCloudCollection as TinaCloudCollectionBase, TinaCloudTemplateBase, TinaTemplate, TinaFieldBase, TinaCMSConfig } from '@tinacms/schema-tools';
30
30
  export declare type TinaCloudSchema = TinaCloudSchemaBase<false>;
31
31
  export declare type TinaCloudCollection = TinaCloudCollectionBase<false>;
32
32
  export declare type TinaCollection = TinaCloudCollectionBase<false>;
33
33
  export declare type TinaField = TinaFieldBase;
34
- export type { TinaTemplate };
34
+ export type { TinaTemplate, TinaCloudTemplateBase };
35
35
  export declare const defineSchema: (config: TinaCloudSchema) => TinaCloudSchema;
36
36
  export declare const defineConfig: (config: Omit<TinaCMSProviderDefaultProps, 'children'>) => Omit<TinaCMSProviderDefaultProps, "children">;
37
37
  export declare const defineStaticConfig: (config: TinaCMSConfig<(cms: TinaCMS) => TinaCMS, formifyCallback, import("./hooks/use-content-creator").DocumentCreatorArgs, undefined>) => TinaCMSConfig<(cms: TinaCMS) => TinaCMS, formifyCallback, import("./hooks/use-content-creator").DocumentCreatorArgs, undefined>;
package/dist/index.es.js CHANGED
@@ -1,4 +1,4 @@
1
- import { useCMS, Form, GlobalFormPlugin, EventBus, Modal, ModalPopup, ModalHeader, ModalBody, ModalActions, Button, LoadingDots, useLocalStorage, TinaCMS, BranchSwitcherPlugin, BranchDataProvider, TinaProvider, TinaMediaStore, DummyMediaStore, Nav, LocalWarning, Select, OverflowMenu, CursorPaginator, PopupModal, FormStatus, FormBuilder } from "@tinacms/toolkit";
1
+ import { useCMS, Form, GlobalFormPlugin, EventBus, Modal, ModalPopup, ModalHeader, ModalBody, ModalActions, Button, LoadingDots, useLocalStorage, TinaCMS, BranchSwitcherPlugin, BranchDataProvider, TinaProvider, TinaMediaStore, DummyMediaStore, Nav, LocalWarning, Select, OverflowMenu, CursorPaginator, PopupModal, wrapFieldsWithMeta, FormStatus, FormBuilder } from "@tinacms/toolkit";
2
2
  export * from "@tinacms/toolkit";
3
3
  import * as G from "graphql";
4
4
  import { TypeInfo, visit, visitWithTypeInfo, getNamedType, GraphQLObjectType, isLeafType, GraphQLUnionType, isScalarType as isScalarType$1, getIntrospectionQuery, buildClientSchema, print, parse } from "graphql";
@@ -3114,6 +3114,9 @@ var styles = `.tina-tailwind {
3114
3114
  --tw-backdrop-saturate: ;
3115
3115
  --tw-backdrop-sepia: ;
3116
3116
  }
3117
+ .tina-tailwind .pointer-events-none {
3118
+ pointer-events: none;
3119
+ }
3117
3120
  .tina-tailwind .pointer-events-auto {
3118
3121
  pointer-events: auto;
3119
3122
  }
@@ -3153,6 +3156,12 @@ var styles = `.tina-tailwind {
3153
3156
  .tina-tailwind .top-4 {
3154
3157
  top: 16px;
3155
3158
  }
3159
+ .tina-tailwind .top-1\\/2 {
3160
+ top: 50%;
3161
+ }
3162
+ .tina-tailwind .left-2 {
3163
+ left: 8px;
3164
+ }
3156
3165
  .tina-tailwind .z-overlay {
3157
3166
  z-index: 10600;
3158
3167
  }
@@ -3229,12 +3238,12 @@ var styles = `.tina-tailwind {
3229
3238
  .tina-tailwind .h-7 {
3230
3239
  height: 28px;
3231
3240
  }
3232
- .tina-tailwind .h-10 {
3233
- height: 40px;
3234
- }
3235
3241
  .tina-tailwind .h-5 {
3236
3242
  height: 20px;
3237
3243
  }
3244
+ .tina-tailwind .h-10 {
3245
+ height: 40px;
3246
+ }
3238
3247
  .tina-tailwind .h-12 {
3239
3248
  height: 48px;
3240
3249
  }
@@ -3298,6 +3307,10 @@ var styles = `.tina-tailwind {
3298
3307
  --tw-translate-x: 100%;
3299
3308
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
3300
3309
  }
3310
+ .tina-tailwind .-translate-y-1\\/2 {
3311
+ --tw-translate-y: -50%;
3312
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
3313
+ }
3301
3314
  .tina-tailwind .scale-95 {
3302
3315
  --tw-scale-x: .95;
3303
3316
  --tw-scale-y: .95;
@@ -3365,6 +3378,11 @@ var styles = `.tina-tailwind {
3365
3378
  .tina-tailwind .overflow-y-auto {
3366
3379
  overflow-y: auto;
3367
3380
  }
3381
+ .tina-tailwind .truncate {
3382
+ overflow: hidden;
3383
+ text-overflow: ellipsis;
3384
+ white-space: nowrap;
3385
+ }
3368
3386
  .tina-tailwind .whitespace-normal {
3369
3387
  white-space: normal;
3370
3388
  }
@@ -3377,12 +3395,12 @@ var styles = `.tina-tailwind {
3377
3395
  .tina-tailwind .rounded {
3378
3396
  border-radius: 4px;
3379
3397
  }
3380
- .tina-tailwind .rounded-full {
3381
- border-radius: 9999px;
3382
- }
3383
3398
  .tina-tailwind .rounded-md {
3384
3399
  border-radius: 6px;
3385
3400
  }
3401
+ .tina-tailwind .rounded-full {
3402
+ border-radius: 9999px;
3403
+ }
3386
3404
  .tina-tailwind .rounded-r-md {
3387
3405
  border-top-right-radius: 6px;
3388
3406
  border-bottom-right-radius: 6px;
@@ -3463,6 +3481,10 @@ var styles = `.tina-tailwind {
3463
3481
  padding-top: 40px;
3464
3482
  padding-bottom: 40px;
3465
3483
  }
3484
+ .tina-tailwind .py-2 {
3485
+ padding-top: 8px;
3486
+ padding-bottom: 8px;
3487
+ }
3466
3488
  .tina-tailwind .px-20 {
3467
3489
  padding-left: 80px;
3468
3490
  padding-right: 80px;
@@ -3475,10 +3497,6 @@ var styles = `.tina-tailwind {
3475
3497
  padding-top: 4px;
3476
3498
  padding-bottom: 4px;
3477
3499
  }
3478
- .tina-tailwind .py-2 {
3479
- padding-top: 8px;
3480
- padding-bottom: 8px;
3481
- }
3482
3500
  .tina-tailwind .py-5 {
3483
3501
  padding-top: 20px;
3484
3502
  padding-bottom: 20px;
@@ -3492,6 +3510,15 @@ var styles = `.tina-tailwind {
3492
3510
  .tina-tailwind .pt-16 {
3493
3511
  padding-top: 64px;
3494
3512
  }
3513
+ .tina-tailwind .pr-3 {
3514
+ padding-right: 12px;
3515
+ }
3516
+ .tina-tailwind .pl-8 {
3517
+ padding-left: 32px;
3518
+ }
3519
+ .tina-tailwind .pl-3 {
3520
+ padding-left: 12px;
3521
+ }
3495
3522
  .tina-tailwind .pt-3 {
3496
3523
  padding-top: 12px;
3497
3524
  }
@@ -3571,10 +3598,18 @@ var styles = `.tina-tailwind {
3571
3598
  --tw-text-opacity: 1;
3572
3599
  color: rgb(113 108 127 / var(--tw-text-opacity));
3573
3600
  }
3601
+ .tina-tailwind .text-gray-300 {
3602
+ --tw-text-opacity: 1;
3603
+ color: rgb(178 173 190 / var(--tw-text-opacity));
3604
+ }
3574
3605
  .tina-tailwind .text-gray-400 {
3575
3606
  --tw-text-opacity: 1;
3576
3607
  color: rgb(145 140 158 / var(--tw-text-opacity));
3577
3608
  }
3609
+ .tina-tailwind .text-blue-500 {
3610
+ --tw-text-opacity: 1;
3611
+ color: rgb(0 132 255 / var(--tw-text-opacity));
3612
+ }
3578
3613
  .tina-tailwind .text-current {
3579
3614
  color: currentColor;
3580
3615
  }
@@ -3609,6 +3644,9 @@ var styles = `.tina-tailwind {
3609
3644
  .tina-tailwind .opacity-90 {
3610
3645
  opacity: .9;
3611
3646
  }
3647
+ .tina-tailwind .opacity-20 {
3648
+ opacity: .2;
3649
+ }
3612
3650
  .tina-tailwind .opacity-50 {
3613
3651
  opacity: .5;
3614
3652
  }
@@ -3625,6 +3663,11 @@ var styles = `.tina-tailwind {
3625
3663
  --tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);
3626
3664
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
3627
3665
  }
3666
+ .tina-tailwind .shadow-inner {
3667
+ --tw-shadow: inset 0 2px 4px 0 rgb(0 0 0 / 0.05);
3668
+ --tw-shadow-colored: inset 0 2px 4px 0 var(--tw-shadow-color);
3669
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
3670
+ }
3628
3671
  .tina-tailwind .shadow {
3629
3672
  --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
3630
3673
  --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);
@@ -3714,6 +3757,14 @@ var styles = `.tina-tailwind {
3714
3757
  .tina-tailwind .hover\\:opacity-60:hover {
3715
3758
  opacity: .6;
3716
3759
  }
3760
+ .tina-tailwind .focus\\:border-blue-500:focus {
3761
+ --tw-border-opacity: 1;
3762
+ border-color: rgb(0 132 255 / var(--tw-border-opacity));
3763
+ }
3764
+ .tina-tailwind .focus\\:text-gray-900:focus {
3765
+ --tw-text-opacity: 1;
3766
+ color: rgb(37 35 54 / var(--tw-text-opacity));
3767
+ }
3717
3768
  .tina-tailwind .focus\\:text-blue-400:focus {
3718
3769
  --tw-text-opacity: 1;
3719
3770
  color: rgb(34 150 254 / var(--tw-text-opacity));
@@ -3739,6 +3790,30 @@ var styles = `.tina-tailwind {
3739
3790
  --tw-ring-opacity: 1;
3740
3791
  --tw-ring-color: rgb(0 132 255 / var(--tw-ring-opacity));
3741
3792
  }
3793
+ .tina-tailwind .group:hover .group-hover\\:border-gray-200 {
3794
+ --tw-border-opacity: 1;
3795
+ border-color: rgb(225 221 236 / var(--tw-border-opacity));
3796
+ }
3797
+ .tina-tailwind .group:hover .group-hover\\:bg-white {
3798
+ --tw-bg-opacity: 1;
3799
+ background-color: rgb(255 255 255 / var(--tw-bg-opacity));
3800
+ }
3801
+ .tina-tailwind .group:hover .group-hover\\:text-gray-600 {
3802
+ --tw-text-opacity: 1;
3803
+ color: rgb(86 81 101 / var(--tw-text-opacity));
3804
+ }
3805
+ .tina-tailwind .group:hover .group-hover\\:opacity-0 {
3806
+ opacity: 0;
3807
+ }
3808
+ .tina-tailwind .group:hover .group-hover\\:opacity-80 {
3809
+ opacity: .8;
3810
+ }
3811
+ .tina-tailwind .group:active .group-active\\:opacity-0 {
3812
+ opacity: 0;
3813
+ }
3814
+ .tina-tailwind .group:active .group-active\\:opacity-80 {
3815
+ opacity: .8;
3816
+ }
3742
3817
  `;
3743
3818
  class ContentCreatorPlugin {
3744
3819
  constructor(options) {
@@ -5115,6 +5190,12 @@ const DeleteModal = ({ close: close2, deleteFunc, filename }) => {
5115
5190
  function HiChevronRight(props) {
5116
5191
  return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 20 20", "fill": "currentColor" }, "child": [{ "tag": "path", "attr": { "fillRule": "evenodd", "d": "M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z", "clipRule": "evenodd" } }] })(props);
5117
5192
  }
5193
+ function FaLock(props) {
5194
+ return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 448 512" }, "child": [{ "tag": "path", "attr": { "d": "M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z" } }] })(props);
5195
+ }
5196
+ function FaUnlock(props) {
5197
+ return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 448 512" }, "child": [{ "tag": "path", "attr": { "d": "M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z" } }] })(props);
5198
+ }
5118
5199
  const createDocument = async (cms, collection, template, mutationInfo, values) => {
5119
5200
  const api = new TinaAdminApi(cms);
5120
5201
  const { filename, ...leftover } = values;
@@ -5156,6 +5237,24 @@ const CollectionCreatePage = () => {
5156
5237
  });
5157
5238
  }));
5158
5239
  };
5240
+ const FilenameInput = (props) => {
5241
+ const [filenameTouched, setFilenameTouched] = React.useState(false);
5242
+ return /* @__PURE__ */ React.createElement("div", {
5243
+ className: "group relative block cursor-pointer",
5244
+ onClick: () => {
5245
+ setFilenameTouched(true);
5246
+ }
5247
+ }, /* @__PURE__ */ React.createElement("input", {
5248
+ type: "text",
5249
+ className: `shadow-inner focus:shadow-outline focus:border-blue-500 focus:outline-none block text-base pr-3 truncate py-2 w-full border transition-all ease-out duration-150 focus:text-gray-900 rounded-md ${props.readonly || !filenameTouched ? "bg-gray-50 text-gray-300 border-gray-150 pointer-events-none pl-8 group-hover:bg-white group-hover:text-gray-600 group-hover:border-gray-200" : "bg-white text-gray-600 border-gray-200 pl-3"}`,
5250
+ ...props,
5251
+ disabled: props.readonly || !filenameTouched
5252
+ }), /* @__PURE__ */ React.createElement(FaLock, {
5253
+ className: `text-gray-400 absolute top-1/2 left-2 -translate-y-1/2 pointer-events-none h-5 w-auto transition-opacity duration-150 ease-out ${!filenameTouched && !props.readonly ? "opacity-20 group-hover:opacity-0 group-active:opacity-0" : "opacity-0"}`
5254
+ }), /* @__PURE__ */ React.createElement(FaUnlock, {
5255
+ className: `text-blue-500 absolute top-1/2 left-2 -translate-y-1/2 pointer-events-none h-5 w-auto transition-opacity duration-150 ease-out ${!filenameTouched && !props.readonly ? "opacity-0 group-hover:opacity-80 group-active:opacity-80" : "opacity-0"}`
5256
+ }));
5257
+ };
5159
5258
  const RenderForm$1 = ({ cms, collection, templateName, mutationInfo }) => {
5160
5259
  var _a, _b, _c, _d, _e;
5161
5260
  const navigate = useNavigate();
@@ -5172,9 +5271,9 @@ const RenderForm$1 = ({ cms, collection, templateName, mutationInfo }) => {
5172
5271
  schema,
5173
5272
  template
5174
5273
  });
5175
- let slugFunction = (_b = (_a = schemaCollection == null ? void 0 : schemaCollection.ui) == null ? void 0 : _a.filename) == null ? void 0 : _b.slugify;
5274
+ let slugFunction = (_b = (_a = template == null ? void 0 : template.ui) == null ? void 0 : _a.filename) == null ? void 0 : _b.slugify;
5176
5275
  if (!slugFunction) {
5177
- const titleField = (_c = schemaCollection.fields.find((x) => x.required && x.type === "string" && x.isTitle)) == null ? void 0 : _c.name;
5276
+ const titleField = (_c = template == null ? void 0 : template.fields.find((x) => x.required && x.type === "string" && x.isTitle)) == null ? void 0 : _c.name;
5178
5277
  if (titleField) {
5179
5278
  slugFunction = (values) => {
5180
5279
  var _a2;
@@ -5197,11 +5296,18 @@ const RenderForm$1 = ({ cms, collection, templateName, mutationInfo }) => {
5197
5296
  id: "create-form",
5198
5297
  label: "form",
5199
5298
  fields: [
5299
+ ...formInfo.fields,
5200
5300
  {
5201
5301
  name: "filename",
5202
5302
  label: "Filename",
5203
- component: "text",
5204
- disabled: (_b2 = (_a2 = schemaCollection == null ? void 0 : schemaCollection.ui) == null ? void 0 : _a2.filename) == null ? void 0 : _b2.disabled,
5303
+ component: slugFunction ? wrapFieldsWithMeta(({ field, input, meta }) => {
5304
+ var _a3, _b3;
5305
+ return /* @__PURE__ */ React.createElement(FilenameInput, {
5306
+ readonly: (_b3 = (_a3 = template == null ? void 0 : template.ui) == null ? void 0 : _a3.filename) == null ? void 0 : _b3.readonly,
5307
+ ...input
5308
+ });
5309
+ }) : "text",
5310
+ disabled: (_b2 = (_a2 = template == null ? void 0 : template.ui) == null ? void 0 : _a2.filename) == null ? void 0 : _b2.readonly,
5205
5311
  description: /* @__PURE__ */ React.createElement("span", null, "A unique filename for the content.", /* @__PURE__ */ React.createElement("br", null), "Examples: ", /* @__PURE__ */ React.createElement("code", null, "My_Document"), ", ", /* @__PURE__ */ React.createElement("code", null, "My_Document.en"), ",", " ", /* @__PURE__ */ React.createElement("code", null, "sub-folder/My_Document")),
5206
5312
  placeholder: `My_Document`,
5207
5313
  validate: (value, allValues, meta) => {
@@ -5216,8 +5322,7 @@ const RenderForm$1 = ({ cms, collection, templateName, mutationInfo }) => {
5216
5322
  return "Must begin with a-z, A-Z, 0-9, or _ and contain only a-z, A-Z, 0-9, -, _, ., or /.";
5217
5323
  }
5218
5324
  }
5219
- },
5220
- ...formInfo.fields
5325
+ }
5221
5326
  ],
5222
5327
  onSubmit: async (values) => {
5223
5328
  try {
package/dist/index.js CHANGED
@@ -3132,6 +3132,9 @@ mutation addPendingDocumentMutation(
3132
3132
  --tw-backdrop-saturate: ;
3133
3133
  --tw-backdrop-sepia: ;
3134
3134
  }
3135
+ .tina-tailwind .pointer-events-none {
3136
+ pointer-events: none;
3137
+ }
3135
3138
  .tina-tailwind .pointer-events-auto {
3136
3139
  pointer-events: auto;
3137
3140
  }
@@ -3171,6 +3174,12 @@ mutation addPendingDocumentMutation(
3171
3174
  .tina-tailwind .top-4 {
3172
3175
  top: 16px;
3173
3176
  }
3177
+ .tina-tailwind .top-1\\/2 {
3178
+ top: 50%;
3179
+ }
3180
+ .tina-tailwind .left-2 {
3181
+ left: 8px;
3182
+ }
3174
3183
  .tina-tailwind .z-overlay {
3175
3184
  z-index: 10600;
3176
3185
  }
@@ -3247,12 +3256,12 @@ mutation addPendingDocumentMutation(
3247
3256
  .tina-tailwind .h-7 {
3248
3257
  height: 28px;
3249
3258
  }
3250
- .tina-tailwind .h-10 {
3251
- height: 40px;
3252
- }
3253
3259
  .tina-tailwind .h-5 {
3254
3260
  height: 20px;
3255
3261
  }
3262
+ .tina-tailwind .h-10 {
3263
+ height: 40px;
3264
+ }
3256
3265
  .tina-tailwind .h-12 {
3257
3266
  height: 48px;
3258
3267
  }
@@ -3316,6 +3325,10 @@ mutation addPendingDocumentMutation(
3316
3325
  --tw-translate-x: 100%;
3317
3326
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
3318
3327
  }
3328
+ .tina-tailwind .-translate-y-1\\/2 {
3329
+ --tw-translate-y: -50%;
3330
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
3331
+ }
3319
3332
  .tina-tailwind .scale-95 {
3320
3333
  --tw-scale-x: .95;
3321
3334
  --tw-scale-y: .95;
@@ -3383,6 +3396,11 @@ mutation addPendingDocumentMutation(
3383
3396
  .tina-tailwind .overflow-y-auto {
3384
3397
  overflow-y: auto;
3385
3398
  }
3399
+ .tina-tailwind .truncate {
3400
+ overflow: hidden;
3401
+ text-overflow: ellipsis;
3402
+ white-space: nowrap;
3403
+ }
3386
3404
  .tina-tailwind .whitespace-normal {
3387
3405
  white-space: normal;
3388
3406
  }
@@ -3395,12 +3413,12 @@ mutation addPendingDocumentMutation(
3395
3413
  .tina-tailwind .rounded {
3396
3414
  border-radius: 4px;
3397
3415
  }
3398
- .tina-tailwind .rounded-full {
3399
- border-radius: 9999px;
3400
- }
3401
3416
  .tina-tailwind .rounded-md {
3402
3417
  border-radius: 6px;
3403
3418
  }
3419
+ .tina-tailwind .rounded-full {
3420
+ border-radius: 9999px;
3421
+ }
3404
3422
  .tina-tailwind .rounded-r-md {
3405
3423
  border-top-right-radius: 6px;
3406
3424
  border-bottom-right-radius: 6px;
@@ -3481,6 +3499,10 @@ mutation addPendingDocumentMutation(
3481
3499
  padding-top: 40px;
3482
3500
  padding-bottom: 40px;
3483
3501
  }
3502
+ .tina-tailwind .py-2 {
3503
+ padding-top: 8px;
3504
+ padding-bottom: 8px;
3505
+ }
3484
3506
  .tina-tailwind .px-20 {
3485
3507
  padding-left: 80px;
3486
3508
  padding-right: 80px;
@@ -3493,10 +3515,6 @@ mutation addPendingDocumentMutation(
3493
3515
  padding-top: 4px;
3494
3516
  padding-bottom: 4px;
3495
3517
  }
3496
- .tina-tailwind .py-2 {
3497
- padding-top: 8px;
3498
- padding-bottom: 8px;
3499
- }
3500
3518
  .tina-tailwind .py-5 {
3501
3519
  padding-top: 20px;
3502
3520
  padding-bottom: 20px;
@@ -3510,6 +3528,15 @@ mutation addPendingDocumentMutation(
3510
3528
  .tina-tailwind .pt-16 {
3511
3529
  padding-top: 64px;
3512
3530
  }
3531
+ .tina-tailwind .pr-3 {
3532
+ padding-right: 12px;
3533
+ }
3534
+ .tina-tailwind .pl-8 {
3535
+ padding-left: 32px;
3536
+ }
3537
+ .tina-tailwind .pl-3 {
3538
+ padding-left: 12px;
3539
+ }
3513
3540
  .tina-tailwind .pt-3 {
3514
3541
  padding-top: 12px;
3515
3542
  }
@@ -3589,10 +3616,18 @@ mutation addPendingDocumentMutation(
3589
3616
  --tw-text-opacity: 1;
3590
3617
  color: rgb(113 108 127 / var(--tw-text-opacity));
3591
3618
  }
3619
+ .tina-tailwind .text-gray-300 {
3620
+ --tw-text-opacity: 1;
3621
+ color: rgb(178 173 190 / var(--tw-text-opacity));
3622
+ }
3592
3623
  .tina-tailwind .text-gray-400 {
3593
3624
  --tw-text-opacity: 1;
3594
3625
  color: rgb(145 140 158 / var(--tw-text-opacity));
3595
3626
  }
3627
+ .tina-tailwind .text-blue-500 {
3628
+ --tw-text-opacity: 1;
3629
+ color: rgb(0 132 255 / var(--tw-text-opacity));
3630
+ }
3596
3631
  .tina-tailwind .text-current {
3597
3632
  color: currentColor;
3598
3633
  }
@@ -3627,6 +3662,9 @@ mutation addPendingDocumentMutation(
3627
3662
  .tina-tailwind .opacity-90 {
3628
3663
  opacity: .9;
3629
3664
  }
3665
+ .tina-tailwind .opacity-20 {
3666
+ opacity: .2;
3667
+ }
3630
3668
  .tina-tailwind .opacity-50 {
3631
3669
  opacity: .5;
3632
3670
  }
@@ -3643,6 +3681,11 @@ mutation addPendingDocumentMutation(
3643
3681
  --tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);
3644
3682
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
3645
3683
  }
3684
+ .tina-tailwind .shadow-inner {
3685
+ --tw-shadow: inset 0 2px 4px 0 rgb(0 0 0 / 0.05);
3686
+ --tw-shadow-colored: inset 0 2px 4px 0 var(--tw-shadow-color);
3687
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
3688
+ }
3646
3689
  .tina-tailwind .shadow {
3647
3690
  --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
3648
3691
  --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);
@@ -3732,6 +3775,14 @@ mutation addPendingDocumentMutation(
3732
3775
  .tina-tailwind .hover\\:opacity-60:hover {
3733
3776
  opacity: .6;
3734
3777
  }
3778
+ .tina-tailwind .focus\\:border-blue-500:focus {
3779
+ --tw-border-opacity: 1;
3780
+ border-color: rgb(0 132 255 / var(--tw-border-opacity));
3781
+ }
3782
+ .tina-tailwind .focus\\:text-gray-900:focus {
3783
+ --tw-text-opacity: 1;
3784
+ color: rgb(37 35 54 / var(--tw-text-opacity));
3785
+ }
3735
3786
  .tina-tailwind .focus\\:text-blue-400:focus {
3736
3787
  --tw-text-opacity: 1;
3737
3788
  color: rgb(34 150 254 / var(--tw-text-opacity));
@@ -3757,6 +3808,30 @@ mutation addPendingDocumentMutation(
3757
3808
  --tw-ring-opacity: 1;
3758
3809
  --tw-ring-color: rgb(0 132 255 / var(--tw-ring-opacity));
3759
3810
  }
3811
+ .tina-tailwind .group:hover .group-hover\\:border-gray-200 {
3812
+ --tw-border-opacity: 1;
3813
+ border-color: rgb(225 221 236 / var(--tw-border-opacity));
3814
+ }
3815
+ .tina-tailwind .group:hover .group-hover\\:bg-white {
3816
+ --tw-bg-opacity: 1;
3817
+ background-color: rgb(255 255 255 / var(--tw-bg-opacity));
3818
+ }
3819
+ .tina-tailwind .group:hover .group-hover\\:text-gray-600 {
3820
+ --tw-text-opacity: 1;
3821
+ color: rgb(86 81 101 / var(--tw-text-opacity));
3822
+ }
3823
+ .tina-tailwind .group:hover .group-hover\\:opacity-0 {
3824
+ opacity: 0;
3825
+ }
3826
+ .tina-tailwind .group:hover .group-hover\\:opacity-80 {
3827
+ opacity: .8;
3828
+ }
3829
+ .tina-tailwind .group:active .group-active\\:opacity-0 {
3830
+ opacity: 0;
3831
+ }
3832
+ .tina-tailwind .group:active .group-active\\:opacity-80 {
3833
+ opacity: .8;
3834
+ }
3760
3835
  `;
3761
3836
  class ContentCreatorPlugin {
3762
3837
  constructor(options) {
@@ -5133,6 +5208,12 @@ This will work when developing locally but NOT when deployed to production.
5133
5208
  function HiChevronRight(props) {
5134
5209
  return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 20 20", "fill": "currentColor" }, "child": [{ "tag": "path", "attr": { "fillRule": "evenodd", "d": "M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z", "clipRule": "evenodd" } }] })(props);
5135
5210
  }
5211
+ function FaLock(props) {
5212
+ return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 448 512" }, "child": [{ "tag": "path", "attr": { "d": "M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z" } }] })(props);
5213
+ }
5214
+ function FaUnlock(props) {
5215
+ return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 448 512" }, "child": [{ "tag": "path", "attr": { "d": "M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z" } }] })(props);
5216
+ }
5136
5217
  const createDocument = async (cms, collection, template, mutationInfo, values) => {
5137
5218
  const api = new TinaAdminApi(cms);
5138
5219
  const { filename, ...leftover } = values;
@@ -5174,6 +5255,24 @@ This will work when developing locally but NOT when deployed to production.
5174
5255
  });
5175
5256
  }));
5176
5257
  };
5258
+ const FilenameInput = (props) => {
5259
+ const [filenameTouched, setFilenameTouched] = React__default["default"].useState(false);
5260
+ return /* @__PURE__ */ React__default["default"].createElement("div", {
5261
+ className: "group relative block cursor-pointer",
5262
+ onClick: () => {
5263
+ setFilenameTouched(true);
5264
+ }
5265
+ }, /* @__PURE__ */ React__default["default"].createElement("input", {
5266
+ type: "text",
5267
+ className: `shadow-inner focus:shadow-outline focus:border-blue-500 focus:outline-none block text-base pr-3 truncate py-2 w-full border transition-all ease-out duration-150 focus:text-gray-900 rounded-md ${props.readonly || !filenameTouched ? "bg-gray-50 text-gray-300 border-gray-150 pointer-events-none pl-8 group-hover:bg-white group-hover:text-gray-600 group-hover:border-gray-200" : "bg-white text-gray-600 border-gray-200 pl-3"}`,
5268
+ ...props,
5269
+ disabled: props.readonly || !filenameTouched
5270
+ }), /* @__PURE__ */ React__default["default"].createElement(FaLock, {
5271
+ className: `text-gray-400 absolute top-1/2 left-2 -translate-y-1/2 pointer-events-none h-5 w-auto transition-opacity duration-150 ease-out ${!filenameTouched && !props.readonly ? "opacity-20 group-hover:opacity-0 group-active:opacity-0" : "opacity-0"}`
5272
+ }), /* @__PURE__ */ React__default["default"].createElement(FaUnlock, {
5273
+ className: `text-blue-500 absolute top-1/2 left-2 -translate-y-1/2 pointer-events-none h-5 w-auto transition-opacity duration-150 ease-out ${!filenameTouched && !props.readonly ? "opacity-0 group-hover:opacity-80 group-active:opacity-80" : "opacity-0"}`
5274
+ }));
5275
+ };
5177
5276
  const RenderForm$1 = ({ cms, collection, templateName, mutationInfo }) => {
5178
5277
  var _a, _b, _c, _d, _e;
5179
5278
  const navigate = reactRouterDom.useNavigate();
@@ -5190,9 +5289,9 @@ This will work when developing locally but NOT when deployed to production.
5190
5289
  schema,
5191
5290
  template
5192
5291
  });
5193
- let slugFunction = (_b = (_a = schemaCollection == null ? void 0 : schemaCollection.ui) == null ? void 0 : _a.filename) == null ? void 0 : _b.slugify;
5292
+ let slugFunction = (_b = (_a = template == null ? void 0 : template.ui) == null ? void 0 : _a.filename) == null ? void 0 : _b.slugify;
5194
5293
  if (!slugFunction) {
5195
- const titleField = (_c = schemaCollection.fields.find((x) => x.required && x.type === "string" && x.isTitle)) == null ? void 0 : _c.name;
5294
+ const titleField = (_c = template == null ? void 0 : template.fields.find((x) => x.required && x.type === "string" && x.isTitle)) == null ? void 0 : _c.name;
5196
5295
  if (titleField) {
5197
5296
  slugFunction = (values) => {
5198
5297
  var _a2;
@@ -5215,11 +5314,18 @@ This will work when developing locally but NOT when deployed to production.
5215
5314
  id: "create-form",
5216
5315
  label: "form",
5217
5316
  fields: [
5317
+ ...formInfo.fields,
5218
5318
  {
5219
5319
  name: "filename",
5220
5320
  label: "Filename",
5221
- component: "text",
5222
- disabled: (_b2 = (_a2 = schemaCollection == null ? void 0 : schemaCollection.ui) == null ? void 0 : _a2.filename) == null ? void 0 : _b2.disabled,
5321
+ component: slugFunction ? toolkit.wrapFieldsWithMeta(({ field, input, meta }) => {
5322
+ var _a3, _b3;
5323
+ return /* @__PURE__ */ React__default["default"].createElement(FilenameInput, {
5324
+ readonly: (_b3 = (_a3 = template == null ? void 0 : template.ui) == null ? void 0 : _a3.filename) == null ? void 0 : _b3.readonly,
5325
+ ...input
5326
+ });
5327
+ }) : "text",
5328
+ disabled: (_b2 = (_a2 = template == null ? void 0 : template.ui) == null ? void 0 : _a2.filename) == null ? void 0 : _b2.readonly,
5223
5329
  description: /* @__PURE__ */ React__default["default"].createElement("span", null, "A unique filename for the content.", /* @__PURE__ */ React__default["default"].createElement("br", null), "Examples: ", /* @__PURE__ */ React__default["default"].createElement("code", null, "My_Document"), ", ", /* @__PURE__ */ React__default["default"].createElement("code", null, "My_Document.en"), ",", " ", /* @__PURE__ */ React__default["default"].createElement("code", null, "sub-folder/My_Document")),
5224
5330
  placeholder: `My_Document`,
5225
5331
  validate: (value, allValues, meta) => {
@@ -5234,8 +5340,7 @@ This will work when developing locally but NOT when deployed to production.
5234
5340
  return "Must begin with a-z, A-Z, 0-9, or _ and contain only a-z, A-Z, 0-9, -, _, ., or /.";
5235
5341
  }
5236
5342
  }
5237
- },
5238
- ...formInfo.fields
5343
+ }
5239
5344
  ],
5240
5345
  onSubmit: async (values) => {
5241
5346
  try {
package/dist/style.css CHANGED
@@ -314,6 +314,9 @@
314
314
  --tw-backdrop-saturate: ;
315
315
  --tw-backdrop-sepia: ;
316
316
  }
317
+ .tina-tailwind .pointer-events-none {
318
+ pointer-events: none;
319
+ }
317
320
  .tina-tailwind .pointer-events-auto {
318
321
  pointer-events: auto;
319
322
  }
@@ -353,6 +356,12 @@
353
356
  .tina-tailwind .top-4 {
354
357
  top: 16px;
355
358
  }
359
+ .tina-tailwind .top-1\/2 {
360
+ top: 50%;
361
+ }
362
+ .tina-tailwind .left-2 {
363
+ left: 8px;
364
+ }
356
365
  .tina-tailwind .z-overlay {
357
366
  z-index: 10600;
358
367
  }
@@ -429,12 +438,12 @@
429
438
  .tina-tailwind .h-7 {
430
439
  height: 28px;
431
440
  }
432
- .tina-tailwind .h-10 {
433
- height: 40px;
434
- }
435
441
  .tina-tailwind .h-5 {
436
442
  height: 20px;
437
443
  }
444
+ .tina-tailwind .h-10 {
445
+ height: 40px;
446
+ }
438
447
  .tina-tailwind .h-12 {
439
448
  height: 48px;
440
449
  }
@@ -498,6 +507,10 @@
498
507
  --tw-translate-x: 100%;
499
508
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
500
509
  }
510
+ .tina-tailwind .-translate-y-1\/2 {
511
+ --tw-translate-y: -50%;
512
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
513
+ }
501
514
  .tina-tailwind .scale-95 {
502
515
  --tw-scale-x: .95;
503
516
  --tw-scale-y: .95;
@@ -565,6 +578,11 @@
565
578
  .tina-tailwind .overflow-y-auto {
566
579
  overflow-y: auto;
567
580
  }
581
+ .tina-tailwind .truncate {
582
+ overflow: hidden;
583
+ text-overflow: ellipsis;
584
+ white-space: nowrap;
585
+ }
568
586
  .tina-tailwind .whitespace-normal {
569
587
  white-space: normal;
570
588
  }
@@ -577,12 +595,12 @@
577
595
  .tina-tailwind .rounded {
578
596
  border-radius: 4px;
579
597
  }
580
- .tina-tailwind .rounded-full {
581
- border-radius: 9999px;
582
- }
583
598
  .tina-tailwind .rounded-md {
584
599
  border-radius: 6px;
585
600
  }
601
+ .tina-tailwind .rounded-full {
602
+ border-radius: 9999px;
603
+ }
586
604
  .tina-tailwind .rounded-r-md {
587
605
  border-top-right-radius: 6px;
588
606
  border-bottom-right-radius: 6px;
@@ -663,6 +681,10 @@
663
681
  padding-top: 40px;
664
682
  padding-bottom: 40px;
665
683
  }
684
+ .tina-tailwind .py-2 {
685
+ padding-top: 8px;
686
+ padding-bottom: 8px;
687
+ }
666
688
  .tina-tailwind .px-20 {
667
689
  padding-left: 80px;
668
690
  padding-right: 80px;
@@ -675,10 +697,6 @@
675
697
  padding-top: 4px;
676
698
  padding-bottom: 4px;
677
699
  }
678
- .tina-tailwind .py-2 {
679
- padding-top: 8px;
680
- padding-bottom: 8px;
681
- }
682
700
  .tina-tailwind .py-5 {
683
701
  padding-top: 20px;
684
702
  padding-bottom: 20px;
@@ -692,6 +710,15 @@
692
710
  .tina-tailwind .pt-16 {
693
711
  padding-top: 64px;
694
712
  }
713
+ .tina-tailwind .pr-3 {
714
+ padding-right: 12px;
715
+ }
716
+ .tina-tailwind .pl-8 {
717
+ padding-left: 32px;
718
+ }
719
+ .tina-tailwind .pl-3 {
720
+ padding-left: 12px;
721
+ }
695
722
  .tina-tailwind .pt-3 {
696
723
  padding-top: 12px;
697
724
  }
@@ -771,10 +798,18 @@
771
798
  --tw-text-opacity: 1;
772
799
  color: rgb(113 108 127 / var(--tw-text-opacity));
773
800
  }
801
+ .tina-tailwind .text-gray-300 {
802
+ --tw-text-opacity: 1;
803
+ color: rgb(178 173 190 / var(--tw-text-opacity));
804
+ }
774
805
  .tina-tailwind .text-gray-400 {
775
806
  --tw-text-opacity: 1;
776
807
  color: rgb(145 140 158 / var(--tw-text-opacity));
777
808
  }
809
+ .tina-tailwind .text-blue-500 {
810
+ --tw-text-opacity: 1;
811
+ color: rgb(0 132 255 / var(--tw-text-opacity));
812
+ }
778
813
  .tina-tailwind .text-current {
779
814
  color: currentColor;
780
815
  }
@@ -809,6 +844,9 @@
809
844
  .tina-tailwind .opacity-90 {
810
845
  opacity: .9;
811
846
  }
847
+ .tina-tailwind .opacity-20 {
848
+ opacity: .2;
849
+ }
812
850
  .tina-tailwind .opacity-50 {
813
851
  opacity: .5;
814
852
  }
@@ -825,6 +863,11 @@
825
863
  --tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);
826
864
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
827
865
  }
866
+ .tina-tailwind .shadow-inner {
867
+ --tw-shadow: inset 0 2px 4px 0 rgb(0 0 0 / 0.05);
868
+ --tw-shadow-colored: inset 0 2px 4px 0 var(--tw-shadow-color);
869
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
870
+ }
828
871
  .tina-tailwind .shadow {
829
872
  --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
830
873
  --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);
@@ -914,6 +957,14 @@
914
957
  .tina-tailwind .hover\:opacity-60:hover {
915
958
  opacity: .6;
916
959
  }
960
+ .tina-tailwind .focus\:border-blue-500:focus {
961
+ --tw-border-opacity: 1;
962
+ border-color: rgb(0 132 255 / var(--tw-border-opacity));
963
+ }
964
+ .tina-tailwind .focus\:text-gray-900:focus {
965
+ --tw-text-opacity: 1;
966
+ color: rgb(37 35 54 / var(--tw-text-opacity));
967
+ }
917
968
  .tina-tailwind .focus\:text-blue-400:focus {
918
969
  --tw-text-opacity: 1;
919
970
  color: rgb(34 150 254 / var(--tw-text-opacity));
@@ -939,3 +990,27 @@
939
990
  --tw-ring-opacity: 1;
940
991
  --tw-ring-color: rgb(0 132 255 / var(--tw-ring-opacity));
941
992
  }
993
+ .tina-tailwind .group:hover .group-hover\:border-gray-200 {
994
+ --tw-border-opacity: 1;
995
+ border-color: rgb(225 221 236 / var(--tw-border-opacity));
996
+ }
997
+ .tina-tailwind .group:hover .group-hover\:bg-white {
998
+ --tw-bg-opacity: 1;
999
+ background-color: rgb(255 255 255 / var(--tw-bg-opacity));
1000
+ }
1001
+ .tina-tailwind .group:hover .group-hover\:text-gray-600 {
1002
+ --tw-text-opacity: 1;
1003
+ color: rgb(86 81 101 / var(--tw-text-opacity));
1004
+ }
1005
+ .tina-tailwind .group:hover .group-hover\:opacity-0 {
1006
+ opacity: 0;
1007
+ }
1008
+ .tina-tailwind .group:hover .group-hover\:opacity-80 {
1009
+ opacity: .8;
1010
+ }
1011
+ .tina-tailwind .group:active .group-active\:opacity-0 {
1012
+ opacity: 0;
1013
+ }
1014
+ .tina-tailwind .group:active .group-active\:opacity-80 {
1015
+ opacity: .8;
1016
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tinacms",
3
- "version": "0.69.13",
3
+ "version": "0.69.15",
4
4
  "main": "dist/index.js",
5
5
  "module": "./dist/index.es.js",
6
6
  "exports": {
@@ -54,9 +54,9 @@
54
54
  "@headlessui/react": "^1.5.0",
55
55
  "@heroicons/react": "^1.0.4",
56
56
  "@react-hook/window-size": "^3.0.7",
57
- "@tinacms/schema-tools": "0.1.5",
57
+ "@tinacms/schema-tools": "0.1.7",
58
58
  "@tinacms/sharedctx": "0.1.3",
59
- "@tinacms/toolkit": "0.57.9",
59
+ "@tinacms/toolkit": "0.57.11",
60
60
  "crypto-js": "^4.0.0",
61
61
  "fetch-ponyfill": "^7.1.0",
62
62
  "final-form": "4.20.1",