From e571cd02e354bbd35d51377531124534a101c0d8 Mon Sep 17 00:00:00 2001 From: Will King Date: Thu, 14 Dec 2023 12:18:43 -0600 Subject: [PATCH 1/3] Removed ignored files --- .gitignore | 12 ++++++------ index.js => docs-index.js | 2 +- docs-public/build/_assets/tailwind-L5SHDPXO.css | 1 + {public => docs-public}/favicon.ico | Bin .../favicons/android-icon-144x144.png | Bin .../favicons/android-icon-192x192.png | Bin .../favicons/android-icon-36x36.png | Bin .../favicons/android-icon-48x48.png | Bin .../favicons/android-icon-72x72.png | Bin .../favicons/android-icon-96x96.png | Bin .../favicons/apple-icon-114x114.png | Bin .../favicons/apple-icon-120x120.png | Bin .../favicons/apple-icon-144x144.png | Bin .../favicons/apple-icon-152x152.png | Bin .../favicons/apple-icon-180x180.png | Bin .../favicons/apple-icon-57x57.png | Bin .../favicons/apple-icon-60x60.png | Bin .../favicons/apple-icon-72x72.png | Bin .../favicons/apple-icon-76x76.png | Bin .../favicons/apple-icon-precomposed.png | Bin {public => docs-public}/favicons/apple-icon.png | Bin {public => docs-public}/favicons/favicon-16x16.png | Bin {public => docs-public}/favicons/favicon-32x32.png | Bin {public => docs-public}/favicons/favicon-96x96.png | Bin {public => docs-public}/favicons/manifest.json | 0 .../favicons/ms-icon-144x144.png | Bin .../favicons/ms-icon-150x150.png | Bin .../favicons/ms-icon-310x310.png | Bin {public => docs-public}/favicons/ms-icon-70x70.png | Bin {public => docs-public}/logos/TRADEMARKS.md | 0 {public => docs-public}/logos/pgo.png | Bin {public => docs-public}/logos/pgo.svg | 0 {public => docs-public}/robots.txt | 0 {public => docs-public}/sso.webm | Bin {public => docs-public}/upgrade.webm | Bin package.json | 10 +++++----- remix.config.js | 3 +++ scripts/build-server.ts | 4 ++-- server/index.ts | 8 ++++---- 39 files changed, 22 insertions(+), 18 deletions(-) rename index.js => docs-index.js (71%) create mode 100644 docs-public/build/_assets/tailwind-L5SHDPXO.css rename {public => docs-public}/favicon.ico (100%) rename {public => docs-public}/favicons/android-icon-144x144.png (100%) rename {public => docs-public}/favicons/android-icon-192x192.png (100%) rename {public => docs-public}/favicons/android-icon-36x36.png (100%) rename {public => docs-public}/favicons/android-icon-48x48.png (100%) rename {public => docs-public}/favicons/android-icon-72x72.png (100%) rename {public => docs-public}/favicons/android-icon-96x96.png (100%) rename {public => docs-public}/favicons/apple-icon-114x114.png (100%) rename {public => docs-public}/favicons/apple-icon-120x120.png (100%) rename {public => docs-public}/favicons/apple-icon-144x144.png (100%) rename {public => docs-public}/favicons/apple-icon-152x152.png (100%) rename {public => docs-public}/favicons/apple-icon-180x180.png (100%) rename {public => docs-public}/favicons/apple-icon-57x57.png (100%) rename {public => docs-public}/favicons/apple-icon-60x60.png (100%) rename {public => docs-public}/favicons/apple-icon-72x72.png (100%) rename {public => docs-public}/favicons/apple-icon-76x76.png (100%) rename {public => docs-public}/favicons/apple-icon-precomposed.png (100%) rename {public => docs-public}/favicons/apple-icon.png (100%) rename {public => docs-public}/favicons/favicon-16x16.png (100%) rename {public => docs-public}/favicons/favicon-32x32.png (100%) rename {public => docs-public}/favicons/favicon-96x96.png (100%) rename {public => docs-public}/favicons/manifest.json (100%) rename {public => docs-public}/favicons/ms-icon-144x144.png (100%) rename {public => docs-public}/favicons/ms-icon-150x150.png (100%) rename {public => docs-public}/favicons/ms-icon-310x310.png (100%) rename {public => docs-public}/favicons/ms-icon-70x70.png (100%) rename {public => docs-public}/logos/TRADEMARKS.md (100%) rename {public => docs-public}/logos/pgo.png (100%) rename {public => docs-public}/logos/pgo.svg (100%) rename {public => docs-public}/robots.txt (100%) rename {public => docs-public}/sso.webm (100%) rename {public => docs-public}/upgrade.webm (100%) diff --git a/.gitignore b/.gitignore index cadc4a4..7d6eb17 100644 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,10 @@ node_modules -/build -/public/build -/public/images -/public/pdf -/server-build +/docs-build +/docs-public/build +/docs-public/images +/docs-public/pdf +/docs-server-build .env *.local.* @@ -14,4 +14,4 @@ node_modules documentation /scripts/crd-builder/specs -/public/documentation \ No newline at end of file +/docs-public/documentation \ No newline at end of file diff --git a/index.js b/docs-index.js similarity index 71% rename from index.js rename to docs-index.js index 703c33c..686269b 100644 --- a/index.js +++ b/docs-index.js @@ -1,7 +1,7 @@ import 'dotenv/config' if (process.env.NODE_ENV === 'production') { - await import('./server-build/index.js') + await import('./docs-server-build/index.js') } else { await import('./server/index.ts') } diff --git a/docs-public/build/_assets/tailwind-L5SHDPXO.css b/docs-public/build/_assets/tailwind-L5SHDPXO.css new file mode 100644 index 0000000..e71878a --- /dev/null +++ b/docs-public/build/_assets/tailwind-L5SHDPXO.css @@ -0,0 +1 @@ +*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:rgb(var(--border-default))}:before,:after{--tw-content: ""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:var(--font-sans),ui-sans-serif,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#a1a1aa}input::placeholder,textarea::placeholder{opacity:1;color:#a1a1aa}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}[type=text],[type=email],[type=url],[type=password],[type=number],[type=date],[type=datetime-local],[type=month],[type=search],[type=tel],[type=time],[type=week],[multiple],textarea,select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#71717a;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem;--tw-shadow: 0 0 #0000}[type=text]:focus,[type=email]:focus,[type=url]:focus,[type=password]:focus,[type=number]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=month]:focus,[type=search]:focus,[type=tel]:focus,[type=time]:focus,[type=week]:focus,[multiple]:focus,textarea:focus,select:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#2563eb}input::-moz-placeholder,textarea::-moz-placeholder{color:#71717a;opacity:1}input::placeholder,textarea::placeholder{color:#71717a;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-top:0;padding-bottom:0}select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%2371717a' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple]{background-image:initial;background-position:initial;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#71717a;border-width:1px;--tw-shadow: 0 0 #0000}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 2px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}[type=checkbox]:checked,[type=radio]:checked{border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}[type=checkbox]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e")}[type=radio]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e")}[type=checkbox]:checked:hover,[type=checkbox]:checked:focus,[type=radio]:checked:hover,[type=radio]:checked:focus{border-color:transparent;background-color:currentColor}[type=checkbox]:indeterminate{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}[type=checkbox]:indeterminate:hover,[type=checkbox]:indeterminate:focus{border-color:transparent;background-color:currentColor}[type=file]{background:unset;border-color:inherit;border-width:0;border-radius:0;padding:0;font-size:unset;line-height:inherit}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(var(--ring-default) / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(var(--ring-default) / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~="not-prose"] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~="lead"]):not(:where([class~="not-prose"] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~="not-prose"] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:700}.prose :where(a):not(:where([class~="not-prose"] *)):hover{text-decoration:none}.prose :where(strong):not(:where([class~="not-prose"] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~="not-prose"] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~="not-prose"] *)){color:inherit}.prose :where(thead th strong):not(:where([class~="not-prose"] *)){color:inherit}.prose :where(ol):not(:where([class~="not-prose"] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol[type="A"]):not(:where([class~="not-prose"] *)){list-style-type:upper-alpha}.prose :where(ol[type="a"]):not(:where([class~="not-prose"] *)){list-style-type:lower-alpha}.prose :where(ol[type="A" s]):not(:where([class~="not-prose"] *)){list-style-type:upper-alpha}.prose :where(ol[type="a" s]):not(:where([class~="not-prose"] *)){list-style-type:lower-alpha}.prose :where(ol[type="I"]):not(:where([class~="not-prose"] *)){list-style-type:upper-roman}.prose :where(ol[type="i"]):not(:where([class~="not-prose"] *)){list-style-type:lower-roman}.prose :where(ol[type="I" s]):not(:where([class~="not-prose"] *)){list-style-type:upper-roman}.prose :where(ol[type="i" s]):not(:where([class~="not-prose"] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~="not-prose"] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~="not-prose"] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol > li):not(:where([class~="not-prose"] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul > li):not(:where([class~="not-prose"] *))::marker{color:var(--tw-prose-bullets)}.prose :where(hr):not(:where([class~="not-prose"] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~="not-prose"] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-left-width:.25rem;border-left-color:var(--tw-prose-quote-borders);quotes:"\201c""\201d""\2018""\2019";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.prose :where(h1):not(:where([class~="not-prose"] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~="not-prose"] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~="not-prose"] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~="not-prose"] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~="not-prose"] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~="not-prose"] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~="not-prose"] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~="not-prose"] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~="not-prose"] *)){margin-top:2em;margin-bottom:2em}.prose :where(figure > *):not(:where([class~="not-prose"] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~="not-prose"] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose :where(code):not(:where([class~="not-prose"] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~="not-prose"] *)):before{content:"`"}.prose :where(code):not(:where([class~="not-prose"] *)):after{content:"`"}.prose :where(a code):not(:where([class~="not-prose"] *)){color:inherit}.prose :where(h1 code):not(:where([class~="not-prose"] *)){color:inherit}.prose :where(h2 code):not(:where([class~="not-prose"] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~="not-prose"] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~="not-prose"] *)){color:inherit}.prose :where(blockquote code):not(:where([class~="not-prose"] *)){color:inherit}.prose :where(thead th code):not(:where([class~="not-prose"] *)){color:inherit}.prose :where(pre):not(:where([class~="not-prose"] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding:.8571429em 1.1428571em}.prose :where(pre code):not(:where([class~="not-prose"] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~="not-prose"] *)):before{content:none}.prose :where(pre code):not(:where([class~="not-prose"] *)):after{content:none}.prose :where(table):not(:where([class~="not-prose"] *)){width:100%;table-layout:auto;text-align:left;margin-top:0;margin-bottom:2em;font-size:.875em;line-height:1.7142857;min-width:100%}.prose :where(thead):not(:where([class~="not-prose"] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~="not-prose"] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.prose :where(tbody tr):not(:where([class~="not-prose"] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~="not-prose"] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~="not-prose"] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~="not-prose"] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~="not-prose"] *)){vertical-align:top}.prose{--tw-prose-body: #374151;--tw-prose-headings: #111827;--tw-prose-lead: #4b5563;--tw-prose-links: #111827;--tw-prose-bold: #111827;--tw-prose-counters: #6b7280;--tw-prose-bullets: #d1d5db;--tw-prose-hr: #e5e7eb;--tw-prose-quotes: #111827;--tw-prose-quote-borders: #e5e7eb;--tw-prose-captions: #6b7280;--tw-prose-code: #111827;--tw-prose-pre-code: #e5e7eb;--tw-prose-pre-bg: #1f2937;--tw-prose-th-borders: #d1d5db;--tw-prose-td-borders: #e5e7eb;--tw-prose-invert-body: #d1d5db;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #9ca3af;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #9ca3af;--tw-prose-invert-bullets: #4b5563;--tw-prose-invert-hr: #374151;--tw-prose-invert-quotes: #f3f4f6;--tw-prose-invert-quote-borders: #374151;--tw-prose-invert-captions: #9ca3af;--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #d1d5db;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #4b5563;--tw-prose-invert-td-borders: #374151;font-size:1rem;line-height:1.75}.prose :where(video):not(:where([class~="not-prose"] *)){margin-top:2em;margin-bottom:2em}.prose :where(figure):not(:where([class~="not-prose"] *)){margin-top:2em;margin-bottom:2em}.prose :where(li):not(:where([class~="not-prose"] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol > li):not(:where([class~="not-prose"] *)){padding-left:.375em}.prose :where(ul > li):not(:where([class~="not-prose"] *)){padding-left:.375em}.prose :where(.prose > ul > li p):not(:where([class~="not-prose"] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose > ul > li > *:first-child):not(:where([class~="not-prose"] *)){margin-top:1.25em}.prose :where(.prose > ul > li > *:last-child):not(:where([class~="not-prose"] *)){margin-bottom:1.25em}.prose :where(.prose > ol > li > *:first-child):not(:where([class~="not-prose"] *)){margin-top:1.25em}.prose :where(.prose > ol > li > *:last-child):not(:where([class~="not-prose"] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~="not-prose"] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(hr + *):not(:where([class~="not-prose"] *)){margin-top:0}.prose :where(h2 + *):not(:where([class~="not-prose"] *)){margin-top:0}.prose :where(h3 + *):not(:where([class~="not-prose"] *)){margin-top:0}.prose :where(h4 + *):not(:where([class~="not-prose"] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~="not-prose"] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~="not-prose"] *)){padding-right:0}.prose :where(tbody td,tfoot td):not(:where([class~="not-prose"] *)){padding:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~="not-prose"] *)){padding-left:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~="not-prose"] *)){padding-right:0}.prose :where(.prose > :first-child):not(:where([class~="not-prose"] *)){margin-top:0}.prose :where(.prose > :last-child):not(:where([class~="not-prose"] *)){margin-bottom:0}.prose :where(h2,h3,h4):not(:where([class~="not-prose"] *)){scroll-margin-top:8rem}.prose :where(td):not(:where([class~="not-prose"] *)){vertical-align:top;line-height:1.5}.aspect-h-3{--tw-aspect-h: 3}.aspect-w-4{position:relative;padding-bottom:calc(var(--tw-aspect-h) / var(--tw-aspect-w) * 100%);--tw-aspect-w: 4}.aspect-w-4>*{position:absolute;height:100%;width:100%;inset:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.bottom-0{bottom:0}.bottom-full{bottom:100%}.left-0{left:0}.left-4{left:1rem}.right-0{right:0}.right-3{right:.75rem}.right-4{right:1rem}.top-0{top:0}.top-16{top:4rem}.top-24{top:6rem}.top-3{top:.75rem}.top-3\.5{top:.875rem}.z-10{z-index:10}.z-30{z-index:30}.z-50{z-index:50}.mx-auto{margin-left:auto;margin-right:auto}.-ml-px{margin-left:-1px}.mb-1{margin-bottom:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-6{margin-left:1.5rem}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-6{margin-right:1.5rem}.mt-1{margin-top:.25rem}.mt-10{margin-top:2.5rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-12{height:3rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-\[calc\(100vh-4rem\)\]{height:calc(100vh - 4rem)}.h-\[calc\(100vh-5rem\)\]{height:calc(100vh - 5rem)}.h-auto{height:auto}.h-full{height:100%}.max-h-72{max-height:18rem}.max-h-\[200px\]{max-height:200px}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-12{width:3rem}.w-3{width:.75rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-full{width:100%}.min-w-0{min-width:0px}.min-w-full{min-width:100%}.max-w-4xl{max-width:56rem}.max-w-7xl{max-width:80rem}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.origin-top-left{transform-origin:top left}.rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-95{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.scroll-py-2{scroll-padding-top:.5rem;scroll-padding-bottom:.5rem}.list-disc{list-style-type:disc}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0px}.gap-0\.5{gap:.125rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.75rem * var(--tw-space-x-reverse));margin-left:calc(.75rem * calc(1 - var(--tw-space-x-reverse)))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-gray-100>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(244 244 245 / var(--tw-divide-opacity))}.justify-self-end{justify-self:end}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-0{border-width:0px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-crunchy{--tw-border-opacity: 1;border-color:rgb(43 103 240 / var(--tw-border-opacity))}.border-gray-1100{--tw-border-opacity: 1;border-color:rgb(2 2 3 / var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-white\/75{border-color:#ffffffbf}.bg-crunchy{--tw-bg-opacity: 1;background-color:rgb(43 103 240 / var(--tw-bg-opacity))}.bg-crunchy\/20{background-color:#2b67f033}.bg-crunchy\/25{background-color:#2b67f040}.bg-emerald-500{--tw-bg-opacity: 1;background-color:rgb(16 185 129 / var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(244 244 245 / var(--tw-bg-opacity))}.bg-gray-1100\/50{background-color:#02020380}.bg-gray-500{--tw-bg-opacity: 1;background-color:rgb(113 113 122 / var(--tw-bg-opacity))}.bg-orange-300{--tw-bg-opacity: 1;background-color:rgb(253 186 116 / var(--tw-bg-opacity))}.bg-slate-900\/50{background-color:#0f172a80}.bg-success-500\/20{background-color:#10b98133}.bg-transparent{background-color:transparent}.bg-warning-500\/20{background-color:#f9731633}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-opacity-25{--tw-bg-opacity: .25}.fill-crunchy{fill:#2b67f0}.fill-gray-900{fill:#18181b}.fill-white{fill:#fff}.fill-white\/50{fill:#ffffff80}.stroke-slate-500{stroke:#64748b}.stroke-white{stroke:#fff}.object-contain{-o-object-fit:contain;object-fit:contain}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-4{padding:1rem}.p-8{padding:2rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-10{padding-bottom:2.5rem}.pb-12{padding-bottom:3rem}.pb-4{padding-bottom:1rem}.pb-8{padding-bottom:2rem}.pl-1{padding-left:.25rem}.pl-11{padding-left:2.75rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pr-10{padding-right:2.5rem}.pr-4{padding-right:1rem}.pr-6{padding-right:1.5rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-8{padding-top:2rem}.text-center{text-align:center}.align-middle{vertical-align:middle}.font-display{font-family:var(--font-display),ui-sans-serif,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-medium{font-weight:500}.uppercase{text-transform:uppercase}.tracking-tight{letter-spacing:-.025em}.text-crunchy{--tw-text-opacity: 1;color:rgb(43 103 240 / var(--tw-text-opacity))}.text-gray-200{--tw-text-opacity: 1;color:rgb(228 228 231 / var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity: 1;color:rgb(161 161 170 / var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity: 1;color:rgb(113 113 122 / var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity: 1;color:rgb(39 39 42 / var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity: 1;color:rgb(24 24 27 / var(--tw-text-opacity))}.text-primary{--tw-text-opacity: 1;color:rgb(var(--text-primary) / var(--tw-text-opacity))}.text-secondary{--tw-text-opacity: 1;color:rgb(var(--text-secondary) / var(--tw-text-opacity))}.text-success-900{--tw-text-opacity: 1;color:rgb(6 78 59 / var(--tw-text-opacity))}.text-warning-900{--tw-text-opacity: 1;color:rgb(124 45 18 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-white\/75{color:#ffffffbf}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.placeholder-gray-400::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(161 161 170 / var(--tw-placeholder-opacity))}.placeholder-gray-400::placeholder{--tw-placeholder-opacity: 1;color:rgb(161 161 170 / var(--tw-placeholder-opacity))}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-75{opacity:.75}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-black{--tw-ring-opacity: 1;--tw-ring-color: rgb(0 0 0 / var(--tw-ring-opacity))}.ring-opacity-5{--tw-ring-opacity: .05}.filter{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)}.backdrop-blur{--tw-backdrop-blur: blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-75{transition-duration:75ms}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}:root{--gray-50: 250 250 250;--gray-100: 244 244 245;--gray-200: 228 228 231;--gray-300: 161 161 170;--gray-400: 212 212 216;--gray-450: 143 143 153;--gray-500: 113 113 122;--gray-600: 82 82 91;--gray-700: 63 63 70;--gray-800: 39 39 42;--gray-900: 24 24 27;--gray-1000: 6 9 14;--gray-1100: 2 2 3;--brand: 43 103 240;--text-secondary: var(--gray-500);--text-primary: var(--gray-900);--border-default: var(--gray-200);--bg-base: var(--gray-100);--bg-layer-1: 255 255 255;--bg-layer-2: var(--gray-50);--bg-border: var(--border-default);--ring-default: var(--brand);--ring-ghost: var(--gray-300);--font-sans: "Arimo";--font-display: "Plus Jakarta Sans";--font-mono: ui-monospace}.dark{--text-secondary: var(--gray-450);--text-primary: 255 255 255;--border-default: var(--gray-700);--bg-base: var(--gray-1100);--bg-layer-1: var(--gray-1000);--bg-layer-2: var(--gray-900);--bg-border: var(--border-default);--ring-ghost: var(--gray-700)}::-moz-selection{background-color:#47a3f3;color:#fefefe}::selection{background-color:#47a3f3;color:#fefefe}.capsize:before{content:"";margin-bottom:-.098em;display:table}.capsize:after{content:"";margin-top:-.219em;display:table}.skip-nav{position:absolute;left:-25%;top:-2rem;--tw-translate-y: -3rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));padding:.75rem 1rem;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.skip-nav:focus{top:1rem;--tw-translate-y: .75rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#skip{scroll-margin-top:1.125rem}.prose table td{padding:.5rem}.prose pre{width:100%;max-width:100%;overflow:auto}.prose blockquote{border-left-width:4px;--tw-border-opacity: 1;border-color:rgb(113 113 122 / var(--tw-border-opacity));padding:1rem;font-style:italic;--tw-text-opacity: 1;color:rgb(82 82 91 / var(--tw-text-opacity))}.token.prose blockquote{font-style:italic}:is(.dark .prose blockquote){--tw-border-opacity: 1;border-color:rgb(228 228 231 / var(--tw-border-opacity))}.prose a{--tw-text-opacity: 1;color:rgb(var(--text-primary) / var(--tw-text-opacity));text-decoration-line:underline;text-underline-offset:4px}.prose a:hover{text-decoration-line:none}.prose code:not(pre code){display:inline-block;border-radius:.25rem;--tw-bg-opacity: 1;background-color:rgb(244 244 245 / var(--tw-bg-opacity));padding-left:.25rem;padding-right:.25rem;--tw-text-opacity: 1;color:rgb(var(--text-primary) / var(--tw-text-opacity))}.prose code:before,.prose code:after{display:none}.prose h1 a,.prose h2 a,.prose h3 a,.prose h4 a,.prose h5 a,.prose h6 a{text-decoration-line:none}.prose h1 a:hover,.prose h2 a:hover,.prose h3 a:hover,.prose h4 a:hover,.prose h5 a:hover,.prose h6 a:hover{text-decoration-line:underline}.prose li code{margin:0!important}.prose .hint-body li::marker,.prose .hint-body li::marker{--tw-text-opacity: 1;color:rgb(7 33 93 / var(--tw-text-opacity))}.prose .warning-body li::marker{--tw-text-opacity: 1;color:rgb(124 45 18 / var(--tw-text-opacity))}.prose td p:first-child{margin-top:0}.prose td p:last-child{margin-bottom:0}.remark-highlight{position:relative}code[class*=language-],pre[class*=language-]{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;--tw-text-opacity: 1;color:rgb(var(--text-primary) / var(--tw-text-opacity));background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{margin-top:1rem;overflow:auto;padding:1rem}:not(pre)>code[class*=language-],pre[class*=language-]{--tw-bg-opacity: 1;background-color:rgb(244 244 245 / var(--tw-bg-opacity))}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}@media (min-width: 1024px){.lg\:prose-sm{font-size:.875rem;line-height:1.7142857}.lg\:prose-sm :where(p):not(:where([class~="not-prose"] *)){margin-top:1.1428571em;margin-bottom:1.1428571em}.lg\:prose-sm :where([class~="lead"]):not(:where([class~="not-prose"] *)){font-size:1.2857143em;line-height:1.5555556;margin-top:.8888889em;margin-bottom:.8888889em}.lg\:prose-sm :where(blockquote):not(:where([class~="not-prose"] *)){margin-top:1.3333333em;margin-bottom:1.3333333em;padding-left:1.1111111em}.lg\:prose-sm :where(h1):not(:where([class~="not-prose"] *)){font-size:2.1428571em;margin-top:0;margin-bottom:.8em;line-height:1.2}.lg\:prose-sm :where(h2):not(:where([class~="not-prose"] *)){font-size:1.4285714em;margin-top:1.6em;margin-bottom:.8em;line-height:1.4}.lg\:prose-sm :where(h3):not(:where([class~="not-prose"] *)){font-size:1.2857143em;margin-top:1.5555556em;margin-bottom:.4444444em;line-height:1.5555556}.lg\:prose-sm :where(h4):not(:where([class~="not-prose"] *)){margin-top:1.4285714em;margin-bottom:.5714286em;line-height:1.4285714}.lg\:prose-sm :where(img):not(:where([class~="not-prose"] *)){margin-top:1.7142857em;margin-bottom:1.7142857em}.lg\:prose-sm :where(video):not(:where([class~="not-prose"] *)){margin-top:1.7142857em;margin-bottom:1.7142857em}.lg\:prose-sm :where(figure):not(:where([class~="not-prose"] *)){margin-top:1.7142857em;margin-bottom:1.7142857em}.lg\:prose-sm :where(figure > *):not(:where([class~="not-prose"] *)){margin-top:0;margin-bottom:0}.lg\:prose-sm :where(figcaption):not(:where([class~="not-prose"] *)){font-size:.8571429em;line-height:1.3333333;margin-top:.6666667em}.lg\:prose-sm :where(code):not(:where([class~="not-prose"] *)){font-size:.8571429em}.lg\:prose-sm :where(h2 code):not(:where([class~="not-prose"] *)){font-size:.9em}.lg\:prose-sm :where(h3 code):not(:where([class~="not-prose"] *)){font-size:.8888889em}.lg\:prose-sm :where(pre):not(:where([class~="not-prose"] *)){font-size:.8571429em;line-height:1.6666667;margin-top:1.6666667em;margin-bottom:1.6666667em;border-radius:.25rem;padding:.6666667em 1em}.lg\:prose-sm :where(ol):not(:where([class~="not-prose"] *)){margin-top:1.1428571em;margin-bottom:1.1428571em;padding-left:1.5714286em}.lg\:prose-sm :where(ul):not(:where([class~="not-prose"] *)){margin-top:1.1428571em;margin-bottom:1.1428571em;padding-left:1.5714286em}.lg\:prose-sm :where(li):not(:where([class~="not-prose"] *)){margin-top:.2857143em;margin-bottom:.2857143em}.lg\:prose-sm :where(ol > li):not(:where([class~="not-prose"] *)){padding-left:.4285714em}.lg\:prose-sm :where(ul > li):not(:where([class~="not-prose"] *)){padding-left:.4285714em}.lg\:prose-sm :where(.lg\:prose-sm > ul > li p):not(:where([class~="not-prose"] *)){margin-top:.5714286em;margin-bottom:.5714286em}.lg\:prose-sm :where(.lg\:prose-sm > ul > li > *:first-child):not(:where([class~="not-prose"] *)){margin-top:1.1428571em}.lg\:prose-sm :where(.lg\:prose-sm > ul > li > *:last-child):not(:where([class~="not-prose"] *)){margin-bottom:1.1428571em}.lg\:prose-sm :where(.lg\:prose-sm > ol > li > *:first-child):not(:where([class~="not-prose"] *)){margin-top:1.1428571em}.lg\:prose-sm :where(.lg\:prose-sm > ol > li > *:last-child):not(:where([class~="not-prose"] *)){margin-bottom:1.1428571em}.lg\:prose-sm :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~="not-prose"] *)){margin-top:.5714286em;margin-bottom:.5714286em}.lg\:prose-sm :where(hr):not(:where([class~="not-prose"] *)){margin-top:2.8571429em;margin-bottom:2.8571429em}.lg\:prose-sm :where(hr + *):not(:where([class~="not-prose"] *)){margin-top:0}.lg\:prose-sm :where(h2 + *):not(:where([class~="not-prose"] *)){margin-top:0}.lg\:prose-sm :where(h3 + *):not(:where([class~="not-prose"] *)){margin-top:0}.lg\:prose-sm :where(h4 + *):not(:where([class~="not-prose"] *)){margin-top:0}.lg\:prose-sm :where(table):not(:where([class~="not-prose"] *)){font-size:.8571429em;line-height:1.5}.lg\:prose-sm :where(thead th):not(:where([class~="not-prose"] *)){padding-right:1em;padding-bottom:.6666667em;padding-left:1em}.lg\:prose-sm :where(thead th:first-child):not(:where([class~="not-prose"] *)){padding-left:0}.lg\:prose-sm :where(thead th:last-child):not(:where([class~="not-prose"] *)){padding-right:0}.lg\:prose-sm :where(tbody td,tfoot td):not(:where([class~="not-prose"] *)){padding:.6666667em 1em}.lg\:prose-sm :where(tbody td:first-child,tfoot td:first-child):not(:where([class~="not-prose"] *)){padding-left:0}.lg\:prose-sm :where(tbody td:last-child,tfoot td:last-child):not(:where([class~="not-prose"] *)){padding-right:0}.lg\:prose-sm :where(.lg\:prose-sm > :first-child):not(:where([class~="not-prose"] *)){margin-top:0}.lg\:prose-sm :where(.lg\:prose-sm > :last-child):not(:where([class~="not-prose"] *)){margin-bottom:0}}@media (min-width: 1280px){.xl\:prose-base{font-size:1rem;line-height:1.75}.xl\:prose-base :where(p):not(:where([class~="not-prose"] *)){margin-top:1.25em;margin-bottom:1.25em}.xl\:prose-base :where([class~="lead"]):not(:where([class~="not-prose"] *)){font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.xl\:prose-base :where(blockquote):not(:where([class~="not-prose"] *)){margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.xl\:prose-base :where(h1):not(:where([class~="not-prose"] *)){font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.xl\:prose-base :where(h2):not(:where([class~="not-prose"] *)){font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.xl\:prose-base :where(h3):not(:where([class~="not-prose"] *)){font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.xl\:prose-base :where(h4):not(:where([class~="not-prose"] *)){margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.xl\:prose-base :where(img):not(:where([class~="not-prose"] *)){margin-top:2em;margin-bottom:2em}.xl\:prose-base :where(video):not(:where([class~="not-prose"] *)){margin-top:2em;margin-bottom:2em}.xl\:prose-base :where(figure):not(:where([class~="not-prose"] *)){margin-top:2em;margin-bottom:2em}.xl\:prose-base :where(figure > *):not(:where([class~="not-prose"] *)){margin-top:0;margin-bottom:0}.xl\:prose-base :where(figcaption):not(:where([class~="not-prose"] *)){font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.xl\:prose-base :where(code):not(:where([class~="not-prose"] *)){font-size:.875em}.xl\:prose-base :where(h2 code):not(:where([class~="not-prose"] *)){font-size:.875em}.xl\:prose-base :where(h3 code):not(:where([class~="not-prose"] *)){font-size:.9em}.xl\:prose-base :where(pre):not(:where([class~="not-prose"] *)){font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding:.8571429em 1.1428571em}.xl\:prose-base :where(ol):not(:where([class~="not-prose"] *)){margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.xl\:prose-base :where(ul):not(:where([class~="not-prose"] *)){margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.xl\:prose-base :where(li):not(:where([class~="not-prose"] *)){margin-top:.5em;margin-bottom:.5em}.xl\:prose-base :where(ol > li):not(:where([class~="not-prose"] *)){padding-left:.375em}.xl\:prose-base :where(ul > li):not(:where([class~="not-prose"] *)){padding-left:.375em}.xl\:prose-base :where(.xl\:prose-base > ul > li p):not(:where([class~="not-prose"] *)){margin-top:.75em;margin-bottom:.75em}.xl\:prose-base :where(.xl\:prose-base > ul > li > *:first-child):not(:where([class~="not-prose"] *)){margin-top:1.25em}.xl\:prose-base :where(.xl\:prose-base > ul > li > *:last-child):not(:where([class~="not-prose"] *)){margin-bottom:1.25em}.xl\:prose-base :where(.xl\:prose-base > ol > li > *:first-child):not(:where([class~="not-prose"] *)){margin-top:1.25em}.xl\:prose-base :where(.xl\:prose-base > ol > li > *:last-child):not(:where([class~="not-prose"] *)){margin-bottom:1.25em}.xl\:prose-base :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~="not-prose"] *)){margin-top:.75em;margin-bottom:.75em}.xl\:prose-base :where(hr):not(:where([class~="not-prose"] *)){margin-top:3em;margin-bottom:3em}.xl\:prose-base :where(hr + *):not(:where([class~="not-prose"] *)){margin-top:0}.xl\:prose-base :where(h2 + *):not(:where([class~="not-prose"] *)){margin-top:0}.xl\:prose-base :where(h3 + *):not(:where([class~="not-prose"] *)){margin-top:0}.xl\:prose-base :where(h4 + *):not(:where([class~="not-prose"] *)){margin-top:0}.xl\:prose-base :where(table):not(:where([class~="not-prose"] *)){font-size:.875em;line-height:1.7142857}.xl\:prose-base :where(thead th):not(:where([class~="not-prose"] *)){padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.xl\:prose-base :where(thead th:first-child):not(:where([class~="not-prose"] *)){padding-left:0}.xl\:prose-base :where(thead th:last-child):not(:where([class~="not-prose"] *)){padding-right:0}.xl\:prose-base :where(tbody td,tfoot td):not(:where([class~="not-prose"] *)){padding:.5714286em}.xl\:prose-base :where(tbody td:first-child,tfoot td:first-child):not(:where([class~="not-prose"] *)){padding-left:0}.xl\:prose-base :where(tbody td:last-child,tfoot td:last-child):not(:where([class~="not-prose"] *)){padding-right:0}.xl\:prose-base :where(.xl\:prose-base > :first-child):not(:where([class~="not-prose"] *)){margin-top:0}.xl\:prose-base :where(.xl\:prose-base > :last-child):not(:where([class~="not-prose"] *)){margin-bottom:0}}.hover\:border-\[rgb\(var\(--text-primary\)\)\]:hover{border-color:rgb(var(--text-primary))}.hover\:border-gray-300:hover{--tw-border-opacity: 1;border-color:rgb(212 212 216 / var(--tw-border-opacity))}.hover\:bg-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity))}.hover\:bg-white\/20:hover{background-color:#fff3}.hover\:bg-white\/25:hover{background-color:#ffffff40}.hover\:text-crunchy:hover{--tw-text-opacity: 1;color:rgb(43 103 240 / var(--tw-text-opacity))}.hover\:text-primary:hover{--tw-text-opacity: 1;color:rgb(var(--text-primary) / var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}.hover\:no-underline:hover{text-decoration-line:none}.hover\:opacity-50:hover{opacity:.5}.hover\:shadow-md:hover{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-0:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:\!ring-white\/50:focus{--tw-ring-color: rgb(255 255 255 / .5) !important}.focus\:ring-crunchy\/50:focus{--tw-ring-color: rgb(43 103 240 / .5)}.focus\:ring-emerald-500\/50:focus{--tw-ring-color: rgb(16 185 129 / .5)}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus\:\!ring-offset-crunchy:focus{--tw-ring-offset-color: #2B67F0 !important}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-crunchy\/50:focus-visible{--tw-ring-color: rgb(43 103 240 / .5)}.group:hover .group-hover\:-translate-x-1{--tw-translate-x: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:translate-x-1{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:opacity-75{opacity:.75}.prose-headings\:font-display :is(:where(h1,h2,h3,h4,h5,h6,th):not(:where([class~="not-prose"] *))){font-family:var(--font-display),ui-sans-serif,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}.prose-headings\:text-primary :is(:where(h1,h2,h3,h4,h5,h6,th):not(:where([class~="not-prose"] *))){--tw-text-opacity: 1;color:rgb(var(--text-primary) / var(--tw-text-opacity))}:is(.dark .dark\:bg-slate-900){--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity))}@media (min-width: 640px){.sm\:-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.sm\:ml-6{margin-left:1.5rem}.sm\:block{display:block}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:border-l{border-left-width:1px}.sm\:border-gray-200{--tw-border-opacity: 1;border-color:rgb(228 228 231 / var(--tw-border-opacity))}.sm\:border-transparent{border-color:transparent}.sm\:p-6{padding:1.5rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-24{padding-top:6rem;padding-bottom:6rem}.sm\:pl-6{padding-left:1.5rem}.sm\:text-5xl{font-size:3rem;line-height:1}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width: 768px){.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:p-20{padding:5rem}.md\:px-8{padding-left:2rem;padding-right:2rem}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-4xl{font-size:2.25rem;line-height:2.5rem}}@media (min-width: 1024px){.lg\:-mx-8{margin-left:-2rem;margin-right:-2rem}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:w-\[230px\]{width:230px}.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (min-width: 1280px){.xl\:w-64{width:16rem}.xl\:w-\[290px\]{width:290px}}@media (min-width: 1536px){.\32xl\:w-full{width:100%}} diff --git a/public/favicon.ico b/docs-public/favicon.ico similarity index 100% rename from public/favicon.ico rename to docs-public/favicon.ico diff --git a/public/favicons/android-icon-144x144.png b/docs-public/favicons/android-icon-144x144.png similarity index 100% rename from public/favicons/android-icon-144x144.png rename to docs-public/favicons/android-icon-144x144.png diff --git a/public/favicons/android-icon-192x192.png b/docs-public/favicons/android-icon-192x192.png similarity index 100% rename from public/favicons/android-icon-192x192.png rename to docs-public/favicons/android-icon-192x192.png diff --git a/public/favicons/android-icon-36x36.png b/docs-public/favicons/android-icon-36x36.png similarity index 100% rename from public/favicons/android-icon-36x36.png rename to docs-public/favicons/android-icon-36x36.png diff --git a/public/favicons/android-icon-48x48.png b/docs-public/favicons/android-icon-48x48.png similarity index 100% rename from public/favicons/android-icon-48x48.png rename to docs-public/favicons/android-icon-48x48.png diff --git a/public/favicons/android-icon-72x72.png b/docs-public/favicons/android-icon-72x72.png similarity index 100% rename from public/favicons/android-icon-72x72.png rename to docs-public/favicons/android-icon-72x72.png diff --git a/public/favicons/android-icon-96x96.png b/docs-public/favicons/android-icon-96x96.png similarity index 100% rename from public/favicons/android-icon-96x96.png rename to docs-public/favicons/android-icon-96x96.png diff --git a/public/favicons/apple-icon-114x114.png b/docs-public/favicons/apple-icon-114x114.png similarity index 100% rename from public/favicons/apple-icon-114x114.png rename to docs-public/favicons/apple-icon-114x114.png diff --git a/public/favicons/apple-icon-120x120.png b/docs-public/favicons/apple-icon-120x120.png similarity index 100% rename from public/favicons/apple-icon-120x120.png rename to docs-public/favicons/apple-icon-120x120.png diff --git a/public/favicons/apple-icon-144x144.png b/docs-public/favicons/apple-icon-144x144.png similarity index 100% rename from public/favicons/apple-icon-144x144.png rename to docs-public/favicons/apple-icon-144x144.png diff --git a/public/favicons/apple-icon-152x152.png b/docs-public/favicons/apple-icon-152x152.png similarity index 100% rename from public/favicons/apple-icon-152x152.png rename to docs-public/favicons/apple-icon-152x152.png diff --git a/public/favicons/apple-icon-180x180.png b/docs-public/favicons/apple-icon-180x180.png similarity index 100% rename from public/favicons/apple-icon-180x180.png rename to docs-public/favicons/apple-icon-180x180.png diff --git a/public/favicons/apple-icon-57x57.png b/docs-public/favicons/apple-icon-57x57.png similarity index 100% rename from public/favicons/apple-icon-57x57.png rename to docs-public/favicons/apple-icon-57x57.png diff --git a/public/favicons/apple-icon-60x60.png b/docs-public/favicons/apple-icon-60x60.png similarity index 100% rename from public/favicons/apple-icon-60x60.png rename to docs-public/favicons/apple-icon-60x60.png diff --git a/public/favicons/apple-icon-72x72.png b/docs-public/favicons/apple-icon-72x72.png similarity index 100% rename from public/favicons/apple-icon-72x72.png rename to docs-public/favicons/apple-icon-72x72.png diff --git a/public/favicons/apple-icon-76x76.png b/docs-public/favicons/apple-icon-76x76.png similarity index 100% rename from public/favicons/apple-icon-76x76.png rename to docs-public/favicons/apple-icon-76x76.png diff --git a/public/favicons/apple-icon-precomposed.png b/docs-public/favicons/apple-icon-precomposed.png similarity index 100% rename from public/favicons/apple-icon-precomposed.png rename to docs-public/favicons/apple-icon-precomposed.png diff --git a/public/favicons/apple-icon.png b/docs-public/favicons/apple-icon.png similarity index 100% rename from public/favicons/apple-icon.png rename to docs-public/favicons/apple-icon.png diff --git a/public/favicons/favicon-16x16.png b/docs-public/favicons/favicon-16x16.png similarity index 100% rename from public/favicons/favicon-16x16.png rename to docs-public/favicons/favicon-16x16.png diff --git a/public/favicons/favicon-32x32.png b/docs-public/favicons/favicon-32x32.png similarity index 100% rename from public/favicons/favicon-32x32.png rename to docs-public/favicons/favicon-32x32.png diff --git a/public/favicons/favicon-96x96.png b/docs-public/favicons/favicon-96x96.png similarity index 100% rename from public/favicons/favicon-96x96.png rename to docs-public/favicons/favicon-96x96.png diff --git a/public/favicons/manifest.json b/docs-public/favicons/manifest.json similarity index 100% rename from public/favicons/manifest.json rename to docs-public/favicons/manifest.json diff --git a/public/favicons/ms-icon-144x144.png b/docs-public/favicons/ms-icon-144x144.png similarity index 100% rename from public/favicons/ms-icon-144x144.png rename to docs-public/favicons/ms-icon-144x144.png diff --git a/public/favicons/ms-icon-150x150.png b/docs-public/favicons/ms-icon-150x150.png similarity index 100% rename from public/favicons/ms-icon-150x150.png rename to docs-public/favicons/ms-icon-150x150.png diff --git a/public/favicons/ms-icon-310x310.png b/docs-public/favicons/ms-icon-310x310.png similarity index 100% rename from public/favicons/ms-icon-310x310.png rename to docs-public/favicons/ms-icon-310x310.png diff --git a/public/favicons/ms-icon-70x70.png b/docs-public/favicons/ms-icon-70x70.png similarity index 100% rename from public/favicons/ms-icon-70x70.png rename to docs-public/favicons/ms-icon-70x70.png diff --git a/public/logos/TRADEMARKS.md b/docs-public/logos/TRADEMARKS.md similarity index 100% rename from public/logos/TRADEMARKS.md rename to docs-public/logos/TRADEMARKS.md diff --git a/public/logos/pgo.png b/docs-public/logos/pgo.png similarity index 100% rename from public/logos/pgo.png rename to docs-public/logos/pgo.png diff --git a/public/logos/pgo.svg b/docs-public/logos/pgo.svg similarity index 100% rename from public/logos/pgo.svg rename to docs-public/logos/pgo.svg diff --git a/public/robots.txt b/docs-public/robots.txt similarity index 100% rename from public/robots.txt rename to docs-public/robots.txt diff --git a/public/sso.webm b/docs-public/sso.webm similarity index 100% rename from public/sso.webm rename to docs-public/sso.webm diff --git a/public/upgrade.webm b/docs-public/upgrade.webm similarity index 100% rename from public/upgrade.webm rename to docs-public/upgrade.webm diff --git a/package.json b/package.json index a774af9..0382f21 100644 --- a/package.json +++ b/package.json @@ -10,11 +10,11 @@ "build:server": "tsx ./scripts/build-server.ts", "dev": "run-p dev:*", "dev:remix": "remix dev -c \"npm run dev-server\" --no-restart", - "dev-server": "cross-env MOCKS=true tsx watch --clear-screen=false --ignore \"app/**\" --ignore \"build/**\" --ignore \"node_modules/**\" ./index.js", + "dev-server": "cross-env MOCKS=true tsx watch --clear-screen=false --ignore \"app/**\" --ignore \"docs-build/**\" --ignore \"node_modules/**\" ./index.js", "format": "prettier --write .", "lint": "eslint --cache --cache-location ./node_modules/.cache/eslint .", "lint:files": "ts-node --esm scripts/lint-file-case.ts", - "start": "cross-env NODE_ENV=production node .", + "start": "cross-env NODE_ENV=production node docs-index.js", "test": "vitest", "typecheck": "tsc", "validate": "run-p lint typecheck test", @@ -28,10 +28,10 @@ }, "eslintIgnore": [ "/node_modules", - "/build", - "/public/build", + "/docs-build", + "/docs-public/build", "/playwright-report", - "/server-build" + "/docs-server-build" ], "dependencies": { "@headlessui/react": "^1.7.14", diff --git a/remix.config.js b/remix.config.js index 0194a59..107cb21 100644 --- a/remix.config.js +++ b/remix.config.js @@ -3,6 +3,9 @@ */ export default { cacheDirectory: './node_modules/.cache/remix', + assetsBuildDirectory: 'docs-public/build', + serverBuildPath: 'docs-build/index.js', + publicPath: '/docs-public/build/', ignoredRouteFiles: ['**/.*', '**/.test.{js,jsx,ts,tsx}'], serverModuleFormat: 'esm', serverPlatform: 'node', diff --git a/scripts/build-server.ts b/scripts/build-server.ts index ea74c41..bf33ccb 100644 --- a/scripts/build-server.ts +++ b/scripts/build-server.ts @@ -19,7 +19,7 @@ for (const file of allFiles) { if (/\.(ts|js|tsx|jsx)$/.test(file)) { entries.push(file) } else { - const dest = file.replace(here('../server'), here('../server-build')) + const dest = file.replace(here('../server'), here('../docs-server-build')) fsExtra.ensureDirSync(path.parse(dest).dir) fsExtra.copySync(file, dest) console.log(`copied: ${file.replace(`${here('../server')}/`, '')}`) @@ -32,7 +32,7 @@ console.log('building...') esbuild .build({ entryPoints: glob.sync(globsafe(here('../server/**/*.+(ts|js|tsx|jsx)'))), - outdir: here('../server-build'), + outdir: here('../docs-server-build'), target: [`node${pkg.engines.node}`], platform: 'node', format: 'esm', diff --git a/server/index.ts b/server/index.ts index 06e74c3..0655e55 100644 --- a/server/index.ts +++ b/server/index.ts @@ -21,7 +21,7 @@ import { } from 'path-to-regexp' import { fileURLToPath, pathToFileURL } from 'url' -const BUILD_DIR = path.join(process.cwd(), 'build', 'index.js') +const BUILD_DIR = path.join(process.cwd(), 'docs-build', 'index.js') const BUILD_DIR_FILE_URL = pathToFileURL(BUILD_DIR).href const __dirname = path.dirname(fileURLToPath(import.meta.url)) @@ -38,13 +38,13 @@ app.disable('x-powered-by') // Remix fingerprints its assets so we can cache forever. app.use( - '/build', - express.static('public/build', { immutable: true, maxAge: '1y' }), + '/docs-public/build', + express.static('docs-public/build', { immutable: true, maxAge: '1y' }), ) // Everything else (like favicon.ico) is cached for an hour. You may want to be // more aggressive with this caching. -app.use(express.static('public', { maxAge: '1h' })) +app.use(express.static('docs-public', { maxAge: '1h' })) morgan.token('url', (req, res) => decodeURIComponent(req.url ?? '')) app.use(morgan('tiny')) From 8557c8f70d29d9bf83dafff953bd0b140c8809a8 Mon Sep 17 00:00:00 2001 From: Will King Date: Thu, 14 Dec 2023 12:24:44 -0600 Subject: [PATCH 2/3] Fresh ignore --- .prettierignore | 6 +++--- docs-public/build/_assets/tailwind-L5SHDPXO.css | 1 - 2 files changed, 3 insertions(+), 4 deletions(-) delete mode 100644 docs-public/build/_assets/tailwind-L5SHDPXO.css diff --git a/.prettierignore b/.prettierignore index 163340e..3532933 100644 --- a/.prettierignore +++ b/.prettierignore @@ -2,9 +2,9 @@ node_modules /content/**/*.mdx -/build -/public/build -/server-build +/docs-build +/docs-public/build +/docs-server-build .env /test-results/ diff --git a/docs-public/build/_assets/tailwind-L5SHDPXO.css b/docs-public/build/_assets/tailwind-L5SHDPXO.css deleted file mode 100644 index e71878a..0000000 --- a/docs-public/build/_assets/tailwind-L5SHDPXO.css +++ /dev/null @@ -1 +0,0 @@ -*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:rgb(var(--border-default))}:before,:after{--tw-content: ""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:var(--font-sans),ui-sans-serif,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#a1a1aa}input::placeholder,textarea::placeholder{opacity:1;color:#a1a1aa}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}[type=text],[type=email],[type=url],[type=password],[type=number],[type=date],[type=datetime-local],[type=month],[type=search],[type=tel],[type=time],[type=week],[multiple],textarea,select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#71717a;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem;--tw-shadow: 0 0 #0000}[type=text]:focus,[type=email]:focus,[type=url]:focus,[type=password]:focus,[type=number]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=month]:focus,[type=search]:focus,[type=tel]:focus,[type=time]:focus,[type=week]:focus,[multiple]:focus,textarea:focus,select:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#2563eb}input::-moz-placeholder,textarea::-moz-placeholder{color:#71717a;opacity:1}input::placeholder,textarea::placeholder{color:#71717a;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-top:0;padding-bottom:0}select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%2371717a' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple]{background-image:initial;background-position:initial;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#71717a;border-width:1px;--tw-shadow: 0 0 #0000}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 2px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}[type=checkbox]:checked,[type=radio]:checked{border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}[type=checkbox]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e")}[type=radio]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e")}[type=checkbox]:checked:hover,[type=checkbox]:checked:focus,[type=radio]:checked:hover,[type=radio]:checked:focus{border-color:transparent;background-color:currentColor}[type=checkbox]:indeterminate{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}[type=checkbox]:indeterminate:hover,[type=checkbox]:indeterminate:focus{border-color:transparent;background-color:currentColor}[type=file]{background:unset;border-color:inherit;border-width:0;border-radius:0;padding:0;font-size:unset;line-height:inherit}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(var(--ring-default) / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(var(--ring-default) / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~="not-prose"] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~="lead"]):not(:where([class~="not-prose"] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~="not-prose"] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:700}.prose :where(a):not(:where([class~="not-prose"] *)):hover{text-decoration:none}.prose :where(strong):not(:where([class~="not-prose"] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~="not-prose"] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~="not-prose"] *)){color:inherit}.prose :where(thead th strong):not(:where([class~="not-prose"] *)){color:inherit}.prose :where(ol):not(:where([class~="not-prose"] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol[type="A"]):not(:where([class~="not-prose"] *)){list-style-type:upper-alpha}.prose :where(ol[type="a"]):not(:where([class~="not-prose"] *)){list-style-type:lower-alpha}.prose :where(ol[type="A" s]):not(:where([class~="not-prose"] *)){list-style-type:upper-alpha}.prose :where(ol[type="a" s]):not(:where([class~="not-prose"] *)){list-style-type:lower-alpha}.prose :where(ol[type="I"]):not(:where([class~="not-prose"] *)){list-style-type:upper-roman}.prose :where(ol[type="i"]):not(:where([class~="not-prose"] *)){list-style-type:lower-roman}.prose :where(ol[type="I" s]):not(:where([class~="not-prose"] *)){list-style-type:upper-roman}.prose :where(ol[type="i" s]):not(:where([class~="not-prose"] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~="not-prose"] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~="not-prose"] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol > li):not(:where([class~="not-prose"] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul > li):not(:where([class~="not-prose"] *))::marker{color:var(--tw-prose-bullets)}.prose :where(hr):not(:where([class~="not-prose"] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~="not-prose"] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-left-width:.25rem;border-left-color:var(--tw-prose-quote-borders);quotes:"\201c""\201d""\2018""\2019";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.prose :where(h1):not(:where([class~="not-prose"] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~="not-prose"] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~="not-prose"] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~="not-prose"] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~="not-prose"] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~="not-prose"] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~="not-prose"] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~="not-prose"] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~="not-prose"] *)){margin-top:2em;margin-bottom:2em}.prose :where(figure > *):not(:where([class~="not-prose"] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~="not-prose"] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose :where(code):not(:where([class~="not-prose"] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~="not-prose"] *)):before{content:"`"}.prose :where(code):not(:where([class~="not-prose"] *)):after{content:"`"}.prose :where(a code):not(:where([class~="not-prose"] *)){color:inherit}.prose :where(h1 code):not(:where([class~="not-prose"] *)){color:inherit}.prose :where(h2 code):not(:where([class~="not-prose"] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~="not-prose"] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~="not-prose"] *)){color:inherit}.prose :where(blockquote code):not(:where([class~="not-prose"] *)){color:inherit}.prose :where(thead th code):not(:where([class~="not-prose"] *)){color:inherit}.prose :where(pre):not(:where([class~="not-prose"] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding:.8571429em 1.1428571em}.prose :where(pre code):not(:where([class~="not-prose"] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~="not-prose"] *)):before{content:none}.prose :where(pre code):not(:where([class~="not-prose"] *)):after{content:none}.prose :where(table):not(:where([class~="not-prose"] *)){width:100%;table-layout:auto;text-align:left;margin-top:0;margin-bottom:2em;font-size:.875em;line-height:1.7142857;min-width:100%}.prose :where(thead):not(:where([class~="not-prose"] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~="not-prose"] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.prose :where(tbody tr):not(:where([class~="not-prose"] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~="not-prose"] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~="not-prose"] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~="not-prose"] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~="not-prose"] *)){vertical-align:top}.prose{--tw-prose-body: #374151;--tw-prose-headings: #111827;--tw-prose-lead: #4b5563;--tw-prose-links: #111827;--tw-prose-bold: #111827;--tw-prose-counters: #6b7280;--tw-prose-bullets: #d1d5db;--tw-prose-hr: #e5e7eb;--tw-prose-quotes: #111827;--tw-prose-quote-borders: #e5e7eb;--tw-prose-captions: #6b7280;--tw-prose-code: #111827;--tw-prose-pre-code: #e5e7eb;--tw-prose-pre-bg: #1f2937;--tw-prose-th-borders: #d1d5db;--tw-prose-td-borders: #e5e7eb;--tw-prose-invert-body: #d1d5db;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #9ca3af;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #9ca3af;--tw-prose-invert-bullets: #4b5563;--tw-prose-invert-hr: #374151;--tw-prose-invert-quotes: #f3f4f6;--tw-prose-invert-quote-borders: #374151;--tw-prose-invert-captions: #9ca3af;--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #d1d5db;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #4b5563;--tw-prose-invert-td-borders: #374151;font-size:1rem;line-height:1.75}.prose :where(video):not(:where([class~="not-prose"] *)){margin-top:2em;margin-bottom:2em}.prose :where(figure):not(:where([class~="not-prose"] *)){margin-top:2em;margin-bottom:2em}.prose :where(li):not(:where([class~="not-prose"] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol > li):not(:where([class~="not-prose"] *)){padding-left:.375em}.prose :where(ul > li):not(:where([class~="not-prose"] *)){padding-left:.375em}.prose :where(.prose > ul > li p):not(:where([class~="not-prose"] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose > ul > li > *:first-child):not(:where([class~="not-prose"] *)){margin-top:1.25em}.prose :where(.prose > ul > li > *:last-child):not(:where([class~="not-prose"] *)){margin-bottom:1.25em}.prose :where(.prose > ol > li > *:first-child):not(:where([class~="not-prose"] *)){margin-top:1.25em}.prose :where(.prose > ol > li > *:last-child):not(:where([class~="not-prose"] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~="not-prose"] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(hr + *):not(:where([class~="not-prose"] *)){margin-top:0}.prose :where(h2 + *):not(:where([class~="not-prose"] *)){margin-top:0}.prose :where(h3 + *):not(:where([class~="not-prose"] *)){margin-top:0}.prose :where(h4 + *):not(:where([class~="not-prose"] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~="not-prose"] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~="not-prose"] *)){padding-right:0}.prose :where(tbody td,tfoot td):not(:where([class~="not-prose"] *)){padding:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~="not-prose"] *)){padding-left:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~="not-prose"] *)){padding-right:0}.prose :where(.prose > :first-child):not(:where([class~="not-prose"] *)){margin-top:0}.prose :where(.prose > :last-child):not(:where([class~="not-prose"] *)){margin-bottom:0}.prose :where(h2,h3,h4):not(:where([class~="not-prose"] *)){scroll-margin-top:8rem}.prose :where(td):not(:where([class~="not-prose"] *)){vertical-align:top;line-height:1.5}.aspect-h-3{--tw-aspect-h: 3}.aspect-w-4{position:relative;padding-bottom:calc(var(--tw-aspect-h) / var(--tw-aspect-w) * 100%);--tw-aspect-w: 4}.aspect-w-4>*{position:absolute;height:100%;width:100%;inset:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.bottom-0{bottom:0}.bottom-full{bottom:100%}.left-0{left:0}.left-4{left:1rem}.right-0{right:0}.right-3{right:.75rem}.right-4{right:1rem}.top-0{top:0}.top-16{top:4rem}.top-24{top:6rem}.top-3{top:.75rem}.top-3\.5{top:.875rem}.z-10{z-index:10}.z-30{z-index:30}.z-50{z-index:50}.mx-auto{margin-left:auto;margin-right:auto}.-ml-px{margin-left:-1px}.mb-1{margin-bottom:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-6{margin-left:1.5rem}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-6{margin-right:1.5rem}.mt-1{margin-top:.25rem}.mt-10{margin-top:2.5rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-12{height:3rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-\[calc\(100vh-4rem\)\]{height:calc(100vh - 4rem)}.h-\[calc\(100vh-5rem\)\]{height:calc(100vh - 5rem)}.h-auto{height:auto}.h-full{height:100%}.max-h-72{max-height:18rem}.max-h-\[200px\]{max-height:200px}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-12{width:3rem}.w-3{width:.75rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-full{width:100%}.min-w-0{min-width:0px}.min-w-full{min-width:100%}.max-w-4xl{max-width:56rem}.max-w-7xl{max-width:80rem}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.origin-top-left{transform-origin:top left}.rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-95{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.scroll-py-2{scroll-padding-top:.5rem;scroll-padding-bottom:.5rem}.list-disc{list-style-type:disc}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0px}.gap-0\.5{gap:.125rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.75rem * var(--tw-space-x-reverse));margin-left:calc(.75rem * calc(1 - var(--tw-space-x-reverse)))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-gray-100>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(244 244 245 / var(--tw-divide-opacity))}.justify-self-end{justify-self:end}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-0{border-width:0px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-crunchy{--tw-border-opacity: 1;border-color:rgb(43 103 240 / var(--tw-border-opacity))}.border-gray-1100{--tw-border-opacity: 1;border-color:rgb(2 2 3 / var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-white\/75{border-color:#ffffffbf}.bg-crunchy{--tw-bg-opacity: 1;background-color:rgb(43 103 240 / var(--tw-bg-opacity))}.bg-crunchy\/20{background-color:#2b67f033}.bg-crunchy\/25{background-color:#2b67f040}.bg-emerald-500{--tw-bg-opacity: 1;background-color:rgb(16 185 129 / var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(244 244 245 / var(--tw-bg-opacity))}.bg-gray-1100\/50{background-color:#02020380}.bg-gray-500{--tw-bg-opacity: 1;background-color:rgb(113 113 122 / var(--tw-bg-opacity))}.bg-orange-300{--tw-bg-opacity: 1;background-color:rgb(253 186 116 / var(--tw-bg-opacity))}.bg-slate-900\/50{background-color:#0f172a80}.bg-success-500\/20{background-color:#10b98133}.bg-transparent{background-color:transparent}.bg-warning-500\/20{background-color:#f9731633}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-opacity-25{--tw-bg-opacity: .25}.fill-crunchy{fill:#2b67f0}.fill-gray-900{fill:#18181b}.fill-white{fill:#fff}.fill-white\/50{fill:#ffffff80}.stroke-slate-500{stroke:#64748b}.stroke-white{stroke:#fff}.object-contain{-o-object-fit:contain;object-fit:contain}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-4{padding:1rem}.p-8{padding:2rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-10{padding-bottom:2.5rem}.pb-12{padding-bottom:3rem}.pb-4{padding-bottom:1rem}.pb-8{padding-bottom:2rem}.pl-1{padding-left:.25rem}.pl-11{padding-left:2.75rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pr-10{padding-right:2.5rem}.pr-4{padding-right:1rem}.pr-6{padding-right:1.5rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-8{padding-top:2rem}.text-center{text-align:center}.align-middle{vertical-align:middle}.font-display{font-family:var(--font-display),ui-sans-serif,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-medium{font-weight:500}.uppercase{text-transform:uppercase}.tracking-tight{letter-spacing:-.025em}.text-crunchy{--tw-text-opacity: 1;color:rgb(43 103 240 / var(--tw-text-opacity))}.text-gray-200{--tw-text-opacity: 1;color:rgb(228 228 231 / var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity: 1;color:rgb(161 161 170 / var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity: 1;color:rgb(113 113 122 / var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity: 1;color:rgb(39 39 42 / var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity: 1;color:rgb(24 24 27 / var(--tw-text-opacity))}.text-primary{--tw-text-opacity: 1;color:rgb(var(--text-primary) / var(--tw-text-opacity))}.text-secondary{--tw-text-opacity: 1;color:rgb(var(--text-secondary) / var(--tw-text-opacity))}.text-success-900{--tw-text-opacity: 1;color:rgb(6 78 59 / var(--tw-text-opacity))}.text-warning-900{--tw-text-opacity: 1;color:rgb(124 45 18 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-white\/75{color:#ffffffbf}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.placeholder-gray-400::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(161 161 170 / var(--tw-placeholder-opacity))}.placeholder-gray-400::placeholder{--tw-placeholder-opacity: 1;color:rgb(161 161 170 / var(--tw-placeholder-opacity))}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-75{opacity:.75}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-black{--tw-ring-opacity: 1;--tw-ring-color: rgb(0 0 0 / var(--tw-ring-opacity))}.ring-opacity-5{--tw-ring-opacity: .05}.filter{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)}.backdrop-blur{--tw-backdrop-blur: blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-75{transition-duration:75ms}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}:root{--gray-50: 250 250 250;--gray-100: 244 244 245;--gray-200: 228 228 231;--gray-300: 161 161 170;--gray-400: 212 212 216;--gray-450: 143 143 153;--gray-500: 113 113 122;--gray-600: 82 82 91;--gray-700: 63 63 70;--gray-800: 39 39 42;--gray-900: 24 24 27;--gray-1000: 6 9 14;--gray-1100: 2 2 3;--brand: 43 103 240;--text-secondary: var(--gray-500);--text-primary: var(--gray-900);--border-default: var(--gray-200);--bg-base: var(--gray-100);--bg-layer-1: 255 255 255;--bg-layer-2: var(--gray-50);--bg-border: var(--border-default);--ring-default: var(--brand);--ring-ghost: var(--gray-300);--font-sans: "Arimo";--font-display: "Plus Jakarta Sans";--font-mono: ui-monospace}.dark{--text-secondary: var(--gray-450);--text-primary: 255 255 255;--border-default: var(--gray-700);--bg-base: var(--gray-1100);--bg-layer-1: var(--gray-1000);--bg-layer-2: var(--gray-900);--bg-border: var(--border-default);--ring-ghost: var(--gray-700)}::-moz-selection{background-color:#47a3f3;color:#fefefe}::selection{background-color:#47a3f3;color:#fefefe}.capsize:before{content:"";margin-bottom:-.098em;display:table}.capsize:after{content:"";margin-top:-.219em;display:table}.skip-nav{position:absolute;left:-25%;top:-2rem;--tw-translate-y: -3rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));padding:.75rem 1rem;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.skip-nav:focus{top:1rem;--tw-translate-y: .75rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#skip{scroll-margin-top:1.125rem}.prose table td{padding:.5rem}.prose pre{width:100%;max-width:100%;overflow:auto}.prose blockquote{border-left-width:4px;--tw-border-opacity: 1;border-color:rgb(113 113 122 / var(--tw-border-opacity));padding:1rem;font-style:italic;--tw-text-opacity: 1;color:rgb(82 82 91 / var(--tw-text-opacity))}.token.prose blockquote{font-style:italic}:is(.dark .prose blockquote){--tw-border-opacity: 1;border-color:rgb(228 228 231 / var(--tw-border-opacity))}.prose a{--tw-text-opacity: 1;color:rgb(var(--text-primary) / var(--tw-text-opacity));text-decoration-line:underline;text-underline-offset:4px}.prose a:hover{text-decoration-line:none}.prose code:not(pre code){display:inline-block;border-radius:.25rem;--tw-bg-opacity: 1;background-color:rgb(244 244 245 / var(--tw-bg-opacity));padding-left:.25rem;padding-right:.25rem;--tw-text-opacity: 1;color:rgb(var(--text-primary) / var(--tw-text-opacity))}.prose code:before,.prose code:after{display:none}.prose h1 a,.prose h2 a,.prose h3 a,.prose h4 a,.prose h5 a,.prose h6 a{text-decoration-line:none}.prose h1 a:hover,.prose h2 a:hover,.prose h3 a:hover,.prose h4 a:hover,.prose h5 a:hover,.prose h6 a:hover{text-decoration-line:underline}.prose li code{margin:0!important}.prose .hint-body li::marker,.prose .hint-body li::marker{--tw-text-opacity: 1;color:rgb(7 33 93 / var(--tw-text-opacity))}.prose .warning-body li::marker{--tw-text-opacity: 1;color:rgb(124 45 18 / var(--tw-text-opacity))}.prose td p:first-child{margin-top:0}.prose td p:last-child{margin-bottom:0}.remark-highlight{position:relative}code[class*=language-],pre[class*=language-]{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;--tw-text-opacity: 1;color:rgb(var(--text-primary) / var(--tw-text-opacity));background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{margin-top:1rem;overflow:auto;padding:1rem}:not(pre)>code[class*=language-],pre[class*=language-]{--tw-bg-opacity: 1;background-color:rgb(244 244 245 / var(--tw-bg-opacity))}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}@media (min-width: 1024px){.lg\:prose-sm{font-size:.875rem;line-height:1.7142857}.lg\:prose-sm :where(p):not(:where([class~="not-prose"] *)){margin-top:1.1428571em;margin-bottom:1.1428571em}.lg\:prose-sm :where([class~="lead"]):not(:where([class~="not-prose"] *)){font-size:1.2857143em;line-height:1.5555556;margin-top:.8888889em;margin-bottom:.8888889em}.lg\:prose-sm :where(blockquote):not(:where([class~="not-prose"] *)){margin-top:1.3333333em;margin-bottom:1.3333333em;padding-left:1.1111111em}.lg\:prose-sm :where(h1):not(:where([class~="not-prose"] *)){font-size:2.1428571em;margin-top:0;margin-bottom:.8em;line-height:1.2}.lg\:prose-sm :where(h2):not(:where([class~="not-prose"] *)){font-size:1.4285714em;margin-top:1.6em;margin-bottom:.8em;line-height:1.4}.lg\:prose-sm :where(h3):not(:where([class~="not-prose"] *)){font-size:1.2857143em;margin-top:1.5555556em;margin-bottom:.4444444em;line-height:1.5555556}.lg\:prose-sm :where(h4):not(:where([class~="not-prose"] *)){margin-top:1.4285714em;margin-bottom:.5714286em;line-height:1.4285714}.lg\:prose-sm :where(img):not(:where([class~="not-prose"] *)){margin-top:1.7142857em;margin-bottom:1.7142857em}.lg\:prose-sm :where(video):not(:where([class~="not-prose"] *)){margin-top:1.7142857em;margin-bottom:1.7142857em}.lg\:prose-sm :where(figure):not(:where([class~="not-prose"] *)){margin-top:1.7142857em;margin-bottom:1.7142857em}.lg\:prose-sm :where(figure > *):not(:where([class~="not-prose"] *)){margin-top:0;margin-bottom:0}.lg\:prose-sm :where(figcaption):not(:where([class~="not-prose"] *)){font-size:.8571429em;line-height:1.3333333;margin-top:.6666667em}.lg\:prose-sm :where(code):not(:where([class~="not-prose"] *)){font-size:.8571429em}.lg\:prose-sm :where(h2 code):not(:where([class~="not-prose"] *)){font-size:.9em}.lg\:prose-sm :where(h3 code):not(:where([class~="not-prose"] *)){font-size:.8888889em}.lg\:prose-sm :where(pre):not(:where([class~="not-prose"] *)){font-size:.8571429em;line-height:1.6666667;margin-top:1.6666667em;margin-bottom:1.6666667em;border-radius:.25rem;padding:.6666667em 1em}.lg\:prose-sm :where(ol):not(:where([class~="not-prose"] *)){margin-top:1.1428571em;margin-bottom:1.1428571em;padding-left:1.5714286em}.lg\:prose-sm :where(ul):not(:where([class~="not-prose"] *)){margin-top:1.1428571em;margin-bottom:1.1428571em;padding-left:1.5714286em}.lg\:prose-sm :where(li):not(:where([class~="not-prose"] *)){margin-top:.2857143em;margin-bottom:.2857143em}.lg\:prose-sm :where(ol > li):not(:where([class~="not-prose"] *)){padding-left:.4285714em}.lg\:prose-sm :where(ul > li):not(:where([class~="not-prose"] *)){padding-left:.4285714em}.lg\:prose-sm :where(.lg\:prose-sm > ul > li p):not(:where([class~="not-prose"] *)){margin-top:.5714286em;margin-bottom:.5714286em}.lg\:prose-sm :where(.lg\:prose-sm > ul > li > *:first-child):not(:where([class~="not-prose"] *)){margin-top:1.1428571em}.lg\:prose-sm :where(.lg\:prose-sm > ul > li > *:last-child):not(:where([class~="not-prose"] *)){margin-bottom:1.1428571em}.lg\:prose-sm :where(.lg\:prose-sm > ol > li > *:first-child):not(:where([class~="not-prose"] *)){margin-top:1.1428571em}.lg\:prose-sm :where(.lg\:prose-sm > ol > li > *:last-child):not(:where([class~="not-prose"] *)){margin-bottom:1.1428571em}.lg\:prose-sm :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~="not-prose"] *)){margin-top:.5714286em;margin-bottom:.5714286em}.lg\:prose-sm :where(hr):not(:where([class~="not-prose"] *)){margin-top:2.8571429em;margin-bottom:2.8571429em}.lg\:prose-sm :where(hr + *):not(:where([class~="not-prose"] *)){margin-top:0}.lg\:prose-sm :where(h2 + *):not(:where([class~="not-prose"] *)){margin-top:0}.lg\:prose-sm :where(h3 + *):not(:where([class~="not-prose"] *)){margin-top:0}.lg\:prose-sm :where(h4 + *):not(:where([class~="not-prose"] *)){margin-top:0}.lg\:prose-sm :where(table):not(:where([class~="not-prose"] *)){font-size:.8571429em;line-height:1.5}.lg\:prose-sm :where(thead th):not(:where([class~="not-prose"] *)){padding-right:1em;padding-bottom:.6666667em;padding-left:1em}.lg\:prose-sm :where(thead th:first-child):not(:where([class~="not-prose"] *)){padding-left:0}.lg\:prose-sm :where(thead th:last-child):not(:where([class~="not-prose"] *)){padding-right:0}.lg\:prose-sm :where(tbody td,tfoot td):not(:where([class~="not-prose"] *)){padding:.6666667em 1em}.lg\:prose-sm :where(tbody td:first-child,tfoot td:first-child):not(:where([class~="not-prose"] *)){padding-left:0}.lg\:prose-sm :where(tbody td:last-child,tfoot td:last-child):not(:where([class~="not-prose"] *)){padding-right:0}.lg\:prose-sm :where(.lg\:prose-sm > :first-child):not(:where([class~="not-prose"] *)){margin-top:0}.lg\:prose-sm :where(.lg\:prose-sm > :last-child):not(:where([class~="not-prose"] *)){margin-bottom:0}}@media (min-width: 1280px){.xl\:prose-base{font-size:1rem;line-height:1.75}.xl\:prose-base :where(p):not(:where([class~="not-prose"] *)){margin-top:1.25em;margin-bottom:1.25em}.xl\:prose-base :where([class~="lead"]):not(:where([class~="not-prose"] *)){font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.xl\:prose-base :where(blockquote):not(:where([class~="not-prose"] *)){margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.xl\:prose-base :where(h1):not(:where([class~="not-prose"] *)){font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.xl\:prose-base :where(h2):not(:where([class~="not-prose"] *)){font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.xl\:prose-base :where(h3):not(:where([class~="not-prose"] *)){font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.xl\:prose-base :where(h4):not(:where([class~="not-prose"] *)){margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.xl\:prose-base :where(img):not(:where([class~="not-prose"] *)){margin-top:2em;margin-bottom:2em}.xl\:prose-base :where(video):not(:where([class~="not-prose"] *)){margin-top:2em;margin-bottom:2em}.xl\:prose-base :where(figure):not(:where([class~="not-prose"] *)){margin-top:2em;margin-bottom:2em}.xl\:prose-base :where(figure > *):not(:where([class~="not-prose"] *)){margin-top:0;margin-bottom:0}.xl\:prose-base :where(figcaption):not(:where([class~="not-prose"] *)){font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.xl\:prose-base :where(code):not(:where([class~="not-prose"] *)){font-size:.875em}.xl\:prose-base :where(h2 code):not(:where([class~="not-prose"] *)){font-size:.875em}.xl\:prose-base :where(h3 code):not(:where([class~="not-prose"] *)){font-size:.9em}.xl\:prose-base :where(pre):not(:where([class~="not-prose"] *)){font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding:.8571429em 1.1428571em}.xl\:prose-base :where(ol):not(:where([class~="not-prose"] *)){margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.xl\:prose-base :where(ul):not(:where([class~="not-prose"] *)){margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.xl\:prose-base :where(li):not(:where([class~="not-prose"] *)){margin-top:.5em;margin-bottom:.5em}.xl\:prose-base :where(ol > li):not(:where([class~="not-prose"] *)){padding-left:.375em}.xl\:prose-base :where(ul > li):not(:where([class~="not-prose"] *)){padding-left:.375em}.xl\:prose-base :where(.xl\:prose-base > ul > li p):not(:where([class~="not-prose"] *)){margin-top:.75em;margin-bottom:.75em}.xl\:prose-base :where(.xl\:prose-base > ul > li > *:first-child):not(:where([class~="not-prose"] *)){margin-top:1.25em}.xl\:prose-base :where(.xl\:prose-base > ul > li > *:last-child):not(:where([class~="not-prose"] *)){margin-bottom:1.25em}.xl\:prose-base :where(.xl\:prose-base > ol > li > *:first-child):not(:where([class~="not-prose"] *)){margin-top:1.25em}.xl\:prose-base :where(.xl\:prose-base > ol > li > *:last-child):not(:where([class~="not-prose"] *)){margin-bottom:1.25em}.xl\:prose-base :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~="not-prose"] *)){margin-top:.75em;margin-bottom:.75em}.xl\:prose-base :where(hr):not(:where([class~="not-prose"] *)){margin-top:3em;margin-bottom:3em}.xl\:prose-base :where(hr + *):not(:where([class~="not-prose"] *)){margin-top:0}.xl\:prose-base :where(h2 + *):not(:where([class~="not-prose"] *)){margin-top:0}.xl\:prose-base :where(h3 + *):not(:where([class~="not-prose"] *)){margin-top:0}.xl\:prose-base :where(h4 + *):not(:where([class~="not-prose"] *)){margin-top:0}.xl\:prose-base :where(table):not(:where([class~="not-prose"] *)){font-size:.875em;line-height:1.7142857}.xl\:prose-base :where(thead th):not(:where([class~="not-prose"] *)){padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.xl\:prose-base :where(thead th:first-child):not(:where([class~="not-prose"] *)){padding-left:0}.xl\:prose-base :where(thead th:last-child):not(:where([class~="not-prose"] *)){padding-right:0}.xl\:prose-base :where(tbody td,tfoot td):not(:where([class~="not-prose"] *)){padding:.5714286em}.xl\:prose-base :where(tbody td:first-child,tfoot td:first-child):not(:where([class~="not-prose"] *)){padding-left:0}.xl\:prose-base :where(tbody td:last-child,tfoot td:last-child):not(:where([class~="not-prose"] *)){padding-right:0}.xl\:prose-base :where(.xl\:prose-base > :first-child):not(:where([class~="not-prose"] *)){margin-top:0}.xl\:prose-base :where(.xl\:prose-base > :last-child):not(:where([class~="not-prose"] *)){margin-bottom:0}}.hover\:border-\[rgb\(var\(--text-primary\)\)\]:hover{border-color:rgb(var(--text-primary))}.hover\:border-gray-300:hover{--tw-border-opacity: 1;border-color:rgb(212 212 216 / var(--tw-border-opacity))}.hover\:bg-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity))}.hover\:bg-white\/20:hover{background-color:#fff3}.hover\:bg-white\/25:hover{background-color:#ffffff40}.hover\:text-crunchy:hover{--tw-text-opacity: 1;color:rgb(43 103 240 / var(--tw-text-opacity))}.hover\:text-primary:hover{--tw-text-opacity: 1;color:rgb(var(--text-primary) / var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}.hover\:no-underline:hover{text-decoration-line:none}.hover\:opacity-50:hover{opacity:.5}.hover\:shadow-md:hover{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-0:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:\!ring-white\/50:focus{--tw-ring-color: rgb(255 255 255 / .5) !important}.focus\:ring-crunchy\/50:focus{--tw-ring-color: rgb(43 103 240 / .5)}.focus\:ring-emerald-500\/50:focus{--tw-ring-color: rgb(16 185 129 / .5)}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus\:\!ring-offset-crunchy:focus{--tw-ring-offset-color: #2B67F0 !important}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-crunchy\/50:focus-visible{--tw-ring-color: rgb(43 103 240 / .5)}.group:hover .group-hover\:-translate-x-1{--tw-translate-x: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:translate-x-1{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:opacity-75{opacity:.75}.prose-headings\:font-display :is(:where(h1,h2,h3,h4,h5,h6,th):not(:where([class~="not-prose"] *))){font-family:var(--font-display),ui-sans-serif,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}.prose-headings\:text-primary :is(:where(h1,h2,h3,h4,h5,h6,th):not(:where([class~="not-prose"] *))){--tw-text-opacity: 1;color:rgb(var(--text-primary) / var(--tw-text-opacity))}:is(.dark .dark\:bg-slate-900){--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity))}@media (min-width: 640px){.sm\:-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.sm\:ml-6{margin-left:1.5rem}.sm\:block{display:block}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:border-l{border-left-width:1px}.sm\:border-gray-200{--tw-border-opacity: 1;border-color:rgb(228 228 231 / var(--tw-border-opacity))}.sm\:border-transparent{border-color:transparent}.sm\:p-6{padding:1.5rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-24{padding-top:6rem;padding-bottom:6rem}.sm\:pl-6{padding-left:1.5rem}.sm\:text-5xl{font-size:3rem;line-height:1}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width: 768px){.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:p-20{padding:5rem}.md\:px-8{padding-left:2rem;padding-right:2rem}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-4xl{font-size:2.25rem;line-height:2.5rem}}@media (min-width: 1024px){.lg\:-mx-8{margin-left:-2rem;margin-right:-2rem}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:w-\[230px\]{width:230px}.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (min-width: 1280px){.xl\:w-64{width:16rem}.xl\:w-\[290px\]{width:290px}}@media (min-width: 1536px){.\32xl\:w-full{width:100%}} From ae8b0e51a04985d195619ae89f2200d0d9b6230d Mon Sep 17 00:00:00 2001 From: Will King Date: Thu, 14 Dec 2023 12:29:14 -0600 Subject: [PATCH 3/3] Fixing type error --- .eslintrc.cjs | 1 - app/utils/timing.server.ts | 94 -------------------------------------- 2 files changed, 95 deletions(-) delete mode 100644 app/utils/timing.server.ts diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 8bcef07..7df7a23 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -17,7 +17,6 @@ module.exports = { }, ], '@typescript-eslint/no-unused-vars': ['warn', { varsIgnorePatter: '^_' }], - 'no-unused-vars': ['warn', { varsIgnorePatter: '^_' }], 'testing-library/no-await-sync-events': 'off', 'jest-dom/prefer-in-document': 'off', '@typescript-eslint/no-duplicate-imports': 'warn', diff --git a/app/utils/timing.server.ts b/app/utils/timing.server.ts deleted file mode 100644 index a122308..0000000 --- a/app/utils/timing.server.ts +++ /dev/null @@ -1,94 +0,0 @@ -import { type CreateReporter } from 'cachified' - -export type Timings = Record< - string, - Array<{ desc?: string; type: string; time: number }> -> - -function createTimer(type: string, desc?: string) { - const start = performance.now() - return { - end(timings: Timings) { - let timingType = timings[type] - - if (!timingType) { - // eslint-disable-next-line no-multi-assign - timingType = timings[type] = [] - } - timingType.push({ desc, type, time: performance.now() - start }) - }, - } -} - -export async function time( - fn: Promise | (() => ReturnType | Promise), - { - type, - desc, - timings, - }: { - type: string - desc?: string - timings?: Timings - }, -): Promise { - const timer = createTimer(type, desc) - const promise = typeof fn === 'function' ? fn() : fn - if (!timings) return promise - - const result = await promise - - timer.end(timings) - return result -} - -export function getServerTimeHeader(timings: Timings) { - return Object.entries(timings) - .map(([key, timingInfos]) => { - const dur = timingInfos - .reduce((acc, timingInfo) => acc + timingInfo.time, 0) - .toFixed(1) - const desc = timingInfos - .map(t => t.desc) - .filter(Boolean) - .join(' & ') - return [ - key.replaceAll(/(:| |@|=|;|,)/g, '_'), - desc ? `desc=${JSON.stringify(desc)}` : null, - `dur=${dur}`, - ] - .filter(Boolean) - .join(';') - }) - .join(',') -} - -export function cachifiedTimingReporter( - timings?: Timings, -): undefined | CreateReporter { - if (!timings) return - - return ({ key }) => { - const cacheRetrievalTimer = createTimer( - `cache:${key}`, - `${key} cache retrieval`, - ) - let getFreshValueTimer: ReturnType | undefined - return event => { - switch (event.name) { - case 'getFreshValueStart': - getFreshValueTimer = createTimer( - `getFreshValue:${key}`, - `request forced to wait for a fresh ${key} value`, - ) - break - case 'getFreshValueSuccess': - getFreshValueTimer?.end(timings) - break - case 'done': - cacheRetrievalTimer.end(timings) - break - } - } - } -}