tinacms 0.68.5 → 0.68.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/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("react"), require("final-form"), require("@tinacms/schema-tools"), require("graphql-tag"), require("yup"), require("styled-components"), require("@tinacms/sharedctx"), require("url-pattern"), require("react-router-dom"), require("@headlessui/react")) : typeof define === "function" && define.amd ? define(["exports", "@tinacms/toolkit", "graphql", "lodash.set", "react", "final-form", "@tinacms/schema-tools", "graphql-tag", "yup", "styled-components", "@tinacms/sharedctx", "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, global.NOOP));
34
- })(this, function(exports2, toolkit, G, set, React, finalForm, schemaTools, gql$1, yup, styled, sharedctx, UrlPattern, reactRouterDom, react) {
33
+ typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("@tinacms/toolkit"), require("graphql"), require("lodash.set"), require("react"), require("final-form"), require("@tinacms/schema-tools"), require("graphql-tag"), require("yup"), require("styled-components"), require("@tinacms/sharedctx"), require("url-pattern"), require("react-router-dom"), require("@headlessui/react"), require("@react-hook/window-size")) : typeof define === "function" && define.amd ? define(["exports", "@tinacms/toolkit", "graphql", "lodash.set", "react", "final-form", "@tinacms/schema-tools", "graphql-tag", "yup", "styled-components", "@tinacms/sharedctx", "url-pattern", "react-router-dom", "@headlessui/react", "@react-hook/window-size"], 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, global.NOOP, global.NOOP));
34
+ })(this, function(exports2, toolkit, G, set, React, finalForm, schemaTools, gql$1, yup, styled, sharedctx, UrlPattern, reactRouterDom, react, windowSize) {
35
35
  "use strict";
36
36
  function _interopDefaultLegacy(e) {
37
37
  return e && typeof e === "object" && "default" in e ? e : { "default": e };
@@ -59,6 +59,7 @@ var __objRest = (source, exclude) => {
59
59
  var G__namespace = /* @__PURE__ */ _interopNamespace(G);
60
60
  var set__default = /* @__PURE__ */ _interopDefaultLegacy(set);
61
61
  var React__default = /* @__PURE__ */ _interopDefaultLegacy(React);
62
+ var React__namespace = /* @__PURE__ */ _interopNamespace(React);
62
63
  var gql__default = /* @__PURE__ */ _interopDefaultLegacy(gql$1);
63
64
  var yup__namespace = /* @__PURE__ */ _interopNamespace(yup);
64
65
  var styled__default = /* @__PURE__ */ _interopDefaultLegacy(styled);
@@ -2467,19 +2468,25 @@ mutation addPendingDocumentMutation(
2467
2468
  }
2468
2469
  }`, { variables: { collection, relativePath } });
2469
2470
  }
2470
- async fetchCollection(collectionName, includeDocuments) {
2471
+ async fetchCollection(collectionName, includeDocuments, after) {
2471
2472
  if (includeDocuments === true) {
2472
2473
  if (this.useDataLayer) {
2473
2474
  const sort = this.schema.getIsTitleFieldName(collectionName);
2474
2475
  const response = await this.api.request(`#graphql
2475
- query($collection: String!, $includeDocuments: Boolean!, $sort: String){
2476
+ query($collection: String!, $includeDocuments: Boolean!, $sort: String, $limit: Float, $after: String){
2476
2477
  collection(collection: $collection){
2477
2478
  name
2478
2479
  label
2479
2480
  format
2480
2481
  templates
2481
- documents(sort: $sort) @include(if: $includeDocuments) {
2482
+ documents(sort: $sort, after: $after, first: $limit) @include(if: $includeDocuments) {
2482
2483
  totalCount
2484
+ pageInfo {
2485
+ hasPreviousPage
2486
+ hasNextPage
2487
+ startCursor
2488
+ endCursor
2489
+ }
2483
2490
  edges {
2484
2491
  node {
2485
2492
  ... on Document {
@@ -2498,7 +2505,15 @@ mutation addPendingDocumentMutation(
2498
2505
  }
2499
2506
  }
2500
2507
  }
2501
- }`, { variables: { collection: collectionName, includeDocuments, sort } });
2508
+ }`, {
2509
+ variables: {
2510
+ collection: collectionName,
2511
+ includeDocuments,
2512
+ sort,
2513
+ limit: 10,
2514
+ after
2515
+ }
2516
+ });
2502
2517
  return response.collection;
2503
2518
  } else {
2504
2519
  const response = await this.api.request(`#graphql
@@ -2514,7 +2529,6 @@ mutation addPendingDocumentMutation(
2514
2529
  node {
2515
2530
  ... on Document {
2516
2531
  _sys {
2517
- # TODO: only include title if we need to
2518
2532
  template
2519
2533
  breadcrumbs
2520
2534
  path
@@ -2658,7 +2672,9 @@ mutation addPendingDocumentMutation(
2658
2672
  sidebar: true
2659
2673
  }), [props.cms]);
2660
2674
  if (!cms.api.tina) {
2661
- cms.registerApi("tina", createClient(props));
2675
+ cms.registerApi("tina", createClient(__spreadProps(__spreadValues({}, props), { branch: currentBranch })));
2676
+ } else {
2677
+ cms.api.tina.setBranch(currentBranch);
2662
2678
  }
2663
2679
  if (!cms.api.admin) {
2664
2680
  cms.registerApi("admin", new TinaAdminApi(cms));
@@ -2727,7 +2743,7 @@ mutation addPendingDocumentMutation(
2727
2743
  }))));
2728
2744
  };
2729
2745
  const TinaCloudAuthWall = TinaCloudProvider;
2730
- 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-0 {\n width: 0px;\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-600 {\n --tw-text-opacity: 1;\n color: rgb(86 81 101 / var(--tw-text-opacity));\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-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 .text-red-500 {\n --tw-text-opacity: 1;\n color: rgb(239 68 68 / 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';
2746
+ 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 .pointer-events-auto {\n pointer-events: auto;\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 .inset-0 {\n top: 0px;\n right: 0px;\n bottom: 0px;\n left: 0px;\n}\n.tina-tailwind .left-0 {\n left: 0px;\n}\n.tina-tailwind .top-0 {\n top: 0px;\n}\n.tina-tailwind .top-8 {\n top: 32px;\n}\n.tina-tailwind .right-0 {\n right: 0px;\n}\n.tina-tailwind .top-10 {\n top: 40px;\n}\n.tina-tailwind .top-4 {\n top: 16px;\n}\n.tina-tailwind .z-overlay {\n z-index: 10600;\n}\n.tina-tailwind .z-menu {\n z-index: 9800;\n}\n.tina-tailwind .z-50 {\n z-index: 50;\n}\n.tina-tailwind .mx-auto {\n margin-left: auto;\n margin-right: auto;\n}\n.tina-tailwind .-ml-px {\n margin-left: -1px;\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-7 {\n height: 28px;\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-0 {\n width: 0px;\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 .-translate-x-full {\n --tw-translate-x: -100%;\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 .translate-x-0 {\n --tw-translate-x: 0px;\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 .translate-x-full {\n --tw-translate-x: 100%;\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-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 {\n border-radius: 4px;\n}\n.tina-tailwind .rounded-full {\n border-radius: 9999px;\n}\n.tina-tailwind .rounded-md {\n border-radius: 6px;\n}\n.tina-tailwind .rounded-r-md {\n border-top-right-radius: 6px;\n border-bottom-right-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 .bg-gradient-to-br {\n background-image: linear-gradient(to bottom right, 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 .from-gray-800 {\n --tw-gradient-from: #363145;\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgb(54 49 69 / 0));\n}\n.tina-tailwind .via-gray-900 {\n --tw-gradient-stops: var(--tw-gradient-from), #252336, var(--tw-gradient-to, rgb(37 35 54 / 0));\n}\n.tina-tailwind .to-gray-900 {\n --tw-gradient-to: #252336;\n}\n.tina-tailwind .to-black {\n --tw-gradient-to: #000;\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 .py-5 {\n padding-top: 20px;\n padding-bottom: 20px;\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 .pt-3 {\n padding-top: 12px;\n}\n.tina-tailwind .pl-18 {\n padding-left: 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-600 {\n --tw-text-opacity: 1;\n color: rgb(86 81 101 / var(--tw-text-opacity));\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-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 .text-red-500 {\n --tw-text-opacity: 1;\n color: rgb(239 68 68 / 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-0 {\n opacity: 0;\n}\n.tina-tailwind .opacity-80 {\n opacity: .8;\n}\n.tina-tailwind .opacity-90 {\n opacity: .9;\n}\n.tina-tailwind .opacity-50 {\n opacity: .5;\n}\n.tina-tailwind .opacity-70 {\n opacity: .7;\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-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-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 {\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-200 {\n transition-duration: 200ms;\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';
2731
2747
  class ContentCreatorPlugin {
2732
2748
  constructor(options) {
2733
2749
  this.__type = "content-creator";
@@ -3392,13 +3408,46 @@ This will work when developing locally but NOT when deployed to production.
3392
3408
  }, [cms]);
3393
3409
  return { collections, loading, error };
3394
3410
  };
3411
+ function IoMdClose(props) {
3412
+ return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 512 512" }, "child": [{ "tag": "path", "attr": { "d": "M405 136.798L375.202 107 256 226.202 136.798 107 107 136.798 226.202 256 107 375.202 136.798 405 256 285.798 375.202 405 405 375.202 285.798 256z" } }] })(props);
3413
+ }
3414
+ function BiEdit(props) {
3415
+ return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24" }, "child": [{ "tag": "path", "attr": { "d": "m7 17.013 4.413-.015 9.632-9.54c.378-.378.586-.88.586-1.414s-.208-1.036-.586-1.414l-1.586-1.586c-.756-.756-2.075-.752-2.825-.003L7 12.583v4.43zM18.045 4.458l1.589 1.583-1.597 1.582-1.586-1.585 1.594-1.58zM9 13.417l6.03-5.973 1.586 1.586-6.029 5.971L9 15.006v-1.589z" } }, { "tag": "path", "attr": { "d": "M5 21h14c1.103 0 2-.897 2-2v-8.668l-2 2V19H8.158c-.026 0-.053.01-.079.01-.033 0-.066-.009-.1-.01H5V5h6.847l2-2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2z" } }] })(props);
3416
+ }
3417
+ function BiLeftArrowAlt(props) {
3418
+ return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24" }, "child": [{ "tag": "path", "attr": { "d": "M12.707 17.293 8.414 13H18v-2H8.414l4.293-4.293-1.414-1.414L4.586 12l6.707 6.707z" } }] })(props);
3419
+ }
3420
+ function BiLogIn(props) {
3421
+ return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24" }, "child": [{ "tag": "path", "attr": { "d": "m13 16 5-4-5-4v3H4v2h9z" } }, { "tag": "path", "attr": { "d": "M20 3h-9c-1.103 0-2 .897-2 2v4h2V5h9v14h-9v-4H9v4c0 1.103.897 2 2 2h9c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2z" } }] })(props);
3422
+ }
3423
+ function BiLogOut(props) {
3424
+ return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24" }, "child": [{ "tag": "path", "attr": { "d": "M16 13v-2H7V8l-5 4 5 4v-3z" } }, { "tag": "path", "attr": { "d": "M20 3h-9c-1.103 0-2 .897-2 2v4h2V5h9v14h-9v-4H9v4c0 1.103.897 2 2 2h9c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2z" } }] })(props);
3425
+ }
3426
+ function BiMenu(props) {
3427
+ return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24" }, "child": [{ "tag": "path", "attr": { "d": "M4 6h16v2H4zm0 5h16v2H4zm0 5h16v2H4z" } }] })(props);
3428
+ }
3429
+ function BiPlus(props) {
3430
+ return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24" }, "child": [{ "tag": "path", "attr": { "d": "M19 11h-6V5h-2v6H5v2h6v6h2v-6h6z" } }] })(props);
3431
+ }
3432
+ function BiRightArrowAlt(props) {
3433
+ return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24" }, "child": [{ "tag": "path", "attr": { "d": "m11.293 17.293 1.414 1.414L19.414 12l-6.707-6.707-1.414 1.414L15.586 11H6v2h9.586z" } }] })(props);
3434
+ }
3435
+ function BiTrash(props) {
3436
+ return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24" }, "child": [{ "tag": "path", "attr": { "d": "M5 20a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8h2V6h-4V4a2 2 0 0 0-2-2H9a2 2 0 0 0-2 2v2H3v2h2zM9 4h6v2H9zM8 8h9v12H7V8z" } }, { "tag": "path", "attr": { "d": "M9 10h2v8H9zm4 0h2v8h-2z" } }] })(props);
3437
+ }
3395
3438
  const slugify = (text) => {
3396
3439
  return text.toString().toLowerCase().trim().replace(/[^\w\s-]/g, "").replace(/[\s_-]+/g, "_").replace(/^-+|-+$/g, "");
3397
3440
  };
3398
3441
  const Sidebar = ({ cms }) => {
3442
+ var _a, _b;
3399
3443
  const collectionsInfo = useGetCollections(cms);
3400
3444
  const screens = cms.plugins.getType("screen").all();
3401
- return /* @__PURE__ */ React__default["default"].createElement(toolkit.Nav, {
3445
+ const [menuIsOpen, setMenuIsOpen] = React__default["default"].useState(false);
3446
+ const isLocalMode = (_b = (_a = cms.api) == null ? void 0 : _a.tina) == null ? void 0 : _b.isLocalMode;
3447
+ const navBreakpoint = 1e3;
3448
+ const windowWidth = windowSize.useWindowWidth();
3449
+ const renderDesktopNav = windowWidth > navBreakpoint;
3450
+ return /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, renderDesktopNav && /* @__PURE__ */ React__default["default"].createElement(toolkit.Nav, {
3402
3451
  sidebarWidth: 360,
3403
3452
  showCollections: true,
3404
3453
  collectionsInfo,
@@ -3414,7 +3463,76 @@ This will work when developing locally but NOT when deployed to production.
3414
3463
  to: `collections/${collection.name}`,
3415
3464
  Icon: ImFilesEmpty
3416
3465
  })
3417
- });
3466
+ }), !renderDesktopNav && /* @__PURE__ */ React__default["default"].createElement(react.Transition, {
3467
+ show: menuIsOpen
3468
+ }, /* @__PURE__ */ React__default["default"].createElement(react.Transition.Child, {
3469
+ as: React__default["default"].Fragment,
3470
+ enter: "transform transition-all ease-out duration-300",
3471
+ enterFrom: "opacity-0 -translate-x-full",
3472
+ enterTo: "opacity-100 translate-x-0",
3473
+ leave: "transform transition-all ease-in duration-200",
3474
+ leaveFrom: "opacity-100 translate-x-0",
3475
+ leaveTo: "opacity-0 -translate-x-full"
3476
+ }, /* @__PURE__ */ React__default["default"].createElement("div", {
3477
+ className: "fixed left-0 top-0 z-overlay h-full transform"
3478
+ }, /* @__PURE__ */ React__default["default"].createElement(toolkit.Nav, {
3479
+ className: "rounded-r-md",
3480
+ sidebarWidth: 360,
3481
+ showCollections: true,
3482
+ collectionsInfo,
3483
+ screens,
3484
+ contentCreators: [],
3485
+ RenderNavSite: ({ view }) => /* @__PURE__ */ React__default["default"].createElement(SidebarLink, {
3486
+ label: view.name,
3487
+ to: `screens/${slugify(view.name)}`,
3488
+ Icon: view.Icon ? view.Icon : ImFilesEmpty,
3489
+ onClick: () => {
3490
+ setMenuIsOpen(false);
3491
+ }
3492
+ }),
3493
+ RenderNavCollection: ({ collection }) => /* @__PURE__ */ React__default["default"].createElement(SidebarLink, {
3494
+ label: collection.label ? collection.label : collection.name,
3495
+ to: `collections/${collection.name}`,
3496
+ Icon: ImFilesEmpty,
3497
+ onClick: () => {
3498
+ setMenuIsOpen(false);
3499
+ }
3500
+ })
3501
+ }, /* @__PURE__ */ React__default["default"].createElement("div", {
3502
+ className: "absolute top-8 right-0 transform translate-x-full overflow-hidden"
3503
+ }, /* @__PURE__ */ React__default["default"].createElement(toolkit.Button, {
3504
+ rounded: "right",
3505
+ variant: "secondary",
3506
+ onClick: () => {
3507
+ setMenuIsOpen(false);
3508
+ },
3509
+ className: `transition-opacity duration-150 ease-out`
3510
+ }, /* @__PURE__ */ React__default["default"].createElement(IoMdClose, {
3511
+ className: "h-6 w-auto"
3512
+ })))))), /* @__PURE__ */ React__default["default"].createElement(react.Transition.Child, {
3513
+ as: React__default["default"].Fragment,
3514
+ enter: "ease-out duration-300",
3515
+ enterFrom: "opacity-0",
3516
+ enterTo: "opacity-80",
3517
+ entered: "opacity-80",
3518
+ leave: "ease-in duration-200",
3519
+ leaveFrom: "opacity-80",
3520
+ leaveTo: "opacity-0"
3521
+ }, /* @__PURE__ */ React__default["default"].createElement("div", {
3522
+ onClick: () => {
3523
+ setMenuIsOpen(false);
3524
+ },
3525
+ className: "fixed z-menu inset-0 bg-gradient-to-br from-gray-800 via-gray-900 to-black"
3526
+ }))), !renderDesktopNav && /* @__PURE__ */ React__default["default"].createElement(toolkit.Button, {
3527
+ rounded: "right",
3528
+ variant: "secondary",
3529
+ onClick: () => {
3530
+ setMenuIsOpen(true);
3531
+ },
3532
+ className: `pointer-events-auto -ml-px absolute left-0 z-50 ${isLocalMode ? `top-10` : `top-4`}`
3533
+ }, /* @__PURE__ */ React__default["default"].createElement(BiMenu, {
3534
+ className: "h-7 w-auto"
3535
+ })));
3418
3536
  };
3419
3537
  const SidebarLink = (props) => {
3420
3538
  const { to, label, Icon } = props;
@@ -3422,6 +3540,8 @@ This will work when developing locally but NOT when deployed to production.
3422
3540
  className: ({ isActive }) => {
3423
3541
  return `text-base tracking-wide ${isActive ? "text-blue-600" : "text-gray-500"} hover:text-blue-600 flex items-center opacity-90 hover:opacity-100`;
3424
3542
  },
3543
+ onClick: props.onClick ? props.onClick : () => {
3544
+ },
3425
3545
  to
3426
3546
  }, /* @__PURE__ */ React__default["default"].createElement(Icon, {
3427
3547
  className: "mr-2 h-6 opacity-80 w-auto"
@@ -3435,21 +3555,6 @@ This will work when developing locally but NOT when deployed to production.
3435
3555
  return null;
3436
3556
  }
3437
3557
  };
3438
- function BiEdit(props) {
3439
- return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24" }, "child": [{ "tag": "path", "attr": { "d": "m7 17.013 4.413-.015 9.632-9.54c.378-.378.586-.88.586-1.414s-.208-1.036-.586-1.414l-1.586-1.586c-.756-.756-2.075-.752-2.825-.003L7 12.583v4.43zM18.045 4.458l1.589 1.583-1.597 1.582-1.586-1.585 1.594-1.58zM9 13.417l6.03-5.973 1.586 1.586-6.029 5.971L9 15.006v-1.589z" } }, { "tag": "path", "attr": { "d": "M5 21h14c1.103 0 2-.897 2-2v-8.668l-2 2V19H8.158c-.026 0-.053.01-.079.01-.033 0-.066-.009-.1-.01H5V5h6.847l2-2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2z" } }] })(props);
3440
- }
3441
- function BiLogIn(props) {
3442
- return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24" }, "child": [{ "tag": "path", "attr": { "d": "m13 16 5-4-5-4v3H4v2h9z" } }, { "tag": "path", "attr": { "d": "M20 3h-9c-1.103 0-2 .897-2 2v4h2V5h9v14h-9v-4H9v4c0 1.103.897 2 2 2h9c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2z" } }] })(props);
3443
- }
3444
- function BiLogOut(props) {
3445
- return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24" }, "child": [{ "tag": "path", "attr": { "d": "M16 13v-2H7V8l-5 4 5 4v-3z" } }, { "tag": "path", "attr": { "d": "M20 3h-9c-1.103 0-2 .897-2 2v4h2V5h9v14h-9v-4H9v4c0 1.103.897 2 2 2h9c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2z" } }] })(props);
3446
- }
3447
- function BiPlus(props) {
3448
- return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24" }, "child": [{ "tag": "path", "attr": { "d": "M19 11h-6V5h-2v6H5v2h6v6h2v-6h6z" } }] })(props);
3449
- }
3450
- function BiTrash(props) {
3451
- return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24" }, "child": [{ "tag": "path", "attr": { "d": "M5 20a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8h2V6h-4V4a2 2 0 0 0-2-2H9a2 2 0 0 0-2 2v2H3v2h2zM9 4h6v2H9zM8 8h9v12H7V8z" } }, { "tag": "path", "attr": { "d": "M9 10h2v8H9zm4 0h2v8h-2z" } }] })(props);
3452
- }
3453
3558
  function MdOutlineArrowBack(props) {
3454
3559
  return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24" }, "child": [{ "tag": "path", "attr": { "fill": "none", "d": "M0 0h24v24H0V0z" } }, { "tag": "path", "attr": { "d": "M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z" } }] })(props);
3455
3560
  }
@@ -3464,7 +3569,7 @@ This will work when developing locally but NOT when deployed to production.
3464
3569
  }, /* @__PURE__ */ React__default["default"].createElement("div", {
3465
3570
  className: "px-5 py-4 border-b border-gray-150"
3466
3571
  }, /* @__PURE__ */ React__default["default"].createElement("h2", {
3467
- className: "text-2xl tracking-wide text-gray-700 flex items-center gap-0.5"
3572
+ className: "text-2xl font-sans tracking-wide text-gray-700 flex items-center gap-0.5"
3468
3573
  }, /* @__PURE__ */ React__default["default"].createElement("svg", {
3469
3574
  viewBox: "0 0 32 32",
3470
3575
  fill: "#EC4815",
@@ -3567,7 +3672,7 @@ This will work when developing locally but NOT when deployed to production.
3567
3672
  return /* @__PURE__ */ React__default["default"].createElement(PageWrapper, null, /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, /* @__PURE__ */ React__default["default"].createElement(PageHeader, {
3568
3673
  isLocalMode: (_b = (_a = cms.api) == null ? void 0 : _a.tina) == null ? void 0 : _b.isLocalMode
3569
3674
  }, /* @__PURE__ */ React__default["default"].createElement("h3", {
3570
- className: "text-2xl text-gray-700"
3675
+ className: "text-2xl font-sans text-gray-700"
3571
3676
  }, "Welcome to Tina!")), /* @__PURE__ */ React__default["default"].createElement(PageBodyNarrow, null, "This is your dashboard for editing or creating content. Select a collection on the left to begin.")));
3572
3677
  });
3573
3678
  };
@@ -3670,7 +3775,7 @@ This will work when developing locally but NOT when deployed to production.
3670
3775
  fontWeight: "normal"
3671
3776
  }
3672
3777
  }, "Please wait, Tina is loading data..."))));
3673
- const useGetCollection = (cms, collectionName, includeDocuments = true) => {
3778
+ const useGetCollection = (cms, collectionName, includeDocuments = true, after = "") => {
3674
3779
  const api = new TinaAdminApi(cms);
3675
3780
  const [collection, setCollection] = React.useState(void 0);
3676
3781
  const [loading, setLoading] = React.useState(true);
@@ -3680,7 +3785,7 @@ This will work when developing locally but NOT when deployed to production.
3680
3785
  const fetchCollection = async () => {
3681
3786
  if (await api.isAuthenticated()) {
3682
3787
  try {
3683
- const collection2 = await api.fetchCollection(collectionName, includeDocuments);
3788
+ const collection2 = await api.fetchCollection(collectionName, includeDocuments, after);
3684
3789
  setCollection(collection2);
3685
3790
  } catch (error2) {
3686
3791
  cms.alerts.error(`[${error2.name}] GetCollection failed: ${error2.message}`, 30 * 1e3);
@@ -3693,7 +3798,7 @@ This will work when developing locally but NOT when deployed to production.
3693
3798
  };
3694
3799
  setLoading(true);
3695
3800
  fetchCollection();
3696
- }, [cms, collectionName, resetState]);
3801
+ }, [cms, collectionName, resetState, after]);
3697
3802
  const reFetchCollection = () => setResetSate((x) => x + 1);
3698
3803
  return { collection, loading, error, reFetchCollection };
3699
3804
  };
@@ -3701,9 +3806,10 @@ This will work when developing locally but NOT when deployed to production.
3701
3806
  cms,
3702
3807
  collectionName,
3703
3808
  includeDocuments = true,
3809
+ startCursor,
3704
3810
  children
3705
3811
  }) => {
3706
- const { collection, loading, error, reFetchCollection } = useGetCollection(cms, collectionName, includeDocuments);
3812
+ const { collection, loading, error, reFetchCollection } = useGetCollection(cms, collectionName, includeDocuments, startCursor || "");
3707
3813
  if (error) {
3708
3814
  return null;
3709
3815
  }
@@ -3712,6 +3818,148 @@ This will work when developing locally but NOT when deployed to production.
3712
3818
  }
3713
3819
  return /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, children(collection, loading, reFetchCollection));
3714
3820
  };
3821
+ const theme = styled.css`
3822
+ :root {
3823
+ --tina-color-primary-light: #2296fe;
3824
+ --tina-color-primary: #0084ff;
3825
+ --tina-color-primary-dark: #0574e4;
3826
+ --tina-color-error-light: #eb6337;
3827
+ --tina-color-error: #ec4815;
3828
+ --tina-color-error-dark: #dc4419;
3829
+ --tina-color-warning-light: #f5e06e;
3830
+ --tina-color-warning: #e9d050;
3831
+ --tina-color-warning-dark: #d3ba38;
3832
+ --tina-color-success-light: #57c355;
3833
+ --tina-color-success: #3cad3a;
3834
+ --tina-color-success-dark: #249a21;
3835
+ --tina-color-grey-0: #ffffff;
3836
+ --tina-color-grey-1: #f6f6f9;
3837
+ --tina-color-grey-2: #edecf3;
3838
+ --tina-color-grey-3: #e1ddec;
3839
+ --tina-color-grey-4: #b2adbe;
3840
+ --tina-color-grey-5: #918c9e;
3841
+ --tina-color-grey-6: #716c7f;
3842
+ --tina-color-grey-7: #565165;
3843
+ --tina-color-grey-8: #433e52;
3844
+ --tina-color-grey-9: #363145;
3845
+ --tina-color-grey-10: #252336;
3846
+ --tina-color-indicator: var(--tina-color-primary);
3847
+
3848
+ --tina-radius-small: 5px;
3849
+ --tina-radius-big: 24px;
3850
+
3851
+ --tina-padding-small: 12px;
3852
+ --tina-padding-big: 20px;
3853
+
3854
+ --tina-font-size-0: 12px;
3855
+ --tina-font-size-1: 13px;
3856
+ --tina-font-size-2: 15px;
3857
+ --tina-font-size-3: 16px;
3858
+ --tina-font-size-4: 18px;
3859
+ --tina-font-size-5: 20px;
3860
+ --tina-font-size-6: 22px;
3861
+ --tina-font-size-7: 26px;
3862
+ --tina-font-size-8: 32px;
3863
+
3864
+ --tina-font-family: 'Inter', sans-serif;
3865
+
3866
+ --tina-font-weight-regular: 400;
3867
+ --tina-font-weight-bold: 600;
3868
+
3869
+ --tina-shadow-big: 0px 2px 3px rgba(0, 0, 0, 0.05),
3870
+ 0 4px 12px rgba(0, 0, 0, 0.1);
3871
+ --tina-shadow-small: 0px 2px 3px rgba(0, 0, 0, 0.12);
3872
+
3873
+ --tina-timing-short: 85ms;
3874
+ --tina-timing-medium: 150ms;
3875
+ --tina-timing-long: 250ms;
3876
+
3877
+ --tina-z-index-0: 0;
3878
+ --tina-z-index-1: 10;
3879
+ --tina-z-index-2: 20;
3880
+ --tina-z-index-3: 30;
3881
+ --tina-z-index-4: 40;
3882
+ --tina-z-index-5: 50;
3883
+
3884
+ --tina-sidebar-width: 340px;
3885
+ --tina-sidebar-header-height: 60px;
3886
+ --tina-toolbar-height: 62px;
3887
+ }
3888
+ `;
3889
+ styled.createGlobalStyle`
3890
+ ${theme};
3891
+ `;
3892
+ const Button = (_g) => {
3893
+ var _h = _g, {
3894
+ variant = "secondary",
3895
+ as: Tag = "button",
3896
+ size = "medium",
3897
+ busy,
3898
+ disabled,
3899
+ rounded = "full",
3900
+ children,
3901
+ className
3902
+ } = _h, props = __objRest(_h, [
3903
+ "variant",
3904
+ "as",
3905
+ "size",
3906
+ "busy",
3907
+ "disabled",
3908
+ "rounded",
3909
+ "children",
3910
+ "className"
3911
+ ]);
3912
+ const baseClasses = "icon-parent inline-flex items-center font-medium focus:outline-none focus:ring-2 focus:shadow-outline text-center inline-flex justify-center transition-all duration-150 ease-out ";
3913
+ const variantClasses = {
3914
+ primary: `shadow text-white bg-blue-500 hover:bg-blue-600 focus:ring-blue-500`,
3915
+ secondary: `shadow text-gray-500 hover:text-blue-500 bg-gray-50 hover:bg-white border border-gray-200`,
3916
+ white: `shadow text-gray-500 hover:text-blue-500 bg-white hover:bg-gray-50 border border-gray-200`,
3917
+ ghost: `text-gray-500 hover:text-blue-500 hover:shadow border border-transparent hover:border-gray-200 bg-transparent`,
3918
+ danger: `shadow text-white bg-red-500 hover:bg-red-600 focus:ring-red-500`
3919
+ };
3920
+ const state = busy ? `busy` : disabled ? `disabled` : `default`;
3921
+ const stateClasses = {
3922
+ disabled: `pointer-events-none opacity-30 cursor-not-allowed`,
3923
+ busy: `pointer-events-none opacity-70 cursor-wait`,
3924
+ default: ``
3925
+ };
3926
+ const roundedClasses = {
3927
+ full: `rounded-full`,
3928
+ left: `rounded-l-full`,
3929
+ right: `rounded-r-full`
3930
+ };
3931
+ const sizeClasses = {
3932
+ small: `text-xs h-8 px-3`,
3933
+ medium: `text-sm h-10 px-4`,
3934
+ custom: ``
3935
+ };
3936
+ return /* @__PURE__ */ React__namespace.createElement(Tag, __spreadValues({
3937
+ className: `${baseClasses} ${variantClasses[variant]} ${sizeClasses[size]} ${stateClasses[state]} ${roundedClasses[rounded]} ${className}`
3938
+ }, props), children);
3939
+ };
3940
+ function CursorPaginator({
3941
+ navigateNext,
3942
+ navigatePrev,
3943
+ hasNext,
3944
+ hasPrev,
3945
+ variant = "secondary"
3946
+ }) {
3947
+ return /* @__PURE__ */ React__default["default"].createElement("div", {
3948
+ className: "w-full flex flex-shrink-0 justify-end gap-2 items-center"
3949
+ }, /* @__PURE__ */ React__default["default"].createElement(Button, {
3950
+ variant,
3951
+ disabled: !hasPrev,
3952
+ onClick: navigatePrev
3953
+ }, /* @__PURE__ */ React__default["default"].createElement(BiLeftArrowAlt, {
3954
+ className: "w-6 h-full mr-2 opacity-70"
3955
+ }), " Previous"), /* @__PURE__ */ React__default["default"].createElement(Button, {
3956
+ variant,
3957
+ disabled: !hasNext,
3958
+ onClick: navigateNext
3959
+ }, "Next ", /* @__PURE__ */ React__default["default"].createElement(BiRightArrowAlt, {
3960
+ className: "w-6 h-full ml-2 opacity-70"
3961
+ })));
3962
+ }
3715
3963
  const TemplateMenu = ({ templates }) => {
3716
3964
  return /* @__PURE__ */ React__default["default"].createElement(react.Menu, {
3717
3965
  as: "div",
@@ -3758,16 +4006,26 @@ This will work when developing locally but NOT when deployed to production.
3758
4006
  collection: collectionName,
3759
4007
  relativePath: ""
3760
4008
  });
4009
+ const [endCursor, setEndCursor] = React.useState("");
4010
+ const [prevCursors, setPrevCursors] = React.useState([]);
4011
+ const loc = reactRouterDom.useLocation();
4012
+ React.useEffect(() => {
4013
+ setEndCursor("");
4014
+ setPrevCursors([]);
4015
+ }, [loc]);
3761
4016
  return /* @__PURE__ */ React__default["default"].createElement(GetCMS, null, (cms) => {
3762
4017
  return /* @__PURE__ */ React__default["default"].createElement(GetCollection, {
3763
4018
  cms,
3764
4019
  collectionName,
3765
- includeDocuments: true
4020
+ includeDocuments: true,
4021
+ startCursor: endCursor
3766
4022
  }, (collection, _loading, reFetchCollection) => {
3767
4023
  var _a, _b;
3768
4024
  const totalCount = collection.documents.totalCount;
3769
4025
  const documents = collection.documents.edges;
3770
4026
  const admin = cms.api.admin;
4027
+ const pageInfo = collection.documents.pageInfo;
4028
+ const useDataFlag = cms.flags.get("experimentalData");
3771
4029
  return /* @__PURE__ */ React__default["default"].createElement(PageWrapper, null, /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, open && /* @__PURE__ */ React__default["default"].createElement(DeleteModal, {
3772
4030
  filename: vars.relativePath,
3773
4031
  deleteFunc: async () => {
@@ -3785,7 +4043,7 @@ This will work when developing locally but NOT when deployed to production.
3785
4043
  }), /* @__PURE__ */ React__default["default"].createElement(PageHeader, {
3786
4044
  isLocalMode: (_b = (_a = cms == null ? void 0 : cms.api) == null ? void 0 : _a.tina) == null ? void 0 : _b.isLocalMode
3787
4045
  }, /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, /* @__PURE__ */ React__default["default"].createElement("h3", {
3788
- className: "text-2xl text-gray-700"
4046
+ className: "font-sans text-2xl text-gray-700"
3789
4047
  }, collection.label ? collection.label : collection.name), !collection.templates && /* @__PURE__ */ React__default["default"].createElement(reactRouterDom.Link, {
3790
4048
  to: `new`,
3791
4049
  className: "icon-parent inline-flex items-center font-medium focus:outline-none focus:ring-2 focus:shadow-outline text-center rounded-full justify-center transition-all duration-150 ease-out shadow text-white bg-blue-500 hover:bg-blue-600 focus:ring-blue-500 text-sm h-10 px-6"
@@ -3850,7 +4108,7 @@ This will work when developing locally but NOT when deployed to production.
3850
4108
  size: "1.3rem"
3851
4109
  }),
3852
4110
  onMouseDown: () => {
3853
- navigate(`${document.node._sys.filename}`, { replace: true });
4111
+ navigate(`${document.node._sys.breadcrumbs.join("/")}`, { replace: true });
3854
4112
  }
3855
4113
  },
3856
4114
  {
@@ -3863,19 +4121,38 @@ This will work when developing locally but NOT when deployed to production.
3863
4121
  onMouseDown: () => {
3864
4122
  setVars({
3865
4123
  collection: collectionName,
3866
- relativePath: document.node._sys.filename + document.node._sys.extension
4124
+ relativePath: document.node._sys.breadcrumbs.join("/") + document.node._sys.extension
3867
4125
  });
3868
4126
  setOpen(true);
3869
4127
  }
3870
4128
  }
3871
4129
  ]
3872
4130
  })));
3873
- })))))));
4131
+ }))), useDataFlag && /* @__PURE__ */ React__default["default"].createElement("div", {
4132
+ className: "pt-3"
4133
+ }, /* @__PURE__ */ React__default["default"].createElement(CursorPaginator, {
4134
+ variant: "white",
4135
+ hasNext: pageInfo == null ? void 0 : pageInfo.hasNextPage,
4136
+ navigateNext: () => {
4137
+ const newState = [...prevCursors, endCursor];
4138
+ setPrevCursors(newState);
4139
+ setEndCursor(pageInfo == null ? void 0 : pageInfo.endCursor);
4140
+ },
4141
+ hasPrev: prevCursors.length > 0,
4142
+ navigatePrev: () => {
4143
+ const prev = prevCursors[prevCursors.length - 1];
4144
+ if (typeof prev === "string") {
4145
+ const newState = prevCursors.slice(0, -1);
4146
+ setPrevCursors(newState);
4147
+ setEndCursor(prev);
4148
+ }
4149
+ }
4150
+ }))))));
3874
4151
  });
3875
4152
  });
3876
4153
  };
3877
4154
  const DeleteModal = ({ close: close2, deleteFunc, filename }) => {
3878
- return /* @__PURE__ */ React__default["default"].createElement(toolkit.Modal, null, /* @__PURE__ */ React__default["default"].createElement(toolkit.ModalPopup, null, /* @__PURE__ */ React__default["default"].createElement(toolkit.ModalHeader, {
4155
+ return /* @__PURE__ */ React__default["default"].createElement(toolkit.Modal, null, /* @__PURE__ */ React__default["default"].createElement(toolkit.ModalHeader, {
3879
4156
  close: close2
3880
4157
  }, "Delete ", filename), /* @__PURE__ */ React__default["default"].createElement(toolkit.ModalBody, {
3881
4158
  padded: true
@@ -3889,7 +4166,7 @@ This will work when developing locally but NOT when deployed to production.
3889
4166
  await deleteFunc();
3890
4167
  close2();
3891
4168
  }
3892
- }, "Delete"))));
4169
+ }, "Delete")));
3893
4170
  };
3894
4171
  function HiChevronRight(props) {
3895
4172
  return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 20 20", "fill": "currentColor" }, "child": [{ "tag": "path", "attr": { "fillRule": "evenodd", "d": "M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z", "clipRule": "evenodd" } }] })(props);
@@ -3987,8 +4264,12 @@ This will work when developing locally but NOT when deployed to production.
3987
4264
  }
3988
4265
  });
3989
4266
  }, [cms, collection, mutationInfo]);
4267
+ const navBreakpoint = 1e3;
4268
+ const windowWidth = windowSize.useWindowWidth();
4269
+ const renderNavToggle = windowWidth < navBreakpoint + 1;
4270
+ const headerPadding = renderNavToggle ? "px-20" : "px-6";
3990
4271
  return /* @__PURE__ */ React__default["default"].createElement(PageWrapper, null, /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, ((_b = (_a = cms == null ? void 0 : cms.api) == null ? void 0 : _a.tina) == null ? void 0 : _b.isLocalMode) && /* @__PURE__ */ React__default["default"].createElement(toolkit.LocalWarning, null), /* @__PURE__ */ React__default["default"].createElement("div", {
3991
- className: "py-4 px-20 border-b border-gray-200 bg-white"
4272
+ className: `py-4 border-b border-gray-200 bg-white ${headerPadding}`
3992
4273
  }, /* @__PURE__ */ React__default["default"].createElement("div", {
3993
4274
  className: "max-w-form mx-auto"
3994
4275
  }, /* @__PURE__ */ React__default["default"].createElement("div", {
@@ -4131,8 +4412,12 @@ This will work when developing locally but NOT when deployed to production.
4131
4412
  }
4132
4413
  });
4133
4414
  }, [cms, document, relativePath, collection, mutationInfo]);
4415
+ const navBreakpoint = 1e3;
4416
+ const windowWidth = windowSize.useWindowWidth();
4417
+ const renderNavToggle = windowWidth < navBreakpoint + 1;
4418
+ const headerPadding = renderNavToggle ? "px-20" : "px-6";
4134
4419
  return /* @__PURE__ */ React__default["default"].createElement(PageWrapper, null, /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, ((_b = (_a = cms == null ? void 0 : cms.api) == null ? void 0 : _a.tina) == null ? void 0 : _b.isLocalMode) && /* @__PURE__ */ React__default["default"].createElement(toolkit.LocalWarning, null), /* @__PURE__ */ React__default["default"].createElement("div", {
4135
- className: "py-4 px-20 border-b border-gray-200 bg-white"
4420
+ className: `py-4 border-b border-gray-200 bg-white ${headerPadding}`
4136
4421
  }, /* @__PURE__ */ React__default["default"].createElement("div", {
4137
4422
  className: "max-w-form mx-auto"
4138
4423
  }, /* @__PURE__ */ React__default["default"].createElement("div", {
@@ -4155,13 +4440,18 @@ This will work when developing locally but NOT when deployed to production.
4155
4440
  };
4156
4441
  const ScreenPage = () => {
4157
4442
  const { screenName } = reactRouterDom.useParams();
4443
+ const navBreakpoint = 1e3;
4444
+ const windowWidth = windowSize.useWindowWidth();
4445
+ const renderNavToggle = windowWidth < navBreakpoint + 1;
4158
4446
  return /* @__PURE__ */ React__default["default"].createElement(GetCMS, null, (cms) => {
4159
4447
  var _a, _b;
4160
4448
  const screens = cms.plugins.getType("screen").all();
4161
4449
  const selectedScreen = screens.find(({ name }) => slugify(name) === screenName);
4162
4450
  return /* @__PURE__ */ React__default["default"].createElement("div", {
4163
4451
  className: "relative w-full h-full flex flex-col items-stretch justify-between"
4164
- }, ((_b = (_a = cms == null ? void 0 : cms.api) == null ? void 0 : _a.tina) == null ? void 0 : _b.isLocalMode) && /* @__PURE__ */ React__default["default"].createElement(toolkit.LocalWarning, null), /* @__PURE__ */ React__default["default"].createElement("div", {
4452
+ }, ((_b = (_a = cms == null ? void 0 : cms.api) == null ? void 0 : _a.tina) == null ? void 0 : _b.isLocalMode) && /* @__PURE__ */ React__default["default"].createElement(toolkit.LocalWarning, null), renderNavToggle && /* @__PURE__ */ React__default["default"].createElement("div", {
4453
+ className: `py-5 border-b border-gray-200 bg-white pl-18`
4454
+ }, selectedScreen.name), /* @__PURE__ */ React__default["default"].createElement("div", {
4165
4455
  className: "flex-1 overflow-y-auto relative flex flex-col items-stretch justify-between"
4166
4456
  }, /* @__PURE__ */ React__default["default"].createElement(selectedScreen.Component, {
4167
4457
  close: () => {