tinacms 0.66.5 → 0.66.8
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/CHANGELOG.md +35 -0
- package/dist/admin/api.d.ts +2 -0
- package/dist/admin/components/GetCollection.d.ts +1 -0
- package/dist/admin/components/GetCollections.d.ts +1 -0
- package/dist/admin/components/GetDocument.d.ts +1 -0
- package/dist/admin/components/GetDocumentFields.d.ts +1 -0
- package/dist/client/index.d.ts +29 -1
- package/dist/hooks/formify/index.d.ts +57 -0
- package/dist/hooks/formify/test/to-be-similar-to.d.ts +13 -0
- package/dist/hooks/formify/util.d.ts +59 -0
- package/dist/index.d.ts +11 -1
- package/dist/index.es.js +696 -1476
- package/dist/index.js +624 -1402
- package/dist/style.css +280 -1019
- package/dist/tina-cms.d.ts +2 -1
- package/dist/types/SchemaTypes.d.ts +258 -0
- package/dist/types/index.d.ts +18 -0
- package/package.json +6 -3
package/dist/index.js
CHANGED
|
@@ -30,8 +30,8 @@ var __objRest = (source, exclude) => {
|
|
|
30
30
|
return target;
|
|
31
31
|
};
|
|
32
32
|
(function(global, factory) {
|
|
33
|
-
typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("@tinacms/toolkit"), require("graphql"), require("lodash.set"), require("
|
|
34
|
-
})(this, function(exports2, toolkit,
|
|
33
|
+
typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("@tinacms/toolkit"), require("graphql"), require("lodash.set"), require("react"), require("graphql-tag"), require("styled-components"), require("yup"), require("@tinacms/sharedctx"), require("final-form"), require("url-pattern"), require("react-router-dom"), require("@headlessui/react")) : typeof define === "function" && define.amd ? define(["exports", "@tinacms/toolkit", "graphql", "lodash.set", "react", "graphql-tag", "styled-components", "yup", "@tinacms/sharedctx", "final-form", "url-pattern", "react-router-dom", "@headlessui/react"], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, factory(global.tinacms = {}, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP));
|
|
34
|
+
})(this, function(exports2, toolkit, G, set, React, gql$1, styled, yup, sharedctx, finalForm, UrlPattern, reactRouterDom, react) {
|
|
35
35
|
"use strict";
|
|
36
36
|
function _interopDefaultLegacy(e) {
|
|
37
37
|
return e && typeof e === "object" && "default" in e ? e : { "default": e };
|
|
@@ -56,9 +56,10 @@ var __objRest = (source, exclude) => {
|
|
|
56
56
|
n["default"] = e;
|
|
57
57
|
return Object.freeze(n);
|
|
58
58
|
}
|
|
59
|
+
var G__namespace = /* @__PURE__ */ _interopNamespace(G);
|
|
59
60
|
var set__default = /* @__PURE__ */ _interopDefaultLegacy(set);
|
|
60
|
-
var gql__default = /* @__PURE__ */ _interopDefaultLegacy(gql$1);
|
|
61
61
|
var React__default = /* @__PURE__ */ _interopDefaultLegacy(React);
|
|
62
|
+
var gql__default = /* @__PURE__ */ _interopDefaultLegacy(gql$1);
|
|
62
63
|
var styled__default = /* @__PURE__ */ _interopDefaultLegacy(styled);
|
|
63
64
|
var yup__namespace = /* @__PURE__ */ _interopNamespace(yup);
|
|
64
65
|
var UrlPattern__default = /* @__PURE__ */ _interopDefaultLegacy(UrlPattern);
|
|
@@ -88,35 +89,35 @@ var __objRest = (source, exclude) => {
|
|
|
88
89
|
authTab = popupWindow(`${frontendUrl}/signin?clientId=${clientId}&origin=${origin}`, "_blank", window, 1e3, 700);
|
|
89
90
|
});
|
|
90
91
|
};
|
|
91
|
-
const formify = (query, schema) => {
|
|
92
|
-
const typeInfo = new
|
|
92
|
+
const formify$1 = (query, schema) => {
|
|
93
|
+
const typeInfo = new G.TypeInfo(schema);
|
|
93
94
|
const pathsToPopulate = [];
|
|
94
95
|
const visitor = {
|
|
95
|
-
leave(
|
|
96
|
+
leave(node2, key, parent, path, ancestors) {
|
|
96
97
|
const type = typeInfo.getType();
|
|
97
98
|
if (type) {
|
|
98
|
-
const namedType =
|
|
99
|
-
if (namedType instanceof
|
|
99
|
+
const namedType = G.getNamedType(type);
|
|
100
|
+
if (namedType instanceof G.GraphQLObjectType) {
|
|
100
101
|
const hasNodeInterface = !!namedType.getInterfaces().find((i) => i.name === "Node");
|
|
101
102
|
if (hasNodeInterface) {
|
|
102
103
|
if (typeof path[path.length - 1] === "number") {
|
|
103
104
|
assertIsObjectType(namedType);
|
|
104
105
|
const valuesNode = namedType.getFields().values;
|
|
105
|
-
const namedValuesNode =
|
|
106
|
+
const namedValuesNode = G.getNamedType(valuesNode.type);
|
|
106
107
|
const pathForValues = [...path];
|
|
107
108
|
pathForValues.push("selectionSet");
|
|
108
109
|
pathForValues.push("selections");
|
|
109
110
|
const valuesAst = buildValuesForType(namedValuesNode);
|
|
110
111
|
pathForValues.push(100);
|
|
111
112
|
const formNode = namedType.getFields().form;
|
|
112
|
-
const namedFormNode =
|
|
113
|
+
const namedFormNode = G.getNamedType(formNode.type);
|
|
113
114
|
const pathForForm = [...path];
|
|
114
115
|
pathForForm.push("selectionSet");
|
|
115
116
|
pathForForm.push("selections");
|
|
116
117
|
const formAst = buildFormForType(namedFormNode);
|
|
117
118
|
pathForForm.push(101);
|
|
118
119
|
const sysNode = namedType.getFields().sys;
|
|
119
|
-
const namedSysNode =
|
|
120
|
+
const namedSysNode = G.getNamedType(sysNode.type);
|
|
120
121
|
const pathForSys = [...path];
|
|
121
122
|
pathForSys.push("selectionSet");
|
|
122
123
|
pathForSys.push("selections");
|
|
@@ -145,7 +146,7 @@ var __objRest = (source, exclude) => {
|
|
|
145
146
|
}
|
|
146
147
|
}
|
|
147
148
|
};
|
|
148
|
-
|
|
149
|
+
G.visit(query, G.visitWithTypeInfo(typeInfo, visitor));
|
|
149
150
|
const topLevelPaths = pathsToPopulate.filter((p, i) => {
|
|
150
151
|
const otherPaths = pathsToPopulate.filter((_, index) => index !== i);
|
|
151
152
|
const isChildOfOtherPaths = otherPaths.some((op) => {
|
|
@@ -254,8 +255,8 @@ var __objRest = (source, exclude) => {
|
|
|
254
255
|
kind: "SelectionSet",
|
|
255
256
|
selections: [
|
|
256
257
|
...Object.values(type.getFields()).map((field) => {
|
|
257
|
-
const namedType =
|
|
258
|
-
if (
|
|
258
|
+
const namedType = G.getNamedType(field.type);
|
|
259
|
+
if (G.isLeafType(namedType)) {
|
|
259
260
|
return {
|
|
260
261
|
kind: "Field",
|
|
261
262
|
name: {
|
|
@@ -263,7 +264,7 @@ var __objRest = (source, exclude) => {
|
|
|
263
264
|
value: field.name
|
|
264
265
|
}
|
|
265
266
|
};
|
|
266
|
-
} else if (namedType instanceof
|
|
267
|
+
} else if (namedType instanceof G.GraphQLUnionType) {
|
|
267
268
|
return {
|
|
268
269
|
kind: "Field",
|
|
269
270
|
name: {
|
|
@@ -277,7 +278,7 @@ var __objRest = (source, exclude) => {
|
|
|
277
278
|
]
|
|
278
279
|
}
|
|
279
280
|
};
|
|
280
|
-
} else if (namedType instanceof
|
|
281
|
+
} else if (namedType instanceof G.GraphQLObjectType) {
|
|
281
282
|
return {
|
|
282
283
|
kind: "Field",
|
|
283
284
|
name: {
|
|
@@ -306,7 +307,7 @@ var __objRest = (source, exclude) => {
|
|
|
306
307
|
const result = callback(fields);
|
|
307
308
|
if (!result.continue) {
|
|
308
309
|
if (fields.every((field) => {
|
|
309
|
-
return !
|
|
310
|
+
return !G.isScalarType(G.getNamedType(field.type));
|
|
310
311
|
})) {
|
|
311
312
|
return [
|
|
312
313
|
{
|
|
@@ -319,7 +320,7 @@ var __objRest = (source, exclude) => {
|
|
|
319
320
|
];
|
|
320
321
|
}
|
|
321
322
|
return buildSelectionsFields(result.filteredFields.filter((field) => {
|
|
322
|
-
if (
|
|
323
|
+
if (G.isScalarType(G.getNamedType(field.type))) {
|
|
323
324
|
return true;
|
|
324
325
|
}
|
|
325
326
|
return false;
|
|
@@ -329,8 +330,8 @@ var __objRest = (source, exclude) => {
|
|
|
329
330
|
}
|
|
330
331
|
}
|
|
331
332
|
return filteredFields.map((field) => {
|
|
332
|
-
const namedType =
|
|
333
|
-
if (
|
|
333
|
+
const namedType = G.getNamedType(field.type);
|
|
334
|
+
if (G.isLeafType(namedType)) {
|
|
334
335
|
return {
|
|
335
336
|
kind: "Field",
|
|
336
337
|
name: {
|
|
@@ -338,7 +339,7 @@ var __objRest = (source, exclude) => {
|
|
|
338
339
|
value: field.name
|
|
339
340
|
}
|
|
340
341
|
};
|
|
341
|
-
} else if (namedType instanceof
|
|
342
|
+
} else if (namedType instanceof G.GraphQLUnionType) {
|
|
342
343
|
return {
|
|
343
344
|
kind: "Field",
|
|
344
345
|
name: {
|
|
@@ -352,7 +353,7 @@ var __objRest = (source, exclude) => {
|
|
|
352
353
|
]
|
|
353
354
|
}
|
|
354
355
|
};
|
|
355
|
-
} else if (namedType instanceof
|
|
356
|
+
} else if (namedType instanceof G.GraphQLObjectType) {
|
|
356
357
|
return {
|
|
357
358
|
kind: "Field",
|
|
358
359
|
name: {
|
|
@@ -382,19 +383,448 @@ var __objRest = (source, exclude) => {
|
|
|
382
383
|
});
|
|
383
384
|
};
|
|
384
385
|
function assertIsObjectType(type) {
|
|
385
|
-
if (type instanceof
|
|
386
|
+
if (type instanceof G.GraphQLObjectType)
|
|
386
387
|
;
|
|
387
388
|
else {
|
|
388
389
|
throw new Error(`Expected an instance of GraphQLObjectType for type ${type.name}`);
|
|
389
390
|
}
|
|
390
391
|
}
|
|
391
392
|
function assertIsUnionType(type) {
|
|
392
|
-
if (type instanceof
|
|
393
|
+
if (type instanceof G.GraphQLUnionType)
|
|
393
394
|
;
|
|
394
395
|
else {
|
|
395
396
|
throw new Error(`Expected an instance of GraphQLUnionType for type ${type.name}`);
|
|
396
397
|
}
|
|
397
398
|
}
|
|
399
|
+
const isNodeField = (type) => {
|
|
400
|
+
if (G__namespace.isUnionType(type)) {
|
|
401
|
+
return type.getTypes().every((type2) => {
|
|
402
|
+
return type2.getInterfaces().find((intfc) => intfc.name === "Node");
|
|
403
|
+
});
|
|
404
|
+
} else if (G__namespace.isObjectType(type)) {
|
|
405
|
+
return !!type.getInterfaces().find((intfc) => intfc.name === "Node");
|
|
406
|
+
} else if (G__namespace.isInterfaceType(type)) {
|
|
407
|
+
if (type.name === "Node") {
|
|
408
|
+
return true;
|
|
409
|
+
}
|
|
410
|
+
} else {
|
|
411
|
+
throw new Error(`Expected GraphQLObjectType or GraphQLUnionType for isNodeField check`);
|
|
412
|
+
}
|
|
413
|
+
};
|
|
414
|
+
const isConnectionField = (type) => {
|
|
415
|
+
if (G__namespace.isObjectType(type)) {
|
|
416
|
+
return !!type.getInterfaces().find((intfc) => intfc.name === "Connection");
|
|
417
|
+
} else {
|
|
418
|
+
throw new Error(`Expected GraphQLObjectType for isCollectionField check`);
|
|
419
|
+
}
|
|
420
|
+
};
|
|
421
|
+
const getObjectField = (object, selectionNode) => {
|
|
422
|
+
return object.getFields()[selectionNode.name.value];
|
|
423
|
+
};
|
|
424
|
+
const getSelectedUnionType = (unionType, selectionNode) => {
|
|
425
|
+
return unionType.getTypes().find((type) => type.name === selectionNode.typeCondition.name.value);
|
|
426
|
+
};
|
|
427
|
+
function ensureNodeField(field) {
|
|
428
|
+
if (!isNodeField(field)) {
|
|
429
|
+
throw new Error(`Expected field to implement Node interface`);
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
function ensureUnionType(type) {
|
|
433
|
+
if (!G__namespace.isUnionType(type)) {
|
|
434
|
+
throw new Error(`Expected type to be GraphQLUnionType`);
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
function ensureObjectType(type) {
|
|
438
|
+
if (!G__namespace.isObjectType(type)) {
|
|
439
|
+
console.log(type);
|
|
440
|
+
throw new Error(`Expected type to be GraphQLObjectType`);
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
function ensureOperationDefinition(type) {
|
|
444
|
+
if (type.kind !== "OperationDefinition") {
|
|
445
|
+
throw new Error(`Expected top-level definition to be an OperationDefinition node, ensure your query has been optimized before calling formify`);
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
function getNameAndAlias(fieldNode, list) {
|
|
449
|
+
return {
|
|
450
|
+
name: fieldNode.name.value,
|
|
451
|
+
alias: fieldNode.alias ? fieldNode.alias.value : fieldNode.name.value,
|
|
452
|
+
list: !!list
|
|
453
|
+
};
|
|
454
|
+
}
|
|
455
|
+
const node = G__namespace.parse(`
|
|
456
|
+
query Sample {
|
|
457
|
+
_internalSys: sys {
|
|
458
|
+
path
|
|
459
|
+
collection {
|
|
460
|
+
name
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
form
|
|
464
|
+
values
|
|
465
|
+
}`);
|
|
466
|
+
const metaFields = node.definitions[0].selectionSet.selections;
|
|
467
|
+
const NOOP = "This is either an error or is not yet supported";
|
|
468
|
+
const UNEXPECTED = "Formify encountered an unexpected error, please contact support";
|
|
469
|
+
const DATA_NODE_NAME = "data";
|
|
470
|
+
const EDGES_NODE_NAME = "edges";
|
|
471
|
+
const NODE_NAME = "node";
|
|
472
|
+
const COLLECTION_FIELD_NAME = "getCollection";
|
|
473
|
+
const COLLECTIONS_FIELD_NAME = "getCollections";
|
|
474
|
+
const COLLECTIONS_DOCUMENTS_NAME = "documents";
|
|
475
|
+
class FormifyError extends Error {
|
|
476
|
+
constructor(code, details) {
|
|
477
|
+
let message;
|
|
478
|
+
switch (code) {
|
|
479
|
+
case "NOOP":
|
|
480
|
+
message = NOOP;
|
|
481
|
+
break;
|
|
482
|
+
case "UNEXPECTED":
|
|
483
|
+
message = UNEXPECTED;
|
|
484
|
+
break;
|
|
485
|
+
default:
|
|
486
|
+
message = "";
|
|
487
|
+
break;
|
|
488
|
+
}
|
|
489
|
+
super(`${message} ${details || ""}`);
|
|
490
|
+
this.name = "FormifyError";
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
const formify = async ({
|
|
494
|
+
schema,
|
|
495
|
+
query,
|
|
496
|
+
getOptimizedQuery
|
|
497
|
+
}) => {
|
|
498
|
+
const nodes = [];
|
|
499
|
+
const documentNode = G__namespace.parse(query);
|
|
500
|
+
const visitor2 = {
|
|
501
|
+
OperationDefinition: (node2) => {
|
|
502
|
+
if (!node2.name) {
|
|
503
|
+
return __spreadProps(__spreadValues({}, node2), {
|
|
504
|
+
name: {
|
|
505
|
+
kind: "Name",
|
|
506
|
+
value: `QueryOperation`
|
|
507
|
+
}
|
|
508
|
+
});
|
|
509
|
+
}
|
|
510
|
+
return node2;
|
|
511
|
+
}
|
|
512
|
+
};
|
|
513
|
+
const documentNodeWithName = G.visit(documentNode, visitor2);
|
|
514
|
+
const optimizedQuery = await getOptimizedQuery(documentNodeWithName);
|
|
515
|
+
const typeInfo = new G__namespace.TypeInfo(schema);
|
|
516
|
+
const formifyConnection = ({
|
|
517
|
+
namedFieldType,
|
|
518
|
+
selectionNode,
|
|
519
|
+
path
|
|
520
|
+
}) => {
|
|
521
|
+
ensureObjectType(namedFieldType);
|
|
522
|
+
return __spreadProps(__spreadValues({}, selectionNode), {
|
|
523
|
+
selectionSet: {
|
|
524
|
+
kind: "SelectionSet",
|
|
525
|
+
selections: selectionNode.selectionSet.selections.map((selectionNode2) => {
|
|
526
|
+
switch (selectionNode2.kind) {
|
|
527
|
+
case "Field":
|
|
528
|
+
if (selectionNode2.name.value === EDGES_NODE_NAME) {
|
|
529
|
+
const edgeField = namedFieldType.getFields()[EDGES_NODE_NAME];
|
|
530
|
+
const edgeType = G__namespace.getNamedType(edgeField.type);
|
|
531
|
+
ensureObjectType(edgeType);
|
|
532
|
+
return __spreadProps(__spreadValues({}, selectionNode2), {
|
|
533
|
+
selectionSet: {
|
|
534
|
+
kind: "SelectionSet",
|
|
535
|
+
selections: selectionNode2.selectionSet.selections.map((subSelectionNode) => {
|
|
536
|
+
switch (subSelectionNode.kind) {
|
|
537
|
+
case "Field":
|
|
538
|
+
if (subSelectionNode.name.value === NODE_NAME) {
|
|
539
|
+
const nodeField = edgeType.getFields()[NODE_NAME];
|
|
540
|
+
return formifyNode({
|
|
541
|
+
fieldOrInlineFragmentNode: subSelectionNode,
|
|
542
|
+
parentType: nodeField.type,
|
|
543
|
+
path: [
|
|
544
|
+
...path,
|
|
545
|
+
getNameAndAlias(selectionNode2),
|
|
546
|
+
getNameAndAlias(subSelectionNode, true)
|
|
547
|
+
]
|
|
548
|
+
});
|
|
549
|
+
} else {
|
|
550
|
+
return subSelectionNode;
|
|
551
|
+
}
|
|
552
|
+
default:
|
|
553
|
+
throw new FormifyError("NOOP");
|
|
554
|
+
}
|
|
555
|
+
})
|
|
556
|
+
}
|
|
557
|
+
});
|
|
558
|
+
}
|
|
559
|
+
return selectionNode2;
|
|
560
|
+
default:
|
|
561
|
+
throw new FormifyError("UNEXPECTED");
|
|
562
|
+
}
|
|
563
|
+
})
|
|
564
|
+
}
|
|
565
|
+
});
|
|
566
|
+
};
|
|
567
|
+
function formifyNode({
|
|
568
|
+
fieldOrInlineFragmentNode,
|
|
569
|
+
parentType,
|
|
570
|
+
path
|
|
571
|
+
}) {
|
|
572
|
+
let extraFields = [];
|
|
573
|
+
const namedParentType = G__namespace.getNamedType(parentType);
|
|
574
|
+
const formifiedNode = __spreadProps(__spreadValues({}, fieldOrInlineFragmentNode), {
|
|
575
|
+
selectionSet: {
|
|
576
|
+
kind: "SelectionSet",
|
|
577
|
+
selections: [
|
|
578
|
+
...fieldOrInlineFragmentNode.selectionSet.selections.map((selectionNode) => {
|
|
579
|
+
switch (selectionNode.kind) {
|
|
580
|
+
case "InlineFragment":
|
|
581
|
+
if (G__namespace.isInterfaceType(namedParentType)) {
|
|
582
|
+
const type2 = schema.getImplementations(namedParentType).objects[selectionNode.typeCondition.name.value];
|
|
583
|
+
return formifyNode({
|
|
584
|
+
fieldOrInlineFragmentNode: selectionNode,
|
|
585
|
+
parentType: type2,
|
|
586
|
+
path
|
|
587
|
+
});
|
|
588
|
+
}
|
|
589
|
+
ensureUnionType(namedParentType);
|
|
590
|
+
const type = getSelectedUnionType(namedParentType, selectionNode);
|
|
591
|
+
return formifyNode({
|
|
592
|
+
fieldOrInlineFragmentNode: selectionNode,
|
|
593
|
+
parentType: type,
|
|
594
|
+
path
|
|
595
|
+
});
|
|
596
|
+
case "Field":
|
|
597
|
+
if (selectionNode.name.value === DATA_NODE_NAME) {
|
|
598
|
+
extraFields = metaFields;
|
|
599
|
+
if (G__namespace.isObjectType(namedParentType)) {
|
|
600
|
+
const field = getObjectField(namedParentType, selectionNode);
|
|
601
|
+
const namedType = G__namespace.getNamedType(field.type);
|
|
602
|
+
ensureObjectType(namedType);
|
|
603
|
+
return __spreadProps(__spreadValues({}, selectionNode), {
|
|
604
|
+
selectionSet: {
|
|
605
|
+
kind: "SelectionSet",
|
|
606
|
+
selections: [
|
|
607
|
+
...selectionNode.selectionSet.selections.map((subSelectionNode) => {
|
|
608
|
+
switch (subSelectionNode.kind) {
|
|
609
|
+
case "Field":
|
|
610
|
+
const subSelectionField = getObjectField(namedType, subSelectionNode);
|
|
611
|
+
if (!subSelectionField) {
|
|
612
|
+
return subSelectionNode;
|
|
613
|
+
}
|
|
614
|
+
return formifyField({
|
|
615
|
+
fieldNode: subSelectionNode,
|
|
616
|
+
parentType: field.type,
|
|
617
|
+
path: [
|
|
618
|
+
...path,
|
|
619
|
+
getNameAndAlias(subSelectionNode, G__namespace.isListType(subSelectionField.type))
|
|
620
|
+
]
|
|
621
|
+
});
|
|
622
|
+
default:
|
|
623
|
+
throw new FormifyError("UNEXPECTED", `selection ${subSelectionNode.kind}`);
|
|
624
|
+
}
|
|
625
|
+
})
|
|
626
|
+
]
|
|
627
|
+
}
|
|
628
|
+
});
|
|
629
|
+
}
|
|
630
|
+
return selectionNode;
|
|
631
|
+
}
|
|
632
|
+
return selectionNode;
|
|
633
|
+
default:
|
|
634
|
+
throw new FormifyError("UNEXPECTED");
|
|
635
|
+
}
|
|
636
|
+
}),
|
|
637
|
+
...extraFields
|
|
638
|
+
]
|
|
639
|
+
}
|
|
640
|
+
});
|
|
641
|
+
return formifiedNode;
|
|
642
|
+
}
|
|
643
|
+
const formifyField = ({
|
|
644
|
+
fieldNode,
|
|
645
|
+
parentType,
|
|
646
|
+
path
|
|
647
|
+
}) => {
|
|
648
|
+
const namedParentType = G__namespace.getNamedType(parentType);
|
|
649
|
+
ensureObjectType(namedParentType);
|
|
650
|
+
const field = getObjectField(namedParentType, fieldNode);
|
|
651
|
+
if (!field) {
|
|
652
|
+
if (fieldNode.name.value === "__typename") {
|
|
653
|
+
return fieldNode;
|
|
654
|
+
} else {
|
|
655
|
+
throw new FormifyError("UNEXPECTED", `field with no associated type ${fieldNode.name.value}`);
|
|
656
|
+
}
|
|
657
|
+
}
|
|
658
|
+
const namedType = G__namespace.getNamedType(field.type);
|
|
659
|
+
if (G__namespace.isScalarType(namedType)) {
|
|
660
|
+
return fieldNode;
|
|
661
|
+
}
|
|
662
|
+
return __spreadProps(__spreadValues({}, fieldNode), {
|
|
663
|
+
selectionSet: {
|
|
664
|
+
kind: "SelectionSet",
|
|
665
|
+
selections: [
|
|
666
|
+
...fieldNode.selectionSet.selections.map((selectionNode) => {
|
|
667
|
+
switch (selectionNode.kind) {
|
|
668
|
+
case "Field":
|
|
669
|
+
if (selectionNode.name.value === "__typename") {
|
|
670
|
+
return selectionNode;
|
|
671
|
+
}
|
|
672
|
+
ensureObjectType(namedType);
|
|
673
|
+
const field2 = getObjectField(namedType, selectionNode);
|
|
674
|
+
if (!field2) {
|
|
675
|
+
return fieldNode;
|
|
676
|
+
}
|
|
677
|
+
if (G__namespace.isScalarType(G__namespace.getNamedType(field2.type))) {
|
|
678
|
+
return selectionNode;
|
|
679
|
+
}
|
|
680
|
+
return __spreadProps(__spreadValues({}, selectionNode), {
|
|
681
|
+
selectionSet: {
|
|
682
|
+
kind: "SelectionSet",
|
|
683
|
+
selections: selectionNode.selectionSet.selections.map((selectionNode2) => {
|
|
684
|
+
switch (selectionNode2.kind) {
|
|
685
|
+
case "Field":
|
|
686
|
+
if (selectionNode2.name.value === "__typename") {
|
|
687
|
+
return selectionNode2;
|
|
688
|
+
}
|
|
689
|
+
return formifyField({
|
|
690
|
+
fieldNode: selectionNode2,
|
|
691
|
+
parentType: field2.type,
|
|
692
|
+
path
|
|
693
|
+
});
|
|
694
|
+
case "InlineFragment":
|
|
695
|
+
const namedType2 = G__namespace.getNamedType(field2.type);
|
|
696
|
+
ensureNodeField(namedType2);
|
|
697
|
+
return formifyNode({
|
|
698
|
+
fieldOrInlineFragmentNode: selectionNode2,
|
|
699
|
+
parentType: field2.type,
|
|
700
|
+
path
|
|
701
|
+
});
|
|
702
|
+
default:
|
|
703
|
+
throw new FormifyError("UNEXPECTED", `selection ${selectionNode2.kind}`);
|
|
704
|
+
}
|
|
705
|
+
})
|
|
706
|
+
}
|
|
707
|
+
});
|
|
708
|
+
case "InlineFragment":
|
|
709
|
+
ensureUnionType(namedType);
|
|
710
|
+
if (isNodeField(namedType)) {
|
|
711
|
+
const parentType2 = getSelectedUnionType(namedType, selectionNode);
|
|
712
|
+
return formifyNode({
|
|
713
|
+
fieldOrInlineFragmentNode: selectionNode,
|
|
714
|
+
parentType: parentType2,
|
|
715
|
+
path
|
|
716
|
+
});
|
|
717
|
+
}
|
|
718
|
+
return __spreadProps(__spreadValues({}, selectionNode), {
|
|
719
|
+
selectionSet: {
|
|
720
|
+
kind: "SelectionSet",
|
|
721
|
+
selections: selectionNode.selectionSet.selections.map((subSelectionNode) => {
|
|
722
|
+
switch (subSelectionNode.kind) {
|
|
723
|
+
case "Field":
|
|
724
|
+
const parentType2 = getSelectedUnionType(namedType, selectionNode);
|
|
725
|
+
return formifyField({
|
|
726
|
+
fieldNode: subSelectionNode,
|
|
727
|
+
parentType: parentType2,
|
|
728
|
+
path
|
|
729
|
+
});
|
|
730
|
+
default:
|
|
731
|
+
throw new FormifyError("UNEXPECTED", `selection ${subSelectionNode.kind}`);
|
|
732
|
+
}
|
|
733
|
+
})
|
|
734
|
+
}
|
|
735
|
+
});
|
|
736
|
+
default:
|
|
737
|
+
throw new FormifyError("UNEXPECTED", `selection ${selectionNode.kind}`);
|
|
738
|
+
}
|
|
739
|
+
})
|
|
740
|
+
]
|
|
741
|
+
}
|
|
742
|
+
});
|
|
743
|
+
};
|
|
744
|
+
const formifiedQuery = {
|
|
745
|
+
kind: "Document",
|
|
746
|
+
definitions: optimizedQuery.definitions.map((definition) => {
|
|
747
|
+
typeInfo.enter(definition);
|
|
748
|
+
ensureOperationDefinition(definition);
|
|
749
|
+
const type = typeInfo.getType();
|
|
750
|
+
const namedType = G__namespace.getNamedType(type);
|
|
751
|
+
ensureObjectType(namedType);
|
|
752
|
+
return __spreadProps(__spreadValues({}, definition), {
|
|
753
|
+
selectionSet: {
|
|
754
|
+
kind: "SelectionSet",
|
|
755
|
+
selections: definition.selectionSet.selections.map((selectionNode) => {
|
|
756
|
+
switch (selectionNode.kind) {
|
|
757
|
+
case "Field":
|
|
758
|
+
const parentType = type;
|
|
759
|
+
const namedParentType = G__namespace.getNamedType(parentType);
|
|
760
|
+
ensureObjectType(namedParentType);
|
|
761
|
+
const field = getObjectField(namedParentType, selectionNode);
|
|
762
|
+
const namedFieldType = G__namespace.getNamedType(field.type);
|
|
763
|
+
if (isNodeField(namedFieldType)) {
|
|
764
|
+
return formifyNode({
|
|
765
|
+
fieldOrInlineFragmentNode: selectionNode,
|
|
766
|
+
parentType: field.type,
|
|
767
|
+
path: [getNameAndAlias(selectionNode)]
|
|
768
|
+
});
|
|
769
|
+
} else if (isConnectionField(namedFieldType)) {
|
|
770
|
+
return formifyConnection({
|
|
771
|
+
namedFieldType,
|
|
772
|
+
selectionNode,
|
|
773
|
+
path: [getNameAndAlias(selectionNode)]
|
|
774
|
+
});
|
|
775
|
+
}
|
|
776
|
+
if (selectionNode.name.value === COLLECTION_FIELD_NAME || selectionNode.name.value === COLLECTIONS_FIELD_NAME) {
|
|
777
|
+
return __spreadProps(__spreadValues({}, selectionNode), {
|
|
778
|
+
selectionSet: {
|
|
779
|
+
kind: "SelectionSet",
|
|
780
|
+
selections: selectionNode.selectionSet.selections.map((selectionNode2) => {
|
|
781
|
+
switch (selectionNode2.kind) {
|
|
782
|
+
case "Field":
|
|
783
|
+
if (selectionNode2.name.value === COLLECTIONS_DOCUMENTS_NAME) {
|
|
784
|
+
ensureObjectType(namedFieldType);
|
|
785
|
+
const n = namedFieldType.getFields()[COLLECTIONS_DOCUMENTS_NAME];
|
|
786
|
+
const docType = G__namespace.getNamedType(n.type);
|
|
787
|
+
return formifyConnection({
|
|
788
|
+
namedFieldType: docType,
|
|
789
|
+
selectionNode: selectionNode2,
|
|
790
|
+
path: [getNameAndAlias(selectionNode2)]
|
|
791
|
+
});
|
|
792
|
+
}
|
|
793
|
+
return selectionNode2;
|
|
794
|
+
default:
|
|
795
|
+
throw new FormifyError("NOOP");
|
|
796
|
+
}
|
|
797
|
+
})
|
|
798
|
+
}
|
|
799
|
+
});
|
|
800
|
+
}
|
|
801
|
+
throw new FormifyError("NOOP");
|
|
802
|
+
default:
|
|
803
|
+
throw new FormifyError("UNEXPECTED");
|
|
804
|
+
}
|
|
805
|
+
})
|
|
806
|
+
}
|
|
807
|
+
});
|
|
808
|
+
})
|
|
809
|
+
};
|
|
810
|
+
nodes.map((node2) => {
|
|
811
|
+
const namePath = [];
|
|
812
|
+
const aliasPath = [];
|
|
813
|
+
node2.path.forEach((p) => {
|
|
814
|
+
namePath.push(p.name);
|
|
815
|
+
aliasPath.push(p.alias);
|
|
816
|
+
if (p.list) {
|
|
817
|
+
namePath.push("NUM");
|
|
818
|
+
aliasPath.push("NUM");
|
|
819
|
+
}
|
|
820
|
+
});
|
|
821
|
+
JSON.stringify({
|
|
822
|
+
namePath: namePath.join("."),
|
|
823
|
+
aliasPath: aliasPath.join(".")
|
|
824
|
+
}, null, 2);
|
|
825
|
+
});
|
|
826
|
+
return { formifiedQuery, nodes };
|
|
827
|
+
};
|
|
398
828
|
const captureBranchName = /^refs\/heads\/(.*)/;
|
|
399
829
|
const parseRefForBranchName = (ref) => {
|
|
400
830
|
const matches = ref.match(captureBranchName);
|
|
@@ -435,13 +865,21 @@ mutation addPendingDocumentMutation(
|
|
|
435
865
|
};
|
|
436
866
|
this.getSchema = async () => {
|
|
437
867
|
if (!this.schema) {
|
|
438
|
-
const data = await this.request(
|
|
868
|
+
const data = await this.request(G.getIntrospectionQuery(), {
|
|
439
869
|
variables: {}
|
|
440
870
|
});
|
|
441
|
-
this.schema =
|
|
871
|
+
this.schema = G.buildClientSchema(data);
|
|
442
872
|
}
|
|
443
873
|
return this.schema;
|
|
444
874
|
};
|
|
875
|
+
this.getOptimizedQuery = async (documentNode) => {
|
|
876
|
+
const data = await this.request(`query GetOptimizedQuery($queryString: String!) {
|
|
877
|
+
getOptimizedQuery(queryString: $queryString)
|
|
878
|
+
}`, {
|
|
879
|
+
variables: { queryString: G.print(documentNode) }
|
|
880
|
+
});
|
|
881
|
+
return G.parse(data.getOptimizedQuery);
|
|
882
|
+
};
|
|
445
883
|
this.options = options;
|
|
446
884
|
this.setBranch(options.branch);
|
|
447
885
|
this.events.subscribe("branch:change", ({ branchName }) => {
|
|
@@ -501,10 +939,23 @@ mutation addPendingDocumentMutation(
|
|
|
501
939
|
this.contentApiBase = ((_c = this.options.tinaioConfig) == null ? void 0 : _c.contentApiUrlOverride) || `https://content.tinajs.io`;
|
|
502
940
|
this.contentApiUrl = this.options.customContentApiUrl || `${this.contentApiBase}/content/${this.options.clientId}/github/${encodedBranch}`;
|
|
503
941
|
}
|
|
504
|
-
async requestWithForm(query, {
|
|
942
|
+
async requestWithForm(query, {
|
|
943
|
+
variables,
|
|
944
|
+
useUnstableFormify
|
|
945
|
+
}) {
|
|
505
946
|
const schema = await this.getSchema();
|
|
506
|
-
|
|
507
|
-
|
|
947
|
+
let formifiedQuery;
|
|
948
|
+
if (useUnstableFormify) {
|
|
949
|
+
const res = await formify({
|
|
950
|
+
schema,
|
|
951
|
+
query: G.print(query(gql__default["default"])),
|
|
952
|
+
getOptimizedQuery: this.getOptimizedQuery
|
|
953
|
+
});
|
|
954
|
+
formifiedQuery = res.formifiedQuery;
|
|
955
|
+
} else {
|
|
956
|
+
formifiedQuery = formify$1(query(gql__default["default"]), schema);
|
|
957
|
+
}
|
|
958
|
+
return this.request(G.print(formifiedQuery), { variables });
|
|
508
959
|
}
|
|
509
960
|
async request(query, { variables }) {
|
|
510
961
|
const res = await fetch(this.contentApiUrl, {
|
|
@@ -514,7 +965,7 @@ mutation addPendingDocumentMutation(
|
|
|
514
965
|
Authorization: "Bearer " + (await this.getToken()).id_token
|
|
515
966
|
},
|
|
516
967
|
body: JSON.stringify({
|
|
517
|
-
query: typeof query === "function" ?
|
|
968
|
+
query: typeof query === "function" ? G.print(query(gql__default["default"])) : query,
|
|
518
969
|
variables
|
|
519
970
|
})
|
|
520
971
|
});
|
|
@@ -730,6 +1181,9 @@ mutation addPendingDocumentMutation(
|
|
|
730
1181
|
constructor(cms) {
|
|
731
1182
|
this.api = cms.api.tina;
|
|
732
1183
|
}
|
|
1184
|
+
async isAuthenticated() {
|
|
1185
|
+
return await this.api.isAuthenticated();
|
|
1186
|
+
}
|
|
733
1187
|
async fetchCollections() {
|
|
734
1188
|
const response = await this.api.request(`#graphql
|
|
735
1189
|
query{
|
|
@@ -1032,7 +1486,8 @@ mutation addPendingDocumentMutation(
|
|
|
1032
1486
|
const formIds = [];
|
|
1033
1487
|
setIsLoading(true);
|
|
1034
1488
|
cms.api.tina.requestWithForm((gql2) => gql2(query), {
|
|
1035
|
-
variables
|
|
1489
|
+
variables,
|
|
1490
|
+
useUnstableFormify: cms.flags.get("use-unstable-formify")
|
|
1036
1491
|
}).then((payload) => {
|
|
1037
1492
|
cms.plugins.remove(new toolkit.FormMetaPlugin({ name: "tina-admin-link" }));
|
|
1038
1493
|
setData(payload);
|
|
@@ -1403,1323 +1858,7 @@ mutation addPendingDocumentMutation(
|
|
|
1403
1858
|
};
|
|
1404
1859
|
}, [plugin]);
|
|
1405
1860
|
};
|
|
1406
|
-
var styles = `/**
|
|
1407
|
-
Use a better box model (opinionated).
|
|
1408
|
-
*/
|
|
1409
|
-
|
|
1410
|
-
.tina-tailwind *,
|
|
1411
|
-
.tina-tailwind ::before,
|
|
1412
|
-
.tina-tailwind ::after {
|
|
1413
|
-
box-sizing: border-box;
|
|
1414
|
-
}
|
|
1415
|
-
|
|
1416
|
-
/**
|
|
1417
|
-
Use a more readable tab size (opinionated).
|
|
1418
|
-
*/
|
|
1419
|
-
|
|
1420
|
-
.tina-tailwind html {
|
|
1421
|
-
-moz-tab-size: 4;
|
|
1422
|
-
tab-size: 4;
|
|
1423
|
-
}
|
|
1424
|
-
|
|
1425
|
-
/**
|
|
1426
|
-
1. Correct the line height in all browsers.
|
|
1427
|
-
2. Prevent adjustments of font size after orientation changes in iOS.
|
|
1428
|
-
*/
|
|
1429
|
-
|
|
1430
|
-
.tina-tailwind html {
|
|
1431
|
-
line-height: 1.15; /* 1 */
|
|
1432
|
-
-webkit-text-size-adjust: 100%; /* 2 */
|
|
1433
|
-
}
|
|
1434
|
-
|
|
1435
|
-
/**
|
|
1436
|
-
Remove the margin in all browsers.
|
|
1437
|
-
*/
|
|
1438
|
-
|
|
1439
|
-
.tina-tailwind body {
|
|
1440
|
-
margin: 0;
|
|
1441
|
-
}
|
|
1442
|
-
|
|
1443
|
-
/**
|
|
1444
|
-
Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)
|
|
1445
|
-
*/
|
|
1446
|
-
|
|
1447
|
-
.tina-tailwind body {
|
|
1448
|
-
font-family:
|
|
1449
|
-
system-ui,
|
|
1450
|
-
-apple-system, /* Firefox supports this but not yet \`system-ui\` */
|
|
1451
|
-
'Segoe UI',
|
|
1452
|
-
Roboto,
|
|
1453
|
-
Helvetica,
|
|
1454
|
-
Arial,
|
|
1455
|
-
sans-serif,
|
|
1456
|
-
'Apple Color Emoji',
|
|
1457
|
-
'Segoe UI Emoji';
|
|
1458
|
-
}
|
|
1459
|
-
|
|
1460
|
-
/**
|
|
1461
|
-
1. Add the correct height in Firefox.
|
|
1462
|
-
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
|
|
1463
|
-
*/
|
|
1464
|
-
|
|
1465
|
-
.tina-tailwind hr {
|
|
1466
|
-
height: 0; /* 1 */
|
|
1467
|
-
color: inherit; /* 2 */
|
|
1468
|
-
}
|
|
1469
|
-
|
|
1470
|
-
/**
|
|
1471
|
-
Add the correct text decoration in Chrome, Edge, and Safari.
|
|
1472
|
-
*/
|
|
1473
|
-
|
|
1474
|
-
.tina-tailwind abbr[title] {
|
|
1475
|
-
text-decoration: underline dotted;
|
|
1476
|
-
}
|
|
1477
|
-
|
|
1478
|
-
/**
|
|
1479
|
-
Add the correct font weight in Edge and Safari.
|
|
1480
|
-
*/
|
|
1481
|
-
|
|
1482
|
-
.tina-tailwind b,
|
|
1483
|
-
.tina-tailwind strong {
|
|
1484
|
-
font-weight: bolder;
|
|
1485
|
-
}
|
|
1486
|
-
|
|
1487
|
-
/**
|
|
1488
|
-
1. Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)
|
|
1489
|
-
2. Correct the odd 'em' font sizing in all browsers.
|
|
1490
|
-
*/
|
|
1491
|
-
|
|
1492
|
-
.tina-tailwind code,
|
|
1493
|
-
.tina-tailwind kbd,
|
|
1494
|
-
.tina-tailwind samp,
|
|
1495
|
-
.tina-tailwind pre {
|
|
1496
|
-
font-family:
|
|
1497
|
-
ui-monospace,
|
|
1498
|
-
SFMono-Regular,
|
|
1499
|
-
Consolas,
|
|
1500
|
-
'Liberation Mono',
|
|
1501
|
-
Menlo,
|
|
1502
|
-
monospace; /* 1 */
|
|
1503
|
-
font-size: 1em; /* 2 */
|
|
1504
|
-
}
|
|
1505
|
-
|
|
1506
|
-
/**
|
|
1507
|
-
Add the correct font size in all browsers.
|
|
1508
|
-
*/
|
|
1509
|
-
|
|
1510
|
-
.tina-tailwind small {
|
|
1511
|
-
font-size: 80%;
|
|
1512
|
-
}
|
|
1513
|
-
|
|
1514
|
-
/**
|
|
1515
|
-
Prevent 'sub' and 'sup' elements from affecting the line height in all browsers.
|
|
1516
|
-
*/
|
|
1517
|
-
|
|
1518
|
-
.tina-tailwind sub,
|
|
1519
|
-
.tina-tailwind sup {
|
|
1520
|
-
font-size: 75%;
|
|
1521
|
-
line-height: 0;
|
|
1522
|
-
position: relative;
|
|
1523
|
-
vertical-align: baseline;
|
|
1524
|
-
}
|
|
1525
|
-
|
|
1526
|
-
/*
|
|
1527
|
-
Text-level semantics
|
|
1528
|
-
====================
|
|
1529
|
-
*/
|
|
1530
|
-
|
|
1531
|
-
.tina-tailwind sub {
|
|
1532
|
-
bottom: -0.25em;
|
|
1533
|
-
}
|
|
1534
|
-
|
|
1535
|
-
/*
|
|
1536
|
-
Grouping content
|
|
1537
|
-
================
|
|
1538
|
-
*/
|
|
1539
|
-
|
|
1540
|
-
.tina-tailwind sup {
|
|
1541
|
-
top: -0.5em;
|
|
1542
|
-
}
|
|
1543
|
-
|
|
1544
|
-
/**
|
|
1545
|
-
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
|
|
1546
|
-
2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
|
|
1547
|
-
*/
|
|
1548
|
-
|
|
1549
|
-
.tina-tailwind table {
|
|
1550
|
-
text-indent: 0; /* 1 */
|
|
1551
|
-
border-color: inherit; /* 2 */
|
|
1552
|
-
}
|
|
1553
|
-
|
|
1554
|
-
/**
|
|
1555
|
-
1. Change the font styles in all browsers.
|
|
1556
|
-
2. Remove the margin in Firefox and Safari.
|
|
1557
|
-
*/
|
|
1558
|
-
|
|
1559
|
-
.tina-tailwind button,
|
|
1560
|
-
.tina-tailwind input,
|
|
1561
|
-
.tina-tailwind optgroup,
|
|
1562
|
-
.tina-tailwind select,
|
|
1563
|
-
.tina-tailwind textarea {
|
|
1564
|
-
font-family: inherit; /* 1 */
|
|
1565
|
-
font-size: 100%; /* 1 */
|
|
1566
|
-
line-height: 1.15; /* 1 */
|
|
1567
|
-
margin: 0; /* 2 */
|
|
1568
|
-
}
|
|
1569
|
-
|
|
1570
|
-
/**
|
|
1571
|
-
Remove the inheritance of text transform in Edge and Firefox.
|
|
1572
|
-
1. Remove the inheritance of text transform in Firefox.
|
|
1573
|
-
*/
|
|
1574
|
-
|
|
1575
|
-
.tina-tailwind button,
|
|
1576
|
-
.tina-tailwind select { /* 1 */
|
|
1577
|
-
text-transform: none;
|
|
1578
|
-
}
|
|
1579
|
-
|
|
1580
|
-
/**
|
|
1581
|
-
Correct the inability to style clickable types in iOS and Safari.
|
|
1582
|
-
*/
|
|
1583
|
-
|
|
1584
|
-
.tina-tailwind button,
|
|
1585
|
-
.tina-tailwind [type='button'],
|
|
1586
|
-
.tina-tailwind [type='reset'],
|
|
1587
|
-
.tina-tailwind [type='submit'] {
|
|
1588
|
-
-webkit-appearance: button;
|
|
1589
|
-
}
|
|
1590
|
-
|
|
1591
|
-
/**
|
|
1592
|
-
Remove the inner border and padding in Firefox.
|
|
1593
|
-
*/
|
|
1594
|
-
|
|
1595
|
-
.tina-tailwind ::-moz-focus-inner {
|
|
1596
|
-
border-style: none;
|
|
1597
|
-
padding: 0;
|
|
1598
|
-
}
|
|
1599
|
-
|
|
1600
|
-
/**
|
|
1601
|
-
Restore the focus styles unset by the previous rule.
|
|
1602
|
-
*/
|
|
1603
|
-
|
|
1604
|
-
.tina-tailwind :-moz-focusring {
|
|
1605
|
-
outline: 1px dotted ButtonText;
|
|
1606
|
-
}
|
|
1607
|
-
|
|
1608
|
-
/**
|
|
1609
|
-
Remove the additional ':invalid' styles in Firefox.
|
|
1610
|
-
See: https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737
|
|
1611
|
-
*/
|
|
1612
|
-
|
|
1613
|
-
.tina-tailwind :-moz-ui-invalid {
|
|
1614
|
-
box-shadow: none;
|
|
1615
|
-
}
|
|
1616
|
-
|
|
1617
|
-
/**
|
|
1618
|
-
Remove the padding so developers are not caught out when they zero out 'fieldset' elements in all browsers.
|
|
1619
|
-
*/
|
|
1620
|
-
|
|
1621
|
-
.tina-tailwind legend {
|
|
1622
|
-
padding: 0;
|
|
1623
|
-
}
|
|
1624
|
-
|
|
1625
|
-
/**
|
|
1626
|
-
Add the correct vertical alignment in Chrome and Firefox.
|
|
1627
|
-
*/
|
|
1628
|
-
|
|
1629
|
-
.tina-tailwind progress {
|
|
1630
|
-
vertical-align: baseline;
|
|
1631
|
-
}
|
|
1632
|
-
|
|
1633
|
-
/**
|
|
1634
|
-
Correct the cursor style of increment and decrement buttons in Safari.
|
|
1635
|
-
*/
|
|
1636
|
-
|
|
1637
|
-
.tina-tailwind ::-webkit-inner-spin-button,
|
|
1638
|
-
.tina-tailwind ::-webkit-outer-spin-button {
|
|
1639
|
-
height: auto;
|
|
1640
|
-
}
|
|
1641
|
-
|
|
1642
|
-
/**
|
|
1643
|
-
1. Correct the odd appearance in Chrome and Safari.
|
|
1644
|
-
2. Correct the outline style in Safari.
|
|
1645
|
-
*/
|
|
1646
|
-
|
|
1647
|
-
.tina-tailwind [type='search'] {
|
|
1648
|
-
-webkit-appearance: textfield; /* 1 */
|
|
1649
|
-
outline-offset: -2px; /* 2 */
|
|
1650
|
-
}
|
|
1651
|
-
|
|
1652
|
-
/**
|
|
1653
|
-
Remove the inner padding in Chrome and Safari on macOS.
|
|
1654
|
-
*/
|
|
1655
|
-
|
|
1656
|
-
.tina-tailwind ::-webkit-search-decoration {
|
|
1657
|
-
-webkit-appearance: none;
|
|
1658
|
-
}
|
|
1659
|
-
|
|
1660
|
-
/**
|
|
1661
|
-
1. Correct the inability to style clickable types in iOS and Safari.
|
|
1662
|
-
2. Change font properties to 'inherit' in Safari.
|
|
1663
|
-
*/
|
|
1664
|
-
|
|
1665
|
-
.tina-tailwind ::-webkit-file-upload-button {
|
|
1666
|
-
-webkit-appearance: button; /* 1 */
|
|
1667
|
-
font: inherit; /* 2 */
|
|
1668
|
-
}
|
|
1669
|
-
|
|
1670
|
-
/*
|
|
1671
|
-
Add the correct display in Chrome and Safari.
|
|
1672
|
-
*/
|
|
1673
|
-
|
|
1674
|
-
.tina-tailwind summary {
|
|
1675
|
-
display: list-item;
|
|
1676
|
-
}
|
|
1677
|
-
|
|
1678
|
-
/**
|
|
1679
|
-
* Removes the default spacing and border for appropriate elements.
|
|
1680
|
-
*/
|
|
1681
|
-
|
|
1682
|
-
.tina-tailwind blockquote,
|
|
1683
|
-
.tina-tailwind dl,
|
|
1684
|
-
.tina-tailwind dd,
|
|
1685
|
-
.tina-tailwind h1,
|
|
1686
|
-
.tina-tailwind h2,
|
|
1687
|
-
.tina-tailwind h3,
|
|
1688
|
-
.tina-tailwind h4,
|
|
1689
|
-
.tina-tailwind h5,
|
|
1690
|
-
.tina-tailwind h6,
|
|
1691
|
-
.tina-tailwind hr,
|
|
1692
|
-
.tina-tailwind figure,
|
|
1693
|
-
.tina-tailwind p,
|
|
1694
|
-
.tina-tailwind pre {
|
|
1695
|
-
margin: 0;
|
|
1696
|
-
}
|
|
1697
|
-
|
|
1698
|
-
/**
|
|
1699
|
-
* Manually forked from SUIT CSS Base: https://github.com/suitcss/base
|
|
1700
|
-
* A thin layer on top of normalize.css that provides a starting point more
|
|
1701
|
-
* suitable for web applications.
|
|
1702
|
-
*/
|
|
1703
|
-
|
|
1704
|
-
.tina-tailwind button {
|
|
1705
|
-
background-color: transparent;
|
|
1706
|
-
background-image: none;
|
|
1707
|
-
}
|
|
1708
|
-
|
|
1709
|
-
/*
|
|
1710
|
-
Interactive
|
|
1711
|
-
===========
|
|
1712
|
-
*/
|
|
1713
|
-
|
|
1714
|
-
.tina-tailwind fieldset {
|
|
1715
|
-
margin: 0;
|
|
1716
|
-
padding: 0;
|
|
1717
|
-
}
|
|
1718
|
-
|
|
1719
|
-
/*
|
|
1720
|
-
Forms
|
|
1721
|
-
=====
|
|
1722
|
-
*/
|
|
1723
|
-
|
|
1724
|
-
.tina-tailwind ol,
|
|
1725
|
-
.tina-tailwind ul {
|
|
1726
|
-
list-style: none;
|
|
1727
|
-
margin: 0;
|
|
1728
|
-
padding: 0;
|
|
1729
|
-
}
|
|
1730
|
-
|
|
1731
|
-
/**
|
|
1732
|
-
* 1. Use the user's configured \`sans\` font-family (with Tailwind's default
|
|
1733
|
-
* sans-serif font stack as a fallback) as a sane default.
|
|
1734
|
-
* 2. Use Tailwind's default "normal" line-height so the user isn't forced
|
|
1735
|
-
* to override it to ensure consistency even when using the default theme.
|
|
1736
|
-
*/
|
|
1737
|
-
|
|
1738
|
-
.tina-tailwind html {
|
|
1739
|
-
font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; /* 1 */
|
|
1740
|
-
line-height: 1.5; /* 2 */
|
|
1741
|
-
}
|
|
1742
|
-
|
|
1743
|
-
/**
|
|
1744
|
-
* Inherit font-family and line-height from \`html\` so users can set them as
|
|
1745
|
-
* a class directly on the \`html\` element.
|
|
1746
|
-
*/
|
|
1747
|
-
|
|
1748
|
-
.tina-tailwind body {
|
|
1749
|
-
font-family: inherit;
|
|
1750
|
-
line-height: inherit;
|
|
1751
|
-
}
|
|
1752
|
-
|
|
1753
|
-
/**
|
|
1754
|
-
* 1. Prevent padding and border from affecting element width.
|
|
1755
|
-
*
|
|
1756
|
-
* We used to set this in the html element and inherit from
|
|
1757
|
-
* the parent element for everything else. This caused issues
|
|
1758
|
-
* in shadow-dom-enhanced elements like <details> where the content
|
|
1759
|
-
* is wrapped by a div with box-sizing set to \`content-box\`.
|
|
1760
|
-
*
|
|
1761
|
-
* https://github.com/mozdevs/cssremedy/issues/4
|
|
1762
|
-
*
|
|
1763
|
-
*
|
|
1764
|
-
* 2. Allow adding a border to an element by just adding a border-width.
|
|
1765
|
-
*
|
|
1766
|
-
* By default, the way the browser specifies that an element should have no
|
|
1767
|
-
* border is by setting it's border-style to \`none\` in the user-agent
|
|
1768
|
-
* stylesheet.
|
|
1769
|
-
*
|
|
1770
|
-
* In order to easily add borders to elements by just setting the \`border-width\`
|
|
1771
|
-
* property, we change the default border-style for all elements to \`solid\`, and
|
|
1772
|
-
* use border-width to hide them instead. This way our \`border\` utilities only
|
|
1773
|
-
* need to set the \`border-width\` property instead of the entire \`border\`
|
|
1774
|
-
* shorthand, making our border utilities much more straightforward to compose.
|
|
1775
|
-
*
|
|
1776
|
-
* https://github.com/tailwindcss/tailwindcss/pull/116
|
|
1777
|
-
*/
|
|
1778
|
-
|
|
1779
|
-
.tina-tailwind *,
|
|
1780
|
-
.tina-tailwind ::before,
|
|
1781
|
-
.tina-tailwind ::after {
|
|
1782
|
-
box-sizing: border-box; /* 1 */
|
|
1783
|
-
border-width: 0; /* 2 */
|
|
1784
|
-
border-style: solid; /* 2 */
|
|
1785
|
-
border-color: currentColor; /* 2 */
|
|
1786
|
-
}
|
|
1787
|
-
|
|
1788
|
-
/*
|
|
1789
|
-
* Ensure horizontal rules are visible by default
|
|
1790
|
-
*/
|
|
1791
|
-
|
|
1792
|
-
.tina-tailwind hr {
|
|
1793
|
-
border-top-width: 1px;
|
|
1794
|
-
}
|
|
1795
|
-
|
|
1796
|
-
/**
|
|
1797
|
-
* Undo the \`border-style: none\` reset that Normalize applies to images so that
|
|
1798
|
-
* our \`border-{width}\` utilities have the expected effect.
|
|
1799
|
-
*
|
|
1800
|
-
* The Normalize reset is unnecessary for us since we default the border-width
|
|
1801
|
-
* to 0 on all elements.
|
|
1802
|
-
*
|
|
1803
|
-
* https://github.com/tailwindcss/tailwindcss/issues/362
|
|
1804
|
-
*/
|
|
1805
|
-
|
|
1806
|
-
.tina-tailwind img {
|
|
1807
|
-
border-style: solid;
|
|
1808
|
-
}
|
|
1809
|
-
|
|
1810
|
-
/**
|
|
1811
|
-
* Tailwind custom reset styles
|
|
1812
|
-
*/
|
|
1813
|
-
|
|
1814
|
-
.tina-tailwind textarea {
|
|
1815
|
-
resize: vertical;
|
|
1816
|
-
}
|
|
1817
|
-
|
|
1818
|
-
/*
|
|
1819
|
-
Tabular data
|
|
1820
|
-
============
|
|
1821
|
-
*/
|
|
1822
|
-
|
|
1823
|
-
.tina-tailwind input::placeholder,
|
|
1824
|
-
.tina-tailwind textarea::placeholder {
|
|
1825
|
-
opacity: 1;
|
|
1826
|
-
color: #918c9e;
|
|
1827
|
-
}
|
|
1828
|
-
|
|
1829
|
-
/*
|
|
1830
|
-
Sections
|
|
1831
|
-
========
|
|
1832
|
-
*/
|
|
1833
|
-
|
|
1834
|
-
.tina-tailwind button,
|
|
1835
|
-
.tina-tailwind [role="button"] {
|
|
1836
|
-
cursor: pointer;
|
|
1837
|
-
}
|
|
1838
|
-
|
|
1839
|
-
/**
|
|
1840
|
-
* Override legacy focus reset from Normalize with modern Firefox focus styles.
|
|
1841
|
-
*
|
|
1842
|
-
* This is actually an improvement over the new defaults in Firefox in our testing,
|
|
1843
|
-
* as it triggers the better focus styles even for links, which still use a dotted
|
|
1844
|
-
* outline in Firefox by default.
|
|
1845
|
-
*/
|
|
1846
|
-
|
|
1847
|
-
.tina-tailwind :-moz-focusring {
|
|
1848
|
-
outline: auto;
|
|
1849
|
-
}
|
|
1850
|
-
|
|
1851
|
-
/*
|
|
1852
|
-
Document
|
|
1853
|
-
========
|
|
1854
|
-
*/
|
|
1855
|
-
|
|
1856
|
-
.tina-tailwind table {
|
|
1857
|
-
border-collapse: collapse;
|
|
1858
|
-
}
|
|
1859
|
-
|
|
1860
|
-
/*! modern-normalize v1.1.0 | MIT License | https://github.com/sindresorhus/modern-normalize */
|
|
1861
|
-
|
|
1862
|
-
.tina-tailwind h1,
|
|
1863
|
-
.tina-tailwind h2,
|
|
1864
|
-
.tina-tailwind h3,
|
|
1865
|
-
.tina-tailwind h4,
|
|
1866
|
-
.tina-tailwind h5,
|
|
1867
|
-
.tina-tailwind h6 {
|
|
1868
|
-
font-size: inherit;
|
|
1869
|
-
font-weight: inherit;
|
|
1870
|
-
}
|
|
1871
|
-
|
|
1872
|
-
/**
|
|
1873
|
-
* Reset links to optimize for opt-in styling instead of
|
|
1874
|
-
* opt-out.
|
|
1875
|
-
*/
|
|
1876
|
-
|
|
1877
|
-
.tina-tailwind a {
|
|
1878
|
-
color: inherit;
|
|
1879
|
-
text-decoration: inherit;
|
|
1880
|
-
}
|
|
1881
|
-
|
|
1882
|
-
/**
|
|
1883
|
-
* Reset form element properties that are easy to forget to
|
|
1884
|
-
* style explicitly so you don't inadvertently introduce
|
|
1885
|
-
* styles that deviate from your design system. These styles
|
|
1886
|
-
* supplement a partial reset that is already applied by
|
|
1887
|
-
* normalize.css.
|
|
1888
|
-
*/
|
|
1889
|
-
|
|
1890
|
-
.tina-tailwind button,
|
|
1891
|
-
.tina-tailwind input,
|
|
1892
|
-
.tina-tailwind optgroup,
|
|
1893
|
-
.tina-tailwind select,
|
|
1894
|
-
.tina-tailwind textarea {
|
|
1895
|
-
padding: 0;
|
|
1896
|
-
line-height: inherit;
|
|
1897
|
-
color: inherit;
|
|
1898
|
-
}
|
|
1899
|
-
|
|
1900
|
-
/**
|
|
1901
|
-
* Use the configured 'mono' font family for elements that
|
|
1902
|
-
* are expected to be rendered with a monospace font, falling
|
|
1903
|
-
* back to the system monospace stack if there is no configured
|
|
1904
|
-
* 'mono' font family.
|
|
1905
|
-
*/
|
|
1906
|
-
|
|
1907
|
-
.tina-tailwind pre,
|
|
1908
|
-
.tina-tailwind code,
|
|
1909
|
-
.tina-tailwind kbd,
|
|
1910
|
-
.tina-tailwind samp {
|
|
1911
|
-
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
|
1912
|
-
}
|
|
1913
|
-
|
|
1914
|
-
/**
|
|
1915
|
-
* 1. Make replaced elements \`display: block\` by default as that's
|
|
1916
|
-
* the behavior you want almost all of the time. Inspired by
|
|
1917
|
-
* CSS Remedy, with \`svg\` added as well.
|
|
1918
|
-
*
|
|
1919
|
-
* https://github.com/mozdevs/cssremedy/issues/14
|
|
1920
|
-
*
|
|
1921
|
-
* 2. Add \`vertical-align: middle\` to align replaced elements more
|
|
1922
|
-
* sensibly by default when overriding \`display\` by adding a
|
|
1923
|
-
* utility like \`inline\`.
|
|
1924
|
-
*
|
|
1925
|
-
* This can trigger a poorly considered linting error in some
|
|
1926
|
-
* tools but is included by design.
|
|
1927
|
-
*
|
|
1928
|
-
* https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210
|
|
1929
|
-
*/
|
|
1930
|
-
|
|
1931
|
-
.tina-tailwind img,
|
|
1932
|
-
.tina-tailwind svg,
|
|
1933
|
-
.tina-tailwind video,
|
|
1934
|
-
.tina-tailwind canvas,
|
|
1935
|
-
.tina-tailwind audio,
|
|
1936
|
-
.tina-tailwind iframe,
|
|
1937
|
-
.tina-tailwind embed,
|
|
1938
|
-
.tina-tailwind object {
|
|
1939
|
-
display: block; /* 1 */
|
|
1940
|
-
vertical-align: middle; /* 2 */
|
|
1941
|
-
}
|
|
1942
|
-
|
|
1943
|
-
/**
|
|
1944
|
-
* Constrain images and videos to the parent width and preserve
|
|
1945
|
-
* their intrinsic aspect ratio.
|
|
1946
|
-
*
|
|
1947
|
-
* https://github.com/mozdevs/cssremedy/issues/14
|
|
1948
|
-
*/
|
|
1949
|
-
|
|
1950
|
-
.tina-tailwind img,
|
|
1951
|
-
.tina-tailwind video {
|
|
1952
|
-
max-width: 100%;
|
|
1953
|
-
height: auto;
|
|
1954
|
-
}
|
|
1955
|
-
|
|
1956
|
-
/**
|
|
1957
|
-
* Ensure the default browser behavior of the \`hidden\` attribute.
|
|
1958
|
-
*/
|
|
1959
|
-
|
|
1960
|
-
.tina-tailwind [hidden] {
|
|
1961
|
-
display: none;
|
|
1962
|
-
}
|
|
1963
|
-
|
|
1964
|
-
/*! tailwindcss v2.2.19 | MIT License | https://tailwindcss.com
|
|
1965
|
-
*/
|
|
1966
|
-
|
|
1967
|
-
.tina-tailwind *, .tina-tailwind ::before, .tina-tailwind ::after {
|
|
1968
|
-
--tw-translate-x: 0;
|
|
1969
|
-
--tw-translate-y: 0;
|
|
1970
|
-
--tw-rotate: 0;
|
|
1971
|
-
--tw-skew-x: 0;
|
|
1972
|
-
--tw-skew-y: 0;
|
|
1973
|
-
--tw-scale-x: 1;
|
|
1974
|
-
--tw-scale-y: 1;
|
|
1975
|
-
--tw-transform: translateX(var(--tw-translate-x)) translateY(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));
|
|
1976
|
-
}
|
|
1977
|
-
|
|
1978
|
-
.tina-tailwind *, .tina-tailwind ::before, .tina-tailwind ::after {
|
|
1979
|
-
--tw-border-opacity: 1;
|
|
1980
|
-
border-color: rgba(225, 221, 236, var(--tw-border-opacity));
|
|
1981
|
-
}
|
|
1982
|
-
|
|
1983
|
-
.tina-tailwind *, .tina-tailwind ::before, .tina-tailwind ::after {
|
|
1984
|
-
--tw-ring-offset-shadow: 0 0 #0000;
|
|
1985
|
-
--tw-ring-shadow: 0 0 #0000;
|
|
1986
|
-
--tw-shadow: 0 0 #0000;
|
|
1987
|
-
}
|
|
1988
|
-
|
|
1989
|
-
.tina-tailwind *, .tina-tailwind ::before, .tina-tailwind ::after {
|
|
1990
|
-
--tw-ring-inset: var(--tw-empty,/*!*/ /*!*/);
|
|
1991
|
-
--tw-ring-offset-width: 0px;
|
|
1992
|
-
--tw-ring-offset-color: #fff;
|
|
1993
|
-
--tw-ring-color: rgba(0, 132, 255, 0.5);
|
|
1994
|
-
--tw-ring-offset-shadow: 0 0 #0000;
|
|
1995
|
-
--tw-ring-shadow: 0 0 #0000;
|
|
1996
|
-
--tw-shadow: 0 0 #0000;
|
|
1997
|
-
}
|
|
1998
|
-
|
|
1999
|
-
.tina-tailwind *, .tina-tailwind ::before, .tina-tailwind ::after {
|
|
2000
|
-
--tw-blur: var(--tw-empty,/*!*/ /*!*/);
|
|
2001
|
-
--tw-brightness: var(--tw-empty,/*!*/ /*!*/);
|
|
2002
|
-
--tw-contrast: var(--tw-empty,/*!*/ /*!*/);
|
|
2003
|
-
--tw-grayscale: var(--tw-empty,/*!*/ /*!*/);
|
|
2004
|
-
--tw-hue-rotate: var(--tw-empty,/*!*/ /*!*/);
|
|
2005
|
-
--tw-invert: var(--tw-empty,/*!*/ /*!*/);
|
|
2006
|
-
--tw-saturate: var(--tw-empty,/*!*/ /*!*/);
|
|
2007
|
-
--tw-sepia: var(--tw-empty,/*!*/ /*!*/);
|
|
2008
|
-
--tw-drop-shadow: var(--tw-empty,/*!*/ /*!*/);
|
|
2009
|
-
--tw-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
|
2010
|
-
}
|
|
2011
|
-
|
|
2012
|
-
.tina-tailwind .static {
|
|
2013
|
-
position: static !important;
|
|
2014
|
-
}
|
|
2015
|
-
|
|
2016
|
-
.tina-tailwind .fixed {
|
|
2017
|
-
position: fixed !important;
|
|
2018
|
-
}
|
|
2019
|
-
|
|
2020
|
-
.tina-tailwind .absolute {
|
|
2021
|
-
position: absolute !important;
|
|
2022
|
-
}
|
|
2023
|
-
|
|
2024
|
-
.tina-tailwind .relative {
|
|
2025
|
-
position: relative !important;
|
|
2026
|
-
}
|
|
2027
|
-
|
|
2028
|
-
.tina-tailwind .left-0 {
|
|
2029
|
-
left: 0px !important;
|
|
2030
|
-
}
|
|
2031
|
-
|
|
2032
|
-
.tina-tailwind .right-0 {
|
|
2033
|
-
right: 0px !important;
|
|
2034
|
-
}
|
|
2035
|
-
|
|
2036
|
-
.tina-tailwind .bottom-2 {
|
|
2037
|
-
bottom: 8px !important;
|
|
2038
|
-
}
|
|
2039
|
-
|
|
2040
|
-
.tina-tailwind .right-5 {
|
|
2041
|
-
right: 20px !important;
|
|
2042
|
-
}
|
|
2043
|
-
|
|
2044
|
-
.tina-tailwind .z-50 {
|
|
2045
|
-
z-index: 50 !important;
|
|
2046
|
-
}
|
|
2047
|
-
|
|
2048
|
-
.tina-tailwind .mx-auto {
|
|
2049
|
-
margin-left: auto !important;
|
|
2050
|
-
margin-right: auto !important;
|
|
2051
|
-
}
|
|
2052
|
-
|
|
2053
|
-
.tina-tailwind .mr-2 {
|
|
2054
|
-
margin-right: 8px !important;
|
|
2055
|
-
}
|
|
2056
|
-
|
|
2057
|
-
.tina-tailwind .mb-2 {
|
|
2058
|
-
margin-bottom: 8px !important;
|
|
2059
|
-
}
|
|
2060
|
-
|
|
2061
|
-
.tina-tailwind .mb-1 {
|
|
2062
|
-
margin-bottom: 4px !important;
|
|
2063
|
-
}
|
|
2064
|
-
|
|
2065
|
-
.tina-tailwind .-mt-0\\.5 {
|
|
2066
|
-
margin-top: -2px !important;
|
|
2067
|
-
}
|
|
2068
|
-
|
|
2069
|
-
.tina-tailwind .-mt-0 {
|
|
2070
|
-
margin-top: 0px !important;
|
|
2071
|
-
}
|
|
2072
|
-
|
|
2073
|
-
.tina-tailwind .ml-1 {
|
|
2074
|
-
margin-left: 4px !important;
|
|
2075
|
-
}
|
|
2076
|
-
|
|
2077
|
-
.tina-tailwind .mt-2 {
|
|
2078
|
-
margin-top: 8px !important;
|
|
2079
|
-
}
|
|
2080
|
-
|
|
2081
|
-
.tina-tailwind .mr-1\\.5 {
|
|
2082
|
-
margin-right: 6px !important;
|
|
2083
|
-
}
|
|
2084
|
-
|
|
2085
|
-
.tina-tailwind .mr-1 {
|
|
2086
|
-
margin-right: 4px !important;
|
|
2087
|
-
}
|
|
2088
|
-
|
|
2089
|
-
.tina-tailwind .block {
|
|
2090
|
-
display: block !important;
|
|
2091
|
-
}
|
|
2092
|
-
|
|
2093
|
-
.tina-tailwind .inline-block {
|
|
2094
|
-
display: inline-block !important;
|
|
2095
|
-
}
|
|
2096
|
-
|
|
2097
|
-
.tina-tailwind .flex {
|
|
2098
|
-
display: flex !important;
|
|
2099
|
-
}
|
|
2100
|
-
|
|
2101
|
-
.tina-tailwind .inline-flex {
|
|
2102
|
-
display: inline-flex !important;
|
|
2103
|
-
}
|
|
2104
|
-
|
|
2105
|
-
.tina-tailwind .table {
|
|
2106
|
-
display: table !important;
|
|
2107
|
-
}
|
|
2108
|
-
|
|
2109
|
-
.tina-tailwind .h-screen {
|
|
2110
|
-
height: 100vh !important;
|
|
2111
|
-
}
|
|
2112
|
-
|
|
2113
|
-
.tina-tailwind .h-auto {
|
|
2114
|
-
height: auto !important;
|
|
2115
|
-
}
|
|
2116
|
-
|
|
2117
|
-
.tina-tailwind .h-full {
|
|
2118
|
-
height: 100% !important;
|
|
2119
|
-
}
|
|
2120
|
-
|
|
2121
|
-
.tina-tailwind .h-6 {
|
|
2122
|
-
height: 24px !important;
|
|
2123
|
-
}
|
|
2124
|
-
|
|
2125
|
-
.tina-tailwind .h-10 {
|
|
2126
|
-
height: 40px !important;
|
|
2127
|
-
}
|
|
2128
|
-
|
|
2129
|
-
.tina-tailwind .h-5 {
|
|
2130
|
-
height: 20px !important;
|
|
2131
|
-
}
|
|
2132
|
-
|
|
2133
|
-
.tina-tailwind .h-12 {
|
|
2134
|
-
height: 48px !important;
|
|
2135
|
-
}
|
|
2136
|
-
|
|
2137
|
-
.tina-tailwind .w-full {
|
|
2138
|
-
width: 100% !important;
|
|
2139
|
-
}
|
|
2140
|
-
|
|
2141
|
-
.tina-tailwind .w-10 {
|
|
2142
|
-
width: 40px !important;
|
|
2143
|
-
}
|
|
2144
|
-
|
|
2145
|
-
.tina-tailwind .w-auto {
|
|
2146
|
-
width: auto !important;
|
|
2147
|
-
}
|
|
2148
|
-
|
|
2149
|
-
.tina-tailwind .w-5 {
|
|
2150
|
-
width: 20px !important;
|
|
2151
|
-
}
|
|
2152
|
-
|
|
2153
|
-
.tina-tailwind .w-56 {
|
|
2154
|
-
width: 224px !important;
|
|
2155
|
-
}
|
|
2156
|
-
|
|
2157
|
-
.tina-tailwind .w-6 {
|
|
2158
|
-
width: 24px !important;
|
|
2159
|
-
}
|
|
2160
|
-
|
|
2161
|
-
.tina-tailwind .max-w-lg {
|
|
2162
|
-
max-width: 32rem !important;
|
|
2163
|
-
}
|
|
2164
|
-
|
|
2165
|
-
.tina-tailwind .max-w-screen-xl {
|
|
2166
|
-
max-width: 1280px !important;
|
|
2167
|
-
}
|
|
2168
|
-
|
|
2169
|
-
.tina-tailwind .max-w-form {
|
|
2170
|
-
max-width: 900px !important;
|
|
2171
|
-
}
|
|
2172
|
-
|
|
2173
|
-
.tina-tailwind .max-w-full {
|
|
2174
|
-
max-width: 100% !important;
|
|
2175
|
-
}
|
|
2176
|
-
|
|
2177
|
-
.tina-tailwind .flex-1 {
|
|
2178
|
-
flex: 1 1 0% !important;
|
|
2179
|
-
}
|
|
2180
|
-
|
|
2181
|
-
.tina-tailwind .flex-shrink-0 {
|
|
2182
|
-
flex-shrink: 0 !important;
|
|
2183
|
-
}
|
|
2184
|
-
|
|
2185
|
-
.tina-tailwind .flex-grow-0 {
|
|
2186
|
-
flex-grow: 0 !important;
|
|
2187
|
-
}
|
|
2188
|
-
|
|
2189
|
-
.tina-tailwind .table-auto {
|
|
2190
|
-
table-layout: auto !important;
|
|
2191
|
-
}
|
|
2192
|
-
|
|
2193
|
-
.tina-tailwind .origin-top-right {
|
|
2194
|
-
transform-origin: top right !important;
|
|
2195
|
-
}
|
|
2196
|
-
|
|
2197
|
-
.tina-tailwind .translate-y-full {
|
|
2198
|
-
--tw-translate-y: 100% !important;
|
|
2199
|
-
transform: var(--tw-transform) !important;
|
|
2200
|
-
}
|
|
2201
|
-
|
|
2202
|
-
.tina-tailwind .-translate-y-2 {
|
|
2203
|
-
--tw-translate-y: -8px !important;
|
|
2204
|
-
transform: var(--tw-transform) !important;
|
|
2205
|
-
}
|
|
2206
|
-
|
|
2207
|
-
.tina-tailwind .translate-y-0 {
|
|
2208
|
-
--tw-translate-y: 0px !important;
|
|
2209
|
-
transform: var(--tw-transform) !important;
|
|
2210
|
-
}
|
|
2211
|
-
|
|
2212
|
-
.tina-tailwind .scale-95 {
|
|
2213
|
-
--tw-scale-x: .95 !important;
|
|
2214
|
-
--tw-scale-y: .95 !important;
|
|
2215
|
-
transform: var(--tw-transform) !important;
|
|
2216
|
-
}
|
|
2217
|
-
|
|
2218
|
-
.tina-tailwind .scale-100 {
|
|
2219
|
-
--tw-scale-x: 1 !important;
|
|
2220
|
-
--tw-scale-y: 1 !important;
|
|
2221
|
-
transform: var(--tw-transform) !important;
|
|
2222
|
-
}
|
|
2223
|
-
|
|
2224
|
-
.tina-tailwind .transform {
|
|
2225
|
-
transform: var(--tw-transform) !important;
|
|
2226
|
-
}
|
|
2227
|
-
|
|
2228
|
-
.tina-tailwind .cursor-pointer {
|
|
2229
|
-
cursor: pointer !important;
|
|
2230
|
-
}
|
|
2231
|
-
|
|
2232
|
-
.tina-tailwind .flex-col {
|
|
2233
|
-
flex-direction: column !important;
|
|
2234
|
-
}
|
|
2235
|
-
|
|
2236
|
-
.tina-tailwind .items-end {
|
|
2237
|
-
align-items: flex-end !important;
|
|
2238
|
-
}
|
|
2239
|
-
|
|
2240
|
-
.tina-tailwind .items-center {
|
|
2241
|
-
align-items: center !important;
|
|
2242
|
-
}
|
|
2243
|
-
|
|
2244
|
-
.tina-tailwind .items-stretch {
|
|
2245
|
-
align-items: stretch !important;
|
|
2246
|
-
}
|
|
2247
|
-
|
|
2248
|
-
.tina-tailwind .justify-end {
|
|
2249
|
-
justify-content: flex-end !important;
|
|
2250
|
-
}
|
|
2251
|
-
|
|
2252
|
-
.tina-tailwind .justify-center {
|
|
2253
|
-
justify-content: center !important;
|
|
2254
|
-
}
|
|
2255
|
-
|
|
2256
|
-
.tina-tailwind .justify-between {
|
|
2257
|
-
justify-content: space-between !important;
|
|
2258
|
-
}
|
|
2259
|
-
|
|
2260
|
-
.tina-tailwind .gap-0\\.5 {
|
|
2261
|
-
gap: 2px !important;
|
|
2262
|
-
}
|
|
2263
|
-
|
|
2264
|
-
.tina-tailwind .gap-0 {
|
|
2265
|
-
gap: 0px !important;
|
|
2266
|
-
}
|
|
2267
|
-
|
|
2268
|
-
.tina-tailwind .gap-4 {
|
|
2269
|
-
gap: 16px !important;
|
|
2270
|
-
}
|
|
2271
|
-
|
|
2272
|
-
.tina-tailwind .gap-3 {
|
|
2273
|
-
gap: 12px !important;
|
|
2274
|
-
}
|
|
2275
|
-
|
|
2276
|
-
.tina-tailwind .divide-y > :not([hidden]) ~ :not([hidden]) {
|
|
2277
|
-
--tw-divide-y-reverse: 0 !important;
|
|
2278
|
-
border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse))) !important;
|
|
2279
|
-
border-bottom-width: calc(1px * var(--tw-divide-y-reverse)) !important;
|
|
2280
|
-
}
|
|
2281
|
-
|
|
2282
|
-
.tina-tailwind .overflow-hidden {
|
|
2283
|
-
overflow: hidden !important;
|
|
2284
|
-
}
|
|
2285
|
-
|
|
2286
|
-
.tina-tailwind .overflow-y-auto {
|
|
2287
|
-
overflow-y: auto !important;
|
|
2288
|
-
}
|
|
2289
|
-
|
|
2290
|
-
.tina-tailwind .whitespace-nowrap {
|
|
2291
|
-
white-space: nowrap !important;
|
|
2292
|
-
}
|
|
2293
|
-
|
|
2294
|
-
.tina-tailwind .rounded-lg {
|
|
2295
|
-
border-radius: 8px !important;
|
|
2296
|
-
}
|
|
2297
|
-
|
|
2298
|
-
.tina-tailwind .rounded-full {
|
|
2299
|
-
border-radius: 9999px !important;
|
|
2300
|
-
}
|
|
2301
|
-
|
|
2302
|
-
.tina-tailwind .rounded-md {
|
|
2303
|
-
border-radius: 6px !important;
|
|
2304
|
-
}
|
|
2305
|
-
|
|
2306
|
-
.tina-tailwind .border {
|
|
2307
|
-
border-width: 1px !important;
|
|
2308
|
-
}
|
|
2309
|
-
|
|
2310
|
-
.tina-tailwind .border-b {
|
|
2311
|
-
border-bottom-width: 1px !important;
|
|
2312
|
-
}
|
|
2313
|
-
|
|
2314
|
-
.tina-tailwind .border-gray-200 {
|
|
2315
|
-
--tw-border-opacity: 1 !important;
|
|
2316
|
-
border-color: rgba(225, 221, 236, var(--tw-border-opacity)) !important;
|
|
2317
|
-
}
|
|
2318
|
-
|
|
2319
|
-
.tina-tailwind .bg-white {
|
|
2320
|
-
--tw-bg-opacity: 1 !important;
|
|
2321
|
-
background-color: rgba(255, 255, 255, var(--tw-bg-opacity)) !important;
|
|
2322
|
-
}
|
|
2323
|
-
|
|
2324
|
-
.tina-tailwind .bg-gray-50 {
|
|
2325
|
-
--tw-bg-opacity: 1 !important;
|
|
2326
|
-
background-color: rgba(246, 246, 249, var(--tw-bg-opacity)) !important;
|
|
2327
|
-
}
|
|
2328
|
-
|
|
2329
|
-
.tina-tailwind .bg-blue-500 {
|
|
2330
|
-
--tw-bg-opacity: 1 !important;
|
|
2331
|
-
background-color: rgba(0, 132, 255, var(--tw-bg-opacity)) !important;
|
|
2332
|
-
}
|
|
2333
|
-
|
|
2334
|
-
.tina-tailwind .bg-gradient-to-b {
|
|
2335
|
-
background-image: linear-gradient(to bottom, var(--tw-gradient-stops)) !important;
|
|
2336
|
-
}
|
|
2337
|
-
|
|
2338
|
-
.tina-tailwind .from-blue-900 {
|
|
2339
|
-
--tw-gradient-from: #1D2C6C !important;
|
|
2340
|
-
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgba(29, 44, 108, 0)) !important;
|
|
2341
|
-
}
|
|
2342
|
-
|
|
2343
|
-
.tina-tailwind .to-gray-900 {
|
|
2344
|
-
--tw-gradient-to: #252336 !important;
|
|
2345
|
-
}
|
|
2346
|
-
|
|
2347
|
-
.tina-tailwind .px-4 {
|
|
2348
|
-
padding-left: 16px !important;
|
|
2349
|
-
padding-right: 16px !important;
|
|
2350
|
-
}
|
|
2351
|
-
|
|
2352
|
-
.tina-tailwind .py-6 {
|
|
2353
|
-
padding-top: 24px !important;
|
|
2354
|
-
padding-bottom: 24px !important;
|
|
2355
|
-
}
|
|
2356
|
-
|
|
2357
|
-
.tina-tailwind .px-5 {
|
|
2358
|
-
padding-left: 20px !important;
|
|
2359
|
-
padding-right: 20px !important;
|
|
2360
|
-
}
|
|
2361
|
-
|
|
2362
|
-
.tina-tailwind .py-4 {
|
|
2363
|
-
padding-top: 16px !important;
|
|
2364
|
-
padding-bottom: 16px !important;
|
|
2365
|
-
}
|
|
2366
|
-
|
|
2367
|
-
.tina-tailwind .px-12 {
|
|
2368
|
-
padding-left: 48px !important;
|
|
2369
|
-
padding-right: 48px !important;
|
|
2370
|
-
}
|
|
2371
|
-
|
|
2372
|
-
.tina-tailwind .py-10 {
|
|
2373
|
-
padding-top: 40px !important;
|
|
2374
|
-
padding-bottom: 40px !important;
|
|
2375
|
-
}
|
|
2376
|
-
|
|
2377
|
-
.tina-tailwind .px-20 {
|
|
2378
|
-
padding-left: 80px !important;
|
|
2379
|
-
padding-right: 80px !important;
|
|
2380
|
-
}
|
|
2381
|
-
|
|
2382
|
-
.tina-tailwind .px-6 {
|
|
2383
|
-
padding-left: 24px !important;
|
|
2384
|
-
padding-right: 24px !important;
|
|
2385
|
-
}
|
|
2386
|
-
|
|
2387
|
-
.tina-tailwind .py-1 {
|
|
2388
|
-
padding-top: 4px !important;
|
|
2389
|
-
padding-bottom: 4px !important;
|
|
2390
|
-
}
|
|
2391
|
-
|
|
2392
|
-
.tina-tailwind .py-2 {
|
|
2393
|
-
padding-top: 8px !important;
|
|
2394
|
-
padding-bottom: 8px !important;
|
|
2395
|
-
}
|
|
2396
|
-
|
|
2397
|
-
.tina-tailwind .py-3 {
|
|
2398
|
-
padding-top: 12px !important;
|
|
2399
|
-
padding-bottom: 12px !important;
|
|
2400
|
-
}
|
|
2401
|
-
|
|
2402
|
-
.tina-tailwind .pt-4 {
|
|
2403
|
-
padding-top: 16px !important;
|
|
2404
|
-
}
|
|
2405
|
-
|
|
2406
|
-
.tina-tailwind .pb-4 {
|
|
2407
|
-
padding-bottom: 16px !important;
|
|
2408
|
-
}
|
|
2409
|
-
|
|
2410
|
-
.tina-tailwind .pt-18 {
|
|
2411
|
-
padding-top: 72px !important;
|
|
2412
|
-
}
|
|
2413
|
-
|
|
2414
|
-
.tina-tailwind .text-left {
|
|
2415
|
-
text-align: left !important;
|
|
2416
|
-
}
|
|
2417
|
-
|
|
2418
|
-
.tina-tailwind .text-center {
|
|
2419
|
-
text-align: center !important;
|
|
2420
|
-
}
|
|
2421
|
-
|
|
2422
|
-
.tina-tailwind .font-sans {
|
|
2423
|
-
font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !important;
|
|
2424
|
-
}
|
|
2425
|
-
|
|
2426
|
-
.tina-tailwind .text-2xl {
|
|
2427
|
-
font-size: 24px !important;
|
|
2428
|
-
line-height: 1.33 !important;
|
|
2429
|
-
}
|
|
2430
|
-
|
|
2431
|
-
.tina-tailwind .text-base {
|
|
2432
|
-
font-size: 16px !important;
|
|
2433
|
-
line-height: 1.5 !important;
|
|
2434
|
-
}
|
|
2435
|
-
|
|
2436
|
-
.tina-tailwind .text-sm {
|
|
2437
|
-
font-size: 14px !important;
|
|
2438
|
-
line-height: 1.43 !important;
|
|
2439
|
-
}
|
|
2440
|
-
|
|
2441
|
-
.tina-tailwind .text-xl {
|
|
2442
|
-
font-size: 20px !important;
|
|
2443
|
-
line-height: 1.4 !important;
|
|
2444
|
-
}
|
|
2445
|
-
|
|
2446
|
-
.tina-tailwind .text-md {
|
|
2447
|
-
font-size: 16px !important;
|
|
2448
|
-
line-height: 1.5 !important;
|
|
2449
|
-
}
|
|
2450
|
-
|
|
2451
|
-
.tina-tailwind .text-xs {
|
|
2452
|
-
font-size: 13px !important;
|
|
2453
|
-
line-height: 1.33 !important;
|
|
2454
|
-
}
|
|
2455
|
-
|
|
2456
|
-
.tina-tailwind .font-medium {
|
|
2457
|
-
font-weight: 500 !important;
|
|
2458
|
-
}
|
|
2459
|
-
|
|
2460
|
-
.tina-tailwind .uppercase {
|
|
2461
|
-
text-transform: uppercase !important;
|
|
2462
|
-
}
|
|
2463
|
-
|
|
2464
|
-
.tina-tailwind .italic {
|
|
2465
|
-
font-style: italic !important;
|
|
2466
|
-
}
|
|
2467
|
-
|
|
2468
|
-
.tina-tailwind .leading-normal {
|
|
2469
|
-
line-height: 1.5 !important;
|
|
2470
|
-
}
|
|
2471
|
-
|
|
2472
|
-
.tina-tailwind .leading-tight {
|
|
2473
|
-
line-height: 1.25 !important;
|
|
2474
|
-
}
|
|
2475
|
-
|
|
2476
|
-
.tina-tailwind .leading-5 {
|
|
2477
|
-
line-height: 20px !important;
|
|
2478
|
-
}
|
|
2479
|
-
|
|
2480
|
-
.tina-tailwind .tracking-wide {
|
|
2481
|
-
letter-spacing: 0.025em !important;
|
|
2482
|
-
}
|
|
2483
|
-
|
|
2484
|
-
.tina-tailwind .text-gray-700 {
|
|
2485
|
-
--tw-text-opacity: 1 !important;
|
|
2486
|
-
color: rgba(67, 62, 82, var(--tw-text-opacity)) !important;
|
|
2487
|
-
}
|
|
2488
|
-
|
|
2489
|
-
.tina-tailwind .text-blue-600 {
|
|
2490
|
-
--tw-text-opacity: 1 !important;
|
|
2491
|
-
color: rgba(5, 116, 228, var(--tw-text-opacity)) !important;
|
|
2492
|
-
}
|
|
2493
|
-
|
|
2494
|
-
.tina-tailwind .text-gray-500 {
|
|
2495
|
-
--tw-text-opacity: 1 !important;
|
|
2496
|
-
color: rgba(113, 108, 127, var(--tw-text-opacity)) !important;
|
|
2497
|
-
}
|
|
2498
|
-
|
|
2499
|
-
.tina-tailwind .text-gray-400 {
|
|
2500
|
-
--tw-text-opacity: 1 !important;
|
|
2501
|
-
color: rgba(145, 140, 158, var(--tw-text-opacity)) !important;
|
|
2502
|
-
}
|
|
2503
|
-
|
|
2504
|
-
.tina-tailwind .text-current {
|
|
2505
|
-
color: currentColor !important;
|
|
2506
|
-
}
|
|
2507
|
-
|
|
2508
|
-
.tina-tailwind .text-white {
|
|
2509
|
-
--tw-text-opacity: 1 !important;
|
|
2510
|
-
color: rgba(255, 255, 255, var(--tw-text-opacity)) !important;
|
|
2511
|
-
}
|
|
2512
|
-
|
|
2513
|
-
.tina-tailwind .text-gray-600 {
|
|
2514
|
-
--tw-text-opacity: 1 !important;
|
|
2515
|
-
color: rgba(86, 81, 101, var(--tw-text-opacity)) !important;
|
|
2516
|
-
}
|
|
2517
|
-
|
|
2518
|
-
.tina-tailwind .text-gray-800 {
|
|
2519
|
-
--tw-text-opacity: 1 !important;
|
|
2520
|
-
color: rgba(54, 49, 69, var(--tw-text-opacity)) !important;
|
|
2521
|
-
}
|
|
2522
|
-
|
|
2523
|
-
.tina-tailwind .text-gray-900 {
|
|
2524
|
-
--tw-text-opacity: 1 !important;
|
|
2525
|
-
color: rgba(37, 35, 54, var(--tw-text-opacity)) !important;
|
|
2526
|
-
}
|
|
2527
|
-
|
|
2528
|
-
.tina-tailwind .text-blue-500 {
|
|
2529
|
-
--tw-text-opacity: 1 !important;
|
|
2530
|
-
color: rgba(0, 132, 255, var(--tw-text-opacity)) !important;
|
|
2531
|
-
}
|
|
2532
|
-
|
|
2533
|
-
.tina-tailwind .text-blue-400 {
|
|
2534
|
-
--tw-text-opacity: 1 !important;
|
|
2535
|
-
color: rgba(34, 150, 254, var(--tw-text-opacity)) !important;
|
|
2536
|
-
}
|
|
2537
|
-
|
|
2538
|
-
.tina-tailwind .underline {
|
|
2539
|
-
text-decoration: underline !important;
|
|
2540
|
-
}
|
|
2541
|
-
|
|
2542
|
-
.tina-tailwind .opacity-100 {
|
|
2543
|
-
opacity: 1 !important;
|
|
2544
|
-
}
|
|
2545
|
-
|
|
2546
|
-
.tina-tailwind .opacity-90 {
|
|
2547
|
-
opacity: .9 !important;
|
|
2548
|
-
}
|
|
2549
|
-
|
|
2550
|
-
.tina-tailwind .opacity-80 {
|
|
2551
|
-
opacity: .8 !important;
|
|
2552
|
-
}
|
|
2553
|
-
|
|
2554
|
-
.tina-tailwind .opacity-50 {
|
|
2555
|
-
opacity: .5 !important;
|
|
2556
|
-
}
|
|
2557
|
-
|
|
2558
|
-
.tina-tailwind .opacity-70 {
|
|
2559
|
-
opacity: .7 !important;
|
|
2560
|
-
}
|
|
2561
|
-
|
|
2562
|
-
.tina-tailwind .opacity-0 {
|
|
2563
|
-
opacity: 0 !important;
|
|
2564
|
-
}
|
|
2565
|
-
|
|
2566
|
-
.tina-tailwind .shadow-lg {
|
|
2567
|
-
--tw-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;
|
|
2568
|
-
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow) !important;
|
|
2569
|
-
}
|
|
2570
|
-
|
|
2571
|
-
.tina-tailwind .shadow-2xl {
|
|
2572
|
-
--tw-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important;
|
|
2573
|
-
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow) !important;
|
|
2574
|
-
}
|
|
2575
|
-
|
|
2576
|
-
.tina-tailwind .shadow {
|
|
2577
|
-
--tw-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important;
|
|
2578
|
-
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow) !important;
|
|
2579
|
-
}
|
|
2580
|
-
|
|
2581
|
-
.tina-tailwind .ring-1 {
|
|
2582
|
-
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color) !important;
|
|
2583
|
-
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color) !important;
|
|
2584
|
-
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000) !important;
|
|
2585
|
-
}
|
|
2586
|
-
|
|
2587
|
-
.tina-tailwind .ring-black {
|
|
2588
|
-
--tw-ring-opacity: 1 !important;
|
|
2589
|
-
--tw-ring-color: rgba(0, 0, 0, var(--tw-ring-opacity)) !important;
|
|
2590
|
-
}
|
|
2591
|
-
|
|
2592
|
-
.tina-tailwind .ring-opacity-5 {
|
|
2593
|
-
--tw-ring-opacity: .05 !important;
|
|
2594
|
-
}
|
|
2595
|
-
|
|
2596
|
-
.tina-tailwind .filter {
|
|
2597
|
-
filter: var(--tw-filter) !important;
|
|
2598
|
-
}
|
|
2599
|
-
|
|
2600
|
-
.tina-tailwind .transition-opacity {
|
|
2601
|
-
transition-property: opacity !important;
|
|
2602
|
-
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important;
|
|
2603
|
-
transition-duration: 150ms !important;
|
|
2604
|
-
}
|
|
2605
|
-
|
|
2606
|
-
.tina-tailwind .transition-colors {
|
|
2607
|
-
transition-property: background-color, border-color, color, fill, stroke !important;
|
|
2608
|
-
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important;
|
|
2609
|
-
transition-duration: 150ms !important;
|
|
2610
|
-
}
|
|
2611
|
-
|
|
2612
|
-
.tina-tailwind .transition-all {
|
|
2613
|
-
transition-property: all !important;
|
|
2614
|
-
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important;
|
|
2615
|
-
transition-duration: 150ms !important;
|
|
2616
|
-
}
|
|
2617
|
-
|
|
2618
|
-
.tina-tailwind .transition {
|
|
2619
|
-
transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter !important;
|
|
2620
|
-
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important;
|
|
2621
|
-
transition-duration: 150ms !important;
|
|
2622
|
-
}
|
|
2623
|
-
|
|
2624
|
-
.tina-tailwind .duration-300 {
|
|
2625
|
-
transition-duration: 300ms !important;
|
|
2626
|
-
}
|
|
2627
|
-
|
|
2628
|
-
.tina-tailwind .duration-150 {
|
|
2629
|
-
transition-duration: 150ms !important;
|
|
2630
|
-
}
|
|
2631
|
-
|
|
2632
|
-
.tina-tailwind .duration-100 {
|
|
2633
|
-
transition-duration: 100ms !important;
|
|
2634
|
-
}
|
|
2635
|
-
|
|
2636
|
-
.tina-tailwind .duration-75 {
|
|
2637
|
-
transition-duration: 75ms !important;
|
|
2638
|
-
}
|
|
2639
|
-
|
|
2640
|
-
.tina-tailwind .ease-out {
|
|
2641
|
-
transition-timing-function: cubic-bezier(0, 0, 0.2, 1) !important;
|
|
2642
|
-
}
|
|
2643
|
-
|
|
2644
|
-
.tina-tailwind .ease-in {
|
|
2645
|
-
transition-timing-function: cubic-bezier(0.4, 0, 1, 1) !important;
|
|
2646
|
-
}
|
|
2647
|
-
|
|
2648
|
-
.tina-tailwind .ease-in-out {
|
|
2649
|
-
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important;
|
|
2650
|
-
}
|
|
2651
|
-
|
|
2652
|
-
.tina-tailwind .icon-parent svg {
|
|
2653
|
-
fill: currentColor !important;
|
|
2654
|
-
}
|
|
2655
|
-
|
|
2656
|
-
.tina-tailwind {
|
|
2657
|
-
font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
|
2658
|
-
--tw-text-opacity: 1;
|
|
2659
|
-
color: rgba(86, 81, 101, var(--tw-text-opacity));
|
|
2660
|
-
}
|
|
2661
|
-
|
|
2662
|
-
.first\\:pt-3:first-child {
|
|
2663
|
-
padding-top: 12px !important;
|
|
2664
|
-
}
|
|
2665
|
-
|
|
2666
|
-
.last\\:pb-3:last-child {
|
|
2667
|
-
padding-bottom: 12px !important;
|
|
2668
|
-
}
|
|
2669
|
-
|
|
2670
|
-
.hover\\:bg-blue-600:hover {
|
|
2671
|
-
--tw-bg-opacity: 1 !important;
|
|
2672
|
-
background-color: rgba(5, 116, 228, var(--tw-bg-opacity)) !important;
|
|
2673
|
-
}
|
|
2674
|
-
|
|
2675
|
-
.hover\\:text-blue-600:hover {
|
|
2676
|
-
--tw-text-opacity: 1 !important;
|
|
2677
|
-
color: rgba(5, 116, 228, var(--tw-text-opacity)) !important;
|
|
2678
|
-
}
|
|
2679
|
-
|
|
2680
|
-
.hover\\:text-blue-400:hover {
|
|
2681
|
-
--tw-text-opacity: 1 !important;
|
|
2682
|
-
color: rgba(34, 150, 254, var(--tw-text-opacity)) !important;
|
|
2683
|
-
}
|
|
2684
|
-
|
|
2685
|
-
.hover\\:opacity-100:hover {
|
|
2686
|
-
opacity: 1 !important;
|
|
2687
|
-
}
|
|
2688
|
-
|
|
2689
|
-
.focus\\:text-blue-400:focus {
|
|
2690
|
-
--tw-text-opacity: 1 !important;
|
|
2691
|
-
color: rgba(34, 150, 254, var(--tw-text-opacity)) !important;
|
|
2692
|
-
}
|
|
2693
|
-
|
|
2694
|
-
.focus\\:underline:focus {
|
|
2695
|
-
text-decoration: underline !important;
|
|
2696
|
-
}
|
|
2697
|
-
|
|
2698
|
-
.focus\\:shadow-outline:focus {
|
|
2699
|
-
--tw-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5) !important;
|
|
2700
|
-
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow) !important;
|
|
2701
|
-
}
|
|
2702
|
-
|
|
2703
|
-
.focus\\:outline-none:focus {
|
|
2704
|
-
outline: 2px solid transparent !important;
|
|
2705
|
-
outline-offset: 2px !important;
|
|
2706
|
-
}
|
|
2707
|
-
|
|
2708
|
-
.focus\\:ring-2:focus {
|
|
2709
|
-
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color) !important;
|
|
2710
|
-
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color) !important;
|
|
2711
|
-
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000) !important;
|
|
2712
|
-
}
|
|
2713
|
-
|
|
2714
|
-
.focus\\:ring-blue-500:focus {
|
|
2715
|
-
--tw-ring-opacity: 1 !important;
|
|
2716
|
-
--tw-ring-color: rgba(0, 132, 255, var(--tw-ring-opacity)) !important;
|
|
2717
|
-
}
|
|
2718
|
-
|
|
2719
|
-
.group:hover .group-hover\\:opacity-100 {
|
|
2720
|
-
opacity: 1 !important;
|
|
2721
|
-
}
|
|
2722
|
-
`;
|
|
1861
|
+
var styles = '*, ::before, ::after {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(0 132 255 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n.tina-tailwind .static {\n position: static;\n}\n.tina-tailwind .fixed {\n position: fixed;\n}\n.tina-tailwind .absolute {\n position: absolute;\n}\n.tina-tailwind .relative {\n position: relative;\n}\n.tina-tailwind .left-0 {\n left: 0px;\n}\n.tina-tailwind .right-0 {\n right: 0px;\n}\n.tina-tailwind .mx-auto {\n margin-left: auto;\n margin-right: auto;\n}\n.tina-tailwind .mr-2 {\n margin-right: 8px;\n}\n.tina-tailwind .mb-2 {\n margin-bottom: 8px;\n}\n.tina-tailwind .mb-1 {\n margin-bottom: 4px;\n}\n.tina-tailwind .-mt-0\\.5 {\n margin-top: -2px;\n}\n.tina-tailwind .-mt-0 {\n margin-top: -0px;\n}\n.tina-tailwind .ml-1 {\n margin-left: 4px;\n}\n.tina-tailwind .mt-2 {\n margin-top: 8px;\n}\n.tina-tailwind .mr-1\\.5 {\n margin-right: 6px;\n}\n.tina-tailwind .mr-1 {\n margin-right: 4px;\n}\n.tina-tailwind .block {\n display: block;\n}\n.tina-tailwind .inline-block {\n display: inline-block;\n}\n.tina-tailwind .inline {\n display: inline;\n}\n.tina-tailwind .flex {\n display: flex;\n}\n.tina-tailwind .inline-flex {\n display: inline-flex;\n}\n.tina-tailwind .table {\n display: table;\n}\n.tina-tailwind .h-screen {\n height: 100vh;\n}\n.tina-tailwind .h-auto {\n height: auto;\n}\n.tina-tailwind .h-full {\n height: 100%;\n}\n.tina-tailwind .h-6 {\n height: 24px;\n}\n.tina-tailwind .h-10 {\n height: 40px;\n}\n.tina-tailwind .h-5 {\n height: 20px;\n}\n.tina-tailwind .h-12 {\n height: 48px;\n}\n.tina-tailwind .w-full {\n width: 100%;\n}\n.tina-tailwind .w-10 {\n width: 40px;\n}\n.tina-tailwind .w-auto {\n width: auto;\n}\n.tina-tailwind .w-5 {\n width: 20px;\n}\n.tina-tailwind .w-56 {\n width: 224px;\n}\n.tina-tailwind .w-6 {\n width: 24px;\n}\n.tina-tailwind .max-w-lg {\n max-width: 32rem;\n}\n.tina-tailwind .max-w-screen-xl {\n max-width: 1280px;\n}\n.tina-tailwind .max-w-form {\n max-width: 900px;\n}\n.tina-tailwind .max-w-full {\n max-width: 100%;\n}\n.tina-tailwind .flex-1 {\n flex: 1 1 0%;\n}\n.tina-tailwind .flex-shrink-0 {\n flex-shrink: 0;\n}\n.tina-tailwind .flex-grow-0 {\n flex-grow: 0;\n}\n.tina-tailwind .table-auto {\n table-layout: auto;\n}\n.tina-tailwind .origin-top-right {\n transform-origin: top right;\n}\n.tina-tailwind .scale-95 {\n --tw-scale-x: .95;\n --tw-scale-y: .95;\n 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));\n}\n.tina-tailwind .scale-100 {\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n 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));\n}\n.tina-tailwind .transform {\n 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));\n}\n.tina-tailwind .cursor-pointer {\n cursor: pointer;\n}\n.tina-tailwind .flex-col {\n flex-direction: column;\n}\n.tina-tailwind .items-end {\n align-items: flex-end;\n}\n.tina-tailwind .items-center {\n align-items: center;\n}\n.tina-tailwind .items-stretch {\n align-items: stretch;\n}\n.tina-tailwind .justify-end {\n justify-content: flex-end;\n}\n.tina-tailwind .justify-center {\n justify-content: center;\n}\n.tina-tailwind .justify-between {\n justify-content: space-between;\n}\n.tina-tailwind .gap-0\\.5 {\n gap: 2px;\n}\n.tina-tailwind .gap-0 {\n gap: 0px;\n}\n.tina-tailwind .gap-4 {\n gap: 16px;\n}\n.tina-tailwind .gap-3 {\n gap: 12px;\n}\n.tina-tailwind .divide-y > :not([hidden]) ~ :not([hidden]) {\n --tw-divide-y-reverse: 0;\n border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));\n border-bottom-width: calc(1px * var(--tw-divide-y-reverse));\n}\n.tina-tailwind .divide-gray-150 > :not([hidden]) ~ :not([hidden]) {\n --tw-divide-opacity: 1;\n border-color: rgb(230 227 239 / var(--tw-divide-opacity));\n}\n.tina-tailwind .overflow-hidden {\n overflow: hidden;\n}\n.tina-tailwind .overflow-y-auto {\n overflow-y: auto;\n}\n.tina-tailwind .whitespace-nowrap {\n white-space: nowrap;\n}\n.tina-tailwind .rounded-lg {\n border-radius: 8px;\n}\n.tina-tailwind .rounded-full {\n border-radius: 9999px;\n}\n.tina-tailwind .rounded-md {\n border-radius: 6px;\n}\n.tina-tailwind .border {\n border-width: 1px;\n}\n.tina-tailwind .border-b {\n border-bottom-width: 1px;\n}\n.tina-tailwind .border-gray-150 {\n --tw-border-opacity: 1;\n border-color: rgb(230 227 239 / var(--tw-border-opacity));\n}\n.tina-tailwind .border-gray-200 {\n --tw-border-opacity: 1;\n border-color: rgb(225 221 236 / var(--tw-border-opacity));\n}\n.tina-tailwind .bg-white {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n.tina-tailwind .bg-gray-50 {\n --tw-bg-opacity: 1;\n background-color: rgb(246 246 249 / var(--tw-bg-opacity));\n}\n.tina-tailwind .bg-blue-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(0 132 255 / var(--tw-bg-opacity));\n}\n.tina-tailwind .bg-gradient-to-b {\n background-image: linear-gradient(to bottom, var(--tw-gradient-stops));\n}\n.tina-tailwind .from-blue-900 {\n --tw-gradient-from: #1D2C6C;\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgb(29 44 108 / 0));\n}\n.tina-tailwind .to-gray-900 {\n --tw-gradient-to: #252336;\n}\n.tina-tailwind .px-4 {\n padding-left: 16px;\n padding-right: 16px;\n}\n.tina-tailwind .py-6 {\n padding-top: 24px;\n padding-bottom: 24px;\n}\n.tina-tailwind .px-5 {\n padding-left: 20px;\n padding-right: 20px;\n}\n.tina-tailwind .py-4 {\n padding-top: 16px;\n padding-bottom: 16px;\n}\n.tina-tailwind .px-12 {\n padding-left: 48px;\n padding-right: 48px;\n}\n.tina-tailwind .py-10 {\n padding-top: 40px;\n padding-bottom: 40px;\n}\n.tina-tailwind .px-20 {\n padding-left: 80px;\n padding-right: 80px;\n}\n.tina-tailwind .px-6 {\n padding-left: 24px;\n padding-right: 24px;\n}\n.tina-tailwind .py-1 {\n padding-top: 4px;\n padding-bottom: 4px;\n}\n.tina-tailwind .py-2 {\n padding-top: 8px;\n padding-bottom: 8px;\n}\n.tina-tailwind .pt-4 {\n padding-top: 16px;\n}\n.tina-tailwind .pb-4 {\n padding-bottom: 16px;\n}\n.tina-tailwind .pt-18 {\n padding-top: 72px;\n}\n.tina-tailwind .text-left {\n text-align: left;\n}\n.tina-tailwind .text-center {\n text-align: center;\n}\n.tina-tailwind .font-sans {\n font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";\n}\n.tina-tailwind .text-2xl {\n font-size: 24px;\n line-height: 1.33;\n}\n.tina-tailwind .text-base {\n font-size: 16px;\n line-height: 1.5;\n}\n.tina-tailwind .text-sm {\n font-size: 14px;\n line-height: 1.43;\n}\n.tina-tailwind .text-xl {\n font-size: 20px;\n line-height: 1.4;\n}\n.tina-tailwind .text-md {\n font-size: 16px;\n line-height: 1.5;\n}\n.tina-tailwind .text-xs {\n font-size: 13px;\n line-height: 1.33;\n}\n.tina-tailwind .font-medium {\n font-weight: 500;\n}\n.tina-tailwind .uppercase {\n text-transform: uppercase;\n}\n.tina-tailwind .italic {\n font-style: italic;\n}\n.tina-tailwind .leading-normal {\n line-height: 1.5;\n}\n.tina-tailwind .leading-tight {\n line-height: 1.25;\n}\n.tina-tailwind .leading-5 {\n line-height: 20px;\n}\n.tina-tailwind .tracking-wide {\n letter-spacing: 0.025em;\n}\n.tina-tailwind .text-gray-700 {\n --tw-text-opacity: 1;\n color: rgb(67 62 82 / var(--tw-text-opacity));\n}\n.tina-tailwind .text-blue-600 {\n --tw-text-opacity: 1;\n color: rgb(5 116 228 / var(--tw-text-opacity));\n}\n.tina-tailwind .text-gray-500 {\n --tw-text-opacity: 1;\n color: rgb(113 108 127 / var(--tw-text-opacity));\n}\n.tina-tailwind .text-gray-400 {\n --tw-text-opacity: 1;\n color: rgb(145 140 158 / var(--tw-text-opacity));\n}\n.tina-tailwind .text-current {\n color: currentColor;\n}\n.tina-tailwind .text-white {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n.tina-tailwind .text-gray-600 {\n --tw-text-opacity: 1;\n color: rgb(86 81 101 / var(--tw-text-opacity));\n}\n.tina-tailwind .text-gray-800 {\n --tw-text-opacity: 1;\n color: rgb(54 49 69 / var(--tw-text-opacity));\n}\n.tina-tailwind .text-gray-900 {\n --tw-text-opacity: 1;\n color: rgb(37 35 54 / var(--tw-text-opacity));\n}\n.tina-tailwind .underline {\n text-decoration-line: underline;\n}\n.tina-tailwind .opacity-100 {\n opacity: 1;\n}\n.tina-tailwind .opacity-90 {\n opacity: .9;\n}\n.tina-tailwind .opacity-80 {\n opacity: .8;\n}\n.tina-tailwind .opacity-50 {\n opacity: .5;\n}\n.tina-tailwind .opacity-70 {\n opacity: .7;\n}\n.tina-tailwind .opacity-0 {\n opacity: 0;\n}\n.tina-tailwind .shadow-lg {\n --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.tina-tailwind .shadow-2xl {\n --tw-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25);\n --tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.tina-tailwind .shadow {\n --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.tina-tailwind .ring-1 {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n.tina-tailwind .ring-black {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(0 0 0 / var(--tw-ring-opacity));\n}\n.tina-tailwind .ring-opacity-5 {\n --tw-ring-opacity: .05;\n}\n.tina-tailwind .filter {\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.tina-tailwind .transition-opacity {\n transition-property: opacity;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.tina-tailwind .transition-colors {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.tina-tailwind .transition-all {\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.tina-tailwind .transition {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.tina-tailwind .duration-300 {\n transition-duration: 300ms;\n}\n.tina-tailwind .duration-150 {\n transition-duration: 150ms;\n}\n.tina-tailwind .duration-100 {\n transition-duration: 100ms;\n}\n.tina-tailwind .duration-75 {\n transition-duration: 75ms;\n}\n.tina-tailwind .ease-out {\n transition-timing-function: cubic-bezier(0, 0, 0.2, 1);\n}\n.tina-tailwind .ease-in {\n transition-timing-function: cubic-bezier(0.4, 0, 1, 1);\n}\n.tina-tailwind .icon-parent svg {\n fill: currentColor;\n }\n\n.tina-tailwind {\n font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";\n font-size: 16px;\n line-height: 1.5;\n --tw-text-opacity: 1;\n color: rgb(86 81 101 / var(--tw-text-opacity));\n}\n\n.tina-tailwind .hover\\:bg-blue-600:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(5 116 228 / var(--tw-bg-opacity));\n}\n\n.tina-tailwind .hover\\:text-blue-600:hover {\n --tw-text-opacity: 1;\n color: rgb(5 116 228 / var(--tw-text-opacity));\n}\n\n.tina-tailwind .hover\\:text-blue-400:hover {\n --tw-text-opacity: 1;\n color: rgb(34 150 254 / var(--tw-text-opacity));\n}\n\n.tina-tailwind .hover\\:opacity-100:hover {\n opacity: 1;\n}\n\n.tina-tailwind .focus\\:text-blue-400:focus {\n --tw-text-opacity: 1;\n color: rgb(34 150 254 / var(--tw-text-opacity));\n}\n\n.tina-tailwind .focus\\:underline:focus {\n text-decoration-line: underline;\n}\n\n.tina-tailwind .focus\\:shadow-outline:focus {\n --tw-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5);\n --tw-shadow-colored: 0 0 0 3px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.tina-tailwind .focus\\:outline-none:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n\n.tina-tailwind .focus\\:ring-2:focus {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n.tina-tailwind .focus\\:ring-blue-500:focus {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(0 132 255 / var(--tw-ring-opacity));\n}\n';
|
|
2723
1862
|
function useTina({
|
|
2724
1863
|
query,
|
|
2725
1864
|
variables,
|
|
@@ -3127,10 +2266,10 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
3127
2266
|
return t;
|
|
3128
2267
|
};
|
|
3129
2268
|
function Tree2Element(tree) {
|
|
3130
|
-
return tree && tree.map(function(
|
|
3131
|
-
return React__default["default"].createElement(
|
|
2269
|
+
return tree && tree.map(function(node2, i) {
|
|
2270
|
+
return React__default["default"].createElement(node2.tag, __assign({
|
|
3132
2271
|
key: i
|
|
3133
|
-
},
|
|
2272
|
+
}, node2.attr), Tree2Element(node2.child));
|
|
3134
2273
|
});
|
|
3135
2274
|
}
|
|
3136
2275
|
function GenIcon(data) {
|
|
@@ -3174,16 +2313,26 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
3174
2313
|
const api = new TinaAdminApi(cms);
|
|
3175
2314
|
const [collections, setCollections] = React.useState([]);
|
|
3176
2315
|
const [loading, setLoading] = React.useState(true);
|
|
2316
|
+
const [error, setError] = React.useState(void 0);
|
|
3177
2317
|
React.useEffect(() => {
|
|
3178
2318
|
const fetchCollections = async () => {
|
|
3179
|
-
|
|
3180
|
-
|
|
3181
|
-
|
|
2319
|
+
if (await api.isAuthenticated()) {
|
|
2320
|
+
try {
|
|
2321
|
+
const response = await api.fetchCollections();
|
|
2322
|
+
setCollections(response.getCollections);
|
|
2323
|
+
} catch (error2) {
|
|
2324
|
+
cms.alerts.error(`[${error2.name}] GetCollections failed: ${error2.message}`, 30 * 1e3);
|
|
2325
|
+
console.error(error2);
|
|
2326
|
+
setCollections([]);
|
|
2327
|
+
setError(error2);
|
|
2328
|
+
}
|
|
2329
|
+
setLoading(false);
|
|
2330
|
+
}
|
|
3182
2331
|
};
|
|
3183
2332
|
setLoading(true);
|
|
3184
2333
|
fetchCollections();
|
|
3185
2334
|
}, [cms]);
|
|
3186
|
-
return { collections, loading };
|
|
2335
|
+
return { collections, loading, error };
|
|
3187
2336
|
};
|
|
3188
2337
|
const slugify = (text) => {
|
|
3189
2338
|
return text.toString().toLowerCase().trim().replace(/[^\w\s-]/g, "").replace(/[\s_-]+/g, "_").replace(/^-+|-+$/g, "");
|
|
@@ -3464,16 +2613,26 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
3464
2613
|
const api = new TinaAdminApi(cms);
|
|
3465
2614
|
const [collection, setCollection] = React.useState(void 0);
|
|
3466
2615
|
const [loading, setLoading] = React.useState(true);
|
|
2616
|
+
const [error, setError] = React.useState(void 0);
|
|
3467
2617
|
React.useEffect(() => {
|
|
3468
2618
|
const fetchCollection = async () => {
|
|
3469
|
-
|
|
3470
|
-
|
|
3471
|
-
|
|
2619
|
+
if (await api.isAuthenticated()) {
|
|
2620
|
+
try {
|
|
2621
|
+
const response = await api.fetchCollection(collectionName, includeDocuments);
|
|
2622
|
+
setCollection(response.getCollection);
|
|
2623
|
+
} catch (error2) {
|
|
2624
|
+
cms.alerts.error(`[${error2.name}] GetCollection failed: ${error2.message}`, 30 * 1e3);
|
|
2625
|
+
console.error(error2);
|
|
2626
|
+
setCollection(void 0);
|
|
2627
|
+
setError(error2);
|
|
2628
|
+
}
|
|
2629
|
+
setLoading(false);
|
|
2630
|
+
}
|
|
3472
2631
|
};
|
|
3473
2632
|
setLoading(true);
|
|
3474
2633
|
fetchCollection();
|
|
3475
2634
|
}, [cms, collectionName]);
|
|
3476
|
-
return { collection, loading };
|
|
2635
|
+
return { collection, loading, error };
|
|
3477
2636
|
};
|
|
3478
2637
|
const GetCollection = ({
|
|
3479
2638
|
cms,
|
|
@@ -3481,8 +2640,11 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
3481
2640
|
includeDocuments = true,
|
|
3482
2641
|
children
|
|
3483
2642
|
}) => {
|
|
3484
|
-
const { collection, loading } = useGetCollection(cms, collectionName, includeDocuments);
|
|
3485
|
-
if (
|
|
2643
|
+
const { collection, loading, error } = useGetCollection(cms, collectionName, includeDocuments);
|
|
2644
|
+
if (error) {
|
|
2645
|
+
return null;
|
|
2646
|
+
}
|
|
2647
|
+
if (loading) {
|
|
3486
2648
|
return /* @__PURE__ */ React__default["default"].createElement(LoadingPage, null);
|
|
3487
2649
|
}
|
|
3488
2650
|
return /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, children(collection, loading));
|
|
@@ -3600,32 +2762,47 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
3600
2762
|
mutationInfo: void 0
|
|
3601
2763
|
});
|
|
3602
2764
|
const [loading, setLoading] = React.useState(true);
|
|
2765
|
+
const [error, setError] = React.useState(void 0);
|
|
3603
2766
|
React.useEffect(() => {
|
|
3604
2767
|
const fetchDocumentFields = async () => {
|
|
3605
|
-
|
|
3606
|
-
|
|
3607
|
-
|
|
3608
|
-
|
|
3609
|
-
|
|
3610
|
-
|
|
3611
|
-
|
|
3612
|
-
|
|
3613
|
-
|
|
3614
|
-
|
|
3615
|
-
|
|
2768
|
+
if (await api.isAuthenticated()) {
|
|
2769
|
+
try {
|
|
2770
|
+
const response = await api.fetchDocumentFields();
|
|
2771
|
+
const documentFields = response.getDocumentFields;
|
|
2772
|
+
const collection = documentFields[collectionName].collection;
|
|
2773
|
+
const mutationInfo = documentFields[collectionName].mutationInfo;
|
|
2774
|
+
let fields = void 0;
|
|
2775
|
+
let template = void 0;
|
|
2776
|
+
if (templateName && documentFields[collectionName].templates && documentFields[collectionName].templates[templateName]) {
|
|
2777
|
+
template = documentFields[collectionName].templates[templateName].template;
|
|
2778
|
+
fields = documentFields[collectionName].templates[templateName].fields;
|
|
2779
|
+
} else {
|
|
2780
|
+
fields = documentFields[collectionName].fields;
|
|
2781
|
+
}
|
|
2782
|
+
setInfo({
|
|
2783
|
+
collection,
|
|
2784
|
+
template,
|
|
2785
|
+
fields,
|
|
2786
|
+
mutationInfo
|
|
2787
|
+
});
|
|
2788
|
+
} catch (error2) {
|
|
2789
|
+
cms.alerts.error(`[${error2.name}] GetDocumentFields failed: ${error2.message}`, 30 * 1e3);
|
|
2790
|
+
console.error(error2);
|
|
2791
|
+
setInfo({
|
|
2792
|
+
collection: void 0,
|
|
2793
|
+
template: void 0,
|
|
2794
|
+
fields: void 0,
|
|
2795
|
+
mutationInfo: void 0
|
|
2796
|
+
});
|
|
2797
|
+
setError(error2);
|
|
2798
|
+
}
|
|
2799
|
+
setLoading(false);
|
|
3616
2800
|
}
|
|
3617
|
-
setInfo({
|
|
3618
|
-
collection,
|
|
3619
|
-
template,
|
|
3620
|
-
fields,
|
|
3621
|
-
mutationInfo
|
|
3622
|
-
});
|
|
3623
|
-
setLoading(false);
|
|
3624
2801
|
};
|
|
3625
2802
|
setLoading(true);
|
|
3626
2803
|
fetchDocumentFields();
|
|
3627
2804
|
}, [cms, collectionName]);
|
|
3628
|
-
return __spreadProps(__spreadValues({}, info), { loading });
|
|
2805
|
+
return __spreadProps(__spreadValues({}, info), { loading, error });
|
|
3629
2806
|
};
|
|
3630
2807
|
const GetDocumentFields = ({
|
|
3631
2808
|
cms,
|
|
@@ -3633,8 +2810,11 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
3633
2810
|
templateName,
|
|
3634
2811
|
children
|
|
3635
2812
|
}) => {
|
|
3636
|
-
const { collection, template, fields, mutationInfo, loading } = useGetDocumentFields(cms, collectionName, templateName);
|
|
3637
|
-
if (
|
|
2813
|
+
const { collection, template, fields, mutationInfo, loading, error } = useGetDocumentFields(cms, collectionName, templateName);
|
|
2814
|
+
if (error) {
|
|
2815
|
+
return null;
|
|
2816
|
+
}
|
|
2817
|
+
if (loading) {
|
|
3638
2818
|
return /* @__PURE__ */ React__default["default"].createElement(LoadingPage, null);
|
|
3639
2819
|
}
|
|
3640
2820
|
return /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, children({ collection, template, fields, mutationInfo, loading }));
|
|
@@ -3650,7 +2830,14 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
3650
2830
|
includeCollection,
|
|
3651
2831
|
includeTemplate
|
|
3652
2832
|
});
|
|
3653
|
-
await api.
|
|
2833
|
+
if (await api.isAuthenticated()) {
|
|
2834
|
+
await api.createDocument(collection.name, relativePath, params);
|
|
2835
|
+
} else {
|
|
2836
|
+
const authMessage = `[Error] CreateDocument failed: User is no longer authenticated; please login and try again.`;
|
|
2837
|
+
cms.alerts.error(authMessage, 30 * 1e3);
|
|
2838
|
+
console.error(authMessage);
|
|
2839
|
+
return false;
|
|
2840
|
+
}
|
|
3654
2841
|
};
|
|
3655
2842
|
const CollectionCreatePage = () => {
|
|
3656
2843
|
const { collectionName, templateName } = reactRouterDom.useParams();
|
|
@@ -3697,8 +2884,14 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
3697
2884
|
...fields
|
|
3698
2885
|
],
|
|
3699
2886
|
onSubmit: async (values) => {
|
|
3700
|
-
|
|
3701
|
-
|
|
2887
|
+
try {
|
|
2888
|
+
await createDocument(cms, collection, template, mutationInfo, values);
|
|
2889
|
+
cms.alerts.success("Document created!");
|
|
2890
|
+
navigate(`/collections/${collection.name}`);
|
|
2891
|
+
} catch (error) {
|
|
2892
|
+
cms.alerts.error(`[${error.name}] CreateDocument failed: ${error.message}`, 30 * 1e3);
|
|
2893
|
+
console.error(error);
|
|
2894
|
+
}
|
|
3702
2895
|
}
|
|
3703
2896
|
});
|
|
3704
2897
|
}, [cms, collection, template, fields, mutationInfo]);
|
|
@@ -3728,16 +2921,26 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
3728
2921
|
const api = new TinaAdminApi(cms);
|
|
3729
2922
|
const [document, setDocument] = React.useState(void 0);
|
|
3730
2923
|
const [loading, setLoading] = React.useState(true);
|
|
2924
|
+
const [error, setError] = React.useState(void 0);
|
|
3731
2925
|
React.useEffect(() => {
|
|
3732
2926
|
const fetchDocument = async () => {
|
|
3733
|
-
|
|
3734
|
-
|
|
3735
|
-
|
|
2927
|
+
if (api.isAuthenticated()) {
|
|
2928
|
+
try {
|
|
2929
|
+
const response = await api.fetchDocument(collectionName, relativePath);
|
|
2930
|
+
setDocument(response.getDocument);
|
|
2931
|
+
} catch (error2) {
|
|
2932
|
+
cms.alerts.error(`[${error2.name}] GetDocument failed: ${error2.message}`, 30 * 1e3);
|
|
2933
|
+
console.error(error2);
|
|
2934
|
+
setDocument(void 0);
|
|
2935
|
+
setError(error2);
|
|
2936
|
+
}
|
|
2937
|
+
setLoading(false);
|
|
2938
|
+
}
|
|
3736
2939
|
};
|
|
3737
2940
|
setLoading(true);
|
|
3738
2941
|
fetchDocument();
|
|
3739
2942
|
}, [cms, collectionName, relativePath]);
|
|
3740
|
-
return { document, loading };
|
|
2943
|
+
return { document, loading, error };
|
|
3741
2944
|
};
|
|
3742
2945
|
const GetDocument = ({
|
|
3743
2946
|
cms,
|
|
@@ -3745,8 +2948,11 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
3745
2948
|
relativePath,
|
|
3746
2949
|
children
|
|
3747
2950
|
}) => {
|
|
3748
|
-
const { document, loading } = useGetDocument(cms, collectionName, relativePath);
|
|
3749
|
-
if (
|
|
2951
|
+
const { document, loading, error } = useGetDocument(cms, collectionName, relativePath);
|
|
2952
|
+
if (error) {
|
|
2953
|
+
return null;
|
|
2954
|
+
}
|
|
2955
|
+
if (loading) {
|
|
3750
2956
|
return /* @__PURE__ */ React__default["default"].createElement(LoadingPage, null);
|
|
3751
2957
|
}
|
|
3752
2958
|
return /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, children(document, loading));
|
|
@@ -3758,7 +2964,14 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
3758
2964
|
includeCollection,
|
|
3759
2965
|
includeTemplate
|
|
3760
2966
|
});
|
|
3761
|
-
await api.
|
|
2967
|
+
if (await api.isAuthenticated()) {
|
|
2968
|
+
await api.updateDocument(collection.name, relativePath, params);
|
|
2969
|
+
} else {
|
|
2970
|
+
const authMessage = `[Error] UpdateDocument failed: User is no longer authenticated; please login and try again.`;
|
|
2971
|
+
cms.alerts.error(authMessage, 30 * 1e3);
|
|
2972
|
+
console.error(authMessage);
|
|
2973
|
+
return false;
|
|
2974
|
+
}
|
|
3762
2975
|
};
|
|
3763
2976
|
const CollectionUpdatePage = () => {
|
|
3764
2977
|
const { collectionName, filename } = reactRouterDom.useParams();
|
|
@@ -3790,7 +3003,7 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
3790
3003
|
mutationInfo
|
|
3791
3004
|
}) => {
|
|
3792
3005
|
var _a, _b;
|
|
3793
|
-
|
|
3006
|
+
reactRouterDom.useNavigate();
|
|
3794
3007
|
const [formIsPristine, setFormIsPristine] = React.useState(true);
|
|
3795
3008
|
const form = React.useMemo(() => {
|
|
3796
3009
|
return new toolkit.Form({
|
|
@@ -3799,8 +3012,13 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
3799
3012
|
fields: document.form.fields,
|
|
3800
3013
|
initialValues: document.values,
|
|
3801
3014
|
onSubmit: async (values) => {
|
|
3802
|
-
|
|
3803
|
-
|
|
3015
|
+
try {
|
|
3016
|
+
await updateDocument(cms, relativePath, collection, mutationInfo, values);
|
|
3017
|
+
cms.alerts.success("Document updated!");
|
|
3018
|
+
} catch (error) {
|
|
3019
|
+
cms.alerts.error(`[${error.name}] UpdateDocument failed: ${error.message}`, 30 * 1e3);
|
|
3020
|
+
console.error(error);
|
|
3021
|
+
}
|
|
3804
3022
|
}
|
|
3805
3023
|
});
|
|
3806
3024
|
}, [cms, document, relativePath, collection, mutationInfo]);
|
|
@@ -3860,11 +3078,9 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
3860
3078
|
return /* @__PURE__ */ React__default["default"].createElement(Layout, null, /* @__PURE__ */ React__default["default"].createElement(LoginPage, null));
|
|
3861
3079
|
}
|
|
3862
3080
|
return /* @__PURE__ */ React__default["default"].createElement(GetCMS, null, (cms) => {
|
|
3863
|
-
const isTinaAdminEnabled = cms.flags.get("tina-admin");
|
|
3081
|
+
const isTinaAdminEnabled = cms.flags.get("tina-admin") === false ? false : true;
|
|
3864
3082
|
if (isTinaAdminEnabled) {
|
|
3865
|
-
return /* @__PURE__ */ React__default["default"].createElement(Layout, null, /* @__PURE__ */ React__default["default"].createElement(reactRouterDom.
|
|
3866
|
-
basename: "/admin"
|
|
3867
|
-
}, /* @__PURE__ */ React__default["default"].createElement("div", {
|
|
3083
|
+
return /* @__PURE__ */ React__default["default"].createElement(Layout, null, /* @__PURE__ */ React__default["default"].createElement(reactRouterDom.HashRouter, null, /* @__PURE__ */ React__default["default"].createElement("div", {
|
|
3868
3084
|
className: "flex items-stretch h-screen overflow-hidden"
|
|
3869
3085
|
}, /* @__PURE__ */ React__default["default"].createElement(Sidebar, {
|
|
3870
3086
|
cms
|
|
@@ -3890,9 +3106,7 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
3890
3106
|
element: /* @__PURE__ */ React__default["default"].createElement(DashboardPage, null)
|
|
3891
3107
|
}))))));
|
|
3892
3108
|
} else {
|
|
3893
|
-
return /* @__PURE__ */ React__default["default"].createElement(Layout, null, /* @__PURE__ */ React__default["default"].createElement(reactRouterDom.
|
|
3894
|
-
basename: "/admin"
|
|
3895
|
-
}, /* @__PURE__ */ React__default["default"].createElement(reactRouterDom.Routes, null, /* @__PURE__ */ React__default["default"].createElement(reactRouterDom.Route, {
|
|
3109
|
+
return /* @__PURE__ */ React__default["default"].createElement(Layout, null, /* @__PURE__ */ React__default["default"].createElement(reactRouterDom.HashRouter, null, /* @__PURE__ */ React__default["default"].createElement(reactRouterDom.Routes, null, /* @__PURE__ */ React__default["default"].createElement(reactRouterDom.Route, {
|
|
3896
3110
|
path: "logout",
|
|
3897
3111
|
element: /* @__PURE__ */ React__default["default"].createElement(LogoutPage, null)
|
|
3898
3112
|
}), /* @__PURE__ */ React__default["default"].createElement(reactRouterDom.Route, {
|
|
@@ -3909,6 +3123,12 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
3909
3123
|
this.mapper = mapper;
|
|
3910
3124
|
}
|
|
3911
3125
|
}
|
|
3126
|
+
const defineSchema = (config) => {
|
|
3127
|
+
return config;
|
|
3128
|
+
};
|
|
3129
|
+
const defineConfig = (config) => {
|
|
3130
|
+
return config;
|
|
3131
|
+
};
|
|
3912
3132
|
exports2.AuthWallInner = AuthWallInner;
|
|
3913
3133
|
exports2.Client = Client;
|
|
3914
3134
|
exports2.DEFAULT_LOCAL_TINA_GQL_SERVER_URL = DEFAULT_LOCAL_TINA_GQL_SERVER_URL;
|
|
@@ -3923,6 +3143,8 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
3923
3143
|
exports2.assertShape = assertShape;
|
|
3924
3144
|
exports2.createClient = createClient;
|
|
3925
3145
|
exports2["default"] = TinaCMSProvider2;
|
|
3146
|
+
exports2.defineConfig = defineConfig;
|
|
3147
|
+
exports2.defineSchema = defineSchema;
|
|
3926
3148
|
exports2.getStaticPropsForTina = getStaticPropsForTina;
|
|
3927
3149
|
exports2.gql = gql;
|
|
3928
3150
|
exports2.safeAssertShape = safeAssertShape;
|