@cyber-harbour/ui 2.2.40 → 2.2.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/PdfDriver-GLFIED7A.mjs +2 -0
- package/dist/PdfDriver-GLFIED7A.mjs.map +1 -0
- package/dist/PdfDriver-WC4VPQWZ.js +2 -0
- package/dist/PdfDriver-WC4VPQWZ.js.map +1 -0
- package/dist/chunk-3MGYAJ6C.js +3 -0
- package/dist/chunk-3MGYAJ6C.js.map +1 -0
- package/dist/chunk-T6XGVEPQ.mjs +3 -0
- package/dist/chunk-T6XGVEPQ.mjs.map +1 -0
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.d.mts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1439 -47
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1439 -47
- package/dist/index.mjs.map +1 -1
- package/dist/styles/tailwind.css +1 -1
- package/dist/styles/tailwind.css.map +1 -1
- package/package.json +1 -1
- package/dist/PdfDriver-AV5F6NNW.js +0 -2
- package/dist/PdfDriver-AV5F6NNW.js.map +0 -1
- package/dist/PdfDriver-BERFKFHH.mjs +0 -2
- package/dist/PdfDriver-BERFKFHH.mjs.map +0 -1
- package/dist/chunk-2IGSHLHQ.js +0 -1394
- package/dist/chunk-2IGSHLHQ.js.map +0 -1
- package/dist/chunk-I7F6H36J.mjs +0 -1394
- package/dist/chunk-I7F6H36J.mjs.map +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a,c}from'./chunk-T6XGVEPQ.mjs';import {useState,useRef,useCallback,useMemo,useEffect}from'react';import S from'lodash.debounce';import {pdfjs,Document,Page}from'react-pdf';import'react-pdf/dist/Page/AnnotationLayer.css';import'react-pdf/dist/Page/TextLayer.css';import {Virtuoso}from'react-virtuoso';import {jsx,jsxs}from'react/jsx-runtime';var f="/pdfjs";typeof window<"u"&&typeof document<"u"&&(pdfjs.GlobalWorkerOptions.workerSrc=`${f}/pdf.worker.min.js`);var te=1e3,re=400,oe=150,ne=70,se=1.414,D=400,he=a(({url:_,initialPage:l,seamless:O=false})=>{let[s,C]=useState(0),[d,b]=useState(1),[U,E]=useState(true),[I,M]=useState(null),[v,k]=useState(D),[H,Z]=useState(D),[a$1,R]=useState(1),[p,$]=useState(D),[T,F]=useState(se),c$1=useRef(null),y=useRef(null),N=useRef(false),u=useRef(null),x=useRef(false),i=useCallback((e,t=true)=>{e<1||e>s||(N.current=true,y.current?.scrollToIndex({index:e-1,align:"start",behavior:t?"smooth":"auto"}),u.current&&clearTimeout(u.current),u.current=setTimeout(()=>{x.current&&(N.current=false);},te));},[s]),P=useMemo(()=>S((e,t=false)=>{i(e,t);},re),[i]),j=useCallback(()=>{R(e=>Math.min(e+.25,4));},[]),V=useCallback(()=>{R(e=>Math.max(e-.25,.25));},[]);useEffect(()=>{if(!c$1.current)return;let e=S(()=>{c$1.current&&(k(c$1.current.offsetWidth-ne),Z(c$1.current.clientHeight));},oe);e();let t=new ResizeObserver(e);return t.observe(c$1.current),()=>{t.disconnect(),e.cancel();}},[]);let z=useMemo(()=>({cMapPacked:true,cMapUrl:`${f}/cmaps/`,standardFontDataUrl:`${f}/standard_fonts/`,wasmUrl:`${f}/wasm/`,iccUrl:`${f}/icc/`}),[]),B=useCallback(({numPages:e})=>{C(e),E(false);},[]),G=useCallback(e=>{M(`Failed to load PDF: ${e.message}`),E(false);},[]),g=useCallback(e=>{let t=d+e;b(t),i(t);},[d,i]),W=useCallback(()=>{g(-1);},[g]),Y=useCallback(()=>{g(1);},[g]),J=useCallback(e=>{if(N.current)return;let t=e.startIndex+1;t!==d&&b(t);},[d]);return useEffect(()=>(x.current=true,()=>{x.current=false,P.cancel(),u.current&&clearTimeout(u.current);}),[P]),useEffect(()=>{!l||s===0||l>s||(b(l),i(l,false));},[l,s,i]),useEffect(()=>{$(v*a$1*T);},[v,a$1,T]),I?jsx("div",{className:"flex items-center justify-center h-full w-full px-8.5",children:jsx("div",{className:"text-red-500 text-center",children:jsx("p",{children:I})})}):jsxs("div",{className:"h-full w-full flex flex-col overflow-hidden",children:[U&&jsx("div",{className:"flex items-center justify-center h-full px-8.5",children:jsx("div",{className:"text-gray-500 dark:text-gray-400",children:"Loading PDF..."})}),jsx("div",{ref:c$1,className:"flex-1 overflow-hidden min-h-0",children:jsx(Document,{options:z,file:_,onLoadSuccess:B,onLoadError:G,loading:jsx("div",{className:"flex items-center justify-center",style:{height:p},children:jsx("div",{className:"h-10 w-10 rounded-full border border-2 border-gray-200 dark:border-neutral-700 animate-spin border-s-transparent"})}),children:jsx(Virtuoso,{ref:y,style:{height:H||"calc(100dvh - 190px)",width:"100%",scrollbarGutter:"stable both-edges"},totalCount:s,rangeChanged:J,defaultItemHeight:p,itemContent:e=>jsx("div",{className:`mx-auto w-fit${O?"":" mb-4 border border-1 border-gray-100 dark:border-neutral-800"}`,children:jsx(Page,{pageNumber:e+1,renderTextLayer:true,renderAnnotationLayer:true,width:v*a$1,onLoadSuccess:t=>{if(e===0){let q=t.height/t.width;F(q);}},loading:jsx("div",{className:"flex items-center justify-center",style:{height:p},children:jsx("div",{className:"h-10 w-10 rounded-full border border-2 border-gray-200 dark:border-neutral-700 animate-spin border-s-transparent"})}),className:"h-auto w-full transition-[width] duration-[600ms] ease-in-out"})})})})}),s>0&&jsx(c,{zoom:{displayText:`${Math.round(a$1*100)}%`,onZoomIn:j,onZoomOut:V,canZoomIn:a$1<4,canZoomOut:a$1>.25},pagination:{page:d,total:s,onPrev:W,onNext:Y,onPageChange:a(e=>{b(e),P(e,false);},"onPageChange")}})]})},"PdfDriver");export{he as PdfDriver};//# sourceMappingURL=PdfDriver-GLFIED7A.mjs.map
|
|
2
|
+
//# sourceMappingURL=PdfDriver-GLFIED7A.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/FileViewer/drivers/PdfDriver/PdfDriver.tsx"],"names":["BASE_DIR","pdfjs","SCROLL_ANIMATION_DURATION","INPUT_DEBOUNCE_DELAY","RESIZE_DEBOUNCE_DELAY","CONTAINER_PADDING","DEFAULT_RATIO_A4","DEFAULT_MIN_SIZE","PdfDriver","__name","url","initialPage","seamless","numPages","setNumPages","useState","pageNumber","setPageNumber","loading","setLoading","error","setError","width","setWidth","height","setHeight","scale","setScale","defaultPageHeight","setDefaultPageHeight","pageAspectRatio","setPageAspectRatio","containerRef","useRef","virtuosoRef","isUserScrollingRef","scrollTimeoutRef","isMountedRef","scrollToPage","useCallback","page","smooth","debouncedScroll","useMemo","debounce","handleZoomIn","prev","handleZoomOut","useEffect","updateSize","observer","options","onDocumentLoadSuccess","onDocumentLoadError","changePage","offset","newPage","previousPage","nextPage","handleRangeChanged","range","visiblePage","jsx","jsxs","Document","Virtuoso","index","Page","ratio","ViewerToolbar"],"mappings":"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","file":"PdfDriver-GLFIED7A.mjs","sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport debounce from 'lodash.debounce';\nimport { Document, Page, pdfjs } from 'react-pdf';\nimport 'react-pdf/dist/Page/AnnotationLayer.css';\nimport 'react-pdf/dist/Page/TextLayer.css';\nimport { Virtuoso, VirtuosoHandle } from 'react-virtuoso';\nimport { ViewerToolbar } from '../../ViewerToolbar';\n\nconst BASE_DIR = '/pdfjs';\n\n// Set up the worker - self-hosted configuration (client-side only)\nif (typeof window !== 'undefined' && typeof document !== 'undefined') {\n pdfjs.GlobalWorkerOptions.workerSrc = `${BASE_DIR}/pdf.worker.min.js`;\n}\n\ninterface PdfDriverProps {\n url: string;\n initialPage?: number;\n /** Render pages flush — no gap/border between pages (e.g. website-to-PDF). */\n seamless?: boolean;\n}\nconst SCROLL_ANIMATION_DURATION = 1000;\nconst INPUT_DEBOUNCE_DELAY = 400;\nconst RESIZE_DEBOUNCE_DELAY = 150;\nconst CONTAINER_PADDING = 70;\nconst DEFAULT_RATIO_A4 = 1.414;\nconst DEFAULT_MIN_SIZE = 400;\n\nexport const PdfDriver: React.FC<PdfDriverProps> = ({ url, initialPage, seamless = false }) => {\n const [numPages, setNumPages] = useState<number>(0);\n const [pageNumber, setPageNumber] = useState<number>(1);\n const [loading, setLoading] = useState<boolean>(true);\n const [error, setError] = useState<string | null>(null);\n const [width, setWidth] = useState<number>(DEFAULT_MIN_SIZE);\n const [height, setHeight] = useState<number>(DEFAULT_MIN_SIZE);\n const [scale, setScale] = useState(1);\n const [defaultPageHeight, setDefaultPageHeight] = useState(DEFAULT_MIN_SIZE);\n const [pageAspectRatio, setPageAspectRatio] = useState(DEFAULT_RATIO_A4);\n\n const containerRef = useRef<HTMLDivElement>(null);\n const virtuosoRef = useRef<VirtuosoHandle>(null);\n const isUserScrollingRef = useRef<boolean>(false);\n const scrollTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n const isMountedRef = useRef(false);\n\n const scrollToPage = useCallback(\n (page: number, smooth = true) => {\n if (page < 1 || page > numPages) return;\n\n isUserScrollingRef.current = true;\n virtuosoRef.current?.scrollToIndex({\n index: page - 1,\n align: 'start',\n behavior: smooth ? 'smooth' : 'auto',\n });\n\n if (scrollTimeoutRef.current) {\n clearTimeout(scrollTimeoutRef.current);\n }\n\n scrollTimeoutRef.current = setTimeout(() => {\n if (isMountedRef.current) isUserScrollingRef.current = false;\n }, SCROLL_ANIMATION_DURATION);\n },\n [numPages]\n );\n\n const debouncedScroll = useMemo(() => {\n return debounce((page: number, smooth = false) => {\n scrollToPage(page, smooth);\n }, INPUT_DEBOUNCE_DELAY);\n }, [scrollToPage]);\n\n const handleZoomIn = useCallback(() => {\n setScale((prev) => Math.min(prev + 0.25, 4));\n }, []);\n\n const handleZoomOut = useCallback(() => {\n setScale((prev) => Math.max(prev - 0.25, 0.25));\n }, []);\n\n useEffect(() => {\n if (!containerRef.current) return;\n const updateSize = debounce(() => {\n if (containerRef.current) {\n setWidth(containerRef.current.offsetWidth - CONTAINER_PADDING);\n setHeight(containerRef.current.clientHeight);\n }\n }, RESIZE_DEBOUNCE_DELAY);\n updateSize();\n const observer = new ResizeObserver(updateSize);\n observer.observe(containerRef.current);\n return () => {\n observer.disconnect();\n updateSize.cancel();\n };\n }, []);\n\n const options = useMemo(\n () => ({\n cMapPacked: true,\n cMapUrl: `${BASE_DIR}/cmaps/`,\n standardFontDataUrl: `${BASE_DIR}/standard_fonts/`,\n wasmUrl: `${BASE_DIR}/wasm/`,\n iccUrl: `${BASE_DIR}/icc/`,\n }),\n []\n );\n\n const onDocumentLoadSuccess = useCallback(({ numPages }: { numPages: number }): void => {\n setNumPages(numPages);\n setLoading(false);\n }, []);\n\n const onDocumentLoadError = useCallback((error: Error): void => {\n setError(`Failed to load PDF: ${error.message}`);\n setLoading(false);\n }, []);\n\n const changePage = useCallback(\n (offset: number): void => {\n const newPage = pageNumber + offset;\n setPageNumber(newPage);\n scrollToPage(newPage);\n },\n [pageNumber, scrollToPage]\n );\n\n const previousPage = useCallback((): void => {\n changePage(-1);\n }, [changePage]);\n\n const nextPage = useCallback((): void => {\n changePage(1);\n }, [changePage]);\n\n const handleRangeChanged = useCallback(\n (range: { startIndex: number; endIndex: number }) => {\n if (isUserScrollingRef.current) {\n return;\n }\n const visiblePage = range.startIndex + 1;\n if (visiblePage !== pageNumber) {\n setPageNumber(visiblePage);\n }\n },\n [pageNumber]\n );\n\n useEffect(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n debouncedScroll.cancel();\n if (scrollTimeoutRef.current) {\n clearTimeout(scrollTimeoutRef.current);\n }\n };\n }, [debouncedScroll]);\n\n useEffect(() => {\n if (!initialPage || numPages === 0 || initialPage > numPages) return;\n setPageNumber(initialPage);\n scrollToPage(initialPage, false);\n }, [initialPage, numPages, scrollToPage]);\n\n useEffect(() => {\n setDefaultPageHeight(width * scale * pageAspectRatio);\n }, [width, scale, pageAspectRatio]);\n\n if (error) {\n return (\n <div className=\"flex items-center justify-center h-full w-full px-8.5\">\n <div className=\"text-red-500 text-center\">\n <p>{error}</p>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"h-full w-full flex flex-col overflow-hidden\">\n {loading && (\n <div className=\"flex items-center justify-center h-full px-8.5\">\n <div className=\"text-gray-500 dark:text-gray-400\">Loading PDF...</div>\n </div>\n )}\n <div ref={containerRef} className=\"flex-1 overflow-hidden min-h-0\">\n <Document\n options={options}\n file={url}\n onLoadSuccess={onDocumentLoadSuccess}\n onLoadError={onDocumentLoadError}\n loading={\n <div className=\"flex items-center justify-center\" style={{ height: defaultPageHeight }}>\n <div className=\"h-10 w-10 rounded-full border border-2 border-gray-200 dark:border-neutral-700 animate-spin border-s-transparent\" />\n </div>\n }\n >\n <Virtuoso\n ref={virtuosoRef}\n style={{ height: height || 'calc(100dvh - 190px)', width: '100%', scrollbarGutter: 'stable both-edges' }}\n totalCount={numPages}\n rangeChanged={handleRangeChanged}\n defaultItemHeight={defaultPageHeight}\n itemContent={(index) => (\n <div className={`mx-auto w-fit${seamless ? '' : ' mb-4 border border-1 border-gray-100 dark:border-neutral-800'}`}>\n <Page\n pageNumber={index + 1}\n renderTextLayer={true}\n renderAnnotationLayer={true}\n width={width * scale}\n onLoadSuccess={(page) => {\n if (index === 0) {\n const ratio = page.height / page.width;\n setPageAspectRatio(ratio);\n }\n }}\n loading={\n <div className=\"flex items-center justify-center\" style={{ height: defaultPageHeight }}>\n <div className=\"h-10 w-10 rounded-full border border-2 border-gray-200 dark:border-neutral-700 animate-spin border-s-transparent\" />\n </div>\n }\n className=\"h-auto w-full transition-[width] duration-[600ms] ease-in-out\"\n />\n </div>\n )}\n />\n </Document>\n </div>\n {numPages > 0 && (\n <ViewerToolbar\n zoom={{\n displayText: `${Math.round(scale * 100)}%`,\n onZoomIn: handleZoomIn,\n onZoomOut: handleZoomOut,\n canZoomIn: scale < 4,\n canZoomOut: scale > 0.25,\n }}\n pagination={{\n page: pageNumber,\n total: numPages,\n onPrev: previousPage,\n onNext: nextPage,\n onPageChange: (page) => {\n setPageNumber(page);\n debouncedScroll(page, false);\n },\n }}\n />\n )}\n </div>\n );\n};\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';var chunk3MGYAJ6C_js=require('./chunk-3MGYAJ6C.js'),react=require('react'),S=require('lodash.debounce'),reactPdf=require('react-pdf');require('react-pdf/dist/Page/AnnotationLayer.css'),require('react-pdf/dist/Page/TextLayer.css');var reactVirtuoso=require('react-virtuoso'),jsxRuntime=require('react/jsx-runtime');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var S__default=/*#__PURE__*/_interopDefault(S);var f="/pdfjs";typeof window<"u"&&typeof document<"u"&&(reactPdf.pdfjs.GlobalWorkerOptions.workerSrc=`${f}/pdf.worker.min.js`);var te=1e3,re=400,oe=150,ne=70,se=1.414,D=400,ve=chunk3MGYAJ6C_js.a(({url:_,initialPage:l,seamless:O=false})=>{let[s,C]=react.useState(0),[d,b]=react.useState(1),[U,E]=react.useState(true),[I,M]=react.useState(null),[v,k]=react.useState(D),[H,Z]=react.useState(D),[a,R]=react.useState(1),[p,$]=react.useState(D),[T,F]=react.useState(se),c=react.useRef(null),y=react.useRef(null),N=react.useRef(false),u=react.useRef(null),x=react.useRef(false),i=react.useCallback((e,t=true)=>{e<1||e>s||(N.current=true,y.current?.scrollToIndex({index:e-1,align:"start",behavior:t?"smooth":"auto"}),u.current&&clearTimeout(u.current),u.current=setTimeout(()=>{x.current&&(N.current=false);},te));},[s]),P=react.useMemo(()=>S__default.default((e,t=false)=>{i(e,t);},re),[i]),j=react.useCallback(()=>{R(e=>Math.min(e+.25,4));},[]),V=react.useCallback(()=>{R(e=>Math.max(e-.25,.25));},[]);react.useEffect(()=>{if(!c.current)return;let e=S__default.default(()=>{c.current&&(k(c.current.offsetWidth-ne),Z(c.current.clientHeight));},oe);e();let t=new ResizeObserver(e);return t.observe(c.current),()=>{t.disconnect(),e.cancel();}},[]);let z=react.useMemo(()=>({cMapPacked:true,cMapUrl:`${f}/cmaps/`,standardFontDataUrl:`${f}/standard_fonts/`,wasmUrl:`${f}/wasm/`,iccUrl:`${f}/icc/`}),[]),B=react.useCallback(({numPages:e})=>{C(e),E(false);},[]),G=react.useCallback(e=>{M(`Failed to load PDF: ${e.message}`),E(false);},[]),g=react.useCallback(e=>{let t=d+e;b(t),i(t);},[d,i]),W=react.useCallback(()=>{g(-1);},[g]),Y=react.useCallback(()=>{g(1);},[g]),J=react.useCallback(e=>{if(N.current)return;let t=e.startIndex+1;t!==d&&b(t);},[d]);return react.useEffect(()=>(x.current=true,()=>{x.current=false,P.cancel(),u.current&&clearTimeout(u.current);}),[P]),react.useEffect(()=>{!l||s===0||l>s||(b(l),i(l,false));},[l,s,i]),react.useEffect(()=>{$(v*a*T);},[v,a,T]),I?jsxRuntime.jsx("div",{className:"flex items-center justify-center h-full w-full px-8.5",children:jsxRuntime.jsx("div",{className:"text-red-500 text-center",children:jsxRuntime.jsx("p",{children:I})})}):jsxRuntime.jsxs("div",{className:"h-full w-full flex flex-col overflow-hidden",children:[U&&jsxRuntime.jsx("div",{className:"flex items-center justify-center h-full px-8.5",children:jsxRuntime.jsx("div",{className:"text-gray-500 dark:text-gray-400",children:"Loading PDF..."})}),jsxRuntime.jsx("div",{ref:c,className:"flex-1 overflow-hidden min-h-0",children:jsxRuntime.jsx(reactPdf.Document,{options:z,file:_,onLoadSuccess:B,onLoadError:G,loading:jsxRuntime.jsx("div",{className:"flex items-center justify-center",style:{height:p},children:jsxRuntime.jsx("div",{className:"h-10 w-10 rounded-full border border-2 border-gray-200 dark:border-neutral-700 animate-spin border-s-transparent"})}),children:jsxRuntime.jsx(reactVirtuoso.Virtuoso,{ref:y,style:{height:H||"calc(100dvh - 190px)",width:"100%",scrollbarGutter:"stable both-edges"},totalCount:s,rangeChanged:J,defaultItemHeight:p,itemContent:e=>jsxRuntime.jsx("div",{className:`mx-auto w-fit${O?"":" mb-4 border border-1 border-gray-100 dark:border-neutral-800"}`,children:jsxRuntime.jsx(reactPdf.Page,{pageNumber:e+1,renderTextLayer:true,renderAnnotationLayer:true,width:v*a,onLoadSuccess:t=>{if(e===0){let q=t.height/t.width;F(q);}},loading:jsxRuntime.jsx("div",{className:"flex items-center justify-center",style:{height:p},children:jsxRuntime.jsx("div",{className:"h-10 w-10 rounded-full border border-2 border-gray-200 dark:border-neutral-700 animate-spin border-s-transparent"})}),className:"h-auto w-full transition-[width] duration-[600ms] ease-in-out"})})})})}),s>0&&jsxRuntime.jsx(chunk3MGYAJ6C_js.c,{zoom:{displayText:`${Math.round(a*100)}%`,onZoomIn:j,onZoomOut:V,canZoomIn:a<4,canZoomOut:a>.25},pagination:{page:d,total:s,onPrev:W,onNext:Y,onPageChange:chunk3MGYAJ6C_js.a(e=>{b(e),P(e,false);},"onPageChange")}})]})},"PdfDriver");exports.PdfDriver=ve;//# sourceMappingURL=PdfDriver-WC4VPQWZ.js.map
|
|
2
|
+
//# sourceMappingURL=PdfDriver-WC4VPQWZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/FileViewer/drivers/PdfDriver/PdfDriver.tsx"],"names":["BASE_DIR","pdfjs","SCROLL_ANIMATION_DURATION","INPUT_DEBOUNCE_DELAY","RESIZE_DEBOUNCE_DELAY","CONTAINER_PADDING","DEFAULT_RATIO_A4","DEFAULT_MIN_SIZE","PdfDriver","__name","url","initialPage","seamless","numPages","setNumPages","useState","pageNumber","setPageNumber","loading","setLoading","error","setError","width","setWidth","height","setHeight","scale","setScale","defaultPageHeight","setDefaultPageHeight","pageAspectRatio","setPageAspectRatio","containerRef","useRef","virtuosoRef","isUserScrollingRef","scrollTimeoutRef","isMountedRef","scrollToPage","useCallback","page","smooth","debouncedScroll","useMemo","debounce","handleZoomIn","prev","handleZoomOut","useEffect","updateSize","observer","options","onDocumentLoadSuccess","onDocumentLoadError","changePage","offset","newPage","previousPage","nextPage","handleRangeChanged","range","visiblePage","jsx","jsxs","Document","Virtuoso","index","Page","ratio","ViewerToolbar"],"mappings":"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","file":"PdfDriver-WC4VPQWZ.js","sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport debounce from 'lodash.debounce';\nimport { Document, Page, pdfjs } from 'react-pdf';\nimport 'react-pdf/dist/Page/AnnotationLayer.css';\nimport 'react-pdf/dist/Page/TextLayer.css';\nimport { Virtuoso, VirtuosoHandle } from 'react-virtuoso';\nimport { ViewerToolbar } from '../../ViewerToolbar';\n\nconst BASE_DIR = '/pdfjs';\n\n// Set up the worker - self-hosted configuration (client-side only)\nif (typeof window !== 'undefined' && typeof document !== 'undefined') {\n pdfjs.GlobalWorkerOptions.workerSrc = `${BASE_DIR}/pdf.worker.min.js`;\n}\n\ninterface PdfDriverProps {\n url: string;\n initialPage?: number;\n /** Render pages flush — no gap/border between pages (e.g. website-to-PDF). */\n seamless?: boolean;\n}\nconst SCROLL_ANIMATION_DURATION = 1000;\nconst INPUT_DEBOUNCE_DELAY = 400;\nconst RESIZE_DEBOUNCE_DELAY = 150;\nconst CONTAINER_PADDING = 70;\nconst DEFAULT_RATIO_A4 = 1.414;\nconst DEFAULT_MIN_SIZE = 400;\n\nexport const PdfDriver: React.FC<PdfDriverProps> = ({ url, initialPage, seamless = false }) => {\n const [numPages, setNumPages] = useState<number>(0);\n const [pageNumber, setPageNumber] = useState<number>(1);\n const [loading, setLoading] = useState<boolean>(true);\n const [error, setError] = useState<string | null>(null);\n const [width, setWidth] = useState<number>(DEFAULT_MIN_SIZE);\n const [height, setHeight] = useState<number>(DEFAULT_MIN_SIZE);\n const [scale, setScale] = useState(1);\n const [defaultPageHeight, setDefaultPageHeight] = useState(DEFAULT_MIN_SIZE);\n const [pageAspectRatio, setPageAspectRatio] = useState(DEFAULT_RATIO_A4);\n\n const containerRef = useRef<HTMLDivElement>(null);\n const virtuosoRef = useRef<VirtuosoHandle>(null);\n const isUserScrollingRef = useRef<boolean>(false);\n const scrollTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n const isMountedRef = useRef(false);\n\n const scrollToPage = useCallback(\n (page: number, smooth = true) => {\n if (page < 1 || page > numPages) return;\n\n isUserScrollingRef.current = true;\n virtuosoRef.current?.scrollToIndex({\n index: page - 1,\n align: 'start',\n behavior: smooth ? 'smooth' : 'auto',\n });\n\n if (scrollTimeoutRef.current) {\n clearTimeout(scrollTimeoutRef.current);\n }\n\n scrollTimeoutRef.current = setTimeout(() => {\n if (isMountedRef.current) isUserScrollingRef.current = false;\n }, SCROLL_ANIMATION_DURATION);\n },\n [numPages]\n );\n\n const debouncedScroll = useMemo(() => {\n return debounce((page: number, smooth = false) => {\n scrollToPage(page, smooth);\n }, INPUT_DEBOUNCE_DELAY);\n }, [scrollToPage]);\n\n const handleZoomIn = useCallback(() => {\n setScale((prev) => Math.min(prev + 0.25, 4));\n }, []);\n\n const handleZoomOut = useCallback(() => {\n setScale((prev) => Math.max(prev - 0.25, 0.25));\n }, []);\n\n useEffect(() => {\n if (!containerRef.current) return;\n const updateSize = debounce(() => {\n if (containerRef.current) {\n setWidth(containerRef.current.offsetWidth - CONTAINER_PADDING);\n setHeight(containerRef.current.clientHeight);\n }\n }, RESIZE_DEBOUNCE_DELAY);\n updateSize();\n const observer = new ResizeObserver(updateSize);\n observer.observe(containerRef.current);\n return () => {\n observer.disconnect();\n updateSize.cancel();\n };\n }, []);\n\n const options = useMemo(\n () => ({\n cMapPacked: true,\n cMapUrl: `${BASE_DIR}/cmaps/`,\n standardFontDataUrl: `${BASE_DIR}/standard_fonts/`,\n wasmUrl: `${BASE_DIR}/wasm/`,\n iccUrl: `${BASE_DIR}/icc/`,\n }),\n []\n );\n\n const onDocumentLoadSuccess = useCallback(({ numPages }: { numPages: number }): void => {\n setNumPages(numPages);\n setLoading(false);\n }, []);\n\n const onDocumentLoadError = useCallback((error: Error): void => {\n setError(`Failed to load PDF: ${error.message}`);\n setLoading(false);\n }, []);\n\n const changePage = useCallback(\n (offset: number): void => {\n const newPage = pageNumber + offset;\n setPageNumber(newPage);\n scrollToPage(newPage);\n },\n [pageNumber, scrollToPage]\n );\n\n const previousPage = useCallback((): void => {\n changePage(-1);\n }, [changePage]);\n\n const nextPage = useCallback((): void => {\n changePage(1);\n }, [changePage]);\n\n const handleRangeChanged = useCallback(\n (range: { startIndex: number; endIndex: number }) => {\n if (isUserScrollingRef.current) {\n return;\n }\n const visiblePage = range.startIndex + 1;\n if (visiblePage !== pageNumber) {\n setPageNumber(visiblePage);\n }\n },\n [pageNumber]\n );\n\n useEffect(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n debouncedScroll.cancel();\n if (scrollTimeoutRef.current) {\n clearTimeout(scrollTimeoutRef.current);\n }\n };\n }, [debouncedScroll]);\n\n useEffect(() => {\n if (!initialPage || numPages === 0 || initialPage > numPages) return;\n setPageNumber(initialPage);\n scrollToPage(initialPage, false);\n }, [initialPage, numPages, scrollToPage]);\n\n useEffect(() => {\n setDefaultPageHeight(width * scale * pageAspectRatio);\n }, [width, scale, pageAspectRatio]);\n\n if (error) {\n return (\n <div className=\"flex items-center justify-center h-full w-full px-8.5\">\n <div className=\"text-red-500 text-center\">\n <p>{error}</p>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"h-full w-full flex flex-col overflow-hidden\">\n {loading && (\n <div className=\"flex items-center justify-center h-full px-8.5\">\n <div className=\"text-gray-500 dark:text-gray-400\">Loading PDF...</div>\n </div>\n )}\n <div ref={containerRef} className=\"flex-1 overflow-hidden min-h-0\">\n <Document\n options={options}\n file={url}\n onLoadSuccess={onDocumentLoadSuccess}\n onLoadError={onDocumentLoadError}\n loading={\n <div className=\"flex items-center justify-center\" style={{ height: defaultPageHeight }}>\n <div className=\"h-10 w-10 rounded-full border border-2 border-gray-200 dark:border-neutral-700 animate-spin border-s-transparent\" />\n </div>\n }\n >\n <Virtuoso\n ref={virtuosoRef}\n style={{ height: height || 'calc(100dvh - 190px)', width: '100%', scrollbarGutter: 'stable both-edges' }}\n totalCount={numPages}\n rangeChanged={handleRangeChanged}\n defaultItemHeight={defaultPageHeight}\n itemContent={(index) => (\n <div className={`mx-auto w-fit${seamless ? '' : ' mb-4 border border-1 border-gray-100 dark:border-neutral-800'}`}>\n <Page\n pageNumber={index + 1}\n renderTextLayer={true}\n renderAnnotationLayer={true}\n width={width * scale}\n onLoadSuccess={(page) => {\n if (index === 0) {\n const ratio = page.height / page.width;\n setPageAspectRatio(ratio);\n }\n }}\n loading={\n <div className=\"flex items-center justify-center\" style={{ height: defaultPageHeight }}>\n <div className=\"h-10 w-10 rounded-full border border-2 border-gray-200 dark:border-neutral-700 animate-spin border-s-transparent\" />\n </div>\n }\n className=\"h-auto w-full transition-[width] duration-[600ms] ease-in-out\"\n />\n </div>\n )}\n />\n </Document>\n </div>\n {numPages > 0 && (\n <ViewerToolbar\n zoom={{\n displayText: `${Math.round(scale * 100)}%`,\n onZoomIn: handleZoomIn,\n onZoomOut: handleZoomOut,\n canZoomIn: scale < 4,\n canZoomOut: scale > 0.25,\n }}\n pagination={{\n page: pageNumber,\n total: numPages,\n onPrev: previousPage,\n onNext: nextPage,\n onPageChange: (page) => {\n setPageNumber(page);\n debouncedScroll(page, false);\n },\n }}\n />\n )}\n </div>\n );\n};\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
'use strict';var react=require('react'),jsxRuntime=require('react/jsx-runtime');var V=Object.defineProperty;var n=(e,t)=>V(e,"name",{value:t,configurable:true});var p=n(e=>jsxRuntime.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:jsxRuntime.jsx("path",{d:"M3.33301 8.66732V7.33398H12.6663V8.66732H3.33301Z",fill:"currentColor"})}),"RemoveIcon"),x=n(e=>jsxRuntime.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:jsxRuntime.jsx("path",{d:"M7.33333 14V8.66667H2V7.33333H7.33333V2H8.66667V7.33333H14V8.66667H8.66667V14H7.33333Z",fill:"currentColor"})}),"Add2Icon"),v=n(e=>jsxRuntime.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:jsxRuntime.jsx("path",{d:"M12.7803 17.5303C12.4874 17.8232 12.0126 17.8232 11.7197 17.5303L7.46967 13.2803C7.17678 12.9874 7.17678 12.5126 7.46967 12.2197L11.7197 7.96967C12.0126 7.67678 12.4874 7.67678 12.7803 7.96967C13.0732 8.26256 13.0732 8.73744 12.7803 9.03033L9.81066 12H17.25C17.6642 12 18 12.3358 18 12.75C18 13.1642 17.6642 13.5 17.25 13.5H9.81066L12.7803 16.4697C13.0732 16.7626 13.0732 17.2374 12.7803 17.5303Z",fill:"currentColor"})}),"ArrowLeftLineIcon"),h=n(e=>jsxRuntime.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:jsxRuntime.jsx("path",{d:"M12.2197 6.96967C12.5126 6.67678 12.9874 6.67678 13.2803 6.96967L17.5303 11.2197C17.8232 11.5126 17.8232 11.9874 17.5303 12.2803L13.2803 16.5303C12.9874 16.8232 12.5126 16.8232 12.2197 16.5303C11.9268 16.2374 11.9268 15.7626 12.2197 15.4697L15.1893 12.5H7.75C7.33579 12.5 7 12.1642 7 11.75C7 11.3358 7.33579 11 7.75 11H15.1893L12.2197 8.03033C11.9268 7.73744 11.9268 7.26256 12.2197 6.96967Z",fill:"currentColor"})}),"ArrowRightLineIcon");var L="inline-flex items-center justify-center w-6 h-6 rounded-[4px] border border-gray-400 dark:border-neutral-600 bg-transparent text-gray-700 dark:text-neutral-200 transition-colors shrink-0 enabled:hover:bg-black/5 enabled:dark:hover:bg-white/10 enabled:cursor-pointer disabled:border-gray-300 dark:disabled:border-neutral-700 disabled:text-gray-300 dark:disabled:text-neutral-600 disabled:cursor-not-allowed",u="inline-flex items-center justify-center gap-0.5 h-9 px-2 rounded-[4px] border border-gray-400 dark:border-neutral-600 bg-transparent text-[14px] font-normal leading-none text-gray-900 dark:text-neutral-100 select-none shrink-0",c=n(({icon:e,label:t,onClick:a,disabled:l,active:r,className:b})=>jsxRuntime.jsx("button",{type:"button","aria-label":t,onClick:a,disabled:l,className:`${L} ${r?"bg-blue-50! dark:bg-neutral-700! text-blue-600! dark:text-blue-400!":""} ${b??""}`,children:e}),"ToolbarIconButton"),f=n(({children:e,onClick:t,active:a,label:l,className:r})=>t?jsxRuntime.jsx("button",{type:"button","aria-label":l??"reset zoom",onClick:t,className:`${u} cursor-pointer transition-colors hover:bg-blue-50 dark:hover:bg-neutral-700 ${a?"bg-blue-50! dark:bg-neutral-700! text-blue-600! dark:text-blue-400! border-blue-200! dark:border-neutral-500!":""} ${r??""}`,children:e}):jsxRuntime.jsx("span",{className:`${u} ${r??""}`,children:e}),"ToolbarValueBox"),m={width:16,height:16},N=n(({page:e,total:t,onPageChange:a})=>{let[l,r]=react.useState(String(e));return react.useEffect(()=>{r(String(e));},[e]),a?jsxRuntime.jsxs("span",{className:`${u} min-w-11`,children:[jsxRuntime.jsx("input",{type:"number",min:1,max:t,value:l,"aria-label":"page number",onChange:b=>{r(b.target.value);let d=parseInt(b.target.value,10);!Number.isNaN(d)&&d>=1&&d<=t&&a(d);},onBlur:()=>r(String(e)),style:{width:`${String(t).length+1}ch`},className:"bg-transparent text-end outline-none [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none"}),jsxRuntime.jsxs("span",{className:"text-gray-400 dark:text-neutral-500",children:["/",t]})]}):jsxRuntime.jsxs(f,{className:"min-w-11",children:[e,"/",t]})},"PageBox"),G=n(({zoom:e,pagination:t,leftExtra:a,rightExtra:l,className:r})=>!e&&!t&&!a&&!l?null:jsxRuntime.jsxs("div",{className:`flex items-center justify-between gap-3 px-4 py-2.5 shrink-0 border-t border-[var(--section-border,#aeadac)] bg-[var(--sidebar-bg,#f7f6f5)] ${r??""}`,children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-2",children:[e&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(c,{icon:jsxRuntime.jsx(p,{style:{width:16,height:16}}),label:e.zoomOutLabel??"zoom out",onClick:e.onZoomOut,disabled:e.canZoomOut===false}),jsxRuntime.jsx(f,{onClick:e.onReset,active:e.resetActive,label:e.resetLabel,children:e.displayText}),jsxRuntime.jsx(c,{icon:jsxRuntime.jsx(x,{style:{width:16,height:16}}),label:e.zoomInLabel??"zoom in",onClick:e.onZoomIn,disabled:e.canZoomIn===false})]}),a]}),jsxRuntime.jsxs("div",{className:"flex items-center gap-2",children:[l,t&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(c,{icon:jsxRuntime.jsx(v,{style:m}),label:t.prevLabel??"previous page",onClick:t.onPrev,disabled:t.page<=1}),jsxRuntime.jsx(N,{page:t.page,total:t.total,onPageChange:t.onPageChange}),jsxRuntime.jsx(c,{icon:jsxRuntime.jsx(h,{style:m}),label:t.nextLabel??"next page",onClick:t.onNext,disabled:t.page>=t.total})]})]})]}),"ViewerToolbar");
|
|
2
|
+
exports.a=n;exports.b=c;exports.c=G;//# sourceMappingURL=chunk-3MGYAJ6C.js.map
|
|
3
|
+
//# sourceMappingURL=chunk-3MGYAJ6C.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/FileViewer/ViewerToolbar/ViewerToolbar.tsx","../src/FileViewer/ViewerToolbar/icons.tsx"],"names":["RemoveIcon","__name","props","jsx","Add2Icon","ArrowLeftLineIcon","ArrowRightLineIcon","ICON_BUTTON_CLASS","VALUE_BOX_CLASS","ToolbarIconButton","icon","label","onClick","disabled","active","className","ToolbarValueBox","children","ARROW_STYLE","PageBox","page","total","onPageChange","draft","setDraft","useState","useEffect","jsxs","e","next","ViewerToolbar","zoom","pagination","leftExtra","rightExtra","Fragment"],"mappings":"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","file":"chunk-3MGYAJ6C.js","sourcesContent":["import { ReactNode, useEffect, useState } from 'react';\nimport { Add2Icon, ArrowLeftLineIcon, ArrowRightLineIcon, RemoveIcon } from './icons';\n\nexport interface ViewerToolbarZoom {\n /** Text shown in the value box, e.g. \"100%\" or \"Fit\". */\n displayText: string;\n onZoomIn: () => void;\n onZoomOut: () => void;\n /** Optional click handler on the value box (e.g. fit-to-screen / reset). */\n onReset?: () => void;\n /** Visual highlight of the value box (e.g. adaptive/fit mode active). */\n resetActive?: boolean;\n canZoomIn?: boolean;\n canZoomOut?: boolean;\n zoomOutLabel?: string;\n zoomInLabel?: string;\n resetLabel?: string;\n}\n\nexport interface ViewerToolbarPagination {\n page: number;\n total: number;\n onPrev: () => void;\n onNext: () => void;\n /** When provided the current page becomes an editable input. */\n onPageChange?: (page: number) => void;\n prevLabel?: string;\n nextLabel?: string;\n}\n\nexport interface ViewerToolbarProps {\n zoom?: ViewerToolbarZoom;\n pagination?: ViewerToolbarPagination;\n /** Extra controls rendered next to the zoom group (left side). */\n leftExtra?: ReactNode;\n /** Extra controls rendered next to the pagination group (right side). */\n rightExtra?: ReactNode;\n className?: string;\n}\n\nconst ICON_BUTTON_CLASS =\n 'inline-flex items-center justify-center w-6 h-6 rounded-[4px] border border-gray-400 dark:border-neutral-600 ' +\n 'bg-transparent text-gray-700 dark:text-neutral-200 transition-colors shrink-0 ' +\n 'enabled:hover:bg-black/5 enabled:dark:hover:bg-white/10 enabled:cursor-pointer ' +\n 'disabled:border-gray-300 dark:disabled:border-neutral-700 disabled:text-gray-300 dark:disabled:text-neutral-600 disabled:cursor-not-allowed';\n\nconst VALUE_BOX_CLASS =\n 'inline-flex items-center justify-center gap-0.5 h-9 px-2 rounded-[4px] border ' +\n 'border-gray-400 dark:border-neutral-600 bg-transparent ' +\n 'text-[14px] font-normal leading-none text-gray-900 dark:text-neutral-100 select-none shrink-0';\n\ninterface ToolbarIconButtonProps {\n icon: ReactNode;\n label: string;\n onClick?: () => void;\n disabled?: boolean;\n active?: boolean;\n className?: string;\n}\n\n/** Bordered square icon button — the single visual language for all viewer controls. */\nexport const ToolbarIconButton = ({ icon, label, onClick, disabled, active, className }: ToolbarIconButtonProps) => (\n <button\n type=\"button\"\n aria-label={label}\n onClick={onClick}\n disabled={disabled}\n className={`${ICON_BUTTON_CLASS} ${active ? 'bg-blue-50! dark:bg-neutral-700! text-blue-600! dark:text-blue-400!' : ''} ${className ?? ''}`}\n >\n {icon}\n </button>\n);\n\ninterface ToolbarValueBoxProps {\n children: ReactNode;\n onClick?: () => void;\n active?: boolean;\n label?: string;\n className?: string;\n}\n\n/** Bordered value box (zoom %, page indicator). Becomes a button when onClick is set. */\nexport const ToolbarValueBox = ({ children, onClick, active, label, className }: ToolbarValueBoxProps) => {\n if (onClick) {\n return (\n <button\n type=\"button\"\n aria-label={label ?? 'reset zoom'}\n onClick={onClick}\n className={`${VALUE_BOX_CLASS} cursor-pointer transition-colors hover:bg-blue-50 dark:hover:bg-neutral-700 ${active ? 'bg-blue-50! dark:bg-neutral-700! text-blue-600! dark:text-blue-400! border-blue-200! dark:border-neutral-500!' : ''} ${className ?? ''}`}\n >\n {children}\n </button>\n );\n }\n return <span className={`${VALUE_BOX_CLASS} ${className ?? ''}`}>{children}</span>;\n};\n\nconst ARROW_STYLE = { width: 16, height: 16 } as const;\n\nconst PageBox = ({ page, total, onPageChange }: Required<Pick<ViewerToolbarPagination, 'page' | 'total'>> & Pick<ViewerToolbarPagination, 'onPageChange'>) => {\n const [draft, setDraft] = useState(String(page));\n\n // Keep the input in sync when the page changes from scrolling / prev-next.\n useEffect(() => {\n setDraft(String(page));\n }, [page]);\n\n if (!onPageChange) {\n return (\n <ToolbarValueBox className=\"min-w-11\">\n {page}/{total}\n </ToolbarValueBox>\n );\n }\n\n return (\n <span className={`${VALUE_BOX_CLASS} min-w-11`}>\n <input\n type=\"number\"\n min={1}\n max={total}\n value={draft}\n aria-label=\"page number\"\n onChange={(e) => {\n setDraft(e.target.value);\n const next = parseInt(e.target.value, 10);\n if (!Number.isNaN(next) && next >= 1 && next <= total) onPageChange(next);\n }}\n // Valid values are already dispatched on change; on blur just snap the\n // draft back to the confirmed page (reverts an out-of-range entry).\n onBlur={() => setDraft(String(page))}\n style={{ width: `${String(total).length + 1}ch` }}\n className=\"bg-transparent text-end outline-none [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none\"\n />\n <span className=\"text-gray-400 dark:text-neutral-500\">/{total}</span>\n </span>\n );\n};\n\n/**\n * Unified bottom toolbar for all file viewer drivers.\n * Zoom controls live on the left, pagination on the right; each driver opts into\n * only the groups it supports (adaptive per capability).\n */\nexport const ViewerToolbar = ({ zoom, pagination, leftExtra, rightExtra, className }: ViewerToolbarProps) => {\n if (!zoom && !pagination && !leftExtra && !rightExtra) return null;\n\n return (\n <div\n className={`flex items-center justify-between gap-3 px-4 py-2.5 shrink-0 border-t border-[var(--section-border,#aeadac)] bg-[var(--sidebar-bg,#f7f6f5)] ${className ?? ''}`}\n >\n <div className=\"flex items-center gap-2\">\n {zoom && (\n <>\n <ToolbarIconButton\n icon={<RemoveIcon style={{ width: 16, height: 16 }} />}\n label={zoom.zoomOutLabel ?? 'zoom out'}\n onClick={zoom.onZoomOut}\n disabled={zoom.canZoomOut === false}\n />\n <ToolbarValueBox onClick={zoom.onReset} active={zoom.resetActive} label={zoom.resetLabel}>\n {zoom.displayText}\n </ToolbarValueBox>\n <ToolbarIconButton\n icon={<Add2Icon style={{ width: 16, height: 16 }} />}\n label={zoom.zoomInLabel ?? 'zoom in'}\n onClick={zoom.onZoomIn}\n disabled={zoom.canZoomIn === false}\n />\n </>\n )}\n {leftExtra}\n </div>\n\n <div className=\"flex items-center gap-2\">\n {rightExtra}\n {pagination && (\n <>\n <ToolbarIconButton\n icon={<ArrowLeftLineIcon style={ARROW_STYLE} />}\n label={pagination.prevLabel ?? 'previous page'}\n onClick={pagination.onPrev}\n disabled={pagination.page <= 1}\n />\n <PageBox page={pagination.page} total={pagination.total} onPageChange={pagination.onPageChange} />\n <ToolbarIconButton\n icon={<ArrowRightLineIcon style={ARROW_STYLE} />}\n label={pagination.nextLabel ?? 'next page'}\n onClick={pagination.onNext}\n disabled={pagination.page >= pagination.total}\n />\n </>\n )}\n </div>\n </div>\n );\n};\n","import { SVGProps } from 'react';\n\n/** Material Symbols \"remove\" (zoom-out) — extracted 1:1 from the Figma design. */\nexport const RemoveIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path d=\"M3.33301 8.66732V7.33398H12.6663V8.66732H3.33301Z\" fill=\"currentColor\" />\n </svg>\n);\n\n/** Material Symbols \"add_2\" (zoom-in) — extracted 1:1 from the Figma design. */\nexport const Add2Icon = (props: SVGProps<SVGSVGElement>) => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"M7.33333 14V8.66667H2V7.33333H7.33333V2H8.66667V7.33333H14V8.66667H8.66667V14H7.33333Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\n/** Line \"arrow-left\" (previous page) — extracted 1:1 from the Figma design. */\nexport const ArrowLeftLineIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"M12.7803 17.5303C12.4874 17.8232 12.0126 17.8232 11.7197 17.5303L7.46967 13.2803C7.17678 12.9874 7.17678 12.5126 7.46967 12.2197L11.7197 7.96967C12.0126 7.67678 12.4874 7.67678 12.7803 7.96967C13.0732 8.26256 13.0732 8.73744 12.7803 9.03033L9.81066 12H17.25C17.6642 12 18 12.3358 18 12.75C18 13.1642 17.6642 13.5 17.25 13.5H9.81066L12.7803 16.4697C13.0732 16.7626 13.0732 17.2374 12.7803 17.5303Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\n/** Line \"arrow-right\" (next page) — extracted 1:1 from the Figma design. */\nexport const ArrowRightLineIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"M12.2197 6.96967C12.5126 6.67678 12.9874 6.67678 13.2803 6.96967L17.5303 11.2197C17.8232 11.5126 17.8232 11.9874 17.5303 12.2803L13.2803 16.5303C12.9874 16.8232 12.5126 16.8232 12.2197 16.5303C11.9268 16.2374 11.9268 15.7626 12.2197 15.4697L15.1893 12.5H7.75C7.33579 12.5 7 12.1642 7 11.75C7 11.3358 7.33579 11 7.75 11H15.1893L12.2197 8.03033C11.9268 7.73744 11.9268 7.26256 12.2197 6.96967Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import {useState,useEffect}from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';var f=Object.defineProperty;var n=(e,t)=>f(e,"name",{value:t,configurable:true});var g=n(e=>jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:jsx("path",{d:"M3.33301 8.66732V7.33398H12.6663V8.66732H3.33301Z",fill:"currentColor"})}),"RemoveIcon"),p=n(e=>jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:jsx("path",{d:"M7.33333 14V8.66667H2V7.33333H7.33333V2H8.66667V7.33333H14V8.66667H8.66667V14H7.33333Z",fill:"currentColor"})}),"Add2Icon"),x=n(e=>jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:jsx("path",{d:"M12.7803 17.5303C12.4874 17.8232 12.0126 17.8232 11.7197 17.5303L7.46967 13.2803C7.17678 12.9874 7.17678 12.5126 7.46967 12.2197L11.7197 7.96967C12.0126 7.67678 12.4874 7.67678 12.7803 7.96967C13.0732 8.26256 13.0732 8.73744 12.7803 9.03033L9.81066 12H17.25C17.6642 12 18 12.3358 18 12.75C18 13.1642 17.6642 13.5 17.25 13.5H9.81066L12.7803 16.4697C13.0732 16.7626 13.0732 17.2374 12.7803 17.5303Z",fill:"currentColor"})}),"ArrowLeftLineIcon"),v=n(e=>jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:jsx("path",{d:"M12.2197 6.96967C12.5126 6.67678 12.9874 6.67678 13.2803 6.96967L17.5303 11.2197C17.8232 11.5126 17.8232 11.9874 17.5303 12.2803L13.2803 16.5303C12.9874 16.8232 12.5126 16.8232 12.2197 16.5303C11.9268 16.2374 11.9268 15.7626 12.2197 15.4697L15.1893 12.5H7.75C7.33579 12.5 7 12.1642 7 11.75C7 11.3358 7.33579 11 7.75 11H15.1893L12.2197 8.03033C11.9268 7.73744 11.9268 7.26256 12.2197 6.96967Z",fill:"currentColor"})}),"ArrowRightLineIcon");var k="inline-flex items-center justify-center w-6 h-6 rounded-[4px] border border-gray-400 dark:border-neutral-600 bg-transparent text-gray-700 dark:text-neutral-200 transition-colors shrink-0 enabled:hover:bg-black/5 enabled:dark:hover:bg-white/10 enabled:cursor-pointer disabled:border-gray-300 dark:disabled:border-neutral-700 disabled:text-gray-300 dark:disabled:text-neutral-600 disabled:cursor-not-allowed",u="inline-flex items-center justify-center gap-0.5 h-9 px-2 rounded-[4px] border border-gray-400 dark:border-neutral-600 bg-transparent text-[14px] font-normal leading-none text-gray-900 dark:text-neutral-100 select-none shrink-0",c=n(({icon:e,label:t,onClick:a,disabled:l,active:r,className:b})=>jsx("button",{type:"button","aria-label":t,onClick:a,disabled:l,className:`${k} ${r?"bg-blue-50! dark:bg-neutral-700! text-blue-600! dark:text-blue-400!":""} ${b??""}`,children:e}),"ToolbarIconButton"),w=n(({children:e,onClick:t,active:a,label:l,className:r})=>t?jsx("button",{type:"button","aria-label":l??"reset zoom",onClick:t,className:`${u} cursor-pointer transition-colors hover:bg-blue-50 dark:hover:bg-neutral-700 ${a?"bg-blue-50! dark:bg-neutral-700! text-blue-600! dark:text-blue-400! border-blue-200! dark:border-neutral-500!":""} ${r??""}`,children:e}):jsx("span",{className:`${u} ${r??""}`,children:e}),"ToolbarValueBox"),h={width:16,height:16},L=n(({page:e,total:t,onPageChange:a})=>{let[l,r]=useState(String(e));return useEffect(()=>{r(String(e));},[e]),a?jsxs("span",{className:`${u} min-w-11`,children:[jsx("input",{type:"number",min:1,max:t,value:l,"aria-label":"page number",onChange:b=>{r(b.target.value);let d=parseInt(b.target.value,10);!Number.isNaN(d)&&d>=1&&d<=t&&a(d);},onBlur:()=>r(String(e)),style:{width:`${String(t).length+1}ch`},className:"bg-transparent text-end outline-none [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none"}),jsxs("span",{className:"text-gray-400 dark:text-neutral-500",children:["/",t]})]}):jsxs(w,{className:"min-w-11",children:[e,"/",t]})},"PageBox"),R=n(({zoom:e,pagination:t,leftExtra:a,rightExtra:l,className:r})=>!e&&!t&&!a&&!l?null:jsxs("div",{className:`flex items-center justify-between gap-3 px-4 py-2.5 shrink-0 border-t border-[var(--section-border,#aeadac)] bg-[var(--sidebar-bg,#f7f6f5)] ${r??""}`,children:[jsxs("div",{className:"flex items-center gap-2",children:[e&&jsxs(Fragment,{children:[jsx(c,{icon:jsx(g,{style:{width:16,height:16}}),label:e.zoomOutLabel??"zoom out",onClick:e.onZoomOut,disabled:e.canZoomOut===false}),jsx(w,{onClick:e.onReset,active:e.resetActive,label:e.resetLabel,children:e.displayText}),jsx(c,{icon:jsx(p,{style:{width:16,height:16}}),label:e.zoomInLabel??"zoom in",onClick:e.onZoomIn,disabled:e.canZoomIn===false})]}),a]}),jsxs("div",{className:"flex items-center gap-2",children:[l,t&&jsxs(Fragment,{children:[jsx(c,{icon:jsx(x,{style:h}),label:t.prevLabel??"previous page",onClick:t.onPrev,disabled:t.page<=1}),jsx(L,{page:t.page,total:t.total,onPageChange:t.onPageChange}),jsx(c,{icon:jsx(v,{style:h}),label:t.nextLabel??"next page",onClick:t.onNext,disabled:t.page>=t.total})]})]})]}),"ViewerToolbar");
|
|
2
|
+
export{n as a,c as b,R as c};//# sourceMappingURL=chunk-T6XGVEPQ.mjs.map
|
|
3
|
+
//# sourceMappingURL=chunk-T6XGVEPQ.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/FileViewer/ViewerToolbar/ViewerToolbar.tsx","../src/FileViewer/ViewerToolbar/icons.tsx"],"names":["RemoveIcon","__name","props","jsx","Add2Icon","ArrowLeftLineIcon","ArrowRightLineIcon","ICON_BUTTON_CLASS","VALUE_BOX_CLASS","ToolbarIconButton","icon","label","onClick","disabled","active","className","ToolbarValueBox","children","ARROW_STYLE","PageBox","page","total","onPageChange","draft","setDraft","useState","useEffect","jsxs","e","next","ViewerToolbar","zoom","pagination","leftExtra","rightExtra","Fragment"],"mappings":"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","file":"chunk-T6XGVEPQ.mjs","sourcesContent":["import { ReactNode, useEffect, useState } from 'react';\nimport { Add2Icon, ArrowLeftLineIcon, ArrowRightLineIcon, RemoveIcon } from './icons';\n\nexport interface ViewerToolbarZoom {\n /** Text shown in the value box, e.g. \"100%\" or \"Fit\". */\n displayText: string;\n onZoomIn: () => void;\n onZoomOut: () => void;\n /** Optional click handler on the value box (e.g. fit-to-screen / reset). */\n onReset?: () => void;\n /** Visual highlight of the value box (e.g. adaptive/fit mode active). */\n resetActive?: boolean;\n canZoomIn?: boolean;\n canZoomOut?: boolean;\n zoomOutLabel?: string;\n zoomInLabel?: string;\n resetLabel?: string;\n}\n\nexport interface ViewerToolbarPagination {\n page: number;\n total: number;\n onPrev: () => void;\n onNext: () => void;\n /** When provided the current page becomes an editable input. */\n onPageChange?: (page: number) => void;\n prevLabel?: string;\n nextLabel?: string;\n}\n\nexport interface ViewerToolbarProps {\n zoom?: ViewerToolbarZoom;\n pagination?: ViewerToolbarPagination;\n /** Extra controls rendered next to the zoom group (left side). */\n leftExtra?: ReactNode;\n /** Extra controls rendered next to the pagination group (right side). */\n rightExtra?: ReactNode;\n className?: string;\n}\n\nconst ICON_BUTTON_CLASS =\n 'inline-flex items-center justify-center w-6 h-6 rounded-[4px] border border-gray-400 dark:border-neutral-600 ' +\n 'bg-transparent text-gray-700 dark:text-neutral-200 transition-colors shrink-0 ' +\n 'enabled:hover:bg-black/5 enabled:dark:hover:bg-white/10 enabled:cursor-pointer ' +\n 'disabled:border-gray-300 dark:disabled:border-neutral-700 disabled:text-gray-300 dark:disabled:text-neutral-600 disabled:cursor-not-allowed';\n\nconst VALUE_BOX_CLASS =\n 'inline-flex items-center justify-center gap-0.5 h-9 px-2 rounded-[4px] border ' +\n 'border-gray-400 dark:border-neutral-600 bg-transparent ' +\n 'text-[14px] font-normal leading-none text-gray-900 dark:text-neutral-100 select-none shrink-0';\n\ninterface ToolbarIconButtonProps {\n icon: ReactNode;\n label: string;\n onClick?: () => void;\n disabled?: boolean;\n active?: boolean;\n className?: string;\n}\n\n/** Bordered square icon button — the single visual language for all viewer controls. */\nexport const ToolbarIconButton = ({ icon, label, onClick, disabled, active, className }: ToolbarIconButtonProps) => (\n <button\n type=\"button\"\n aria-label={label}\n onClick={onClick}\n disabled={disabled}\n className={`${ICON_BUTTON_CLASS} ${active ? 'bg-blue-50! dark:bg-neutral-700! text-blue-600! dark:text-blue-400!' : ''} ${className ?? ''}`}\n >\n {icon}\n </button>\n);\n\ninterface ToolbarValueBoxProps {\n children: ReactNode;\n onClick?: () => void;\n active?: boolean;\n label?: string;\n className?: string;\n}\n\n/** Bordered value box (zoom %, page indicator). Becomes a button when onClick is set. */\nexport const ToolbarValueBox = ({ children, onClick, active, label, className }: ToolbarValueBoxProps) => {\n if (onClick) {\n return (\n <button\n type=\"button\"\n aria-label={label ?? 'reset zoom'}\n onClick={onClick}\n className={`${VALUE_BOX_CLASS} cursor-pointer transition-colors hover:bg-blue-50 dark:hover:bg-neutral-700 ${active ? 'bg-blue-50! dark:bg-neutral-700! text-blue-600! dark:text-blue-400! border-blue-200! dark:border-neutral-500!' : ''} ${className ?? ''}`}\n >\n {children}\n </button>\n );\n }\n return <span className={`${VALUE_BOX_CLASS} ${className ?? ''}`}>{children}</span>;\n};\n\nconst ARROW_STYLE = { width: 16, height: 16 } as const;\n\nconst PageBox = ({ page, total, onPageChange }: Required<Pick<ViewerToolbarPagination, 'page' | 'total'>> & Pick<ViewerToolbarPagination, 'onPageChange'>) => {\n const [draft, setDraft] = useState(String(page));\n\n // Keep the input in sync when the page changes from scrolling / prev-next.\n useEffect(() => {\n setDraft(String(page));\n }, [page]);\n\n if (!onPageChange) {\n return (\n <ToolbarValueBox className=\"min-w-11\">\n {page}/{total}\n </ToolbarValueBox>\n );\n }\n\n return (\n <span className={`${VALUE_BOX_CLASS} min-w-11`}>\n <input\n type=\"number\"\n min={1}\n max={total}\n value={draft}\n aria-label=\"page number\"\n onChange={(e) => {\n setDraft(e.target.value);\n const next = parseInt(e.target.value, 10);\n if (!Number.isNaN(next) && next >= 1 && next <= total) onPageChange(next);\n }}\n // Valid values are already dispatched on change; on blur just snap the\n // draft back to the confirmed page (reverts an out-of-range entry).\n onBlur={() => setDraft(String(page))}\n style={{ width: `${String(total).length + 1}ch` }}\n className=\"bg-transparent text-end outline-none [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none\"\n />\n <span className=\"text-gray-400 dark:text-neutral-500\">/{total}</span>\n </span>\n );\n};\n\n/**\n * Unified bottom toolbar for all file viewer drivers.\n * Zoom controls live on the left, pagination on the right; each driver opts into\n * only the groups it supports (adaptive per capability).\n */\nexport const ViewerToolbar = ({ zoom, pagination, leftExtra, rightExtra, className }: ViewerToolbarProps) => {\n if (!zoom && !pagination && !leftExtra && !rightExtra) return null;\n\n return (\n <div\n className={`flex items-center justify-between gap-3 px-4 py-2.5 shrink-0 border-t border-[var(--section-border,#aeadac)] bg-[var(--sidebar-bg,#f7f6f5)] ${className ?? ''}`}\n >\n <div className=\"flex items-center gap-2\">\n {zoom && (\n <>\n <ToolbarIconButton\n icon={<RemoveIcon style={{ width: 16, height: 16 }} />}\n label={zoom.zoomOutLabel ?? 'zoom out'}\n onClick={zoom.onZoomOut}\n disabled={zoom.canZoomOut === false}\n />\n <ToolbarValueBox onClick={zoom.onReset} active={zoom.resetActive} label={zoom.resetLabel}>\n {zoom.displayText}\n </ToolbarValueBox>\n <ToolbarIconButton\n icon={<Add2Icon style={{ width: 16, height: 16 }} />}\n label={zoom.zoomInLabel ?? 'zoom in'}\n onClick={zoom.onZoomIn}\n disabled={zoom.canZoomIn === false}\n />\n </>\n )}\n {leftExtra}\n </div>\n\n <div className=\"flex items-center gap-2\">\n {rightExtra}\n {pagination && (\n <>\n <ToolbarIconButton\n icon={<ArrowLeftLineIcon style={ARROW_STYLE} />}\n label={pagination.prevLabel ?? 'previous page'}\n onClick={pagination.onPrev}\n disabled={pagination.page <= 1}\n />\n <PageBox page={pagination.page} total={pagination.total} onPageChange={pagination.onPageChange} />\n <ToolbarIconButton\n icon={<ArrowRightLineIcon style={ARROW_STYLE} />}\n label={pagination.nextLabel ?? 'next page'}\n onClick={pagination.onNext}\n disabled={pagination.page >= pagination.total}\n />\n </>\n )}\n </div>\n </div>\n );\n};\n","import { SVGProps } from 'react';\n\n/** Material Symbols \"remove\" (zoom-out) — extracted 1:1 from the Figma design. */\nexport const RemoveIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path d=\"M3.33301 8.66732V7.33398H12.6663V8.66732H3.33301Z\" fill=\"currentColor\" />\n </svg>\n);\n\n/** Material Symbols \"add_2\" (zoom-in) — extracted 1:1 from the Figma design. */\nexport const Add2Icon = (props: SVGProps<SVGSVGElement>) => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"M7.33333 14V8.66667H2V7.33333H7.33333V2H8.66667V7.33333H14V8.66667H8.66667V14H7.33333Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\n/** Line \"arrow-left\" (previous page) — extracted 1:1 from the Figma design. */\nexport const ArrowLeftLineIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"M12.7803 17.5303C12.4874 17.8232 12.0126 17.8232 11.7197 17.5303L7.46967 13.2803C7.17678 12.9874 7.17678 12.5126 7.46967 12.2197L11.7197 7.96967C12.0126 7.67678 12.4874 7.67678 12.7803 7.96967C13.0732 8.26256 13.0732 8.73744 12.7803 9.03033L9.81066 12H17.25C17.6642 12 18 12.3358 18 12.75C18 13.1642 17.6642 13.5 17.25 13.5H9.81066L12.7803 16.4697C13.0732 16.7626 13.0732 17.2374 12.7803 17.5303Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\n/** Line \"arrow-right\" (next page) — extracted 1:1 from the Figma design. */\nexport const ArrowRightLineIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"M12.2197 6.96967C12.5126 6.67678 12.9874 6.67678 13.2803 6.96967L17.5303 11.2197C17.8232 11.5126 17.8232 11.9874 17.5303 12.2803L13.2803 16.5303C12.9874 16.8232 12.5126 16.8232 12.2197 16.5303C11.9268 16.2374 11.9268 15.7626 12.2197 15.4697L15.1893 12.5H7.75C7.33579 12.5 7 12.1642 7 11.75C7 11.3358 7.33579 11 7.75 11H15.1893L12.2197 8.03033C11.9268 7.73744 11.9268 7.26256 12.2197 6.96967Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n"]}
|
package/dist/index.css
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-800:oklch(44.4% .177 26.899);--color-red-900:oklch(39.6% .141 25.723);--color-red-950:oklch(25.8% .092 26.042);--color-orange-400:oklch(75% .183 55.934);--color-orange-500:oklch(70.5% .213 47.604);--color-amber-900:oklch(41.4% .112 45.904);--color-amber-950:oklch(27.9% .077 45.635);--color-yellow-100:oklch(97.3% .071 103.193);--color-yellow-200:oklch(94.5% .129 101.54);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-800:oklch(47.6% .114 61.907);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-700:oklch(52.7% .154 150.069);--color-teal-100:oklch(95.3% .051 180.801);--color-teal-200:oklch(91% .096 180.426);--color-teal-500:oklch(70.4% .14 182.503);--color-teal-800:oklch(43.7% .078 188.216);--color-teal-900:oklch(38.6% .063 188.416);--color-teal-950:oklch(27.7% .046 192.524);--color-blue-50:oklch(97% .014 254.604);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-900:oklch(37.9% .146 265.522);--color-blue-950:oklch(28.2% .091 267.935);--color-violet-400:oklch(70.2% .183 293.541);--color-violet-500:oklch(60.6% .25 292.717);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-zinc-100:oklch(96.7% .001 286.375);--color-zinc-400:oklch(70.5% .015 286.067);--color-zinc-900:oklch(21% .006 285.885);--color-neutral-300:oklch(87% 0 0);--color-neutral-400:oklch(70.8% 0 0);--color-neutral-500:oklch(55.6% 0 0);--color-neutral-600:oklch(43.9% 0 0);--color-neutral-700:oklch(37.1% 0 0);--color-neutral-800:oklch(26.9% 0 0);--color-neutral-900:oklch(20.5% 0 0);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}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;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.start-1\/2{inset-inline-start:50%}.top-0{top:calc(var(--spacing)*0)}.top-1\/2{top:50%}.top-4{top:calc(var(--spacing)*4)}.top-8{top:calc(var(--spacing)*8)}.right-0{right:calc(var(--spacing)*0)}.right-3{right:calc(var(--spacing)*3)}.right-4{right:calc(var(--spacing)*4)}.right-8{right:calc(var(--spacing)*8)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-3{bottom:calc(var(--spacing)*3)}.bottom-4{bottom:calc(var(--spacing)*4)}.bottom-8{bottom:calc(var(--spacing)*8)}.left-0{left:calc(var(--spacing)*0)}.left-4{left:calc(var(--spacing)*4)}.left-8{left:calc(var(--spacing)*8)}.z-50{z-index:50}.z-9999{z-index:9999}.row-1{grid-row:1}.row-2{grid-row:2}.row-3{grid-row:3}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mx-4{margin-inline:calc(var(--spacing)*4)}.mx-5{margin-inline:calc(var(--spacing)*5)}.mx-auto{margin-inline:auto}.ms-auto{margin-inline-start:auto}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-5\.5{margin-top:calc(var(--spacing)*5.5)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.ml-3{margin-left:calc(var(--spacing)*3)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.size-5{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5)}.h-1{height:calc(var(--spacing)*1)}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-2\.5{height:calc(var(--spacing)*2.5)}.h-3\.5\!{height:calc(var(--spacing)*3.5)!important}.h-4{height:calc(var(--spacing)*4)}.h-4\.5{height:calc(var(--spacing)*4.5)}.h-5\.5{height:calc(var(--spacing)*5.5)}.h-8{height:calc(var(--spacing)*8)}.h-10{height:calc(var(--spacing)*10)}.h-\[38px\]{height:38px}.h-\[38px\]\!{height:38px!important}.h-\[47px\]\!{height:47px!important}.h-\[50px\]{height:50px}.h-\[76px\]{height:76px}.h-\[220px\]{height:220px}.h-\[500px\]{height:500px}.h-\[600px\]{height:600px}.h-auto{height:auto}.h-full{height:100%}.max-h-full{max-height:100%}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-screen{min-height:100vh}.w-2\.5{width:calc(var(--spacing)*2.5)}.w-3\.5\!{width:calc(var(--spacing)*3.5)!important}.w-4\.5{width:calc(var(--spacing)*4.5)}.w-5{width:calc(var(--spacing)*5)}.w-5\.5{width:calc(var(--spacing)*5.5)}.w-10{width:calc(var(--spacing)*10)}.w-15{width:calc(var(--spacing)*15)}.w-48{width:calc(var(--spacing)*48)}.w-\[50px\]{width:50px}.w-\[64px\]\!{width:64px!important}.w-\[82px\]{width:82px}.w-\[500px\]{width:500px}.w-\[600px\]{width:600px}.w-fit{width:fit-content}.w-full{width:100%}.max-w-\[100\%\],.max-w-full{max-width:100%}.max-w-none{max-width:none}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-16{min-width:calc(var(--spacing)*16)}.min-w-21{min-width:calc(var(--spacing)*21)}.flex-1{flex:1}.flex-shrink,.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-4{--tw-translate-y:calc(var(--spacing)*-4);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-0{--tw-translate-y:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-4{--tw-translate-y:calc(var(--spacing)*4);translate:var(--tw-translate-x)var(--tw-translate-y)}.-rotate-90{rotate:-90deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-col-resize{cursor:col-resize}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-start{justify-content:flex-start}.gap-0\.25{gap:calc(var(--spacing)*.25)}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-1\.25{gap:calc(var(--spacing)*1.25)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}.self-start{align-self:flex-start}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.rounded-\[5px\]\!{border-radius:5px!important}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.border,.border-1{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-none{--tw-border-style:none;border-style:none}.border-blue-200{border-color:var(--color-blue-200)}.border-blue-300{border-color:var(--color-blue-300)}.border-blue-500{border-color:var(--color-blue-500)}.border-gray-100{border-color:var(--color-gray-100)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-red-200{border-color:var(--color-red-200)}.border-red-500{border-color:var(--color-red-500)}.border-teal-200{border-color:var(--color-teal-200)}.border-yellow-200{border-color:var(--color-yellow-200)}.border-s-transparent{border-inline-start-color:#0000}.bg-\[rgba\(251\,250\,250\,0\.9\)\]{background-color:#fbfafae6}.bg-blue-50\!{background-color:var(--color-blue-50)!important}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-50\!{background-color:var(--color-gray-50)!important}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-500{background-color:var(--color-gray-500)}.bg-green-500{background-color:var(--color-green-500)}.bg-neutral-400{background-color:var(--color-neutral-400)}.bg-neutral-900\!{background-color:var(--color-neutral-900)!important}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-500{background-color:var(--color-red-500)}.bg-teal-100{background-color:var(--color-teal-100)}.bg-white{background-color:var(--color-white)}.bg-white\!{background-color:var(--color-white)!important}.bg-yellow-100{background-color:var(--color-yellow-100)}.fill-current{fill:currentColor}.object-cover{object-fit:cover}.object-fill{object-fit:fill}.p-2{padding:calc(var(--spacing)*2)}.p-2\!{padding:calc(var(--spacing)*2)!important}.p-2\.5{padding:calc(var(--spacing)*2.5)}.p-4{padding:calc(var(--spacing)*4)}.p-5{padding:calc(var(--spacing)*5)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.p-8\.5{padding:calc(var(--spacing)*8.5)}.px-0\.5{padding-inline:calc(var(--spacing)*.5)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-8{padding-inline:calc(var(--spacing)*8)}.px-8\.5{padding-inline:calc(var(--spacing)*8.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5\!{padding-block:calc(var(--spacing)*1.5)!important}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.py-5\.5{padding-block:calc(var(--spacing)*5.5)}.pt-1\.5{padding-top:calc(var(--spacing)*1.5)}.pr-3{padding-right:calc(var(--spacing)*3)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pb-5{padding-bottom:calc(var(--spacing)*5)}.pl-1{padding-left:calc(var(--spacing)*1)}.pl-2\.5{padding-left:calc(var(--spacing)*2.5)}.text-center{text-align:center}.text-end{text-align:end}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[12px\]{font-size:12px}.text-\[14px\]\!{font-size:14px!important}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-medium\!{--tw-font-weight:var(--font-weight-medium)!important;font-weight:var(--font-weight-medium)!important}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-wrap{text-wrap:wrap}.break-all{word-break:break-all}.whitespace-pre-wrap{white-space:pre-wrap}.text-black{color:var(--color-black)}.text-blue-400\!{color:var(--color-blue-400)!important}.text-blue-500{color:var(--color-blue-500)}.text-blue-700\!{color:var(--color-blue-700)!important}.text-blue-800{color:var(--color-blue-800)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-500\!{color:var(--color-gray-500)!important}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-gray-900{color:var(--color-gray-900)}.text-green-400\!{color:var(--color-green-400)!important}.text-green-700\!{color:var(--color-green-700)!important}.text-neutral-500\!{color:var(--color-neutral-500)!important}.text-orange-400\!{color:var(--color-orange-400)!important}.text-orange-500\!{color:var(--color-orange-500)!important}.text-red-400\!{color:var(--color-red-400)!important}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-800{color:var(--color-red-800)}.text-red-800\!{color:var(--color-red-800)!important}.text-teal-800{color:var(--color-teal-800)}.text-violet-400\!{color:var(--color-violet-400)!important}.text-violet-500\!{color:var(--color-violet-500)!important}.text-white{color:var(--color-white)}.text-yellow-800{color:var(--color-yellow-800)}.text-zinc-900{color:var(--color-zinc-900)}.italic{font-style:italic}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.invert{--tw-invert:invert(100%);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,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,visibility,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-\[600ms\]{--tw-duration:.6s;transition-duration:.6s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.select-none{-webkit-user-select:none;user-select:none}.select-text{-webkit-user-select:text;user-select:text}.\[scrollbar-color\:var\(--color-neutral-500\)_var\(--color-neutral-300\)\]{scrollbar-color:var(--color-neutral-500)var(--color-neutral-300)}.\[scrollbar-width\:thin\]{scrollbar-width:thin}@media (hover:hover){.hover\:bg-blue-50\!:hover{background-color:var(--color-blue-50)!important}.hover\:bg-blue-600:hover{background-color:var(--color-blue-600)}.hover\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\:bg-gray-600:hover{background-color:var(--color-gray-600)}.hover\:bg-green-600:hover{background-color:var(--color-green-600)}.hover\:bg-red-600:hover{background-color:var(--color-red-600)}.hover\:text-blue-200:hover{color:var(--color-blue-200)}.hover\:text-blue-600:hover{color:var(--color-blue-600)}.hover\:opacity-100:hover{opacity:1}}.focus\:opacity-100:focus{opacity:1}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-blue-300:disabled{background-color:var(--color-blue-300)}.disabled\:text-gray-200:disabled{color:var(--color-gray-200)}@media (min-width:48rem){.md\:flex-nowrap{flex-wrap:nowrap}.md\:justify-between{justify-content:space-between}}@media (min-width:64rem){.lg\:sticky{position:sticky}.lg\:top-0{top:calc(var(--spacing)*0)}.lg\:flex\!{display:flex!important}}.dark\:border-amber-900:where(.dark,.dark *){border-color:var(--color-amber-900)}.dark\:border-blue-900:where(.dark,.dark *){border-color:var(--color-blue-900)}.dark\:border-neutral-600:where(.dark,.dark *){border-color:var(--color-neutral-600)}.dark\:border-neutral-700:where(.dark,.dark *){border-color:var(--color-neutral-700)}.dark\:border-neutral-800:where(.dark,.dark *){border-color:var(--color-neutral-800)}.dark\:border-red-900:where(.dark,.dark *){border-color:var(--color-red-900)}.dark\:border-teal-900:where(.dark,.dark *){border-color:var(--color-teal-900)}.dark\:bg-\[rgba\(12\,10\,18\,0\.9\)\]:where(.dark,.dark *){background-color:#0c0a12e6}.dark\:bg-amber-950:where(.dark,.dark *){background-color:var(--color-amber-950)}.dark\:bg-blue-900\/30:where(.dark,.dark *){background-color:#1c398e4d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-blue-900\/30:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-blue-900)30%,transparent)}}.dark\:bg-blue-950:where(.dark,.dark *){background-color:var(--color-blue-950)}.dark\:bg-gray-900:where(.dark,.dark *){background-color:var(--color-gray-900)}.dark\:bg-neutral-700:where(.dark,.dark *){background-color:var(--color-neutral-700)}.dark\:bg-neutral-800:where(.dark,.dark *){background-color:var(--color-neutral-800)}.dark\:bg-neutral-800\!:where(.dark,.dark *){background-color:var(--color-neutral-800)!important}.dark\:bg-neutral-900:where(.dark,.dark *){background-color:var(--color-neutral-900)}.dark\:bg-red-900\/20:where(.dark,.dark *){background-color:#82181a33}@supports (color:color-mix(in lab,red,red)){.dark\:bg-red-900\/20:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-red-900)20%,transparent)}}.dark\:bg-red-950:where(.dark,.dark *){background-color:var(--color-red-950)}.dark\:bg-teal-950:where(.dark,.dark *){background-color:var(--color-teal-950)}.dark\:text-blue-500:where(.dark,.dark *){color:var(--color-blue-500)}.dark\:text-gray-300:where(.dark,.dark *){color:var(--color-gray-300)}.dark\:text-gray-400:where(.dark,.dark *){color:var(--color-gray-400)}.dark\:text-neutral-500:where(.dark,.dark *){color:var(--color-neutral-500)}.dark\:text-neutral-600:where(.dark,.dark *){color:var(--color-neutral-600)}.dark\:text-red-400:where(.dark,.dark *){color:var(--color-red-400)}.dark\:text-red-500:where(.dark,.dark *){color:var(--color-red-500)}.dark\:text-teal-500:where(.dark,.dark *){color:var(--color-teal-500)}.dark\:text-white:where(.dark,.dark *){color:var(--color-white)}.dark\:text-yellow-500:where(.dark,.dark *){color:var(--color-yellow-500)}.dark\:\[scrollbar-color\:var\(--color-neutral-500\)_var\(--color-neutral-700\)\]:where(.dark,.dark *){scrollbar-color:var(--color-neutral-500)var(--color-neutral-700)}@media (hover:hover){.dark\:hover\:bg-neutral-700:where(.dark,.dark *):hover{background-color:var(--color-neutral-700)}.dark\:hover\:bg-neutral-700\!:where(.dark,.dark *):hover{background-color:var(--color-neutral-700)!important}}.\[\&_textarea\]\:pb-1\! textarea{padding-bottom:calc(var(--spacing)*1)!important}.\[\&\:\:-webkit-scrollbar\]\:h-2\.5::-webkit-scrollbar{height:calc(var(--spacing)*2.5)}.\[\&\:\:-webkit-scrollbar\]\:w-2\.5::-webkit-scrollbar{width:calc(var(--spacing)*2.5)}.\[\&\:\:-webkit-scrollbar-thumb\]\:rounded-full::-webkit-scrollbar-thumb{border-radius:3.40282e38px}.\[\&\:\:-webkit-scrollbar-thumb\]\:bg-neutral-500::-webkit-scrollbar-thumb{background-color:var(--color-neutral-500)}.dark\:\[\&\:\:-webkit-scrollbar-thumb\]\:bg-neutral-500:where(.dark,.dark *)::-webkit-scrollbar-thumb{background-color:var(--color-neutral-500)}.\[\&\:\:-webkit-scrollbar-track\]\:bg-neutral-300::-webkit-scrollbar-track{background-color:var(--color-neutral-300)}.dark\:\[\&\:\:-webkit-scrollbar-track\]\:bg-neutral-700:where(.dark,.dark *)::-webkit-scrollbar-track{background-color:var(--color-neutral-700)}.\[\&\>div\.docx-wrapper\]\:box-border>div.docx-wrapper{box-sizing:border-box}.\[\&\>div\.docx-wrapper\]\:min-h-full>div.docx-wrapper{min-height:100%}.\[\&\>div\.docx-wrapper\]\:w-full\!>div.docx-wrapper{width:100%!important}.\[\&\>div\.docx-wrapper\]\:min-w-fit\!>div.docx-wrapper{min-width:fit-content!important}.\[\&\>div\.docx-wrapper\]\:bg-neutral-400\!>div.docx-wrapper{background-color:var(--color-neutral-400)!important}.dark\:\[\&\>div\.docx-wrapper\]\:bg-neutral-800\!:where(.dark,.dark *)>div.docx-wrapper{background-color:var(--color-neutral-800)!important}.\[\&\>div\.docx-wrapper_\*\]\:max-w-full\!>div.docx-wrapper *{max-width:100%!important}.\[\&\>div\.docx-wrapper_image\]\:h-auto\!>div.docx-wrapper image{height:auto!important}.\[\&\>div\.docx-wrapper_image\]\:max-w-full\!>div.docx-wrapper image{max-width:100%!important}.\[\&\>div\.docx-wrapper_img\]\:h-auto\!>div.docx-wrapper img{height:auto!important}.\[\&\>div\.docx-wrapper_img\]\:max-w-full\!>div.docx-wrapper img,.\[\&\>div\.docx-wrapper_svg\]\:max-w-full\!>div.docx-wrapper svg{max-width:100%!important}.\[\&\>div\.docx-wrapper_table\]\:w-full\!>div.docx-wrapper table{width:100%!important}.\[\&\>div\.docx-wrapper_table\]\:max-w-full\!>div.docx-wrapper table{max-width:100%!important}.\[\&\>div\.docx-wrapper_table\]\:table-fixed\!>div.docx-wrapper table{table-layout:fixed!important}.\[\&\>div\.docx-wrapper_table\]\:border-collapse\!>div.docx-wrapper table{border-collapse:collapse!important}.\[\&\>div\.docx-wrapper_table_\*\]\:wrap-break-word\!>div.docx-wrapper table *{overflow-wrap:break-word!important}.\[\&\>div\.docx-wrapper_table_col\]\:w-fit\!>div.docx-wrapper table col,.\[\&\>div\.docx-wrapper_table_td\]\:w-fit\!>div.docx-wrapper table td{width:fit-content!important}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}
|
|
1
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-800:oklch(44.4% .177 26.899);--color-red-900:oklch(39.6% .141 25.723);--color-red-950:oklch(25.8% .092 26.042);--color-orange-400:oklch(75% .183 55.934);--color-orange-500:oklch(70.5% .213 47.604);--color-amber-900:oklch(41.4% .112 45.904);--color-amber-950:oklch(27.9% .077 45.635);--color-yellow-100:oklch(97.3% .071 103.193);--color-yellow-200:oklch(94.5% .129 101.54);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-800:oklch(47.6% .114 61.907);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-700:oklch(52.7% .154 150.069);--color-teal-100:oklch(95.3% .051 180.801);--color-teal-200:oklch(91% .096 180.426);--color-teal-500:oklch(70.4% .14 182.503);--color-teal-800:oklch(43.7% .078 188.216);--color-teal-900:oklch(38.6% .063 188.416);--color-teal-950:oklch(27.7% .046 192.524);--color-blue-50:oklch(97% .014 254.604);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-900:oklch(37.9% .146 265.522);--color-blue-950:oklch(28.2% .091 267.935);--color-violet-400:oklch(70.2% .183 293.541);--color-violet-500:oklch(60.6% .25 292.717);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-zinc-100:oklch(96.7% .001 286.375);--color-zinc-400:oklch(70.5% .015 286.067);--color-zinc-900:oklch(21% .006 285.885);--color-neutral-100:oklch(97% 0 0);--color-neutral-200:oklch(92.2% 0 0);--color-neutral-300:oklch(87% 0 0);--color-neutral-400:oklch(70.8% 0 0);--color-neutral-500:oklch(55.6% 0 0);--color-neutral-600:oklch(43.9% 0 0);--color-neutral-700:oklch(37.1% 0 0);--color-neutral-800:oklch(26.9% 0 0);--color-neutral-900:oklch(20.5% 0 0);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}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;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.start-1\/2{inset-inline-start:50%}.top-0{top:calc(var(--spacing)*0)}.top-1\/2{top:50%}.top-4{top:calc(var(--spacing)*4)}.top-8{top:calc(var(--spacing)*8)}.right-0{right:calc(var(--spacing)*0)}.right-3{right:calc(var(--spacing)*3)}.right-4{right:calc(var(--spacing)*4)}.right-8{right:calc(var(--spacing)*8)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-3{bottom:calc(var(--spacing)*3)}.bottom-4{bottom:calc(var(--spacing)*4)}.bottom-8{bottom:calc(var(--spacing)*8)}.left-0{left:calc(var(--spacing)*0)}.left-4{left:calc(var(--spacing)*4)}.left-8{left:calc(var(--spacing)*8)}.z-50{z-index:50}.z-9999{z-index:9999}.row-1{grid-row:1}.row-2{grid-row:2}.row-3{grid-row:3}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mx-4{margin-inline:calc(var(--spacing)*4)}.mx-5{margin-inline:calc(var(--spacing)*5)}.mx-auto{margin-inline:auto}.ms-auto{margin-inline-start:auto}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-5\.5{margin-top:calc(var(--spacing)*5.5)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.ml-3{margin-left:calc(var(--spacing)*3)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.size-5{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5)}.h-1{height:calc(var(--spacing)*1)}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-2\.5{height:calc(var(--spacing)*2.5)}.h-3\.5\!{height:calc(var(--spacing)*3.5)!important}.h-4{height:calc(var(--spacing)*4)}.h-4\.5{height:calc(var(--spacing)*4.5)}.h-5\.5{height:calc(var(--spacing)*5.5)}.h-6{height:calc(var(--spacing)*6)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-\[47px\]\!{height:47px!important}.h-\[50px\]{height:50px}.h-\[76px\]{height:76px}.h-\[220px\]{height:220px}.h-\[500px\]{height:500px}.h-\[600px\]{height:600px}.h-auto{height:auto}.h-full{height:100%}.max-h-full{max-height:100%}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-screen{min-height:100vh}.w-2\.5{width:calc(var(--spacing)*2.5)}.w-3\.5\!{width:calc(var(--spacing)*3.5)!important}.w-4\.5{width:calc(var(--spacing)*4.5)}.w-5{width:calc(var(--spacing)*5)}.w-5\.5{width:calc(var(--spacing)*5.5)}.w-6{width:calc(var(--spacing)*6)}.w-10{width:calc(var(--spacing)*10)}.w-48{width:calc(var(--spacing)*48)}.w-\[50px\]{width:50px}.w-\[64px\]\!{width:64px!important}.w-\[82px\]{width:82px}.w-\[500px\]{width:500px}.w-\[600px\]{width:600px}.w-full{width:100%}.max-w-\[100\%\],.max-w-full{max-width:100%}.max-w-none{max-width:none}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-11{min-width:calc(var(--spacing)*11)}.flex-1{flex:1}.flex-shrink,.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-4{--tw-translate-y:calc(var(--spacing)*-4);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-0{--tw-translate-y:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-4{--tw-translate-y:calc(var(--spacing)*4);translate:var(--tw-translate-x)var(--tw-translate-y)}.-rotate-90{rotate:-90deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-col-resize{cursor:col-resize}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.\[appearance\:textfield\]{appearance:textfield}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-start{justify-content:flex-start}.gap-0\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.25{gap:calc(var(--spacing)*1.25)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}.self-start{align-self:flex-start}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.rounded-\[4px\]{border-radius:4px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.border,.border-1{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-none{--tw-border-style:none;border-style:none}.border-\[var\(--section-border\,\#aeadac\)\]{border-color:var(--section-border,#aeadac)}.border-blue-200{border-color:var(--color-blue-200)}.border-blue-200\!{border-color:var(--color-blue-200)!important}.border-blue-300{border-color:var(--color-blue-300)}.border-blue-500{border-color:var(--color-blue-500)}.border-gray-100{border-color:var(--color-gray-100)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-gray-400{border-color:var(--color-gray-400)}.border-red-200{border-color:var(--color-red-200)}.border-red-500{border-color:var(--color-red-500)}.border-teal-200{border-color:var(--color-teal-200)}.border-yellow-200{border-color:var(--color-yellow-200)}.border-s-transparent{border-inline-start-color:#0000}.bg-\[rgba\(251\,250\,250\,0\.9\)\]{background-color:#fbfafae6}.bg-\[var\(--sidebar-bg\,\#f7f6f5\)\]{background-color:var(--sidebar-bg,#f7f6f5)}.bg-blue-50\!{background-color:var(--color-blue-50)!important}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-50\!{background-color:var(--color-gray-50)!important}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-500{background-color:var(--color-gray-500)}.bg-green-500{background-color:var(--color-green-500)}.bg-neutral-400{background-color:var(--color-neutral-400)}.bg-neutral-900\!{background-color:var(--color-neutral-900)!important}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-500{background-color:var(--color-red-500)}.bg-teal-100{background-color:var(--color-teal-100)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-yellow-100{background-color:var(--color-yellow-100)}.fill-current{fill:currentColor}.object-cover{object-fit:cover}.object-fill{object-fit:fill}.p-2{padding:calc(var(--spacing)*2)}.p-2\!{padding:calc(var(--spacing)*2)!important}.p-2\.5{padding:calc(var(--spacing)*2.5)}.p-4{padding:calc(var(--spacing)*4)}.p-5{padding:calc(var(--spacing)*5)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.p-8\.5{padding:calc(var(--spacing)*8.5)}.px-0\.5{padding-inline:calc(var(--spacing)*.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-8\.5{padding-inline:calc(var(--spacing)*8.5)}.py-1\.5\!{padding-block:calc(var(--spacing)*1.5)!important}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\.5{padding-block:calc(var(--spacing)*2.5)}.py-5\.5{padding-block:calc(var(--spacing)*5.5)}.pt-1\.5{padding-top:calc(var(--spacing)*1.5)}.pr-3{padding-right:calc(var(--spacing)*3)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pl-2\.5{padding-left:calc(var(--spacing)*2.5)}.text-center{text-align:center}.text-end{text-align:end}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[11px\]{font-size:11px}.text-\[14px\]{font-size:14px}.text-\[14px\]\!{font-size:14px!important}.leading-none{--tw-leading:1;line-height:1}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-medium\!{--tw-font-weight:var(--font-weight-medium)!important;font-weight:var(--font-weight-medium)!important}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-wrap{text-wrap:wrap}.break-all{word-break:break-all}.whitespace-pre-wrap{white-space:pre-wrap}.text-black{color:var(--color-black)}.text-blue-400\!{color:var(--color-blue-400)!important}.text-blue-500{color:var(--color-blue-500)}.text-blue-600\!{color:var(--color-blue-600)!important}.text-blue-700\!{color:var(--color-blue-700)!important}.text-blue-800{color:var(--color-blue-800)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-500\!{color:var(--color-gray-500)!important}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-gray-900{color:var(--color-gray-900)}.text-green-400\!{color:var(--color-green-400)!important}.text-green-700\!{color:var(--color-green-700)!important}.text-neutral-500\!{color:var(--color-neutral-500)!important}.text-orange-400\!{color:var(--color-orange-400)!important}.text-orange-500\!{color:var(--color-orange-500)!important}.text-red-400\!{color:var(--color-red-400)!important}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-800{color:var(--color-red-800)}.text-red-800\!{color:var(--color-red-800)!important}.text-teal-800{color:var(--color-teal-800)}.text-violet-400\!{color:var(--color-violet-400)!important}.text-violet-500\!{color:var(--color-violet-500)!important}.text-white{color:var(--color-white)}.text-yellow-800{color:var(--color-yellow-800)}.text-zinc-900{color:var(--color-zinc-900)}.italic{font-style:italic}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);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,)}.invert{--tw-invert:invert(100%);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,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,visibility,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-\[600ms\]{--tw-duration:.6s;transition-duration:.6s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.select-text{-webkit-user-select:text;user-select:text}.\[scrollbar-color\:var\(--color-neutral-500\)_var\(--color-neutral-300\)\]{scrollbar-color:var(--color-neutral-500)var(--color-neutral-300)}.\[scrollbar-width\:thin\]{scrollbar-width:thin}@media (hover:hover){.hover\:bg-blue-50:hover{background-color:var(--color-blue-50)}.hover\:bg-blue-600:hover{background-color:var(--color-blue-600)}.hover\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\:bg-gray-600:hover{background-color:var(--color-gray-600)}.hover\:bg-green-600:hover{background-color:var(--color-green-600)}.hover\:bg-red-600:hover{background-color:var(--color-red-600)}.hover\:text-blue-200:hover{color:var(--color-blue-200)}.hover\:text-blue-600:hover{color:var(--color-blue-600)}.hover\:opacity-100:hover{opacity:1}}.focus\:opacity-100:focus{opacity:1}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.enabled\:cursor-pointer:enabled{cursor:pointer}@media (hover:hover){.enabled\:hover\:bg-black\/5:enabled:hover{background-color:#0000000d}@supports (color:color-mix(in lab,red,red)){.enabled\:hover\:bg-black\/5:enabled:hover{background-color:color-mix(in oklab,var(--color-black)5%,transparent)}}}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:border-gray-300:disabled{border-color:var(--color-gray-300)}.disabled\:bg-blue-300:disabled{background-color:var(--color-blue-300)}.disabled\:text-gray-200:disabled{color:var(--color-gray-200)}.disabled\:text-gray-300:disabled{color:var(--color-gray-300)}@media (min-width:48rem){.md\:flex-nowrap{flex-wrap:nowrap}}@media (min-width:64rem){.lg\:sticky{position:sticky}.lg\:top-0{top:calc(var(--spacing)*0)}.lg\:flex\!{display:flex!important}}.dark\:border-amber-900:where(.dark,.dark *){border-color:var(--color-amber-900)}.dark\:border-blue-900:where(.dark,.dark *){border-color:var(--color-blue-900)}.dark\:border-neutral-500\!:where(.dark,.dark *){border-color:var(--color-neutral-500)!important}.dark\:border-neutral-600:where(.dark,.dark *){border-color:var(--color-neutral-600)}.dark\:border-neutral-700:where(.dark,.dark *){border-color:var(--color-neutral-700)}.dark\:border-neutral-800:where(.dark,.dark *){border-color:var(--color-neutral-800)}.dark\:border-red-900:where(.dark,.dark *){border-color:var(--color-red-900)}.dark\:border-teal-900:where(.dark,.dark *){border-color:var(--color-teal-900)}.dark\:bg-\[rgba\(12\,10\,18\,0\.9\)\]:where(.dark,.dark *){background-color:#0c0a12e6}.dark\:bg-amber-950:where(.dark,.dark *){background-color:var(--color-amber-950)}.dark\:bg-blue-900\/30:where(.dark,.dark *){background-color:#1c398e4d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-blue-900\/30:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-blue-900)30%,transparent)}}.dark\:bg-blue-950:where(.dark,.dark *){background-color:var(--color-blue-950)}.dark\:bg-gray-900:where(.dark,.dark *){background-color:var(--color-gray-900)}.dark\:bg-neutral-700:where(.dark,.dark *){background-color:var(--color-neutral-700)}.dark\:bg-neutral-700\!:where(.dark,.dark *){background-color:var(--color-neutral-700)!important}.dark\:bg-neutral-800:where(.dark,.dark *){background-color:var(--color-neutral-800)}.dark\:bg-neutral-900:where(.dark,.dark *){background-color:var(--color-neutral-900)}.dark\:bg-red-900\/20:where(.dark,.dark *){background-color:#82181a33}@supports (color:color-mix(in lab,red,red)){.dark\:bg-red-900\/20:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-red-900)20%,transparent)}}.dark\:bg-red-950:where(.dark,.dark *){background-color:var(--color-red-950)}.dark\:bg-teal-950:where(.dark,.dark *){background-color:var(--color-teal-950)}.dark\:text-blue-400\!:where(.dark,.dark *){color:var(--color-blue-400)!important}.dark\:text-blue-500:where(.dark,.dark *){color:var(--color-blue-500)}.dark\:text-gray-300:where(.dark,.dark *){color:var(--color-gray-300)}.dark\:text-gray-400:where(.dark,.dark *){color:var(--color-gray-400)}.dark\:text-neutral-100:where(.dark,.dark *){color:var(--color-neutral-100)}.dark\:text-neutral-200:where(.dark,.dark *){color:var(--color-neutral-200)}.dark\:text-neutral-500:where(.dark,.dark *){color:var(--color-neutral-500)}.dark\:text-neutral-600:where(.dark,.dark *){color:var(--color-neutral-600)}.dark\:text-red-400:where(.dark,.dark *){color:var(--color-red-400)}.dark\:text-red-500:where(.dark,.dark *){color:var(--color-red-500)}.dark\:text-teal-500:where(.dark,.dark *){color:var(--color-teal-500)}.dark\:text-white:where(.dark,.dark *){color:var(--color-white)}.dark\:text-yellow-500:where(.dark,.dark *){color:var(--color-yellow-500)}.dark\:\[scrollbar-color\:var\(--color-neutral-500\)_var\(--color-neutral-700\)\]:where(.dark,.dark *){scrollbar-color:var(--color-neutral-500)var(--color-neutral-700)}@media (hover:hover){.dark\:hover\:bg-neutral-700:where(.dark,.dark *):hover{background-color:var(--color-neutral-700)}.enabled\:dark\:hover\:bg-white\/10:enabled:where(.dark,.dark *):hover{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.enabled\:dark\:hover\:bg-white\/10:enabled:where(.dark,.dark *):hover{background-color:color-mix(in oklab,var(--color-white)10%,transparent)}}}.dark\:disabled\:border-neutral-700:where(.dark,.dark *):disabled{border-color:var(--color-neutral-700)}.dark\:disabled\:text-neutral-600:where(.dark,.dark *):disabled{color:var(--color-neutral-600)}.\[\&_textarea\]\:pb-1\! textarea{padding-bottom:calc(var(--spacing)*1)!important}.\[\&\:\:-webkit-inner-spin-button\]\:appearance-none::-webkit-inner-spin-button{appearance:none}.\[\&\:\:-webkit-outer-spin-button\]\:appearance-none::-webkit-outer-spin-button{appearance:none}.\[\&\:\:-webkit-scrollbar\]\:h-2\.5::-webkit-scrollbar{height:calc(var(--spacing)*2.5)}.\[\&\:\:-webkit-scrollbar\]\:w-2\.5::-webkit-scrollbar{width:calc(var(--spacing)*2.5)}.\[\&\:\:-webkit-scrollbar-thumb\]\:rounded-full::-webkit-scrollbar-thumb{border-radius:3.40282e38px}.\[\&\:\:-webkit-scrollbar-thumb\]\:bg-neutral-500::-webkit-scrollbar-thumb{background-color:var(--color-neutral-500)}.dark\:\[\&\:\:-webkit-scrollbar-thumb\]\:bg-neutral-500:where(.dark,.dark *)::-webkit-scrollbar-thumb{background-color:var(--color-neutral-500)}.\[\&\:\:-webkit-scrollbar-track\]\:bg-neutral-300::-webkit-scrollbar-track{background-color:var(--color-neutral-300)}.dark\:\[\&\:\:-webkit-scrollbar-track\]\:bg-neutral-700:where(.dark,.dark *)::-webkit-scrollbar-track{background-color:var(--color-neutral-700)}.\[\&\>div\.docx-wrapper\]\:box-border>div.docx-wrapper{box-sizing:border-box}.\[\&\>div\.docx-wrapper\]\:min-h-full>div.docx-wrapper{min-height:100%}.\[\&\>div\.docx-wrapper\]\:w-full\!>div.docx-wrapper{width:100%!important}.\[\&\>div\.docx-wrapper\]\:min-w-fit\!>div.docx-wrapper{min-width:fit-content!important}.\[\&\>div\.docx-wrapper\]\:bg-neutral-400\!>div.docx-wrapper{background-color:var(--color-neutral-400)!important}.dark\:\[\&\>div\.docx-wrapper\]\:bg-neutral-800\!:where(.dark,.dark *)>div.docx-wrapper{background-color:var(--color-neutral-800)!important}.\[\&\>div\.docx-wrapper_\*\]\:max-w-full\!>div.docx-wrapper *{max-width:100%!important}.\[\&\>div\.docx-wrapper_image\]\:h-auto\!>div.docx-wrapper image{height:auto!important}.\[\&\>div\.docx-wrapper_image\]\:max-w-full\!>div.docx-wrapper image{max-width:100%!important}.\[\&\>div\.docx-wrapper_img\]\:h-auto\!>div.docx-wrapper img{height:auto!important}.\[\&\>div\.docx-wrapper_img\]\:max-w-full\!>div.docx-wrapper img,.\[\&\>div\.docx-wrapper_svg\]\:max-w-full\!>div.docx-wrapper svg{max-width:100%!important}.\[\&\>div\.docx-wrapper_table\]\:w-full\!>div.docx-wrapper table{width:100%!important}.\[\&\>div\.docx-wrapper_table\]\:max-w-full\!>div.docx-wrapper table{max-width:100%!important}.\[\&\>div\.docx-wrapper_table\]\:table-fixed\!>div.docx-wrapper table{table-layout:fixed!important}.\[\&\>div\.docx-wrapper_table\]\:border-collapse\!>div.docx-wrapper table{border-collapse:collapse!important}.\[\&\>div\.docx-wrapper_table_\*\]\:wrap-break-word\!>div.docx-wrapper table *{overflow-wrap:break-word!important}.\[\&\>div\.docx-wrapper_table_col\]\:w-fit\!>div.docx-wrapper table col,.\[\&\>div\.docx-wrapper_table_td\]\:w-fit\!>div.docx-wrapper table td{width:fit-content!important}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}
|
|
2
2
|
/*! tailwindcss v4.1.12 | MIT License | https://tailwindcss.com */
|
|
3
3
|
/*# sourceMappingURL=index.css.map */
|