@coffer-org/web 2.3.5 → 2.4.1
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/assets/ChatWidget-DFFgrg2x.js +16 -0
- package/dist/assets/DiagnosticsPage-DGyv86Xc.js +1 -0
- package/dist/assets/NewRecordView-CyvemimH.js +1 -0
- package/dist/assets/SettingsPage-JjDziH2c.js +3 -0
- package/dist/assets/ThemeSwitcher-CftQexVL.js +1 -0
- package/dist/assets/api-DsJ6cAbe.js +1 -0
- package/dist/assets/auth-context-CpmpND1h.js +1 -0
- package/dist/assets/index-BUTX7_5W.css +2 -0
- package/dist/assets/{index-DJPKqd1y.js → index-DMYE-yaf.js} +11 -11
- package/dist/assets/shared-Bvjbhg1J.js +1 -0
- package/dist/assets/{ui-Bnr0qKLJ.js → ui-BSyQ3sLQ.js} +1 -1
- package/dist/assets/{ui-VAlPAkSR.js → ui-CrnOGA35.js} +1 -1
- package/dist/assets/{ui-C8hTdKa2.js → ui-DsHR6aY1.js} +2 -2
- package/dist/assets/upload-eoIHAc6j.js +1 -0
- package/dist/assets/version-BYktGE-Z.js +1 -0
- package/dist/index.html +7 -6
- package/package.json +1 -1
- package/site.mjs +1 -0
- package/dist/assets/ChatWidget-DXJDGFMh.js +0 -16
- package/dist/assets/NewRecordView-BmDQQ2aU.js +0 -1
- package/dist/assets/SettingsPage-4xleBCJl.js +0 -3
- package/dist/assets/ThemeSwitcher-ndhcJbiw.js +0 -1
- package/dist/assets/api-8XMJe9yT.js +0 -1
- package/dist/assets/index-4ZyGBm0K.css +0 -2
- package/dist/assets/shared-BNH_eVnY.js +0 -1
- package/dist/assets/upload-Bp-ZANIb.js +0 -1
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import{r as e,t}from"./rolldown-runtime-QTnfLwEv.js";import{a as n,t as r}from"./i18n-vendor-T6EnJ_TL.js";import{c as i,l as a,t as o}from"./react-vendor-BskHO5hY.js";import{n as s,t as c}from"./x-BFRg18Fi.js";import{s as l}from"./icons-DBHj1PyA.js";import{n as u,o as d,r as f,t as p}from"./use-media-query-BED2JoBm.js";import{n as m,r as h,t as g}from"./upload-eoIHAc6j.js";import{n as _,t as v}from"./square-CiErsTOS.js";import"./src-DKYT_mO5.js";import{i as y}from"./plugin-ui-CKd6q8ec.js";import{P as b}from"./api-DsJ6cAbe.js";import{n as ee,t as te}from"./dialog-DqWXrq6M.js";import{n as x,t as S}from"./development-olQNibq5.js";import{c as C}from"./micromark-extension-gfm-BUw6_ZLT.js";import{a as ne,i as w,n as T,o as E,s as D}from"./space-separated-tokens-IJiqTQpk.js";import{a as O,c as k,s as re,t as A}from"./lib-Du7RHLba.js";import{t as j}from"./lib-sYoE14fC.js";import{c as ie,t as ae}from"./lib-B13BbhLB.js";var oe=s(`list`,[[`path`,{d:`M3 5h.01`,key:`18ugdj`}],[`path`,{d:`M3 12h.01`,key:`nlz23k`}],[`path`,{d:`M3 19h.01`,key:`noohij`}],[`path`,{d:`M8 5h13`,key:`1pao27`}],[`path`,{d:`M8 12h13`,key:`1za7za`}],[`path`,{d:`M8 19h13`,key:`m83p4d`}]]),se=s(`maximize-2`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`m21 3-7 7`,key:`1l2asr`}],[`path`,{d:`m3 21 7-7`,key:`tjx5ai`}],[`path`,{d:`M9 21H3v-6`,key:`wtvkvv`}]]),ce=s(`message-circle`,[[`path`,{d:`M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719`,key:`1sd12s`}]]),le=s(`minimize-2`,[[`path`,{d:`m14 10 7-7`,key:`oa77jy`}],[`path`,{d:`M20 10h-6V4`,key:`mjg0md`}],[`path`,{d:`m3 21 7-7`,key:`tjx5ai`}],[`path`,{d:`M4 14h6v6`,key:`rmj7iw`}]]),ue=s(`paperclip`,[[`path`,{d:`m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551`,key:`1miecu`}]]),de=s(`send`,[[`path`,{d:`M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z`,key:`1ffxy3`}],[`path`,{d:`m21.854 2.147-10.94 10.939`,key:`12cjpa`}]]),fe={classId:`classID`,dataType:`datatype`,itemId:`itemID`,strokeDashArray:`strokeDasharray`,strokeDashOffset:`strokeDashoffset`,strokeLineCap:`strokeLinecap`,strokeLineJoin:`strokeLinejoin`,strokeMiterLimit:`strokeMiterlimit`,typeOf:`typeof`,xLinkActuate:`xlinkActuate`,xLinkArcRole:`xlinkArcrole`,xLinkHref:`xlinkHref`,xLinkRole:`xlinkRole`,xLinkShow:`xlinkShow`,xLinkTitle:`xlinkTitle`,xLinkType:`xlinkType`,xmlnsXLink:`xmlnsXlink`},M=e(n(),1);async function*pe(e){let t=e.getReader(),n=new TextDecoder,r=``;for(;;){let{done:e,value:i}=await t.read();if(e)break;r+=n.decode(i,{stream:!0});let a;for(;(a=r.indexOf(`
|
|
2
|
+
|
|
3
|
+
`))!==-1;){let e=r.slice(0,a);r=r.slice(a+2);let t=`message`,n=[];for(let r of e.split(`
|
|
4
|
+
`))!r||r.startsWith(`:`)||(r.startsWith(`event:`)?t=r.slice(6).trim():r.startsWith(`data:`)&&n.push(r.slice(5).replace(/^ /,``)));n.length&&(yield{event:t,data:n.join(`
|
|
5
|
+
`)})}}}var N=`/api/plugins/webchat/user`;async function me(){let e=await fetch(`${N}/threads`,{method:`POST`,headers:{"content-type":`application/json`},body:`{}`});if(!e.ok)throw Error(`threads`);return(await e.json()).threads}async function he(e){let t=await fetch(`${N}/history`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({convId:e})});if(!t.ok)throw Error(`history`);return await t.json()}async function ge(e){let t=await fetch(`${N}/send/stream`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({convId:e.convId,text:e.text,replyTo:e.replyTo,context:e.context,...e.attachments?.length?{attachments:e.attachments}:{}}),signal:e.signal});if(!t.ok||!t.body){e.onError(`http ${t.status}`);return}for await(let n of pe(t.body))try{let t=JSON.parse(n.data);n.event===`reasoning`?e.onReasoning?.(String(t.text??``)):n.event===`delta`||n.event===`message`?e.onDelta(String(t.text??``)):n.event===`done`?e.onDone({msgId:t.msgId??null,parentMsgId:String(t.parentMsgId??``)}):n.event===`error`&&e.onError(String(t.message??`error`))}catch(t){e.onError(`malformed frame: ${String(t)}`)}}function P(){return crypto.randomUUID()}function _e(){let[e,t]=(0,M.useState)([]),[n,r]=(0,M.useState)(null),[i,a]=(0,M.useState)([]),[o,s]=(0,M.useState)(null),[c,l]=(0,M.useState)(null),[u,d]=(0,M.useState)(null),f=(0,M.useRef)(null),p=(0,M.useRef)(null),m=(0,M.useRef)(!1),h=(0,M.useRef)(0),g=(0,M.useRef)(!0);(0,M.useEffect)(()=>(g.current=!0,()=>{g.current=!1,p.current?.abort(),h.current++}),[]);let _=(0,M.useCallback)(()=>{me().then(e=>{g.current&&t(e)}).catch(()=>{})},[]),v=(0,M.useCallback)(()=>{p.current?.abort(),p.current=null,h.current++,f.current=null,r(P()),a([]),s(null),l(null),d(null)},[]),y=(0,M.useCallback)(async e=>{p.current?.abort(),p.current=null,h.current++;let t=h.current;r(e),a([]),f.current=null,s(null),l(null),d(null);try{let n=await he(e);if(h.current!==t)return;f.current=n.headMsgId,a(n.messages)}catch(e){if(h.current!==t)return;d(e.message)}},[]),b=(0,M.useCallback)(()=>{p.current?.abort(),p.current=null,s(null),l(null)},[]);return{threads:e,convId:n,messages:i,pending:o,pendingReasoning:c,error:u,send:(0,M.useCallback)((e,t,i=[])=>{if(!e.trim()||m.current)return!1;m.current=!0;let o=h.current,c=n??P();n===null&&r(c),d(null),a(t=>[...t,{msgId:`local-${P()}`,role:`user`,text:e,ts:Math.floor(Date.now()/1e3),...i.length?{attachments:i}:{}}]),s(``);let u=new AbortController;p.current=u;let g=``,v=``;return(async()=>{try{await ge({convId:c,text:e,replyTo:f.current,context:t,attachments:i,signal:u.signal,onDelta:e=>{h.current===o&&(g=e,s(e))},onReasoning:e=>{h.current===o&&(v=e,l(e))},onDone:({msgId:e,parentMsgId:t})=>{h.current===o&&(f.current=e??t,g&&a(t=>[...t,{msgId:e??`local-${P()}`,role:`assistant`,text:g,ts:Math.floor(Date.now()/1e3),...v?{reasoning:v}:{}}]),s(null),l(null))},onError:e=>{h.current===o&&(d(e),s(null),l(null))}})}catch(e){h.current===o&&(e.name!==`AbortError`&&d(e.message),s(null),l(null))}finally{m.current=!1,h.current===o&&(p.current=null,_())}})(),!0},[n,_]),open:y,newConversation:v,loadThreads:_,stop:b}}function ve(){let{pathname:e}=i(),t=e.split(`/`).filter(Boolean),n=new Set([`settings`,`browse`,`plugins`,`login`,`setup`]);if(t.length<2||n.has(t[0]))return{path:e};let[r,a,o]=t;return{path:e,library:r,type:a,...o&&o!==`new`?{id:o}:{}}}var ye=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,be=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,xe={};function Se(e,t){return((t||xe).jsx?be:ye).test(e)}var Ce=t(((e,t)=>{var n=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,r=/\n/g,i=/^\s*/,a=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,o=/^:\s*/,s=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,c=/^[;\s]*/,l=/^\s+|\s+$/g;function u(e,t){if(typeof e!=`string`)throw TypeError(`First argument must be a string`);if(!e)return[];t||={};var l=1,u=1;function f(e){var t=e.match(r);t&&(l+=t.length);var n=e.lastIndexOf(`
|
|
6
|
+
`);u=~n?e.length-n:u+e.length}function p(){var e={line:l,column:u};return function(t){return t.position=new m(e),_(),t}}function m(e){this.start=e,this.end={line:l,column:u},this.source=t.source}m.prototype.content=e;function h(n){var r=Error(t.source+`:`+l+`:`+u+`: `+n);if(r.reason=n,r.filename=t.source,r.line=l,r.column=u,r.source=e,!t.silent)throw r}function g(t){var n=t.exec(e);if(n){var r=n[0];return f(r),e=e.slice(r.length),n}}function _(){g(i)}function v(e){var t;for(e||=[];t=y();)t!==!1&&e.push(t);return e}function y(){var t=p();if(!(e.charAt(0)!=`/`||e.charAt(1)!=`*`)){for(var n=2;e.charAt(n)!=``&&(e.charAt(n)!=`*`||e.charAt(n+1)!=`/`);)++n;if(n+=2,e.charAt(n-1)===``)return h(`End of comment missing`);var r=e.slice(2,n-2);return u+=2,f(r),e=e.slice(n),u+=2,t({type:`comment`,comment:r})}}function b(){var e=p(),t=g(a);if(t){if(y(),!g(o))return h(`property missing ':'`);var r=g(s),i=e({type:`declaration`,property:d(t[0].replace(n,``)),value:r?d(r[0].replace(n,``)):``});return g(c),i}}function ee(){var e=[];v(e);for(var t;t=b();)t!==!1&&(e.push(t),v(e));return e}return _(),ee()}function d(e){return e?e.replace(l,``):``}t.exports=u})),we=t((e=>{var t=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.default=r;var n=t(Ce());function r(e,t){let r=null;if(!e||typeof e!=`string`)return r;let i=(0,n.default)(e),a=typeof t==`function`;return i.forEach(e=>{if(e.type!==`declaration`)return;let{property:n,value:i}=e;a?t(n,i,e):i&&(r||={},r[n]=i)}),r}})),Te=t((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.camelCase=void 0;var t=/^--[a-zA-Z0-9_-]+$/,n=/-([a-z])/g,r=/^[^-]+$/,i=/^-(webkit|moz|ms|o|khtml)-/,a=/^-(ms)-/,o=function(e){return!e||r.test(e)||t.test(e)},s=function(e,t){return t.toUpperCase()},c=function(e,t){return`${t}-`};e.camelCase=function(e,t){return t===void 0&&(t={}),o(e)?e:(e=e.toLowerCase(),e=t.reactCompat?e.replace(a,c):e.replace(i,c),e.replace(n,s))}})),Ee=t(((e,t)=>{var n=(e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}})(we()),r=Te();function i(e,t){var i={};return!e||typeof e!=`string`||(0,n.default)(e,function(e,n){e&&n&&(i[(0,r.camelCase)(e,t)]=n)}),i}i.default=i,t.exports=i})),De=ke(`end`),Oe=ke(`start`);function ke(e){return t;function t(t){let n=t&&t.position&&t.position[e]||{};if(typeof n.line==`number`&&n.line>0&&typeof n.column==`number`&&n.column>0)return{line:n.line,column:n.column,offset:typeof n.offset==`number`&&n.offset>-1?n.offset:void 0}}}function Ae(e){let t=Oe(e),n=De(e);if(t&&n)return{start:t,end:n}}var je=e(Ee(),1),F={}.hasOwnProperty,Me=new Map,Ne=/[A-Z]/g,Pe=new Set([`table`,`tbody`,`thead`,`tfoot`,`tr`]),Fe=new Set([`td`,`th`]);function Ie(e,t){if(!t||t.Fragment===void 0)throw TypeError("Expected `Fragment` in options");let n=t.filePath||void 0,r;if(t.development){if(typeof t.jsxDEV!=`function`)throw TypeError("Expected `jsxDEV` in options when `development: true`");r=Ke(n,t.jsxDEV)}else{if(typeof t.jsx!=`function`)throw TypeError("Expected `jsx` in production options");if(typeof t.jsxs!=`function`)throw TypeError("Expected `jsxs` in production options");r=Ge(n,t.jsx,t.jsxs)}let i={Fragment:t.Fragment,ancestors:[],components:t.components||{},create:r,elementAttributeNameCase:t.elementAttributeNameCase||`react`,evaluater:t.createEvaluater?t.createEvaluater():void 0,filePath:n,ignoreInvalidStyle:t.ignoreInvalidStyle||!1,passKeys:t.passKeys!==!1,passNode:t.passNode||!1,schema:t.space===`svg`?E:ne,stylePropertyNameCase:t.stylePropertyNameCase||`dom`,tableCellAlignToStyle:t.tableCellAlignToStyle!==!1},a=Le(i,e,void 0);return a&&typeof a!=`string`?a:i.create(e,i.Fragment,{children:a||void 0},void 0)}function Le(e,t,n){if(t.type===`element`)return Re(e,t,n);if(t.type===`mdxFlowExpression`||t.type===`mdxTextExpression`)return ze(e,t);if(t.type===`mdxJsxFlowElement`||t.type===`mdxJsxTextElement`)return Ve(e,t,n);if(t.type===`mdxjsEsm`)return Be(e,t);if(t.type===`root`)return He(e,t,n);if(t.type===`text`)return Ue(e,t)}function Re(e,t,n){let r=e.schema,i=r;t.tagName.toLowerCase()===`svg`&&r.space===`html`&&(i=E,e.schema=i),e.ancestors.push(t);let a=Ze(e,t.tagName,!1),o=qe(e,t),s=L(e,t);return Pe.has(t.tagName)&&(s=s.filter(function(e){return typeof e!=`string`||!j(e)})),We(e,o,a,t),I(o,s),e.ancestors.pop(),e.schema=r,e.create(t,a,o,n)}function ze(e,t){if(t.data&&t.data.estree&&e.evaluater){let n=t.data.estree.body[0];return S(n.type===`ExpressionStatement`),e.evaluater.evaluateExpression(n.expression)}R(e,t.position)}function Be(e,t){if(t.data&&t.data.estree&&e.evaluater)return e.evaluater.evaluateProgram(t.data.estree);R(e,t.position)}function Ve(e,t,n){let r=e.schema,i=r;t.name===`svg`&&r.space===`html`&&(i=E,e.schema=i),e.ancestors.push(t);let a=t.name===null?e.Fragment:Ze(e,t.name,!0),o=Je(e,t),s=L(e,t);return We(e,o,a,t),I(o,s),e.ancestors.pop(),e.schema=r,e.create(t,a,o,n)}function He(e,t,n){let r={};return I(r,L(e,t)),e.create(t,e.Fragment,r,n)}function Ue(e,t){return t.value}function We(e,t,n,r){typeof n!=`string`&&n!==e.Fragment&&e.passNode&&(t.node=r)}function I(e,t){if(t.length>0){let n=t.length>1?t:t[0];n&&(e.children=n)}}function Ge(e,t,n){return r;function r(e,r,i,a){let o=Array.isArray(i.children)?n:t;return a?o(r,i,a):o(r,i)}}function Ke(e,t){return n;function n(n,r,i,a){let o=Array.isArray(i.children),s=Oe(n);return t(r,i,a,o,{columnNumber:s?s.column-1:void 0,fileName:e,lineNumber:s?s.line:void 0},void 0)}}function qe(e,t){let n={},r,i;for(i in t.properties)if(i!==`children`&&F.call(t.properties,i)){let a=Ye(e,i,t.properties[i]);if(a){let[i,o]=a;e.tableCellAlignToStyle&&i===`align`&&typeof o==`string`&&Fe.has(t.tagName)?r=o:n[i]=o}}if(r){let t=n.style||={};t[e.stylePropertyNameCase===`css`?`text-align`:`textAlign`]=r}return n}function Je(e,t){let n={};for(let r of t.attributes)if(r.type===`mdxJsxExpressionAttribute`)if(r.data&&r.data.estree&&e.evaluater){let t=r.data.estree.body[0];S(t.type===`ExpressionStatement`);let i=t.expression;S(i.type===`ObjectExpression`);let a=i.properties[0];S(a.type===`SpreadElement`),Object.assign(n,e.evaluater.evaluateExpression(a.argument))}else R(e,t.position);else{let i=r.name,a;if(r.value&&typeof r.value==`object`)if(r.value.data&&r.value.data.estree&&e.evaluater){let t=r.value.data.estree.body[0];S(t.type===`ExpressionStatement`),a=e.evaluater.evaluateExpression(t.expression)}else R(e,t.position);else a=r.value===null||r.value;n[i]=a}return n}function L(e,t){let n=[],r=-1,i=e.passKeys?new Map:Me;for(;++r<t.children.length;){let a=t.children[r],o;if(e.passKeys){let e=a.type===`element`?a.tagName:a.type===`mdxJsxFlowElement`||a.type===`mdxJsxTextElement`?a.name:void 0;if(e){let t=i.get(e)||0;o=e+`-`+t,i.set(e,t+1)}}let s=Le(e,a,o);s!==void 0&&n.push(s)}return n}function Ye(e,t,n){let r=D(e.schema,t);if(!(n==null||typeof n==`number`&&Number.isNaN(n))){if(Array.isArray(n)&&(n=r.commaSeparated?w(n):T(n)),r.property===`style`){let t=typeof n==`object`?n:Xe(e,String(n));return e.stylePropertyNameCase===`css`&&(t=Qe(t)),[`style`,t]}return[e.elementAttributeNameCase===`react`&&r.space?fe[r.property]||r.property:r.attribute,n]}}function Xe(e,t){try{return(0,je.default)(t,{reactCompat:!0})}catch(t){if(e.ignoreInvalidStyle)return{};let n=t,r=new k("Cannot parse `style` attribute",{ancestors:e.ancestors,cause:n,ruleId:`style`,source:`hast-util-to-jsx-runtime`});throw r.file=e.filePath||void 0,r.url=`https://github.com/syntax-tree/hast-util-to-jsx-runtime#cannot-parse-style-attribute`,r}}function Ze(e,t,n){let r;if(!n)r={type:`Literal`,value:t};else if(t.includes(`.`)){let e=t.split(`.`),n=-1,i;for(;++n<e.length;){let t=Se(e[n])?{type:`Identifier`,name:e[n]}:{type:`Literal`,value:e[n]};i=i?{type:`MemberExpression`,object:i,property:t,computed:!!(n&&t.type===`Literal`),optional:!1}:t}S(i,`always a result`),r=i}else r=Se(t)&&!/^[a-z]/.test(t)?{type:`Identifier`,name:t}:{type:`Literal`,value:t};if(r.type===`Literal`){let t=r.value;return F.call(e.components,t)?e.components[t]:t}if(e.evaluater)return e.evaluater.evaluateExpression(r);R(e)}function R(e,t){let n=new k("Cannot handle MDX estrees without `createEvaluater`",{ancestors:e.ancestors,place:t,ruleId:`mdx-estree`,source:`hast-util-to-jsx-runtime`});throw n.file=e.filePath||void 0,n.url=`https://github.com/syntax-tree/hast-util-to-jsx-runtime#cannot-handle-mdx-estrees-without-createevaluater`,n}function Qe(e){let t={},n;for(n in e)F.call(e,n)&&(t[$e(n)]=e[n]);return t}function $e(e){let t=e.replace(Ne,et);return t.slice(0,3)===`ms-`&&(t=`-`+t),t}function et(e){return`-`+e.toLowerCase()}var z={action:[`form`],cite:[`blockquote`,`del`,`ins`,`q`],data:[`object`],formAction:[`button`,`input`],href:[`a`,`area`,`base`,`link`],icon:[`menuitem`],itemId:null,manifest:[`html`],ping:[`a`,`area`],poster:[`video`],src:[`audio`,`embed`,`iframe`,`img`,`input`,`script`,`source`,`track`,`video`]};function tt(e,t){let n={type:`element`,tagName:`blockquote`,properties:{},children:e.wrap(e.all(t),!0)};return e.patch(t,n),e.applyData(t,n)}function nt(e,t){let n={type:`element`,tagName:`br`,properties:{},children:[]};return e.patch(t,n),[e.applyData(t,n),{type:`text`,value:`
|
|
7
|
+
`}]}function rt(e,t){let n=t.value?t.value+`
|
|
8
|
+
`:``,r={},i=t.lang?t.lang.split(/\s+/):[];i.length>0&&(r.className=[`language-`+i[0]]);let a={type:`element`,tagName:`code`,properties:r,children:[{type:`text`,value:n}]};return t.meta&&(a.data={meta:t.meta}),e.patch(t,a),a=e.applyData(t,a),a={type:`element`,tagName:`pre`,properties:{},children:[a]},e.patch(t,a),a}function it(e,t){let n={type:`element`,tagName:`del`,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function at(e,t){let n={type:`element`,tagName:`em`,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function ot(e,t){let n=typeof e.options.clobberPrefix==`string`?e.options.clobberPrefix:`user-content-`,r=String(t.identifier).toUpperCase(),i=C(r.toLowerCase()),a=e.footnoteOrder.indexOf(r),o,s=e.footnoteCounts.get(r);s===void 0?(s=0,e.footnoteOrder.push(r),o=e.footnoteOrder.length):o=a+1,s+=1,e.footnoteCounts.set(r,s);let c={type:`element`,tagName:`a`,properties:{href:`#`+n+`fn-`+i,id:n+`fnref-`+i+(s>1?`-`+s:``),dataFootnoteRef:!0,ariaDescribedBy:[`footnote-label`]},children:[{type:`text`,value:String(o)}]};e.patch(t,c);let l={type:`element`,tagName:`sup`,properties:{},children:[c]};return e.patch(t,l),e.applyData(t,l)}function st(e,t){let n={type:`element`,tagName:`h`+t.depth,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function ct(e,t){if(e.options.allowDangerousHtml){let n={type:`raw`,value:t.value};return e.patch(t,n),e.applyData(t,n)}}function lt(e,t){let n=t.referenceType,r=`]`;if(n===`collapsed`?r+=`[]`:n===`full`&&(r+=`[`+(t.label||t.identifier)+`]`),t.type===`imageReference`)return[{type:`text`,value:`![`+t.alt+r}];let i=e.all(t),a=i[0];a&&a.type===`text`?a.value=`[`+a.value:i.unshift({type:`text`,value:`[`});let o=i[i.length-1];return o&&o.type===`text`?o.value+=r:i.push({type:`text`,value:r}),i}function ut(e,t){let n=String(t.identifier).toUpperCase(),r=e.definitionById.get(n);if(!r)return lt(e,t);let i={src:C(r.url||``),alt:t.alt};r.title!==null&&r.title!==void 0&&(i.title=r.title);let a={type:`element`,tagName:`img`,properties:i,children:[]};return e.patch(t,a),e.applyData(t,a)}function dt(e,t){let n={src:C(t.url)};t.alt!==null&&t.alt!==void 0&&(n.alt=t.alt),t.title!==null&&t.title!==void 0&&(n.title=t.title);let r={type:`element`,tagName:`img`,properties:n,children:[]};return e.patch(t,r),e.applyData(t,r)}function ft(e,t){let n={type:`text`,value:t.value.replace(/\r?\n|\r/g,` `)};e.patch(t,n);let r={type:`element`,tagName:`code`,properties:{},children:[n]};return e.patch(t,r),e.applyData(t,r)}function pt(e,t){let n=String(t.identifier).toUpperCase(),r=e.definitionById.get(n);if(!r)return lt(e,t);let i={href:C(r.url||``)};r.title!==null&&r.title!==void 0&&(i.title=r.title);let a={type:`element`,tagName:`a`,properties:i,children:e.all(t)};return e.patch(t,a),e.applyData(t,a)}function mt(e,t){let n={href:C(t.url)};t.title!==null&&t.title!==void 0&&(n.title=t.title);let r={type:`element`,tagName:`a`,properties:n,children:e.all(t)};return e.patch(t,r),e.applyData(t,r)}function ht(e,t,n){let r=e.all(t),i=n?gt(n):_t(t),a={},o=[];if(typeof t.checked==`boolean`){let e=r[0],n;e&&e.type===`element`&&e.tagName===`p`?n=e:(n={type:`element`,tagName:`p`,properties:{},children:[]},r.unshift(n)),n.children.length>0&&n.children.unshift({type:`text`,value:` `}),n.children.unshift({type:`element`,tagName:`input`,properties:{type:`checkbox`,checked:t.checked,disabled:!0},children:[]}),a.className=[`task-list-item`]}let s=-1;for(;++s<r.length;){let e=r[s];(i||s!==0||e.type!==`element`||e.tagName!==`p`)&&o.push({type:`text`,value:`
|
|
9
|
+
`}),e.type===`element`&&e.tagName===`p`&&!i?o.push(...e.children):o.push(e)}let c=r[r.length-1];c&&(i||c.type!==`element`||c.tagName!==`p`)&&o.push({type:`text`,value:`
|
|
10
|
+
`});let l={type:`element`,tagName:`li`,properties:a,children:o};return e.patch(t,l),e.applyData(t,l)}function gt(e){let t=!1;if(e.type===`list`){t=e.spread||!1;let n=e.children,r=-1;for(;!t&&++r<n.length;)t=_t(n[r])}return t}function _t(e){return e.spread??e.children.length>1}function vt(e,t){let n={},r=e.all(t),i=-1;for(typeof t.start==`number`&&t.start!==1&&(n.start=t.start);++i<r.length;){let e=r[i];if(e.type===`element`&&e.tagName===`li`&&e.properties&&Array.isArray(e.properties.className)&&e.properties.className.includes(`task-list-item`)){n.className=[`contains-task-list`];break}}let a={type:`element`,tagName:t.ordered?`ol`:`ul`,properties:n,children:e.wrap(r,!0)};return e.patch(t,a),e.applyData(t,a)}function yt(e,t){let n={type:`element`,tagName:`p`,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function bt(e,t){let n={type:`root`,children:e.wrap(e.all(t))};return e.patch(t,n),e.applyData(t,n)}function xt(e,t){let n={type:`element`,tagName:`strong`,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function St(e,t){let n=e.all(t),r=n.shift(),i=[];if(r){let n={type:`element`,tagName:`thead`,properties:{},children:e.wrap([r],!0)};e.patch(t.children[0],n),i.push(n)}if(n.length>0){let r={type:`element`,tagName:`tbody`,properties:{},children:e.wrap(n,!0)},a=Oe(t.children[1]),o=De(t.children[t.children.length-1]);a&&o&&(r.position={start:a,end:o}),i.push(r)}let a={type:`element`,tagName:`table`,properties:{},children:e.wrap(i,!0)};return e.patch(t,a),e.applyData(t,a)}function Ct(e,t,n){let r=n?n.children:void 0,i=(r?r.indexOf(t):1)===0?`th`:`td`,a=n&&n.type===`table`?n.align:void 0,o=a?a.length:t.children.length,s=-1,c=[];for(;++s<o;){let n=t.children[s],r={},o=a?a[s]:void 0;o&&(r.align=o);let l={type:`element`,tagName:i,properties:r,children:[]};n&&(l.children=e.all(n),e.patch(n,l),l=e.applyData(n,l)),c.push(l)}let l={type:`element`,tagName:`tr`,properties:{},children:e.wrap(c,!0)};return e.patch(t,l),e.applyData(t,l)}function wt(e,t){let n={type:`element`,tagName:`td`,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}var Tt=9,Et=32;function Dt(e){let t=String(e),n=/\r?\n|\r/g,r=n.exec(t),i=0,a=[];for(;r;)a.push(Ot(t.slice(i,r.index),i>0,!0),r[0]),i=r.index+r[0].length,r=n.exec(t);return a.push(Ot(t.slice(i),i>0,!1)),a.join(``)}function Ot(e,t,n){let r=0,i=e.length;if(t){let t=e.codePointAt(r);for(;t===Tt||t===Et;)r++,t=e.codePointAt(r)}if(n){let t=e.codePointAt(i-1);for(;t===Tt||t===Et;)i--,t=e.codePointAt(i-1)}return i>r?e.slice(r,i):``}function kt(e,t){let n={type:`text`,value:Dt(String(t.value))};return e.patch(t,n),e.applyData(t,n)}function At(e,t){let n={type:`element`,tagName:`hr`,properties:{},children:[]};return e.patch(t,n),e.applyData(t,n)}var jt={blockquote:tt,break:nt,code:rt,delete:it,emphasis:at,footnoteReference:ot,heading:st,html:ct,imageReference:ut,image:dt,inlineCode:ft,linkReference:pt,link:mt,listItem:ht,list:vt,paragraph:yt,root:bt,strong:xt,table:St,tableCell:wt,tableRow:Ct,text:kt,thematicBreak:At,toml:B,yaml:B,definition:B,footnoteDefinition:B};function B(){}var Mt=typeof self==`object`?self:globalThis,Nt=(e,t)=>{switch(e){case`Function`:case`SharedWorker`:case`Worker`:case`eval`:case`setInterval`:case`setTimeout`:throw TypeError(`unable to deserialize `+e)}return new Mt[e](t)},Pt=(e,t)=>{let n=(t,n)=>(e.set(n,t),t),r=i=>{if(e.has(i))return e.get(i);let[a,o]=t[i];switch(a){case 0:case-1:return n(o,i);case 1:{let e=n([],i);for(let t of o)e.push(r(t));return e}case 2:{let e=n({},i);for(let[t,n]of o)e[r(t)]=r(n);return e}case 3:return n(new Date(o),i);case 4:{let{source:e,flags:t}=o;return n(new RegExp(e,t),i)}case 5:{let e=n(new Map,i);for(let[t,n]of o)e.set(r(t),r(n));return e}case 6:{let e=n(new Set,i);for(let t of o)e.add(r(t));return e}case 7:{let{name:e,message:t}=o;return n(typeof Mt[e]==`function`?Nt(e,t):Error(t),i)}case 8:return n(BigInt(o),i);case`BigInt`:return n(Object(BigInt(o)),i);case`ArrayBuffer`:return n(new Uint8Array(o).buffer,o);case`DataView`:{let{buffer:e}=new Uint8Array(o);return n(new DataView(e),o)}}return n(Nt(a,o),i)};return r},Ft=e=>Pt(new Map,e)(0),V=``,{toString:It}={},{keys:Lt}=Object,H=e=>{let t=typeof e;if(t!==`object`||!e)return[0,t];let n=It.call(e).slice(8,-1);switch(n){case`Array`:return[1,V];case`Object`:return[2,V];case`Date`:return[3,V];case`RegExp`:return[4,V];case`Map`:return[5,V];case`Set`:return[6,V];case`DataView`:return[1,n]}return n.includes(`Array`)?[1,n]:e instanceof Error?[7,e.name||`Error`]:[2,n]},U=([e,t])=>e===0&&(t===`function`||t===`symbol`),Rt=(e,t,n,r)=>{let i=(e,t)=>{let i=r.push(e)-1;return n.set(t,i),i},a=r=>{if(n.has(r))return n.get(r);let[o,s]=H(r);switch(o){case 0:{let t=r;switch(s){case`bigint`:o=8,t=r.toString();break;case`function`:case`symbol`:if(e)throw TypeError(`unable to serialize `+s);t=null;break;case`undefined`:return i([-1],r)}return i([o,t],r)}case 1:{if(s){let e=r;return s===`DataView`?e=new Uint8Array(r.buffer):s===`ArrayBuffer`&&(e=new Uint8Array(r)),i([s,[...e]],r)}let e=[],t=i([o,e],r);for(let t of r)e.push(a(t));return t}case 2:{if(s)switch(s){case`BigInt`:return i([s,r.toString()],r);case`Boolean`:case`Number`:case`String`:return i([s,r.valueOf()],r)}if(t&&`toJSON`in r)return a(r.toJSON());let n=[],c=i([o,n],r);for(let t of Lt(r))(e||!U(H(r[t])))&&n.push([a(t),a(r[t])]);return c}case 3:return i([o,isNaN(r.getTime())?V:r.toISOString()],r);case 4:{let{source:e,flags:t}=r;return i([o,{source:e,flags:t}],r)}case 5:{let t=[],n=i([o,t],r);for(let[n,i]of r)(e||!(U(H(n))||U(H(i))))&&t.push([a(n),a(i)]);return n}case 6:{let t=[],n=i([o,t],r);for(let n of r)(e||!U(H(n)))&&t.push(a(n));return n}}let{message:c}=r;return i([o,{name:s,message:c}],r)};return a},zt=(e,{json:t,lossy:n}={})=>{let r=[];return Rt(!(t||n),!!t,new Map,r)(e),r},W=typeof structuredClone==`function`?(e,t)=>t&&(`json`in t||`lossy`in t)?Ft(zt(e,t)):structuredClone(e):(e,t)=>Ft(zt(e,t));function Bt(e,t){let n=[{type:`text`,value:`↩`}];return t>1&&n.push({type:`element`,tagName:`sup`,properties:{},children:[{type:`text`,value:String(t)}]}),n}function Vt(e,t){return`Back to reference `+(e+1)+(t>1?`-`+t:``)}function Ht(e){let t=typeof e.options.clobberPrefix==`string`?e.options.clobberPrefix:`user-content-`,n=e.options.footnoteBackContent||Bt,r=e.options.footnoteBackLabel||Vt,i=e.options.footnoteLabel||`Footnotes`,a=e.options.footnoteLabelTagName||`h2`,o=e.options.footnoteLabelProperties||{className:[`sr-only`]},s=[],c=-1;for(;++c<e.footnoteOrder.length;){let i=e.footnoteById.get(e.footnoteOrder[c]);if(!i)continue;let a=e.all(i),o=String(i.identifier).toUpperCase(),l=C(o.toLowerCase()),u=0,d=[],f=e.footnoteCounts.get(o);for(;f!==void 0&&++u<=f;){d.length>0&&d.push({type:`text`,value:` `});let e=typeof n==`string`?n:n(c,u);typeof e==`string`&&(e={type:`text`,value:e}),d.push({type:`element`,tagName:`a`,properties:{href:`#`+t+`fnref-`+l+(u>1?`-`+u:``),dataFootnoteBackref:``,ariaLabel:typeof r==`string`?r:r(c,u),className:[`data-footnote-backref`]},children:Array.isArray(e)?e:[e]})}let p=a[a.length-1];if(p&&p.type===`element`&&p.tagName===`p`){let e=p.children[p.children.length-1];e&&e.type===`text`?e.value+=` `:p.children.push({type:`text`,value:` `}),p.children.push(...d)}else a.push(...d);let m={type:`element`,tagName:`li`,properties:{id:t+`fn-`+l},children:e.wrap(a,!0)};e.patch(i,m),s.push(m)}if(s.length!==0)return{type:`element`,tagName:`section`,properties:{dataFootnotes:!0,className:[`footnotes`]},children:[{type:`element`,tagName:a,properties:{...W(o),id:`footnote-label`},children:[{type:`text`,value:i}]},{type:`text`,value:`
|
|
11
|
+
`},{type:`element`,tagName:`ol`,properties:{},children:e.wrap(s,!0)},{type:`text`,value:`
|
|
12
|
+
`}]}}var G={}.hasOwnProperty,Ut={};function Wt(e,t){let n=t||Ut,r=new Map,i=new Map,a={all:s,applyData:Kt,definitionById:r,footnoteById:i,footnoteCounts:new Map,footnoteOrder:[],handlers:{...jt,...n.handlers},one:o,options:n,patch:Gt,wrap:Jt};return A(e,function(e){if(e.type===`definition`||e.type===`footnoteDefinition`){let t=e.type===`definition`?r:i,n=String(e.identifier).toUpperCase();t.has(n)||t.set(n,e)}}),a;function o(e,t){let n=e.type,r=a.handlers[n];if(G.call(a.handlers,n)&&r)return r(a,e,t);if(a.options.passThrough&&a.options.passThrough.includes(n)){if(`children`in e){let{children:t,...n}=e,r=W(n);return r.children=a.all(e),r}return W(e)}return(a.options.unknownHandler||qt)(a,e,t)}function s(e){let t=[];if(`children`in e){let n=e.children,r=-1;for(;++r<n.length;){let i=a.one(n[r],e);if(i){if(r&&n[r-1].type===`break`&&(!Array.isArray(i)&&i.type===`text`&&(i.value=Yt(i.value)),!Array.isArray(i)&&i.type===`element`)){let e=i.children[0];e&&e.type===`text`&&(e.value=Yt(e.value))}Array.isArray(i)?t.push(...i):t.push(i)}}}return t}}function Gt(e,t){e.position&&(t.position=Ae(e))}function Kt(e,t){let n=t;if(e&&e.data){let t=e.data.hName,r=e.data.hChildren,i=e.data.hProperties;typeof t==`string`&&(n.type===`element`?n.tagName=t:n={type:`element`,tagName:t,properties:{},children:`children`in n?n.children:[n]}),n.type===`element`&&i&&Object.assign(n.properties,W(i)),`children`in n&&n.children&&r!=null&&(n.children=r)}return n}function qt(e,t){let n=t.data||{},r=`value`in t&&!(G.call(n,`hProperties`)||G.call(n,`hChildren`))?{type:`text`,value:t.value}:{type:`element`,tagName:`div`,properties:{},children:e.all(t)};return e.patch(t,r),e.applyData(t,r)}function Jt(e,t){let n=[],r=-1;for(t&&n.push({type:`text`,value:`
|
|
13
|
+
`});++r<e.length;)r&&n.push({type:`text`,value:`
|
|
14
|
+
`}),n.push(e[r]);return t&&e.length>0&&n.push({type:`text`,value:`
|
|
15
|
+
`}),n}function Yt(e){let t=0,n=e.charCodeAt(t);for(;n===9||n===32;)t++,n=e.charCodeAt(t);return e.slice(t)}function Xt(e,t){let n=Wt(e,t),r=n.one(e,void 0),i=Ht(n),a=Array.isArray(r)?{type:`root`,children:r}:r||{type:`root`,children:[]};return i&&(S(`children`in a),a.children.push({type:`text`,value:`
|
|
16
|
+
`},i)),a}function Zt(e,t){return e&&`run`in e?async function(n,r){let i=Xt(n,{file:r,...t});await e.run(i,r)}:function(n,r){return Xt(n,{file:r,...e||t})}}var K=l(),Qt=[],$t={allowDangerousHtml:!0},en=/^(https?|ircs?|mailto|xmpp)$/i,tn=[{from:`astPlugins`,id:`remove-buggy-html-in-markdown-parser`},{from:`allowDangerousHtml`,id:`remove-buggy-html-in-markdown-parser`},{from:`allowNode`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`allowElement`},{from:`allowedTypes`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`allowedElements`},{from:`className`,id:`remove-classname`},{from:`disallowedTypes`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`disallowedElements`},{from:`escapeHtml`,id:`remove-buggy-html-in-markdown-parser`},{from:`includeElementIndex`,id:`#remove-includeelementindex`},{from:`includeNodeIndex`,id:`change-includenodeindex-to-includeelementindex`},{from:`linkTarget`,id:`remove-linktarget`},{from:`plugins`,id:`change-plugins-to-remarkplugins`,to:`remarkPlugins`},{from:`rawSourcePos`,id:`#remove-rawsourcepos`},{from:`renderers`,id:`change-renderers-to-components`,to:`components`},{from:`source`,id:`change-source-to-children`,to:`children`},{from:`sourcePos`,id:`#remove-sourcepos`},{from:`transformImageUri`,id:`#add-urltransform`,to:`urlTransform`},{from:`transformLinkUri`,id:`#add-urltransform`,to:`urlTransform`}];function nn(e){let t=rn(e),n=an(e);return on(t.runSync(t.parse(n),n),e)}function rn(e){let t=e.rehypePlugins||Qt,n=e.remarkPlugins||Qt,r=e.remarkRehypeOptions?{...e.remarkRehypeOptions,...$t}:$t;return O().use(ie).use(n).use(Zt,r).use(t)}function an(e){let t=e.children||``,n=new re;return typeof t==`string`?n.value=t:x("Unexpected value `"+t+"` for `children` prop, expected `string`"),n}function on(e,t){let n=t.allowedElements,r=t.allowElement,i=t.components,a=t.disallowedElements,o=t.skipHtml,s=t.unwrapDisallowed,c=t.urlTransform||sn;for(let e of tn)Object.hasOwn(t,e.from)&&x("Unexpected `"+e.from+"` prop, "+(e.to?"use `"+e.to+"` instead":`remove it`)+` (see <https://github.com/remarkjs/react-markdown/blob/main/changelog.md#`+e.id+`> for more info)`);return n&&a&&x("Unexpected combined `allowedElements` and `disallowedElements`, expected one or the other"),A(e,l),Ie(e,{Fragment:K.Fragment,components:i,ignoreInvalidStyle:!0,jsx:K.jsx,jsxs:K.jsxs,passKeys:!0,passNode:!0});function l(e,t,i){if(e.type===`raw`&&i&&typeof t==`number`)return o?i.children.splice(t,1):i.children[t]={type:`text`,value:e.value},t;if(e.type===`element`){let t;for(t in z)if(Object.hasOwn(z,t)&&Object.hasOwn(e.properties,t)){let n=e.properties[t],r=z[t];(r===null||r.includes(e.tagName))&&(e.properties[t]=c(String(n||``),t,e))}}if(e.type===`element`){let o=n?!n.includes(e.tagName):a?a.includes(e.tagName):!1;if(!o&&r&&typeof t==`number`&&(o=!r(e,t,i)),o&&i&&typeof t==`number`)return s&&e.children?i.children.splice(t,1,...e.children):i.children.splice(t,1),t}}}function sn(e){let t=e.indexOf(`:`),n=e.indexOf(`?`),r=e.indexOf(`#`),i=e.indexOf(`/`);return t===-1||i!==-1&&t>i||n!==-1&&t>n||r!==-1&&t>r||en.test(e.slice(0,t))?e:``}var cn=/^[A-Za-z0-9._~%-]+$/;function ln(e,t){let n=e.split(`/`).filter(Boolean),r=t.split(`/`).filter(Boolean),i={};for(let e=0;e<r.length;e++){let t=r[e];if(t===`*`)return n.length>=e?i:null;let a=n[e];if(a===void 0)return null;if(t.startsWith(`:`)){if(!cn.test(a))return null;i[t.slice(1)]=a}else if(t!==a)return null}return n.length===r.length?i:null}function un(e,t,n,r=[]){let i=e.trim();if(!i||i.startsWith(`//`)||!i.startsWith(`/`)&&!/^https?:\/\//i.test(i))return{kind:`text`};let a;try{a=new URL(i,t)}catch{return{kind:`text`}}if(a.origin!==t)return{kind:`external`,href:a.href};for(let e of n){let t=ln(a.pathname,e.pattern);if(t)return r.length&&t.library!==void 0&&t.shelf!==void 0&&!r.some(e=>e.library===t.library&&e.shelf===t.shelf)?{kind:`text`}:{kind:`internal`,to:`${a.pathname}${a.search}${a.hash}`}}return{kind:`text`}}var q=o(),dn=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/plugin-webchat/src/ui/chat-nav.tsx`,fn=(0,M.createContext)(()=>{});function pn({onNavigate:e,children:t}){return(0,q.jsxDEV)(fn.Provider,{value:e,children:t},void 0,!1,{fileName:dn,lineNumber:9,columnNumber:10},this)}function mn(){return(0,M.useContext)(fn)}var J=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/plugin-webchat/src/ui/chat-markdown.tsx`;function hn({text:e,className:t}){return(0,q.jsxDEV)(`div`,{className:t,children:(0,q.jsxDEV)(nn,{remarkPlugins:[ae],components:{a:gn},children:e},void 0,!1,{fileName:J,lineNumber:18,columnNumber:7},this)},void 0,!1,{fileName:J,lineNumber:17,columnNumber:5},this)}function gn({href:e,children:t}){let n=mn(),r=a(),i=[...u(),...y().map(e=>({pattern:`/${e.path}`}))],o=un(e??``,window.location.origin,i,f());return o.kind===`internal`?(0,q.jsxDEV)(`a`,{href:o.to,onClick:e=>{e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||(e.preventDefault(),n(),r(o.to))},children:t},void 0,!1,{fileName:J,lineNumber:33,columnNumber:7},this):o.kind===`external`?(0,q.jsxDEV)(`a`,{href:o.href,target:`_blank`,rel:`noopener noreferrer`,children:t},void 0,!1,{fileName:J,lineNumber:50,columnNumber:7},this):(0,q.jsxDEV)(q.Fragment,{children:t},void 0,!1,{fileName:J,lineNumber:55,columnNumber:10},this)}var Y=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/plugin-webchat/src/ui/ChatMessages.tsx`;function _n({messages:e,pending:t,pendingReasoning:n}){let{t:i}=r(),a=(0,M.useRef)(null);return(0,M.useEffect)(()=>{let e=a.current;e&&(e.scrollTop=e.scrollHeight)},[e.length,t]),!e.length&&t===null&&n===null?(0,q.jsxDEV)(`div`,{className:`flex-1 grid place-items-center text-muted text-sm`,children:i(`webchat.empty`)},void 0,!1,{fileName:Y,lineNumber:20,columnNumber:12},this):(0,q.jsxDEV)(`div`,{ref:a,"data-chat-list":!0,className:`flex min-h-0 flex-1 flex-col gap-3 overflow-y-auto p-3`,children:[e.map(e=>(0,q.jsxDEV)(vn,{role:e.role,text:e.text,reasoning:e.reasoning,attachments:e.attachments},e.msgId,!1,{fileName:Y,lineNumber:27,columnNumber:9},this)),t!==null&&(0,q.jsxDEV)(vn,{role:`assistant`,text:t||i(`webchat.thinking`),reasoning:n},void 0,!1,{fileName:Y,lineNumber:29,columnNumber:28},this)]},void 0,!0,{fileName:Y,lineNumber:25,columnNumber:5},this)}var vn=(0,M.memo)(function({role:e,text:t,reasoning:n,attachments:i}){let{t:a}=r();return e===`user`?(0,q.jsxDEV)(`div`,{className:`self-end max-w-[85%] rounded-2xl rounded-br-sm bg-accent/15 px-3 py-2 text-sm whitespace-pre-wrap break-words`,children:[i?.length?(0,q.jsxDEV)(`div`,{className:`mb-1.5 flex flex-wrap gap-1`,children:i.map(e=>(0,q.jsxDEV)(`span`,{className:`inline-flex max-w-full items-center rounded-md bg-bg/60 px-1.5 py-0.5 text-xs`,title:e.name,children:e.label??e.name},e.name,!1,{fileName:Y,lineNumber:47,columnNumber:37},this))},void 0,!1,{fileName:Y,lineNumber:46,columnNumber:11},this):null,t]},void 0,!0,{fileName:Y,lineNumber:44,columnNumber:7},this):(0,q.jsxDEV)(`div`,{className:`self-start max-w-[95%] min-w-0 rounded-2xl rounded-bl-sm bg-elevated px-3 py-2 text-sm break-words`,children:[n?(0,q.jsxDEV)(`details`,{className:`mb-2 rounded-lg border border-border px-2 py-1`,children:[(0,q.jsxDEV)(`summary`,{className:`cursor-pointer select-none text-xs text-muted`,children:a(`webchat.reasoning`)},void 0,!1,{fileName:Y,lineNumber:59,columnNumber:11},this),(0,q.jsxDEV)(hn,{text:n,className:`md-static mt-1 text-xs text-muted`},void 0,!1,{fileName:Y,lineNumber:60,columnNumber:11},this)]},void 0,!0,{fileName:Y,lineNumber:58,columnNumber:9},this):null,(0,q.jsxDEV)(hn,{text:t,className:`md-static`},void 0,!1,{fileName:Y,lineNumber:63,columnNumber:7},this)]},void 0,!0,{fileName:Y,lineNumber:55,columnNumber:5},this)}),X=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/plugin-webchat/src/ui/ChatComposer.tsx`;function yn({streaming:e,onSend:t,onStop:n,attachments:i,uploading:a,uploadError:o,uploadProgress:s,canRetryUpload:l,onRetryUpload:u,onPickFiles:f,onRemoveAttachment:p}){let{t:g}=r(),[_,y]=(0,M.useState)(``);function b(){!_.trim()||e||t(_.trim(),i)&&y(``)}return(0,q.jsxDEV)(`div`,{className:`flex shrink-0 flex-col gap-2 border-t border-border p-2`,children:[(i.length>0||a||o)&&(0,q.jsxDEV)(`div`,{className:`flex flex-wrap items-center gap-1.5 px-1`,"data-chat-attachments":!0,children:[i.map((e,t)=>(0,q.jsxDEV)(`span`,{className:`inline-flex min-w-0 max-w-full items-center gap-1 rounded-md bg-elevated px-2 py-1 text-xs`,children:[(0,q.jsxDEV)(d,{size:13,className:`shrink-0 text-muted`},void 0,!1,{fileName:X,lineNumber:50,columnNumber:15},this),(0,q.jsxDEV)(`span`,{className:`max-w-48 truncate`,children:e.label??e.name},void 0,!1,{fileName:X,lineNumber:51,columnNumber:15},this),(0,q.jsxDEV)(`button`,{type:`button`,"aria-label":g(`webchat.removeAttachment`,{name:e.label??e.name}),className:`shrink-0 rounded p-0.5 text-muted hover:text-danger`,onClick:()=>p(t),children:(0,q.jsxDEV)(c,{size:13},void 0,!1,{fileName:X,lineNumber:58,columnNumber:17},this)},void 0,!1,{fileName:X,lineNumber:52,columnNumber:15},this)]},`${e.name}-${t}`,!0,{fileName:X,lineNumber:49,columnNumber:13},this)),a&&(0,q.jsxDEV)(`div`,{className:`flex min-w-32 flex-1 items-center gap-2`,"aria-label":g(`webchat.uploading`),children:[(0,q.jsxDEV)(h,{size:14,className:`shrink-0 animate-spin text-muted`},void 0,!1,{fileName:X,lineNumber:64,columnNumber:15},this),(0,q.jsxDEV)(`div`,{role:`progressbar`,"aria-label":g(`webchat.uploadProgress`),"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":s,className:`h-1.5 min-w-0 flex-1 overflow-hidden rounded-full bg-border`,children:(0,q.jsxDEV)(`div`,{className:`h-full rounded-full bg-accent transition-[width]`,style:{width:`${s}%`}},void 0,!1,{fileName:X,lineNumber:66,columnNumber:17},this)},void 0,!1,{fileName:X,lineNumber:65,columnNumber:15},this),(0,q.jsxDEV)(`span`,{className:`text-xs tabular-nums text-muted`,children:[s,`%`]},void 0,!0,{fileName:X,lineNumber:68,columnNumber:15},this)]},void 0,!0,{fileName:X,lineNumber:63,columnNumber:13},this),o&&(0,q.jsxDEV)(`div`,{className:`flex min-w-0 flex-1 items-center gap-2 text-xs text-danger`,children:[(0,q.jsxDEV)(`span`,{className:`min-w-0 flex-1`,children:g(o)},void 0,!1,{fileName:X,lineNumber:73,columnNumber:15},this),l&&(0,q.jsxDEV)(`button`,{type:`button`,className:`inline-flex shrink-0 items-center gap-1 rounded px-1.5 py-0.5 font-medium text-accent hover:bg-elevated`,onClick:u,children:[(0,q.jsxDEV)(m,{size:12},void 0,!1,{fileName:X,lineNumber:76,columnNumber:19},this),` `,g(`webchat.retryUpload`)]},void 0,!0,{fileName:X,lineNumber:75,columnNumber:17},this)]},void 0,!0,{fileName:X,lineNumber:72,columnNumber:13},this)]},void 0,!0,{fileName:X,lineNumber:47,columnNumber:9},this),(0,q.jsxDEV)(`div`,{className:`flex items-end gap-2`,children:[(0,q.jsxDEV)(`label`,{"aria-label":g(`webchat.attach`),className:`cursor-pointer rounded-lg p-2 text-muted hover:bg-elevated hover:text-accent ${a?`pointer-events-none opacity-60`:``}`,children:[(0,q.jsxDEV)(ue,{size:18},void 0,!1,{fileName:X,lineNumber:88,columnNumber:11},this),(0,q.jsxDEV)(`input`,{type:`file`,multiple:!0,className:`hidden`,disabled:a,onChange:e=>{e.target.files?.length&&f(e.target.files),e.currentTarget.value=``}},void 0,!1,{fileName:X,lineNumber:89,columnNumber:11},this)]},void 0,!0,{fileName:X,lineNumber:84,columnNumber:9},this),(0,q.jsxDEV)(`textarea`,{className:`flex-1 resize-none rounded-lg border border-border bg-bg px-3 py-2 text-sm max-h-32`,rows:1,value:_,placeholder:g(`webchat.placeholder`),onChange:e=>y(e.target.value),onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),b())}},void 0,!1,{fileName:X,lineNumber:100,columnNumber:9},this),e?(0,q.jsxDEV)(`button`,{"aria-label":g(`webchat.stop`),className:`rounded-lg p-2 hover:bg-elevated`,onClick:n,children:(0,q.jsxDEV)(v,{size:18},void 0,!1,{fileName:X,lineNumber:116,columnNumber:13},this)},void 0,!1,{fileName:X,lineNumber:115,columnNumber:11},this):(0,q.jsxDEV)(`button`,{"aria-label":g(`webchat.send`),className:`rounded-lg p-2 hover:bg-elevated`,onClick:b,children:(0,q.jsxDEV)(de,{size:18},void 0,!1,{fileName:X,lineNumber:120,columnNumber:13},this)},void 0,!1,{fileName:X,lineNumber:119,columnNumber:11},this)]},void 0,!0,{fileName:X,lineNumber:83,columnNumber:7},this)]},void 0,!0,{fileName:X,lineNumber:45,columnNumber:5},this)}var Z=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/plugin-webchat/src/ui/ChatThreadList.tsx`;function bn({threads:e,activeId:t,onOpen:n,onNew:i,className:a=`w-[220px] shrink-0`}){let{t:o}=r();return(0,q.jsxDEV)(`aside`,{"aria-label":o(`webchat.threads`),className:`${a} border-r border-border flex flex-col`,children:[(0,q.jsxDEV)(`button`,{className:`flex items-center gap-2 px-3 py-2 text-sm hover:bg-elevated`,onClick:i,children:[(0,q.jsxDEV)(_,{size:16},void 0,!1,{fileName:Z,lineNumber:23,columnNumber:9},this),` `,o(`webchat.newConversation`)]},void 0,!0,{fileName:Z,lineNumber:22,columnNumber:7},this),(0,q.jsxDEV)(`div`,{className:`flex-1 overflow-y-auto`,children:e.map(e=>(0,q.jsxDEV)(`button`,{onClick:()=>n(e.convId),className:`block w-full truncate px-3 py-2 text-left text-sm hover:bg-elevated ${e.convId===t?`bg-elevated font-medium`:``}`,children:e.title||o(`webchat.newConversation`)},e.convId,!1,{fileName:Z,lineNumber:27,columnNumber:11},this))},void 0,!1,{fileName:Z,lineNumber:25,columnNumber:7},this)]},void 0,!0,{fileName:Z,lineNumber:21,columnNumber:5},this)}var Q=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/plugin-webchat/src/ui/ChatWidget.tsx`,xn=25*1024*1024;function $(e){return Array.from(e.dataTransfer.types).includes(`Files`)}function Sn({children:e,onFiles:t,className:n}){let{t:i}=r(),[a,o]=(0,M.useState)(!1),s=(0,M.useRef)(0);function c(e){$(e)&&(e.preventDefault(),s.current+=1,o(!0))}function l(e){$(e)&&(e.preventDefault(),s.current=Math.max(0,s.current-1),s.current===0&&o(!1))}function u(e){$(e)&&(e.preventDefault(),s.current=0,o(!1),t(Array.from(e.dataTransfer.files)))}return(0,q.jsxDEV)(`div`,{className:n,onDragEnter:c,onDragLeave:l,onDragOver:e=>{$(e)&&(e.preventDefault(),e.dataTransfer.dropEffect=`copy`)},onDrop:u,children:[e,a&&(0,q.jsxDEV)(`div`,{"data-chat-drop-overlay":!0,"data-testid":`chat-drop-overlay`,className:`pointer-events-none absolute inset-0 z-50 grid place-items-center bg-surface/95 p-6 text-center backdrop-blur-sm`,children:(0,q.jsxDEV)(`div`,{className:`flex h-full w-full flex-col items-center justify-center rounded-2xl border-2 border-dashed border-accent bg-accent/10 text-accent`,children:[(0,q.jsxDEV)(g,{size:34},void 0,!1,{fileName:Q,lineNumber:71,columnNumber:13},this),(0,q.jsxDEV)(`span`,{className:`mt-3 text-base font-medium`,children:i(`webchat.dropFiles`)},void 0,!1,{fileName:Q,lineNumber:72,columnNumber:13},this),(0,q.jsxDEV)(`span`,{className:`mt-1 text-xs text-muted`,children:i(`webchat.dropFilesHint`)},void 0,!1,{fileName:Q,lineNumber:73,columnNumber:13},this)]},void 0,!0,{fileName:Q,lineNumber:70,columnNumber:11},this)},void 0,!1,{fileName:Q,lineNumber:69,columnNumber:9},this)]},void 0,!0,{fileName:Q,lineNumber:51,columnNumber:5},this)}function Cn(e){return e?`panel`:`bubble`}function wn(){let{t:e}=r(),t=_e(),n=ve(),[i,a]=(0,M.useState)(`bubble`),[o,s]=(0,M.useState)(!1),[l,u]=(0,M.useState)([]),[d,f]=(0,M.useState)(!1),[m,h]=(0,M.useState)(0),[g,v]=(0,M.useState)(null),[y,x]=(0,M.useState)([]),S=p(`sm`,640),C=p(`nav`,768),ne=(0,M.useCallback)(()=>{a(Cn(C))},[C]),w=(0,M.useRef)(null),T=(0,M.useRef)(`bubble`);(0,M.useEffect)(()=>{if(i!==`modal`)return;let e=e=>{e.key===`Escape`&&a(`panel`)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[i]),(0,M.useEffect)(()=>{i===`panel`&&T.current===`modal`&&w.current?.focus(),i!==`modal`&&s(!1),T.current=i},[i]),(0,M.useEffect)(()=>{if(i!==`modal`)return;let e=document.body.style.overflow;return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=e}},[i]);let E=i!==`bubble`;(0,M.useEffect)(()=>{E&&t.loadThreads()},[E,t.loadThreads]);function D(){t.newConversation(),u([]),v(null),x([]),s(!1)}let O=(0,M.useCallback)(async e=>{if(!e.length)return;v(null),x([]),f(!0),h(0);let t=[],n=[],r=null;for(let i of e){if(i.size>xn){r??=`webchat.uploadTooLarge`;continue}try{h(0);let e=await b(i,h);e?t.push({...e,label:i.name}):(n.push(i),r??=`webchat.uploadFailed`)}catch{n.push(i),r??=`webchat.uploadFailed`}}t.length&&u(e=>[...e,...t]),f(!1),h(0),x(n),r&&v(r)},[]),k=(0,M.useCallback)(()=>{y.length&&O(y)},[O,y]),re=t.messages.length>0||t.pending!==null,A=(0,q.jsxDEV)(`div`,{className:`flex shrink-0 items-center justify-between border-b border-border px-3 py-2`,children:[(0,q.jsxDEV)(`span`,{className:`text-sm font-medium`,children:e(`webchat.title`)},void 0,!1,{fileName:Q,lineNumber:204,columnNumber:7},this),(0,q.jsxDEV)(`div`,{className:`flex items-center gap-1`,children:[i===`modal`&&!S&&(0,q.jsxDEV)(`button`,{"aria-label":e(`webchat.threads`),"aria-expanded":o,className:`rounded p-1 hover:bg-elevated`,onClick:()=>s(e=>!e),children:(0,q.jsxDEV)(oe,{size:16},void 0,!1,{fileName:Q,lineNumber:215,columnNumber:13},this)},void 0,!1,{fileName:Q,lineNumber:209,columnNumber:11},this),re&&(0,q.jsxDEV)(`button`,{"aria-label":e(`webchat.newConversation`),className:`rounded p-1 hover:bg-elevated`,onClick:D,children:(0,q.jsxDEV)(_,{size:16},void 0,!1,{fileName:Q,lineNumber:224,columnNumber:13},this)},void 0,!1,{fileName:Q,lineNumber:223,columnNumber:11},this),(0,q.jsxDEV)(`button`,{ref:w,"aria-label":e(i===`modal`?`webchat.collapse`:`webchat.expand`),className:`rounded p-1 hover:bg-elevated`,onClick:()=>a(i===`modal`?`panel`:`modal`),children:i===`modal`?(0,q.jsxDEV)(le,{size:16},void 0,!1,{fileName:Q,lineNumber:233,columnNumber:31},this):(0,q.jsxDEV)(se,{size:16},void 0,!1,{fileName:Q,lineNumber:233,columnNumber:57},this)},void 0,!1,{fileName:Q,lineNumber:227,columnNumber:9},this),(0,q.jsxDEV)(`button`,{"aria-label":e(`webchat.close`),className:`rounded p-1 hover:bg-elevated`,onClick:()=>a(`bubble`),children:(0,q.jsxDEV)(c,{size:16},void 0,!1,{fileName:Q,lineNumber:236,columnNumber:11},this)},void 0,!1,{fileName:Q,lineNumber:235,columnNumber:9},this)]},void 0,!0,{fileName:Q,lineNumber:205,columnNumber:7},this)]},void 0,!0,{fileName:Q,lineNumber:203,columnNumber:5},this),j=(0,q.jsxDEV)(pn,{onNavigate:ne,children:(0,q.jsxDEV)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col`,children:[t.error&&(0,q.jsxDEV)(`div`,{className:`px-3 py-2 text-sm text-danger`,children:e(`webchat.error`,{message:t.error})},void 0,!1,{fileName:Q,lineNumber:247,columnNumber:24},this),(0,q.jsxDEV)(_n,{messages:t.messages,pending:t.pending,pendingReasoning:t.pendingReasoning},void 0,!1,{fileName:Q,lineNumber:248,columnNumber:9},this),(0,q.jsxDEV)(yn,{streaming:t.pending!==null,attachments:l,uploading:d,uploadProgress:m,uploadError:g,canRetryUpload:y.length>0&&!d,onRetryUpload:k,onPickFiles:e=>void O(Array.from(e)),onRemoveAttachment:e=>u(t=>t.filter((t,n)=>n!==e)),onSend:(e,r)=>{let i=r.length?t.send(e,n,r):t.send(e,n);return i&&(u([]),v(null),x([])),i},onStop:t.stop},void 0,!1,{fileName:Q,lineNumber:249,columnNumber:9},this)]},void 0,!0,{fileName:Q,lineNumber:246,columnNumber:7},this)},void 0,!1,{fileName:Q,lineNumber:243,columnNumber:5},this);if(i===`bubble`)return(0,q.jsxDEV)(`button`,{"aria-label":e(`webchat.open`),onClick:()=>a(S?`panel`:`modal`),className:`fixed bottom-20 right-4 z-40 grid h-14 w-14 place-items-center rounded-full bg-accent text-white shadow-lg nav:bottom-4`,children:(0,q.jsxDEV)(ce,{size:24},void 0,!1,{fileName:Q,lineNumber:284,columnNumber:9},this)},void 0,!1,{fileName:Q,lineNumber:276,columnNumber:7},this);if(i===`panel`)return(0,q.jsxDEV)(Sn,{onFiles:O,className:`fixed bottom-20 right-4 z-40 flex h-[560px] max-h-[80dvh] w-[380px] max-w-[calc(100vw-2rem)] flex-col overflow-hidden rounded-2xl border border-border bg-surface shadow-xl nav:bottom-4`,children:[A,j]},void 0,!0,{fileName:Q,lineNumber:291,columnNumber:7},this);let ie=S||o;return(0,q.jsxDEV)(te,{open:!0,modal:!1,onOpenChange:e=>!e&&a(`panel`),children:[(0,q.jsxDEV)(`div`,{"data-chat-backdrop":!0,"aria-hidden":`true`,className:`fixed inset-0 z-[45] bg-black/50 backdrop-blur-sm`},void 0,!1,{fileName:Q,lineNumber:311,columnNumber:7},this),(0,q.jsxDEV)(ee,{hideClose:!0,className:`h-[85dvh] w-full p-0 md:h-[85dvh] md:w-[80vw] md:max-w-[1040px] md:overflow-y-hidden`,children:(0,q.jsxDEV)(Sn,{onFiles:O,className:`h-full`,children:(0,q.jsxDEV)(`div`,{className:`flex h-full min-h-0 flex-col`,children:[A,(0,q.jsxDEV)(`div`,{className:`flex min-h-0 flex-1`,children:[ie&&(0,q.jsxDEV)(bn,{threads:t.threads,activeId:t.convId,onOpen:e=>{t.open(e),u([]),v(null),x([]),s(!1)},onNew:D,className:S?`w-[220px] shrink-0`:`w-full`},void 0,!1,{fileName:Q,lineNumber:326,columnNumber:17},this),(S||!o)&&j]},void 0,!0,{fileName:Q,lineNumber:324,columnNumber:13},this)]},void 0,!0,{fileName:Q,lineNumber:322,columnNumber:11},this)},void 0,!1,{fileName:Q,lineNumber:321,columnNumber:9},this)},void 0,!1,{fileName:Q,lineNumber:317,columnNumber:7},this)]},void 0,!0,{fileName:Q,lineNumber:308,columnNumber:5},this)}export{wn as ChatWidget,wn as default,Cn as nextModeAfterNav};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,t as n}from"./i18n-vendor-T6EnJ_TL.js";import{r,t as i}from"./react-vendor-BskHO5hY.js";import{t as a}from"./Icon-xpS9YUI8.js";import{t as o}from"./button-Bk5xd07h.js";import{g as s,m as c,p as l}from"./api-DsJ6cAbe.js";import{n as u,r as d}from"./auth-context-CpmpND1h.js";import{t as f}from"./PageBody-Y-cpiRMh.js";import{n as p,t as m}from"./version-BYktGE-Z.js";var h=e(t(),1),g=i(),_=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/app/DiagnosticsPage.tsx`;function v(){let{t:e}=n(),{role:t}=u(),[i,v]=(0,h.useState)(null),[b,x]=(0,h.useState)([]),[S,C]=(0,h.useState)(null),[w,T]=(0,h.useState)(`loading`),[E,D]=(0,h.useState)(!0),[O,k]=(0,h.useState)(!1),A=(0,h.useCallback)(async()=>{D(!0),k(!1),T(`loading`);let e=fetch(`/health`).then(e=>T(e.ok?`ok`:`error`)).catch(()=>T(`error`));try{let[e,t,n]=await Promise.all([l(),s(),c()]);v(e),x(t),C(n)}catch{k(!0)}finally{await e,D(!1)}},[]);if((0,h.useEffect)(()=>{t===`admin`&&A()},[A,t]),t!==`admin`)return(0,g.jsxDEV)(f,{children:[(0,g.jsxDEV)(r,{to:`/settings`,className:`text-sm text-accent hover:underline`,children:e(`settings.title`)},void 0,!1,{fileName:_,lineNumber:61,columnNumber:9},this),(0,g.jsxDEV)(`h1`,{className:`mt-4 text-2xl font-bold tracking-tight text-text`,children:e(`diagnostics.title`)},void 0,!1,{fileName:_,lineNumber:62,columnNumber:9},this),(0,g.jsxDEV)(`p`,{className:`mt-3 text-sm text-danger`,children:e(`diagnostics.adminOnly`)},void 0,!1,{fileName:_,lineNumber:63,columnNumber:9},this)]},void 0,!0,{fileName:_,lineNumber:60,columnNumber:7},this);let j=b.filter(e=>e.latestVersion&&m(e.latestVersion,e.installedVersion));return(0,g.jsxDEV)(f,{children:[(0,g.jsxDEV)(`div`,{className:`mb-6 flex items-start justify-between gap-4`,children:[(0,g.jsxDEV)(`div`,{children:[(0,g.jsxDEV)(r,{to:`/settings`,className:`text-sm text-accent hover:underline`,children:e(`settings.title`)},void 0,!1,{fileName:_,lineNumber:74,columnNumber:11},this),(0,g.jsxDEV)(`h1`,{className:`mt-2 text-2xl font-bold tracking-tight text-text`,children:e(`diagnostics.title`)},void 0,!1,{fileName:_,lineNumber:75,columnNumber:11},this),(0,g.jsxDEV)(`p`,{className:`mt-1 text-sm text-muted`,children:e(`diagnostics.description`)},void 0,!1,{fileName:_,lineNumber:76,columnNumber:11},this)]},void 0,!0,{fileName:_,lineNumber:73,columnNumber:9},this),(0,g.jsxDEV)(o,{type:`button`,variant:`ghost`,size:`sm`,className:`shrink-0 border border-border`,disabled:E,onClick:()=>void A(),children:[(0,g.jsxDEV)(a,{name:`lucide:refresh-cw`,size:15,className:E?`animate-spin`:void 0},void 0,!1,{fileName:_,lineNumber:79,columnNumber:11},this),e(E?`diagnostics.refreshing`:`diagnostics.refresh`)]},void 0,!0,{fileName:_,lineNumber:78,columnNumber:9},this)]},void 0,!0,{fileName:_,lineNumber:72,columnNumber:7},this),O&&(0,g.jsxDEV)(`div`,{className:`mb-5 rounded-lg border border-danger/40 bg-danger/10 px-4 py-3 text-sm text-danger`,children:e(`diagnostics.loadFailed`)},void 0,!1,{fileName:_,lineNumber:84,columnNumber:17},this),(0,g.jsxDEV)(`div`,{className:`grid gap-4 sm:grid-cols-3`,children:[(0,g.jsxDEV)(d,{className:`px-4 py-3`,children:[(0,g.jsxDEV)(`div`,{className:`text-xs text-muted`,children:e(`diagnostics.server`)},void 0,!1,{fileName:_,lineNumber:88,columnNumber:11},this),(0,g.jsxDEV)(`div`,{className:`mt-2 flex items-center gap-2 font-semibold text-text`,children:[(0,g.jsxDEV)(`span`,{className:`h-2.5 w-2.5 rounded-full ${w===`ok`?`bg-accent`:w===`error`?`bg-danger`:`bg-muted`}`},void 0,!1,{fileName:_,lineNumber:90,columnNumber:13},this),e(w===`ok`?`diagnostics.healthy`:w===`error`?`diagnostics.unavailable`:`common.loading`)]},void 0,!0,{fileName:_,lineNumber:89,columnNumber:11},this)]},void 0,!0,{fileName:_,lineNumber:87,columnNumber:9},this),(0,g.jsxDEV)(d,{className:`px-4 py-3`,children:[(0,g.jsxDEV)(`div`,{className:`text-xs text-muted`,children:e(`diagnostics.agents`)},void 0,!1,{fileName:_,lineNumber:95,columnNumber:11},this),(0,g.jsxDEV)(`div`,{className:`mt-2 flex flex-wrap gap-1.5`,children:i?.agents.map(e=>(0,g.jsxDEV)(p,{variant:`secondary`,children:e},e,!1,{fileName:_,lineNumber:96,columnNumber:82},this))??(0,g.jsxDEV)(`span`,{className:`text-sm text-muted`,children:`—`},void 0,!1,{fileName:_,lineNumber:96,columnNumber:135},this)},void 0,!1,{fileName:_,lineNumber:96,columnNumber:11},this)]},void 0,!0,{fileName:_,lineNumber:94,columnNumber:9},this),(0,g.jsxDEV)(d,{className:`px-4 py-3`,children:[(0,g.jsxDEV)(`div`,{className:`text-xs text-muted`,children:e(`diagnostics.connectors`)},void 0,!1,{fileName:_,lineNumber:99,columnNumber:11},this),(0,g.jsxDEV)(`div`,{className:`mt-2 flex flex-wrap gap-1.5`,children:i?.connectors.map(e=>(0,g.jsxDEV)(p,{variant:`secondary`,children:e},e,!1,{fileName:_,lineNumber:100,columnNumber:86},this))??(0,g.jsxDEV)(`span`,{className:`text-sm text-muted`,children:`—`},void 0,!1,{fileName:_,lineNumber:100,columnNumber:139},this)},void 0,!1,{fileName:_,lineNumber:100,columnNumber:11},this)]},void 0,!0,{fileName:_,lineNumber:98,columnNumber:9},this)]},void 0,!0,{fileName:_,lineNumber:86,columnNumber:7},this),(0,g.jsxDEV)(`section`,{className:`mt-6`,children:[(0,g.jsxDEV)(`h2`,{className:`mb-2 text-sm font-semibold text-text`,children:e(`diagnostics.versions`)},void 0,!1,{fileName:_,lineNumber:105,columnNumber:9},this),(0,g.jsxDEV)(d,{className:`overflow-hidden`,children:[(0,g.jsxDEV)(`div`,{className:`grid grid-cols-[1fr_auto_auto] gap-x-4 border-b border-border px-4 py-2 text-xs font-medium text-muted`,children:[(0,g.jsxDEV)(`span`,{children:e(`diagnostics.component`)},void 0,!1,{fileName:_,lineNumber:108,columnNumber:13},this),(0,g.jsxDEV)(`span`,{children:e(`diagnostics.installed`)},void 0,!1,{fileName:_,lineNumber:108,columnNumber:54},this),(0,g.jsxDEV)(`span`,{children:e(`diagnostics.latest`)},void 0,!1,{fileName:_,lineNumber:108,columnNumber:95},this)]},void 0,!0,{fileName:_,lineNumber:107,columnNumber:11},this),S?.installedVersion&&(0,g.jsxDEV)(y,{name:e(`settings.runtimeLabel`),installed:S.installedVersion,latest:S.latestVersion},void 0,!1,{fileName:_,lineNumber:110,columnNumber:41},this),b.filter(e=>e.id!==`core`).map(e=>(0,g.jsxDEV)(y,{name:e.id,installed:e.installedVersion,latest:e.latestVersion},e.id,!1,{fileName:_,lineNumber:111,columnNumber:62},this)),!S?.installedVersion&&b.length===0&&(0,g.jsxDEV)(`div`,{className:`px-4 py-4 text-sm text-muted`,children:e(`diagnostics.noData`)},void 0,!1,{fileName:_,lineNumber:112,columnNumber:66},this),j.length>0&&(0,g.jsxDEV)(`div`,{className:`border-t border-border px-4 py-2 text-xs text-accent`,children:e(`diagnostics.outdated`,{count:j.length})},void 0,!1,{fileName:_,lineNumber:113,columnNumber:35},this)]},void 0,!0,{fileName:_,lineNumber:106,columnNumber:9},this)]},void 0,!0,{fileName:_,lineNumber:104,columnNumber:7},this),(0,g.jsxDEV)(`section`,{className:`mt-6`,children:[(0,g.jsxDEV)(`h2`,{className:`mb-2 text-sm font-semibold text-text`,children:e(`diagnostics.recentMessages`)},void 0,!1,{fileName:_,lineNumber:118,columnNumber:9},this),(0,g.jsxDEV)(d,{className:`overflow-x-auto`,children:i?.recentMessages.length?(0,g.jsxDEV)(`table`,{className:`w-full min-w-[34rem] text-left text-xs`,children:[(0,g.jsxDEV)(`thead`,{className:`border-b border-border text-muted`,children:(0,g.jsxDEV)(`tr`,{children:[(0,g.jsxDEV)(`th`,{className:`px-4 py-2 font-medium`,children:e(`diagnostics.time`)},void 0,!1,{fileName:_,lineNumber:122,columnNumber:72},this),(0,g.jsxDEV)(`th`,{className:`px-4 py-2 font-medium`,children:e(`diagnostics.connector`)},void 0,!1,{fileName:_,lineNumber:122,columnNumber:138},this),(0,g.jsxDEV)(`th`,{className:`px-4 py-2 font-medium`,children:e(`diagnostics.role`)},void 0,!1,{fileName:_,lineNumber:122,columnNumber:209},this),(0,g.jsxDEV)(`th`,{className:`px-4 py-2 text-right font-medium`,children:e(`diagnostics.duration`)},void 0,!1,{fileName:_,lineNumber:122,columnNumber:275},this),(0,g.jsxDEV)(`th`,{className:`px-4 py-2 text-right font-medium`,children:e(`diagnostics.tokens`)},void 0,!1,{fileName:_,lineNumber:122,columnNumber:356},this)]},void 0,!0,{fileName:_,lineNumber:122,columnNumber:68},this)},void 0,!1,{fileName:_,lineNumber:122,columnNumber:15},this),(0,g.jsxDEV)(`tbody`,{children:i.recentMessages.map(e=>(0,g.jsxDEV)(`tr`,{className:`border-b border-border last:border-0`,children:[(0,g.jsxDEV)(`td`,{className:`px-4 py-2 text-muted`,children:new Date(e.ts).toLocaleString()},void 0,!1,{fileName:_,lineNumber:123,columnNumber:122},this),(0,g.jsxDEV)(`td`,{className:`px-4 py-2 text-text`,children:e.connector},void 0,!1,{fileName:_,lineNumber:123,columnNumber:199},this),(0,g.jsxDEV)(`td`,{className:`px-4 py-2 text-text`,children:e.role},void 0,!1,{fileName:_,lineNumber:123,columnNumber:255},this),(0,g.jsxDEV)(`td`,{className:`px-4 py-2 text-right text-muted`,children:e.ms==null?`—`:`${e.ms} ms`},void 0,!1,{fileName:_,lineNumber:123,columnNumber:306},this),(0,g.jsxDEV)(`td`,{className:`px-4 py-2 text-right text-muted`,children:e.tokensIn==null&&e.tokensOut==null?`—`:`${e.tokensIn??0} / ${e.tokensOut??0}`},void 0,!1,{fileName:_,lineNumber:123,columnNumber:398},this)]},e.id,!0,{fileName:_,lineNumber:123,columnNumber:56},this))},void 0,!1,{fileName:_,lineNumber:123,columnNumber:15},this)]},void 0,!0,{fileName:_,lineNumber:121,columnNumber:13},this):(0,g.jsxDEV)(`div`,{className:`px-4 py-4 text-sm text-muted`,children:e(`diagnostics.noMessages`)},void 0,!1,{fileName:_,lineNumber:125,columnNumber:15},this)},void 0,!1,{fileName:_,lineNumber:119,columnNumber:9},this)]},void 0,!0,{fileName:_,lineNumber:117,columnNumber:7},this),(0,g.jsxDEV)(`section`,{className:`mt-6`,children:[(0,g.jsxDEV)(`h2`,{className:`mb-2 text-sm font-semibold text-text`,children:e(`diagnostics.recentErrors`)},void 0,!1,{fileName:_,lineNumber:130,columnNumber:9},this),(0,g.jsxDEV)(d,{className:`overflow-hidden`,children:i?.recentErrors.length?i.recentErrors.map((e,t)=>(0,g.jsxDEV)(`div`,{className:`border-b border-border px-4 py-3 last:border-0`,children:[(0,g.jsxDEV)(`div`,{className:`flex flex-wrap items-center gap-2 text-xs`,children:[(0,g.jsxDEV)(p,{variant:`destructive`,children:e.level},void 0,!1,{fileName:_,lineNumber:132,columnNumber:224},this),(0,g.jsxDEV)(`span`,{className:`font-medium text-text`,children:e.source},void 0,!1,{fileName:_,lineNumber:132,columnNumber:274},this),(0,g.jsxDEV)(`span`,{className:`text-muted`,children:new Date(e.ts).toLocaleString()},void 0,!1,{fileName:_,lineNumber:132,columnNumber:335},this)]},void 0,!0,{fileName:_,lineNumber:132,columnNumber:165},this),(0,g.jsxDEV)(`div`,{className:`mt-1 break-words text-sm text-danger`,children:e.message},void 0,!1,{fileName:_,lineNumber:132,columnNumber:414},this)]},`${e.ts}-${t}`,!0,{fileName:_,lineNumber:132,columnNumber:76},this)):(0,g.jsxDEV)(`div`,{className:`px-4 py-4 text-sm text-muted`,children:e(`diagnostics.noErrors`)},void 0,!1,{fileName:_,lineNumber:132,columnNumber:499},this)},void 0,!1,{fileName:_,lineNumber:131,columnNumber:9},this)]},void 0,!0,{fileName:_,lineNumber:129,columnNumber:7},this)]},void 0,!0,{fileName:_,lineNumber:71,columnNumber:5},this)}function y({name:e,installed:t,latest:n}){return(0,g.jsxDEV)(`div`,{className:`grid grid-cols-[1fr_auto_auto] gap-x-4 border-b border-border px-4 py-2.5 text-sm last:border-0`,children:[(0,g.jsxDEV)(`span`,{className:`min-w-0 truncate text-text`,children:e},void 0,!1,{fileName:_,lineNumber:140,columnNumber:123},this),(0,g.jsxDEV)(`span`,{className:`text-muted`,children:[`v`,t]},void 0,!0,{fileName:_,lineNumber:140,columnNumber:181},this),(0,g.jsxDEV)(`span`,{className:n&&m(n,t)?`text-accent`:`text-muted`,children:n?`v${n}`:`—`},void 0,!1,{fileName:_,lineNumber:140,columnNumber:229},this)]},void 0,!0,{fileName:_,lineNumber:140,columnNumber:10},this)}export{v as DiagnosticsPage};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,t as n}from"./i18n-vendor-T6EnJ_TL.js";import{l as r,t as i,u as a}from"./react-vendor-BskHO5hY.js";import{n as o,t as s}from"./ExtendReasonInfo-DPedWUPL.js";import{t as c}from"./Icon-xpS9YUI8.js";import{b as l,f as u,l as d,m as f,n as p,o as m,r as h,s as g,t as _,u as v}from"./Toolbar-M_AtCEFF.js";import{t as y}from"./button-Bk5xd07h.js";import{S as b,f as x,g as S,m as C}from"./fields-CnmTcDr4.js";import{_ as w,n as T,o as E,s as D,t as O,v as k}from"./shelf-BdJ77CWj.js";import{t as A}from"./json-CkyL3W27.js";import{j,s as M}from"./api-DsJ6cAbe.js";import{n as N}from"./dispatch-Pl-o9vd6.js";var P=e(t(),1),F=i(),I=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/fields-form.tsx`;function L({shelf:e,record:t,onSubmit:r,onCancel:i,submitLabel:a,busy:o,children:s,hiddenFields:c,onValuesChange:l,errorSink:u,extraValidate:f}){let{t:m}=n(),_=d(m),v=!!t,x=(0,P.useMemo)(()=>D(e.fields),[e]),{values:S,errors:C,setErrors:w,setTouched:E,bridge:k}=p({fm:x,mode:v?`edit`:`create`,recordCtx:{library:e.library,shelf:e.shelf,recordId:t?String(t.id):null},initial:()=>z(e,t),hiddenFields:c}),[A,j]=(0,P.useState)(),[M,N]=(0,P.useState)(!1);(0,P.useEffect)(()=>{l?.(S)},[S,l]),(0,P.useEffect)(()=>{u?.({setErrors:w,setTouched:E})},[u,w,E]);async function L(t){t.preventDefault(),j(void 0);let n=Object.keys(x),i={};for(let e of n)e in S&&(i[e]=S[e]);let a=B(i),o=(v?T(e):O(e)).safeParse(a),s={};if(!o.success)for(let e of o.error.issues){let t=String(e.path[0]??``);if(!n.includes(t)||s[t])continue;let{code:r,params:i}=b(e.message);s[t]=_(r,i)}if(Object.assign(s,f?.(S)??{}),Object.keys(s).length){w(s),E(new Set(Object.keys(s)));return}N(!0);let c=await r(a);N(!1),c&&j(c)}return(0,F.jsxDEV)(`form`,{onSubmit:L,noValidate:!0,className:`flex flex-col gap-5 min-w-0`,children:[(0,F.jsxDEV)(g.Provider,{value:e=>C[e.join(`.`)],children:(0,F.jsxDEV)(h,{items:e.fields,ctx:{bridge:k}},void 0,!1,{fileName:I,lineNumber:117,columnNumber:9},this)},void 0,!1,{fileName:I,lineNumber:116,columnNumber:7},this),s,A&&(0,F.jsxDEV)(`p`,{className:`text-sm text-danger`,children:A},void 0,!1,{fileName:I,lineNumber:120,columnNumber:21},this),(0,F.jsxDEV)(`div`,{className:`flex gap-3 pt-2 border-t border-border`,children:[(0,F.jsxDEV)(y,{type:`submit`,disabled:o||M,size:`lg`,className:`flex-1`,children:a??m(`actions.save`)},void 0,!1,{fileName:I,lineNumber:122,columnNumber:9},this),i&&(0,F.jsxDEV)(y,{type:`button`,variant:`secondary`,size:`lg`,onClick:i,className:`flex-1`,children:m(`actions.cancel`)},void 0,!1,{fileName:I,lineNumber:126,columnNumber:11},this)]},void 0,!0,{fileName:I,lineNumber:121,columnNumber:7},this)]},void 0,!0,{fileName:I,lineNumber:115,columnNumber:5},this)}var R=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/form.tsx`;function z(e,t){let n={};n.name=t?.name==null?``:String(t.name);for(let[r,i]of E(e.fields))if(!i.virtual)if(t){let e=t[r];e==null?n[r]=i.prim!==`checkbox`&&``:i.prim===`checkbox`?n[r]=e===1||e===!0||e===`1`:C(i)?n[r]=e===``?``:A(e,i.hints.multiple===!0?[]:{}):n[r]=e}else n[r]=i.prim===`checkbox`?!1:C(i)&&i.hints.multiple===!0?[]:``;for(let r of e.fields){if(!x(r)||!S(r))continue;let e=r.key;t?n[e]=t[e]??(r.multiple?[]:{}):n[e]=r.multiple?[]:{}}return n}function B(e){let t={};for(let[n,r]of Object.entries(e))r===``||r===void 0||Array.isArray(r)&&r.length===0||typeof r==`object`&&r&&!Array.isArray(r)&&Object.keys(r).length===0||(t[n]=r);return t}function V({ext:e,values:t,onChange:r,recordId:i,fieldLabel:a}){let{t:o}=n();return(0,F.jsxDEV)(`fieldset`,{className:`border border-accent/30 rounded-xl p-4 pt-2 flex flex-col min-w-0 gap-4`,children:[(0,F.jsxDEV)(`legend`,{className:`px-2 inline-flex items-center gap-1.5 text-sm font-semibold text-accent`,children:[(0,F.jsxDEV)(c,{name:e.icon,size:14,className:`shrink-0`},void 0,!1,{fileName:R,lineNumber:114,columnNumber:9},this),` `,o(e.label),(0,F.jsxDEV)(s,{ext:e,fieldLabel:a},void 0,!1,{fileName:R,lineNumber:115,columnNumber:9},this)]},void 0,!0,{fileName:R,lineNumber:113,columnNumber:7},this),(0,F.jsxDEV)(h,{items:e.fields,ctx:{renderField:(n,a)=>k(a.hidden,t)?null:(0,F.jsxDEV)(N,{mode:`create`,field:a,label:a.label?o(a.label):void 0,required:k(a.required,t),value:t[n]??``,recordCtx:{library:``,shelf:e.id,recordId:i},onChange:t=>r(e.id,n,t)},void 0,!1,{fileName:R,lineNumber:100,columnNumber:9},this)}},void 0,!1,{fileName:R,lineNumber:117,columnNumber:7},this)]},void 0,!0,{fileName:R,lineNumber:112,columnNumber:5},this)}function H(e,t,n){let[r]=(0,P.useState)(()=>{let n={};for(let r of e){let e=t?._extends?.[r.id];n[r.id]={};for(let[t,i]of E(r.fields)){let a=e?.[t];a==null?n[r.id][t]=i.prim===`checkbox`?!1:C(i)&&i.hints.multiple===!0?[]:``:i.prim===`checkbox`?n[r.id][t]=a===1||a===!0||a===`1`:C(i)?n[r.id][t]=a===``?``:A(a,i.hints.multiple===!0?[]:{}):n[r.id][t]=a}}return n}),[i,a]=(0,P.useState)(r),o=(0,P.useMemo)(()=>e.filter(e=>w(e.showWhen,n)),[e,n]);function s(e,t,n){a(r=>({...r,[e]:{...r[e],[t]:n}}))}function c(e){let t={};for(let n of o){let a=i[n.id]??{};if(e){let e=r[n.id]??{},i=Object.fromEntries(Object.entries(a).filter(([t,n])=>n!==e[t]));Object.keys(i).length>0&&(t[`_extend_${n.id}`]=i)}else{let e=Object.fromEntries(Object.entries(a).filter(([,e])=>e!==``&&e!==!1));t[`_extend_${n.id}`]=e}}return t}return{extValues:i,setExtValue:s,activeExts:o,buildExtendPatch:c}}function U({shelf:e,record:t,defaults:r,hiddenFields:i,onSuccess:a,onCancel:o}){let{t:s}=n(),c=d(s),l=!!t,f=(0,P.useMemo)(()=>D(e.fields),[e]),[p,m]=(0,P.useState)([]),[h,g]=(0,P.useState)(!1),[_,y]=(0,P.useState)(()=>z(e,t)),b=(0,P.useRef)(null),{extValues:x,setExtValue:S,activeExts:C,buildExtendPatch:w}=H((0,P.useMemo)(()=>u().filter(t=>t.attachTo.some(t=>t.library===e.library&&(!t.shelf||t.shelf===e.shelf))),[e]),t,_);function T(e){return l||String(e.name??``).trim()?{}:{name:s(`validation.required`)}}async function E(n){m([]),g(!0);let r={...n,...w()},i=String(t?.id??``),o=l?await j(e.library,e.shelf,i,r):await M(e.library,e.shelf,r);if(g(!1),o.ok){a(o.row);return}let s=o.issues??[],u={},d=[];for(let e of s)e.field&&f[e.field]?u[e.field]=c(e.code,e.params):d.push(e);let p=v(s,c);(Object.keys(u).length||Object.keys(p).length)&&(b.current?.setErrors(e=>({...e,...u,...p})),b.current?.setTouched(e=>new Set([...e,...Object.keys(u)]))),m(d)}return(0,F.jsxDEV)(`div`,{children:(0,F.jsxDEV)(L,{shelf:e,record:t,onSubmit:E,onCancel:o,submitLabel:s(h?`common.saving`:l?`actions.save`:`actions.create`),busy:h,hiddenFields:i,onValuesChange:y,errorSink:e=>{b.current=e},extraValidate:T,children:[C.map(e=>(0,F.jsxDEV)(V,{ext:e,values:x[e.id]??{},onChange:S,recordId:t?String(t.id):null,fieldLabel:e=>f[e]?.label?s(f[e].label):e},e.id,!1,{fileName:R,lineNumber:316,columnNumber:11},this)),p.length>0&&(0,F.jsxDEV)(`div`,{className:`bg-danger/10 border border-danger/30 rounded-xl p-3.5 text-sm`,children:[(0,F.jsxDEV)(`p`,{className:`font-semibold text-danger mb-2`,children:s(`form.serverRejected`)},void 0,!1,{fileName:R,lineNumber:328,columnNumber:13},this),(0,F.jsxDEV)(`ul`,{className:`space-y-1 text-text/80`,children:p.map((e,t)=>{let n=f[e.field],r=n?s(n.label):e.field,i=e.code===`pattern`&&e.params?.messageKey?s(String(e.params.messageKey)):s(`validation.${e.code}`,e.params);return(0,F.jsxDEV)(`li`,{className:`flex gap-1.5`,children:[r&&(0,F.jsxDEV)(`span`,{className:`text-muted font-medium`,children:[r,`:`]},void 0,!0,{fileName:R,lineNumber:339,columnNumber:31},this),i]},t,!0,{fileName:R,lineNumber:338,columnNumber:19},this)})},void 0,!1,{fileName:R,lineNumber:329,columnNumber:13},this)]},void 0,!0,{fileName:R,lineNumber:327,columnNumber:11},this)]},`${e.library}/${e.shelf}/${t?t.id:`new`}`,!0,{fileName:R,lineNumber:299,columnNumber:7},this)},void 0,!1,{fileName:R,lineNumber:291,columnNumber:5},this)}var W=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/app/record/NewRecordView.tsx`;function G(){let{t:e}=n(),{library:t,shelf:i}=a(),s=r(),c=f().flatMap(e=>e.shelves).find(e=>e.library===t&&e.shelf===i);return!c||c.standalone===!1?(0,F.jsxDEV)(`div`,{className:`p-6 text-muted`,children:e(`common.notFound`)},void 0,!1,{fileName:W,lineNumber:20,columnNumber:44},this):(0,F.jsxDEV)(`div`,{className:`flex flex-col`,children:[(0,F.jsxDEV)(_,{children:(0,F.jsxDEV)(y,{variant:`ghost`,size:`sm`,className:`px-2`,onClick:()=>s(`/${t}/${i}`),children:[(0,F.jsxDEV)(l,{size:18},void 0,!1,{fileName:W,lineNumber:26,columnNumber:11},this),(0,F.jsxDEV)(`span`,{className:`text-sm`,children:e(c.label)},void 0,!1,{fileName:W,lineNumber:27,columnNumber:11},this)]},void 0,!0,{fileName:W,lineNumber:25,columnNumber:9},this)},void 0,!1,{fileName:W,lineNumber:24,columnNumber:7},this),(0,F.jsxDEV)(`div`,{className:`flex-1 min-w-0`,children:(0,F.jsxDEV)(`div`,{className:`max-w-2xl mx-auto px-6 py-6`,children:(0,F.jsxDEV)(m,{library:c.library,shelf:c.shelf,children:(0,F.jsxDEV)(U,{shelf:c,onSuccess:e=>{o(`${c.library}/${c.shelf}`),e?.id?s(`/${t}/${i}/${e.id}`):s(`/${t}/${i}`)},onCancel:()=>s(`/${t}/${i}`)},void 0,!1,{fileName:W,lineNumber:33,columnNumber:13},this)},void 0,!1,{fileName:W,lineNumber:32,columnNumber:11},this)},void 0,!1,{fileName:W,lineNumber:31,columnNumber:9},this)},void 0,!1,{fileName:W,lineNumber:30,columnNumber:7},this)]},void 0,!0,{fileName:W,lineNumber:23,columnNumber:5},this)}export{G as NewRecordView};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,t as n}from"./i18n-vendor-T6EnJ_TL.js";import{r,t as i}from"./react-vendor-BskHO5hY.js";import{r as a}from"./x-BFRg18Fi.js";import{n as o,t as s}from"./ui-vendor-EU9CHLyR.js";import{t as c}from"./Icon-xpS9YUI8.js";import{r as l,t as u}from"./ThemeSwitcher-CftQexVL.js";import{t as d}from"./button-Bk5xd07h.js";import{A as ee,D as f,M as p,g as m,k as h,m as g}from"./api-DsJ6cAbe.js";import{n as _,r as v}from"./auth-context-CpmpND1h.js";import{t as y}from"./PageBody-Y-cpiRMh.js";import{n as b,t as x}from"./version-BYktGE-Z.js";var S=e(t(),1),C=i(),w=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/components/ui/switch.tsx`,T=S.forwardRef(({className:e,...t},n)=>(0,C.jsxDEV)(s,{ref:n,className:a(`peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background`,`disabled:cursor-not-allowed disabled:opacity-50`,`data-[state=checked]:bg-primary data-[state=unchecked]:bg-border`,e),...t,children:(0,C.jsxDEV)(o,{className:a(`pointer-events-none block h-5 w-5 rounded-full bg-white shadow-lg ring-0 transition-transform`,`data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0`)},void 0,!1,{fileName:w,lineNumber:20,columnNumber:5},void 0)},void 0,!1,{fileName:w,lineNumber:9,columnNumber:3},void 0));T.displayName=s.displayName;var E=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/app/SettingsPage.tsx`,D=null,O=null;function te(e=!1){if(!e&&D)return Promise.resolve(D);if(!e&&O)return O;let t=Promise.all([m(e?{refresh:!0}:void 0),g(e?{refresh:!0}:void 0)]).then(([e,t])=>{let n={plugins:e,runtime:t};return D=n,n});return e||(O=t,t.then(()=>{O===t&&(O=null)},()=>{O===t&&(O=null)})),t}async function k(){let e=Date.now();for(;Date.now()-e<3e4;){await new Promise(e=>setTimeout(e,1e3));try{if((await fetch(`/health`)).ok)return!0}catch{}}return!1}function A(){let{t:e}=n(),{role:t}=_(),i=t===`admin`,[a,o]=(0,S.useState)(()=>D?.plugins??[]),[s,m]=(0,S.useState)(()=>D===null),[g,w]=(0,S.useState)(null),[O,A]=(0,S.useState)(!1),M=e=>g===e||g===`*`,[N,P]=(0,S.useState)(()=>D?.runtime??null),F=a.filter(e=>e.latestVersion&&x(e.latestVersion,e.installedVersion)),I=!!(N?.latestVersion&&N.installedVersion&&x(N.latestVersion,N.installedVersion)),L=F.length+ +!!I,[R,z]=(0,S.useState)(null),[B,V]=(0,S.useState)(!1),H=t=>e(`${t}.plugin.label`,{defaultValue:t}),U=t=>e(`${t}.plugin.description`,{defaultValue:``}),W=t=>e(`${t}.library.label`,{defaultValue:t}),G=(t,n)=>e(`${t}.${n}.label`,{defaultValue:n}),K={core_required:()=>e(`plugins.errors.core_required`),has_dependents:t=>e(`plugins.errors.has_dependents`,{list:t.dependents.join(`, `)}),missing_deps:t=>e(`plugins.errors.missing_deps`,{list:t.deps.join(`, `)}),unknown_plugin:()=>e(`plugins.errors.unknown_plugin`)},q=(e=!1)=>te(e).then(({plugins:e,runtime:t})=>{o(e),P(t),m(!1)});(0,S.useEffect)(()=>{q()},[]);async function J(){A(!0),z(null);try{await q(!0)}catch{z(e(`plugins.updateCheckError`))}finally{A(!1)}}async function Y(t){if(!await l({title:e(`plugins.purgeTitle`),description:e(`plugins.confirmPurge`,{id:t.id}),confirmLabel:e(`plugins.purgeButton`),variant:`destructive`}))return;w(t.id),z(null);let n=await fetch(`/api/plugins/${t.id}/data`,{method:`DELETE`}),r=await n.json().catch(()=>({}));if(w(null),!n.ok){z(K[r.error]?.(r)??e(`plugins.genericError`,{code:r.error??n.status}));return}V(!0),await q()}async function X(t){w(t.id),z(null);let n=await f(t.id,!t.enabled);if(!n.ok){w(null),z(K[n.error]?.(n.data??{})??e(`plugins.genericError`,{code:n.error}));return}window.location.reload()}async function Z(t){if(!t.latestVersion||!await l({title:e(`plugins.updateTitle`,{from:t.installedVersion,to:t.latestVersion}),description:e(`plugins.confirmUpdate`,{id:t.id,from:t.installedVersion,to:t.latestVersion}),confirmLabel:e(`plugins.updateButton`)}))return;w(t.id),z(null);let n=await ee(t.id);if(!n.ok){w(null),z(n.stderr?`${e(`plugins.updateError`)}: ${n.stderr}`:e(`plugins.genericError`,{code:n.error}));return}V(!0),await k()&&window.location.reload()}async function ne(){if(L===0)return;let t=F.map(e=>`${H(e.id)}: v${e.installedVersion} → v${e.latestVersion}`);I&&t.push(`${e(`plugins.runtimeLabel`)}: v${N.installedVersion} → v${N.latestVersion}`);let n=t.join(`
|
|
2
|
+
`);if(!await l({title:e(`plugins.updateAllButton`,{count:L}),description:e(`plugins.confirmUpdateAll`,{count:L,list:n}),confirmLabel:e(`plugins.updateButton`)}))return;w(`*`),z(null);let r=await h();if(!r.ok){w(null),z(r.stderr?`${e(`plugins.updateError`)}: ${r.stderr}`:e(`plugins.genericError`,{code:r.error}));return}V(!0),await k()&&window.location.reload()}let Q=a.find(e=>e.id===`core`),$=!!(Q?.latestVersion&&x(Q.latestVersion,Q.installedVersion)),re=$||I;async function ie(){let t=[];if(Q&&$&&t.push(`${e(`core.settings.label`)}: v${Q.installedVersion} → v${Q.latestVersion}`),I&&t.push(`${e(`plugins.runtimeLabel`)}: v${N.installedVersion} → v${N.latestVersion}`),t.length===0||!await l({title:e(`plugins.updateAllButton`,{count:t.length}),description:e(`plugins.confirmUpdateAll`,{count:t.length,list:t.join(`
|
|
3
|
+
`)}),confirmLabel:e(`plugins.updateButton`)}))return;w(`*`),z(null);let n=await p();if(!n.ok){w(null),z(n.stderr?`${e(`plugins.updateError`)}: ${n.stderr}`:e(`plugins.genericError`,{code:n.error}));return}V(!0),await k()&&window.location.reload()}return(0,C.jsxDEV)(y,{children:[(0,C.jsxDEV)(`h1`,{className:`mb-6 text-2xl font-bold tracking-tight text-text`,children:e(`settings.title`)},void 0,!1,{fileName:E,lineNumber:259,columnNumber:7},this),(0,C.jsxDEV)(`section`,{className:`mb-6`,children:[(0,C.jsxDEV)(`h2`,{className:`mb-1 text-xs font-semibold tracking-wide text-muted`,children:e(`settings.appearance`)},void 0,!1,{fileName:E,lineNumber:262,columnNumber:9},this),(0,C.jsxDEV)(v,{className:`flex items-center gap-4 px-4 py-2`,children:[(0,C.jsxDEV)(`span`,{className:`min-w-0 flex-1 font-semibold text-text`,children:e(`theme.label`)},void 0,!1,{fileName:E,lineNumber:264,columnNumber:11},this),(0,C.jsxDEV)(`div`,{className:`w-40 shrink-0`,children:(0,C.jsxDEV)(u,{direction:`down`},void 0,!1,{fileName:E,lineNumber:266,columnNumber:13},this)},void 0,!1,{fileName:E,lineNumber:265,columnNumber:11},this)]},void 0,!0,{fileName:E,lineNumber:263,columnNumber:9},this)]},void 0,!0,{fileName:E,lineNumber:261,columnNumber:7},this),(0,C.jsxDEV)(`section`,{className:`mb-6`,children:[(0,C.jsxDEV)(`h2`,{className:`mb-1 text-xs font-semibold tracking-wide text-muted`,children:e(`settings.personalTitle`)},void 0,!1,{fileName:E,lineNumber:273,columnNumber:9},this),(0,C.jsxDEV)(v,{className:`flex items-center gap-4 px-4 py-3`,children:[(0,C.jsxDEV)(`div`,{className:`min-w-0 flex-1`,children:(0,C.jsxDEV)(`span`,{className:`font-semibold text-text`,children:e(`auth.accountTitle`)},void 0,!1,{fileName:E,lineNumber:276,columnNumber:13},this)},void 0,!1,{fileName:E,lineNumber:275,columnNumber:11},this),(0,C.jsxDEV)(d,{variant:`ghost`,size:`sm`,type:`button`,className:`shrink-0 border border-border`,asChild:!0,children:(0,C.jsxDEV)(r,{to:`/settings/account`,title:e(`auth.accountTitle`),"aria-label":e(`auth.accountTitle`),children:(0,C.jsxDEV)(c,{name:`lucide:settings`,size:16},void 0,!1,{fileName:E,lineNumber:280,columnNumber:15},this)},void 0,!1,{fileName:E,lineNumber:279,columnNumber:13},this)},void 0,!1,{fileName:E,lineNumber:278,columnNumber:11},this)]},void 0,!0,{fileName:E,lineNumber:274,columnNumber:9},this)]},void 0,!0,{fileName:E,lineNumber:272,columnNumber:7},this),i&&(0,C.jsxDEV)(C.Fragment,{children:[(0,C.jsxDEV)(`section`,{className:`mb-6`,children:[(0,C.jsxDEV)(`h2`,{className:`mb-1 text-xs font-semibold tracking-wide text-muted`,children:e(`settings.usersTitle`)},void 0,!1,{fileName:E,lineNumber:290,columnNumber:11},this),(0,C.jsxDEV)(`p`,{className:`mb-3 text-sm text-muted`,children:e(`settings.usersDescription`)},void 0,!1,{fileName:E,lineNumber:291,columnNumber:13},this),(0,C.jsxDEV)(v,{className:`flex items-center gap-4 px-4 py-3`,children:[(0,C.jsxDEV)(`div`,{className:`min-w-0 flex-1`,children:(0,C.jsxDEV)(`span`,{className:`font-semibold text-text`,children:e(`settings.usersTitle`)},void 0,!1,{fileName:E,lineNumber:294,columnNumber:17},this)},void 0,!1,{fileName:E,lineNumber:293,columnNumber:15},this),(0,C.jsxDEV)(d,{variant:`ghost`,size:`sm`,type:`button`,className:`shrink-0 border border-border`,asChild:!0,children:(0,C.jsxDEV)(r,{to:`/settings/users`,title:e(`settings.usersTitle`),"aria-label":e(`settings.usersTitle`),children:(0,C.jsxDEV)(c,{name:`lucide:settings`,size:16},void 0,!1,{fileName:E,lineNumber:298,columnNumber:19},this)},void 0,!1,{fileName:E,lineNumber:297,columnNumber:17},this)},void 0,!1,{fileName:E,lineNumber:296,columnNumber:15},this)]},void 0,!0,{fileName:E,lineNumber:292,columnNumber:13},this)]},void 0,!0,{fileName:E,lineNumber:289,columnNumber:11},this),(0,C.jsxDEV)(`section`,{className:`mb-6`,children:[(0,C.jsxDEV)(`h2`,{className:`mb-1 text-xs font-semibold tracking-wide text-muted`,children:e(`settings.diagnosticsTitle`)},void 0,!1,{fileName:E,lineNumber:305,columnNumber:13},this),(0,C.jsxDEV)(`p`,{className:`mb-3 text-sm text-muted`,children:e(`settings.diagnosticsDescription`)},void 0,!1,{fileName:E,lineNumber:306,columnNumber:13},this),(0,C.jsxDEV)(v,{className:`flex items-center gap-4 px-4 py-3`,children:[(0,C.jsxDEV)(`div`,{className:`min-w-0 flex-1`,children:(0,C.jsxDEV)(`span`,{className:`font-semibold text-text`,children:e(`diagnostics.title`)},void 0,!1,{fileName:E,lineNumber:309,columnNumber:17},this)},void 0,!1,{fileName:E,lineNumber:308,columnNumber:15},this),(0,C.jsxDEV)(d,{variant:`ghost`,size:`sm`,type:`button`,className:`shrink-0 border border-border`,asChild:!0,children:(0,C.jsxDEV)(r,{to:`/settings/diagnostics`,title:e(`diagnostics.title`),"aria-label":e(`diagnostics.title`),children:(0,C.jsxDEV)(c,{name:`lucide:activity`,size:16},void 0,!1,{fileName:E,lineNumber:313,columnNumber:19},this)},void 0,!1,{fileName:E,lineNumber:312,columnNumber:17},this)},void 0,!1,{fileName:E,lineNumber:311,columnNumber:15},this)]},void 0,!0,{fileName:E,lineNumber:307,columnNumber:13},this)]},void 0,!0,{fileName:E,lineNumber:304,columnNumber:11},this),(0,C.jsxDEV)(`section`,{children:[(0,C.jsxDEV)(`div`,{className:`mb-1 flex items-center gap-3`,children:[(0,C.jsxDEV)(`h2`,{className:`text-xs font-semibold tracking-wide text-muted`,children:e(`settings.componentsTitle`)},void 0,!1,{fileName:E,lineNumber:322,columnNumber:15},this),(0,C.jsxDEV)(d,{variant:`ghost`,size:`sm`,type:`button`,disabled:g!==null||O,onClick:J,title:e(`plugins.checkUpdates`),className:`shrink-0 border border-border`,children:[(0,C.jsxDEV)(c,{name:`lucide:refresh-cw`,size:14,className:O?`animate-spin`:void 0},void 0,!1,{fileName:E,lineNumber:332,columnNumber:17},this),e(O?`plugins.checkingUpdates`:`plugins.checkUpdates`)]},void 0,!0,{fileName:E,lineNumber:323,columnNumber:15},this),L>0&&(0,C.jsxDEV)(d,{variant:`ghost`,size:`sm`,type:`button`,disabled:g!==null,onClick:ne,className:`shrink-0 border border-accent/40 text-accent hover:bg-accent/10 hover:text-accent`,children:e(`plugins.updateAllButton`,{count:L})},void 0,!1,{fileName:E,lineNumber:336,columnNumber:17},this)]},void 0,!0,{fileName:E,lineNumber:321,columnNumber:13},this),(0,C.jsxDEV)(`p`,{className:`mb-3 text-sm text-muted`,children:e(`settings.componentsDescription`)},void 0,!1,{fileName:E,lineNumber:348,columnNumber:13},this),s?(0,C.jsxDEV)(`p`,{className:`text-muted`,children:e(`plugins.loading`)},void 0,!1,{fileName:E,lineNumber:351,columnNumber:15},this):(0,C.jsxDEV)(C.Fragment,{children:[B&&(0,C.jsxDEV)(`div`,{className:`mb-5 rounded-xl border border-accent/40 bg-accent/10 px-4 py-3 text-sm text-accent`,children:[e(`plugins.restartBannerBefore`),(0,C.jsxDEV)(`b`,{children:e(`plugins.restartBannerBold`)},void 0,!1,{fileName:E,lineNumber:357,columnNumber:21},this),e(`plugins.restartBannerAfter`)]},void 0,!0,{fileName:E,lineNumber:355,columnNumber:19},this),R&&(0,C.jsxDEV)(`div`,{className:`mb-5 rounded-xl border border-danger/40 bg-danger/10 px-4 py-3 text-sm text-danger`,children:R},void 0,!1,{fileName:E,lineNumber:362,columnNumber:19},this),(0,C.jsxDEV)(`div`,{className:`overflow-hidden rounded-lg border border-border bg-card`,children:[(0,C.jsxDEV)(`div`,{className:`flex flex-col gap-3 border-b border-border px-4 py-3 sm:flex-row sm:items-center sm:gap-4`,children:[(0,C.jsxDEV)(`div`,{className:`min-w-0 flex-1`,children:[(0,C.jsxDEV)(`div`,{className:`flex items-center gap-2`,children:[(0,C.jsxDEV)(`span`,{className:`font-semibold text-text`,children:e(`core.settings.label`)},void 0,!1,{fileName:E,lineNumber:372,columnNumber:25},this),Q&&(0,C.jsxDEV)(b,{variant:`secondary`,className:`text-[10px] font-medium`,children:[`v`,Q.installedVersion]},void 0,!0,{fileName:E,lineNumber:374,columnNumber:27},this),re&&(0,C.jsxDEV)(d,{variant:`ghost`,size:`sm`,type:`button`,disabled:g!==null,onClick:ie,title:e(`settings.systemUpdateTitle`),className:`shrink-0 border border-accent/40 text-accent hover:bg-accent/10 hover:text-accent`,children:e(`plugins.updateButton`)},void 0,!1,{fileName:E,lineNumber:379,columnNumber:27},this)]},void 0,!0,{fileName:E,lineNumber:371,columnNumber:23},this),(0,C.jsxDEV)(`div`,{className:`text-xs text-muted mt-0.5 truncate`,children:e(`settings.systemDescription`)},void 0,!1,{fileName:E,lineNumber:392,columnNumber:23},this)]},void 0,!0,{fileName:E,lineNumber:370,columnNumber:21},this),(0,C.jsxDEV)(`div`,{className:`flex w-full shrink-0 justify-end border-t border-border pt-3 sm:w-auto sm:border-t-0 sm:pt-0`,children:(0,C.jsxDEV)(d,{variant:`ghost`,size:`sm`,type:`button`,className:`border border-border`,asChild:!0,children:(0,C.jsxDEV)(r,{to:`/settings/core`,title:e(`core.settings.label`),"aria-label":e(`core.settings.label`),children:(0,C.jsxDEV)(c,{name:`lucide:settings`,size:16},void 0,!1,{fileName:E,lineNumber:397,columnNumber:27},this)},void 0,!1,{fileName:E,lineNumber:396,columnNumber:25},this)},void 0,!1,{fileName:E,lineNumber:395,columnNumber:23},this)},void 0,!1,{fileName:E,lineNumber:394,columnNumber:21},this)]},void 0,!0,{fileName:E,lineNumber:369,columnNumber:19},this),a.filter(e=>e.id!==`core`).map(t=>{let n=U(t.id),i=t.enabled?a.filter(e=>e.enabled&&e.id!==t.id&&e.dependsOn.includes(t.id)):[],o=i.length>0,s=o?e(`plugins.blockedByDependents`,{list:i.map(e=>H(e.id)).join(`, `)}):t.enabled?e(`plugins.switchDisable`):e(`plugins.switchEnable`),l=[t.dependsOn.length>0&&`${e(`plugins.metaDepends`)} ${t.dependsOn.map(H).join(`, `)}`,t.libraries.length>0&&`${e(`plugins.metaLibraries`)} ${t.libraries.map(W).join(`, `)}`,t.extends.length>0&&`${e(`plugins.metaExtends`)} ${t.extends.map(e=>G(t.id,e)).join(`, `)}`].filter(Boolean).join(` · `)||`—`;return(0,C.jsxDEV)(`div`,{className:`flex flex-col gap-3 border-b border-border px-4 py-3 last:border-b-0 sm:flex-row sm:items-center sm:gap-4`,children:[(0,C.jsxDEV)(`div`,{className:`min-w-0 flex-1`,children:[(0,C.jsxDEV)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,C.jsxDEV)(`span`,{className:`font-semibold text-text`,children:H(t.id)},void 0,!1,{fileName:E,lineNumber:433,columnNumber:31},this),(0,C.jsxDEV)(j,{plugin:t,busy:M(t.id),onUpdate:()=>Z(t)},void 0,!1,{fileName:E,lineNumber:434,columnNumber:31},this)]},void 0,!0,{fileName:E,lineNumber:432,columnNumber:29},this),n&&(0,C.jsxDEV)(`div`,{className:`text-xs text-muted mt-0.5 truncate`,children:n},void 0,!1,{fileName:E,lineNumber:436,columnNumber:45},this),(0,C.jsxDEV)(`div`,{className:`text-xs text-muted mt-0.5 truncate`,children:l},void 0,!1,{fileName:E,lineNumber:437,columnNumber:29},this)]},void 0,!0,{fileName:E,lineNumber:431,columnNumber:27},this),(0,C.jsxDEV)(`div`,{className:`flex w-full shrink-0 items-center justify-end gap-2 border-t border-border pt-3 sm:w-auto sm:border-t-0 sm:pt-0`,children:[t.hasSettings&&(0,C.jsxDEV)(d,{variant:`ghost`,size:`sm`,type:`button`,className:`border border-border`,asChild:!0,children:(0,C.jsxDEV)(r,{to:`/settings/${t.id}`,title:e(`plugins.settingsTitle`,{defaultValue:`Settings`}),"aria-label":e(`plugins.settingsTitle`,{defaultValue:`Settings`}),children:(0,C.jsxDEV)(c,{name:`lucide:settings`,size:16},void 0,!1,{fileName:E,lineNumber:447,columnNumber:35},this)},void 0,!1,{fileName:E,lineNumber:442,columnNumber:33},this)},void 0,!1,{fileName:E,lineNumber:441,columnNumber:31},this),(0,C.jsxDEV)(d,{variant:`ghost`,size:`iconSm`,type:`button`,disabled:M(t.id),onClick:()=>Y(t),title:e(`plugins.purgeTitle`),"aria-label":e(`plugins.purgeTitle`),className:`border border-danger/40 text-danger hover:bg-danger/10 hover:text-danger`,children:(0,C.jsxDEV)(c,{name:`lucide:trash-2`,size:16},void 0,!1,{fileName:E,lineNumber:461,columnNumber:31},this)},void 0,!1,{fileName:E,lineNumber:451,columnNumber:29},this),(0,C.jsxDEV)(`span`,{title:s,children:(0,C.jsxDEV)(T,{checked:t.enabled,disabled:M(t.id)||o,onCheckedChange:()=>X(t),title:s},void 0,!1,{fileName:E,lineNumber:466,columnNumber:31},this)},void 0,!1,{fileName:E,lineNumber:465,columnNumber:29},this)]},void 0,!0,{fileName:E,lineNumber:439,columnNumber:27},this)]},t.id,!0,{fileName:E,lineNumber:430,columnNumber:25},this)})]},void 0,!0,{fileName:E,lineNumber:367,columnNumber:17},this)]},void 0,!0,{fileName:E,lineNumber:353,columnNumber:15},this)]},void 0,!0,{fileName:E,lineNumber:320,columnNumber:11},this)]},void 0,!0,{fileName:E,lineNumber:287,columnNumber:9},this)]},void 0,!0,{fileName:E,lineNumber:258,columnNumber:5},this)}function j({plugin:e,busy:t,onUpdate:r}){let{t:i}=n(),a=!!(e.latestVersion&&x(e.latestVersion,e.installedVersion));return(0,C.jsxDEV)(C.Fragment,{children:[(0,C.jsxDEV)(b,{variant:`secondary`,className:`text-[11px] font-medium`,children:[`v`,e.installedVersion]},void 0,!0,{fileName:E,lineNumber:500,columnNumber:7},this),a&&(0,C.jsxDEV)(d,{variant:`ghost`,size:`sm`,type:`button`,disabled:t,onClick:r,title:i(`plugins.updateTitle`,{from:e.installedVersion,to:e.latestVersion}),className:`shrink-0 border border-accent/40 text-accent hover:bg-accent/10 hover:text-accent`,children:i(`plugins.updateButton`)},void 0,!1,{fileName:E,lineNumber:504,columnNumber:9},this)]},void 0,!0,{fileName:E,lineNumber:499,columnNumber:5},this)}export{A as SettingsPage};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,t as n}from"./i18n-vendor-T6EnJ_TL.js";import{t as r}from"./react-vendor-BskHO5hY.js";import{n as i,r as a}from"./x-BFRg18Fi.js";import{a as o,c as s,i as c,l,o as u,r as d,s as f}from"./ui-vendor-EU9CHLyR.js";import{c as p}from"./Icon-xpS9YUI8.js";import{i as m,t as h}from"./button-Bk5xd07h.js";import{a as g,i as _,n as v,r as y,t as b}from"./dialog-DqWXrq6M.js";var x=i(`book-open`,[[`path`,{d:`M12 7v14`,key:`1akyts`}],[`path`,{d:`M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z`,key:`ruj8y`}]]),S=i(`moon`,[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`,key:`kfwtm`}]]),C=i(`sun`,[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]),w=e(t(),1),T=r(),E=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/components/ui/confirm.tsx`,D=null;function O(e){let t=typeof e==`string`?{title:e}:e;return D?new Promise(e=>D({...t,resolve:e})):Promise.resolve(!1)}function k(){let{t:e}=n(),t=w.useRef(null),[r,i]=w.useState(null);w.useEffect(()=>(D=e=>{t.current?.resolve(!1),t.current=e,i(e)},()=>{D=null}),[]);function a(e){let n=t.current;t.current=null,i(null),n?.resolve(e)}return(0,T.jsxDEV)(b,{open:r!==null,onOpenChange:e=>{e||a(!1)},children:r&&(0,T.jsxDEV)(v,{className:`md:max-w-md`,hideClose:!0,children:[(0,T.jsxDEV)(_,{children:[(0,T.jsxDEV)(g,{children:r.title},void 0,!1,{fileName:E,lineNumber:69,columnNumber:13},this),r.description&&(0,T.jsxDEV)(y,{className:`whitespace-pre-line`,children:r.description},void 0,!1,{fileName:E,lineNumber:71,columnNumber:15},this)]},void 0,!0,{fileName:E,lineNumber:68,columnNumber:11},this),(0,T.jsxDEV)(`div`,{className:`flex justify-end gap-2 px-5 pb-5 pt-2`,children:[(0,T.jsxDEV)(h,{variant:`outline`,onClick:()=>a(!1),children:r.cancelLabel??e(`actions.cancel`)},void 0,!1,{fileName:E,lineNumber:75,columnNumber:13},this),(0,T.jsxDEV)(h,{autoFocus:!0,variant:r.variant??`default`,onClick:()=>a(!0),children:r.confirmLabel??e(`actions.confirm`)},void 0,!1,{fileName:E,lineNumber:78,columnNumber:13},this)]},void 0,!0,{fileName:E,lineNumber:74,columnNumber:11},this)]},void 0,!0,{fileName:E,lineNumber:67,columnNumber:9},this)},void 0,!1,{fileName:E,lineNumber:60,columnNumber:5},this)}var A=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/components/ui/dropdown-menu.tsx`,j=f,M=l,N=w.forwardRef(({className:e,sideOffset:t=4,...n},r)=>(0,T.jsxDEV)(u,{children:(0,T.jsxDEV)(d,{ref:r,sideOffset:t,className:a(`z-50 min-w-40 overflow-hidden rounded-xl border border-border bg-popover p-1 text-popover-foreground shadow-xl`,`data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95`,e),...n},void 0,!1,{fileName:A,lineNumber:15,columnNumber:5},void 0)},void 0,!1,{fileName:A,lineNumber:14,columnNumber:3},void 0));N.displayName=d.displayName;var P=w.forwardRef(({className:e,inset:t,...n},r)=>(0,T.jsxDEV)(c,{ref:r,className:a(`relative flex cursor-pointer select-none items-center gap-2 rounded-lg px-3 py-2 text-sm outline-none transition-colors`,`focus:bg-elevated focus:text-text data-[disabled]:pointer-events-none data-[disabled]:opacity-50`,t&&`pl-8`,e),...n},void 0,!1,{fileName:A,lineNumber:33,columnNumber:3},void 0));P.displayName=c.displayName;var F=w.forwardRef(({className:e,...t},n)=>(0,T.jsxDEV)(o,{ref:n,className:a(`px-3 py-1.5 text-xs font-semibold text-muted-foreground`,e),...t},void 0,!1,{fileName:A,lineNumber:50,columnNumber:3},void 0));F.displayName=o.displayName;var I=w.forwardRef(({className:e,...t},n)=>(0,T.jsxDEV)(s,{ref:n,className:a(`-mx-1 my-1 h-px bg-border`,e),...t},void 0,!1,{fileName:A,lineNumber:62,columnNumber:3},void 0));I.displayName=s.displayName;var L=({active:e})=>e?(0,T.jsxDEV)(m,{size:14,className:`ml-auto text-accent`},void 0,!1,{fileName:A,lineNumber:68,columnNumber:12},void 0):null,R=`coffer-theme`;function z(e){return e===`light`||e===`dark`||e===`eink`?e:`auto`}function B(){try{return z(localStorage.getItem(R))}catch{return z(null)}}function V(e){if(e===`auto`){delete document.documentElement.dataset.theme;try{localStorage.removeItem(R)}catch{}}else{document.documentElement.dataset.theme=e;try{localStorage.setItem(R,e)}catch{}}}function H(){let[e,t]=(0,w.useState)(()=>B());return{choice:e,setChoice:(0,w.useCallback)(e=>{V(e),t(e)},[])}}var U=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/theme/ThemeSwitcher.tsx`,W=[{value:`auto`,Icon:p,labelKey:`theme.auto`},{value:`light`,Icon:C,labelKey:`theme.light`},{value:`dark`,Icon:S,labelKey:`theme.dark`},{value:`eink`,Icon:x,labelKey:`theme.eink`}];function G({direction:e=`up`,compact:t=!1}){let{t:r}=n(),{choice:i,setChoice:a}=H(),o=W.find(e=>e.value===i)??W[0],s=o.Icon;return(0,T.jsxDEV)(j,{children:[(0,T.jsxDEV)(M,{"aria-label":r(`theme.label`),className:`flex items-center rounded-xl text-sm text-muted outline-none transition-colors hover:bg-elevated hover:text-text focus-visible:ring-2 focus-visible:ring-ring ${t?`w-full flex-col gap-0.5 py-2`:`w-full gap-2 px-3 py-2`}`,children:[(0,T.jsxDEV)(s,{size:t?18:16},void 0,!1,{fileName:U,lineNumber:35,columnNumber:9},this),t?(0,T.jsxDEV)(`span`,{className:`text-[10px] font-semibold`,children:r(o.labelKey)},void 0,!1,{fileName:U,lineNumber:37,columnNumber:11},this):(0,T.jsxDEV)(`span`,{className:`flex-1 text-left`,children:r(o.labelKey)},void 0,!1,{fileName:U,lineNumber:39,columnNumber:11},this)]},void 0,!0,{fileName:U,lineNumber:29,columnNumber:7},this),(0,T.jsxDEV)(N,{align:`end`,side:e===`up`?`top`:`bottom`,children:W.map(e=>{let t=e.Icon;return(0,T.jsxDEV)(P,{onSelect:()=>a(e.value),className:e.value===i?`text-accent`:``,children:[(0,T.jsxDEV)(t,{size:15},void 0,!1,{fileName:U,lineNumber:51,columnNumber:15},this),(0,T.jsxDEV)(`span`,{className:`flex-1 text-left`,children:r(e.labelKey)},void 0,!1,{fileName:U,lineNumber:52,columnNumber:15},this),(0,T.jsxDEV)(L,{active:e.value===i},void 0,!1,{fileName:U,lineNumber:53,columnNumber:15},this)]},e.value,!0,{fileName:U,lineNumber:46,columnNumber:13},this)})},void 0,!1,{fileName:U,lineNumber:42,columnNumber:7},this)]},void 0,!0,{fileName:U,lineNumber:28,columnNumber:5},this)}export{k as n,O as r,G as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function e(e,t){return new Promise(n=>{let r=new XMLHttpRequest;r.open(`POST`,`/api/upload`),r.upload.addEventListener(`progress`,e=>{e.lengthComputable&&t(Math.min(100,Math.round(e.loaded/e.total*100)))}),r.addEventListener(`load`,()=>{if(r.status<200||r.status>=300){n(null);return}try{let e=JSON.parse(r.responseText),i=e.name??e.filename;if(!i){n(null);return}t(100),n({name:i,...e.mime?{mime:e.mime}:{},...e.size==null?{}:{size:e.size}})}catch{n(null)}}),r.addEventListener(`error`,()=>n(null)),r.addEventListener(`abort`,()=>n(null));let i=new FormData;i.append(`file`,e),r.send(i)})}async function t(t,n){if(n)return e(t,n);let r=new FormData;r.append(`file`,t);let i=await fetch(`/api/upload`,{method:`POST`,body:r});if(!i.ok)return null;let a=await i.json(),o=a.name??a.filename;return o?{name:o,...a.mime?{mime:a.mime}:{},...a.size==null?{}:{size:a.size}}:null}function n(e){return`/uploads/${e}`}async function r(e){let t=await fetch(`/api/embed`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({url:e})});return t.ok?await t.json():null}var i=new Map;function a(e){let t=i.get(e);if(t)return t;let n=fetch(e).then(t=>{if(!t.ok)throw Error(`GET ${e} → ${t.status}`);return t.json()}).finally(()=>{i.delete(e)});return i.set(e,n),n}function o(e,t,n){return a(`/api/${e}/${t}${n&&Object.keys(n).length?`?`+new URLSearchParams(n).toString():``}`)}async function s(e,t,n){let r=await fetch(`/api/${e}/${t}`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(n)});return r.status===201?{ok:!0,row:await r.json()}:r.status===422?{ok:!1,issues:(await r.json()).issues}:{ok:!1,issues:[{field:``,code:`server`,path:[]}]}}async function c(e,t,n,r){let i=await fetch(`/api/${e}/${t}/${n}`,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify(r)});return i.ok?{ok:!0,row:await i.json()}:i.status===422?{ok:!1,issues:(await i.json()).issues}:{ok:!1,issues:[{field:``,code:`server`,path:[]}]}}async function l(e,t,n){return(await fetch(`/api/${e}/${t}/${n}`,{method:`DELETE`})).status===204}async function u(e,t,n,r){let i=await fetch(`/api/${e}/${t}/${n}/activity`,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify({favorite:r})});return i.ok?(await i.json()).activity??null:null}function d(){return a(`/api/trash`)}async function f(e,t,n){return(await fetch(`/api/trash/${e}/${t}/${n}/restore`,{method:`POST`})).ok}async function p(e,t,n){return(await fetch(`/api/trash/${e}/${t}/${n}`,{method:`DELETE`,headers:{"content-type":`application/json`},body:JSON.stringify({confirmed:!0})})).status===204}async function m(e={}){let t=e.refresh?`updates=1&refresh=1`:`updates=1`,n=await fetch(`/api/plugins?${t}`);if(!n.ok)throw Error(`plugins`);return n.json()}async function h(e,t){let n=await fetch(`/api/plugins/${e}`,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify({enabled:t})}),r=await n.json().catch(()=>({}));return n.ok?{ok:!0}:{ok:!1,error:r.error??String(n.status),data:r}}async function g(e){let t=await fetch(`/api/plugins/${e}/update`,{method:`POST`}),n=await t.json().catch(()=>({}));return t.ok?{ok:!0}:{ok:!1,error:n.error??String(t.status),stderr:n.stderr}}async function _(){let e=await fetch(`/api/plugins/update-all`,{method:`POST`}),t=await e.json().catch(()=>({}));return e.ok?{ok:!0,updated:t.updated}:{ok:!1,error:t.error??String(e.status),stderr:t.stderr}}async function v(){let e=await fetch(`/api/system/update`,{method:`POST`}),t=await e.json().catch(()=>({}));return e.ok?{ok:!0,updated:t.updated}:{ok:!1,error:t.error??String(e.status),stderr:t.stderr}}async function y(e={}){let t=await fetch(`/api/runtime${e.refresh?`?refresh=1`:``}`);return t.ok?await t.json():{installedVersion:null,latestVersion:null}}async function b(){let e=await fetch(`/api/plugins/orchestrator/diagnostics`,{method:`POST`,headers:{"content-type":`application/json`},body:`{}`});if(!e.ok)throw Error(`diagnostics`);return await e.json()}async function x(e,t){let n=await fetch(e,{headers:{"content-type":`application/json`},...t}),r=await n.json().catch(()=>({}));return n.ok?{ok:!0,data:r}:{ok:!1,status:n.status,data:r}}function S(){return a(`/api/auth/status`)}function C(e,t,n){return x(`/api/auth/setup`,{method:`POST`,body:JSON.stringify({login:e,password:t,displayName:n})})}function w(e,t){return x(`/api/auth/login`,{method:`POST`,body:JSON.stringify({login:e,password:t})})}async function T(){await fetch(`/api/auth/logout`,{method:`POST`})}async function E(){let e=await fetch(`/api/auth/me`);return e.ok?e.json():null}function D(e){return x(`/api/auth/me`,{method:`PATCH`,body:JSON.stringify(e)})}function O(e){return x(`/api/auth/users${e?`?q=${encodeURIComponent(e)}`:``}`)}function k(e){return x(`/api/auth/users`,{method:`POST`,body:JSON.stringify(e)})}function A(e,t){return x(`/api/auth/users/${e}`,{method:`PATCH`,body:JSON.stringify(t)})}function j(e){return x(`/api/auth/users/${e}`,{method:`DELETE`})}function M(){return x(`/api/auth/tokens`)}function N(e,t){return x(`/api/auth/tokens`,{method:`POST`,body:JSON.stringify({name:e,token:t})})}function P(e){return x(`/api/auth/tokens/${e}`,{method:`DELETE`})}function F(){return x(`/api/oauth/grants`)}function I(e){return x(`/api/oauth/grants/${encodeURIComponent(e)}`,{method:`DELETE`})}export{g as A,r as C,h as D,P as E,v as M,A as N,u as O,t as P,p as S,I as T,o as _,S as a,O as b,N as c,j as d,a as f,m as g,F as h,C as i,c as j,_ as k,k as l,y as m,T as n,D as o,b as p,E as r,s,w as t,l as u,M as v,f as w,n as x,d as y};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t}from"./i18n-vendor-T6EnJ_TL.js";import{a as n,c as r,t as i}from"./react-vendor-BskHO5hY.js";import{r as a}from"./x-BFRg18Fi.js";import{a as o,r as s}from"./api-DsJ6cAbe.js";var c=e(t(),1),l=i(),u=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/components/ui/card.tsx`,d=c.forwardRef(({className:e,...t},n)=>(0,l.jsxDEV)(`div`,{ref:n,className:a(`rounded-lg border border-border bg-card text-card-foreground`,e),...t},void 0,!1,{fileName:u,lineNumber:5,columnNumber:3},void 0));d.displayName=`Card`;var f=c.forwardRef(({className:e,...t},n)=>(0,l.jsxDEV)(`div`,{ref:n,className:a(`flex flex-col gap-1.5 p-5`,e),...t},void 0,!1,{fileName:u,lineNumber:10,columnNumber:37},void 0));f.displayName=`CardHeader`;var p=c.forwardRef(({className:e,...t},n)=>(0,l.jsxDEV)(`div`,{ref:n,className:a(`font-semibold leading-none text-text`,e),...t},void 0,!1,{fileName:u,lineNumber:16,columnNumber:5},void 0));p.displayName=`CardTitle`;var m=c.forwardRef(({className:e,...t},n)=>(0,l.jsxDEV)(`div`,{ref:n,className:a(`text-sm text-muted-foreground`,e),...t},void 0,!1,{fileName:u,lineNumber:23,columnNumber:5},void 0));m.displayName=`CardDescription`;var h=c.forwardRef(({className:e,...t},n)=>(0,l.jsxDEV)(`div`,{ref:n,className:a(`p-5 pt-0`,e),...t},void 0,!1,{fileName:u,lineNumber:29,columnNumber:37},void 0));h.displayName=`CardContent`;var g=c.forwardRef(({className:e,...t},n)=>(0,l.jsxDEV)(`div`,{ref:n,className:a(`flex items-center p-5 pt-0`,e),...t},void 0,!1,{fileName:u,lineNumber:35,columnNumber:5},void 0));g.displayName=`CardFooter`;var _=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/auth-context.tsx`,v=(0,c.createContext)(null);function y(){let e=(0,c.useContext)(v);if(!e)throw Error(`useAuth() called outside <AuthGate>`);return e}function b({children:e}){let[t,i]=(0,c.useState)({kind:`loading`});return(0,c.useEffect)(()=>{if(t.kind===`ready`)return;let e=!1;return(async()=>{try{let t=await o();if(e)return;if(t.needsSetup)return i({kind:`needsSetup`});let n=await s();if(e)return;i(n?{kind:`ready`,user:n}:{kind:`needsLogin`})}catch{e||i({kind:`error`})}})(),()=>{e=!0}},[r().pathname,t.kind]),(0,c.useEffect)(()=>{if(t.kind!==`ready`)return;let e=()=>{document.visibilityState===`visible`&&s().then(e=>{e||i({kind:`needsLogin`})}).catch(()=>{})};return document.addEventListener(`visibilitychange`,e),()=>document.removeEventListener(`visibilitychange`,e)},[t.kind]),t.kind===`loading`?null:t.kind===`needsSetup`?(0,l.jsxDEV)(n,{to:`/setup`,replace:!0},void 0,!1,{fileName:_,lineNumber:61,columnNumber:44},this):t.kind===`needsLogin`?(0,l.jsxDEV)(n,{to:`/login`,replace:!0},void 0,!1,{fileName:_,lineNumber:62,columnNumber:44},this):t.kind===`error`?(0,l.jsxDEV)(`div`,{style:{display:`flex`,minHeight:`100dvh`,alignItems:`center`,justifyContent:`center`,flexDirection:`column`,gap:`1rem`},children:[(0,l.jsxDEV)(`p`,{children:`Could not check your session.`},void 0,!1,{fileName:_,lineNumber:66,columnNumber:9},this),(0,l.jsxDEV)(`button`,{onClick:()=>window.location.reload(),children:`Reload`},void 0,!1,{fileName:_,lineNumber:67,columnNumber:9},this)]},void 0,!0,{fileName:_,lineNumber:65,columnNumber:7},this):(0,l.jsxDEV)(v.Provider,{value:t.user,children:e},void 0,!1,{fileName:_,lineNumber:71,columnNumber:10},this)}export{y as n,d as r,b as t};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
|
|
2
|
+
@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-border-spacing-x:0;--tw-border-spacing-y:0;--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-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction: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-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-600:oklch(57.7% .245 27.325);--color-amber-600:oklch(66.6% .179 58.318);--color-yellow-400:oklch(85.2% .199 91.936);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--container-7xl:80rem;--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:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--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;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-tight:1.25;--leading-normal:1.5;--leading-relaxed:1.625;--radius-sm:6px;--radius-xl:16px;--radius-2xl:1rem;--animate-spin:spin 1s linear infinite;--blur-sm:8px;--aspect-video:16 / 9;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", sans-serif;--default-mono-font-family:var(--font-mono);--color-bg:var(--bg);--color-surface:var(--surface);--color-elevated:var(--elevated);--color-border:var(--border);--color-border2:var(--border2);--color-text:var(--text);--color-muted:var(--muted);--color-accent:var(--accent);--color-danger:var(--danger);--radius-full:9999px;--breakpoint-panel:1000px;--breakpoint-list:640px}}@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,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, 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;-webkit-text-decoration:inherit;-webkit-text-decoration: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:where(:not(iframe)){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}h1,h2,h3,h4{line-height:1.2}a:focus-visible,button:focus-visible,[role=button]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}input,textarea,select{background:var(--color-bg);border:1px solid var(--color-border2);border-radius:var(--radius-sm);color:var(--color-text);outline:none;width:100%;padding:8px 12px;font-family:inherit;font-size:14px;transition:border-color .15s,box-shadow .15s}input:focus,textarea:focus,select:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--accent)}@supports (color:color-mix(in lab, red, red)){input:focus,textarea:focus,select:focus{box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 15%, transparent)}}input::placeholder,textarea::placeholder{color:var(--color-muted)}input[type=checkbox]{cursor:pointer;width:18px;height:18px;accent-color:var(--color-accent)}input[type=search]{appearance:none}input[type=search]::-webkit-search-cancel-button{appearance:none}input[type=search]::-webkit-search-decoration{appearance:none}textarea{resize:vertical;min-height:80px}select option{background:var(--color-elevated)}}@layer components;@layer utilities{.\@container{container-type:inline-size}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{inset-inline:0}.top-0{top:0}.top-1{top:var(--spacing)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-4{top:calc(var(--spacing) * 4)}.top-\[52px\]{top:52px}.right-0{right:0}.right-1{right:var(--spacing)}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.right-9{right:calc(var(--spacing) * 9)}.right-11{right:calc(var(--spacing) * 11)}.bottom-0{bottom:0}.bottom-2{bottom:calc(var(--spacing) * 2)}.bottom-5{bottom:calc(var(--spacing) * 5)}.bottom-20{bottom:calc(var(--spacing) * 20)}.left-0{left:0}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.left-2\.5{left:calc(var(--spacing) * 2.5)}.left-3{left:calc(var(--spacing) * 3)}.isolate{isolation:isolate}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[45\]{z-index:45}.z-\[60\]{z-index:60}.z-\[100\]{z-index:100}.z-\[\<n\>\]{z-index:<n>}.order-first{order:-9999}.order-last{order:9999}.col-start-1{grid-column-start:1}.row-start-1{grid-row-start:1}.container{width:100%}@media (width>=640px){.container{max-width:640px}}@media (width>=768px){.container{max-width:768px}}@media (width>=1000px){.container{max-width:1000px}}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.m-0{margin:0}.m-1{margin:var(--spacing)}.m-auto{margin:auto}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.-mx-5{margin-inline:calc(var(--spacing) * -5)}.mx-auto{margin-inline:auto}.my-1{margin-block:var(--spacing)}.-mt-4{margin-top:calc(var(--spacing) * -4)}.-mt-8{margin-top:calc(var(--spacing) * -8)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mt-10{margin-top:calc(var(--spacing) * 10)}.mr-1{margin-right:var(--spacing)}.mb-0{margin-bottom:0}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:var(--spacing)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.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)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-px{margin-bottom:1px}.-ml-1{margin-left:calc(var(--spacing) * -1)}.ml-0\.5{margin-left:calc(var(--spacing) * .5)}.ml-1{margin-left:var(--spacing)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-auto{margin-left:auto}.scrollbar-none::-webkit-scrollbar{display:none}.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}.aspect-square{aspect-ratio:1}.aspect-video{aspect-ratio:var(--aspect-video)}.size-\(--cell-size\){width:var(--cell-size);height:var(--cell-size)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-auto{width:auto;height:auto}.size-full{width:100%;height:100%}.h-\(--cell-size\){height:var(--cell-size)}.h-0{height:0}.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)}.h-4{height:calc(var(--spacing) * 4)}.h-4\.5{height:calc(var(--spacing) * 4.5)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-14{height:calc(var(--spacing) * 14)}.h-24{height:calc(var(--spacing) * 24)}.h-40{height:calc(var(--spacing) * 40)}.h-48{height:calc(var(--spacing) * 48)}.h-56{height:calc(var(--spacing) * 56)}.h-64{height:calc(var(--spacing) * 64)}.h-96{height:calc(var(--spacing) * 96)}.h-\[52px\]{height:52px}.h-\[60dvh\]{height:60dvh}.h-\[85dvh\]{height:85dvh}.h-\[88dvh\]{height:88dvh}.h-\[200px\]{height:200px}.h-\[560px\]{height:560px}.h-\[calc\(--spacing\(5\.5\)\)\]{height:calc(calc(var(--spacing) * 5.5))}.h-\[calc\(100dvh-52px\)\]{height:calc(100dvh - 52px)}.h-\[calc\(100dvh-140px\)\]{height:calc(100dvh - 140px)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-auto\!{height:auto!important}.h-dvh{height:100dvh}.h-full{height:100%}.h-px{height:1px}.max-h-32{max-height:calc(var(--spacing) * 32)}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-96{max-height:calc(var(--spacing) * 96)}.max-h-\[80dvh\]{max-height:80dvh}.max-h-\[88dvh\]{max-height:88dvh}.max-h-\[90dvh\]{max-height:90dvh}.max-h-\[92dvh\]{max-height:92dvh}.max-h-\[200px\]{max-height:200px}.max-h-\[min\(calc\(--spacing\(96\)---spacing\(9\)\)\,calc\(var\(--available-height\)---spacing\(9\)\)\)\]{max-height:min(calc(calc(var(--spacing) * 96) - calc(var(--spacing) * 9)), calc(var(--available-height) - calc(var(--spacing) * 9)))}.max-h-\[min\(var\(--available-height\)\,24rem\)\]{max-height:min(var(--available-height), 24rem)}.max-h-full{max-height:100%}.min-h-0{min-height:0}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-9{min-height:calc(var(--spacing) * 9)}.min-h-20{min-height:calc(var(--spacing) * 20)}.min-h-32{min-height:calc(var(--spacing) * 32)}.min-h-dvh{min-height:100dvh}.w-\(--anchor-width\){width:var(--anchor-width)}.w-\(--cell-size\){width:var(--cell-size)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-4\.5{width:calc(var(--spacing) * 4.5)}.w-5{width:calc(var(--spacing) * 5)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-11{width:calc(var(--spacing) * 11)}.w-12{width:calc(var(--spacing) * 12)}.w-14{width:calc(var(--spacing) * 14)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-28{width:calc(var(--spacing) * 28)}.w-32{width:calc(var(--spacing) * 32)}.w-36{width:calc(var(--spacing) * 36)}.w-40{width:calc(var(--spacing) * 40)}.w-48{width:calc(var(--spacing) * 48)}.w-52{width:calc(var(--spacing) * 52)}.w-56{width:calc(var(--spacing) * 56)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-80{width:calc(var(--spacing) * 80)}.w-\[5\.25rem\]{width:5.25rem}.w-\[200px\]{width:200px}.w-\[220px\]{width:220px}.w-\[380px\]{width:380px}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.w-xs{width:var(--container-xs)}.max-w-\(--available-width\){max-width:var(--available-width)}.max-w-\(--radix-popover-trigger-width\){max-width:var(--radix-popover-trigger-width)}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-48{max-width:calc(var(--spacing) * 48)}.max-w-64{max-width:calc(var(--spacing) * 64)}.max-w-\[85\%\]{max-width:85%}.max-w-\[92vw\]{max-width:92vw}.max-w-\[95\%\]{max-width:95%}.max-w-\[calc\(100vw-2rem\)\]{max-width:calc(100vw - 2rem)}.max-w-\[min\(16rem\,100\%\)\]{max-width:min(16rem,100%)}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-sm{max-width:var(--container-sm)}.max-w-xs{max-width:var(--container-xs)}.min-w-\(--cell-size\){min-width:var(--cell-size)}.min-w-0{min-width:0}.min-w-16{min-width:calc(var(--spacing) * 16)}.min-w-32{min-width:calc(var(--spacing) * 32)}.min-w-40{min-width:calc(var(--spacing) * 40)}.min-w-52{min-width:calc(var(--spacing) * 52)}.min-w-\[34rem\]{min-width:34rem}.min-w-\[calc\(var\(--anchor-width\)\+--spacing\(7\)\)\]{min-width:calc(var(--anchor-width) + calc(var(--spacing) * 7))}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.flex-1{flex:1}.flex-none{flex:none}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.basis-full{flex-basis:100%}.table-fixed{table-layout:fixed}.border-collapse{border-collapse:collapse}.border-separate{border-collapse:separate}.border-spacing-1{--tw-border-spacing-x:var(--spacing);--tw-border-spacing-y:var(--spacing);border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y)}.origin-\(--radix-popover-content-transform-origin\){transform-origin:var(--radix-popover-content-transform-origin)}.origin-\(--transform-origin\){transform-origin:var(--transform-origin)}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-full{--tw-translate-y:-100%;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-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.cursor-zoom-in{cursor:zoom-in}.touch-none{touch-action:none}.resize-none{resize:none}.scroll-py-1{scroll-padding-block:var(--spacing)}.scroll-pt-2{scroll-padding-top:calc(var(--spacing) * 2)}.scroll-pb-2{scroll-padding-bottom:calc(var(--spacing) * 2)}.scrollbar-none{scrollbar-width:none}.\[appearance\:textfield\]{appearance:textfield}.appearance-none{appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-\[1fr_auto_auto\]{grid-template-columns:1fr auto auto}.grid-cols-\[110px_1fr\]{grid-template-columns:110px 1fr}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-3\.5{gap:calc(var(--spacing) * 3.5)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * 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)))}.gap-x-1\.5{column-gap:calc(var(--spacing) * 1.5)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-y-0\.5{row-gap:calc(var(--spacing) * .5)}.gap-y-1{row-gap:var(--spacing)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overscroll-contain{overscroll-behavior:contain}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\[calc\(var\(--radius\)-5px\)\]{border-radius:calc(var(--radius) - 5px)}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:12px}.rounded-md{border-radius:8px}.rounded-none{border-radius:0}.rounded-sm{border-radius:6px}.rounded-xl{border-radius:16px}.rounded-t-2xl{border-top-left-radius:var(--radius-2xl);border-top-right-radius:var(--radius-2xl)}.rounded-t-xl{border-top-left-radius:16px;border-top-right-radius:16px}.rounded-l-md{border-top-left-radius:8px;border-bottom-left-radius:8px}.rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.rounded-r-md{border-top-right-radius:8px;border-bottom-right-radius:8px}.rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}.rounded-br-sm{border-bottom-right-radius:6px}.rounded-bl-sm{border-bottom-left-radius:6px}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-e-0{border-inline-end-style:var(--tw-border-style);border-inline-end-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-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-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-accent,.border-accent\/30{border-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.border-accent\/30{border-color:color-mix(in oklab, var(--accent) 30%, transparent)}}.border-accent\/40{border-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.border-accent\/40{border-color:color-mix(in oklab, var(--accent) 40%, transparent)}}.border-accent\/50{border-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.border-accent\/50{border-color:color-mix(in oklab, var(--accent) 50%, transparent)}}.border-border,.border-border\/50{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/50{border-color:color-mix(in oklab, var(--border) 50%, transparent)}}.border-border\/60{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/60{border-color:color-mix(in oklab, var(--border) 60%, transparent)}}.border-border2{border-color:var(--border2)}.border-current\/30{border-color:currentColor}@supports (color:color-mix(in lab, red, red)){.border-current\/30{border-color:color-mix(in oklab, currentcolor 30%, transparent)}}.border-danger\/30{border-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.border-danger\/30{border-color:color-mix(in oklab, var(--danger) 30%, transparent)}}.border-danger\/40{border-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.border-danger\/40{border-color:color-mix(in oklab, var(--danger) 40%, transparent)}}.border-danger\/60{border-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.border-danger\/60{border-color:color-mix(in oklab, var(--danger) 60%, transparent)}}.border-destructive{border-color:var(--danger)}.border-input{border-color:var(--border)}.border-success\/30{border-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.border-success\/30{border-color:color-mix(in oklab, var(--success) 30%, transparent)}}.border-transparent{border-color:#0000}.border-warning\/30{border-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.border-warning\/30{border-color:color-mix(in oklab, var(--warning) 30%, transparent)}}.border-t-current{border-top-color:currentColor}.border-t-transparent{border-top-color:#0000}.border-l-transparent{border-left-color:#0000}.bg-accent,.bg-accent\/10{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.bg-accent\/10{background-color:color-mix(in oklab, var(--accent) 10%, transparent)}}.bg-accent\/15{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.bg-accent\/15{background-color:color-mix(in oklab, var(--accent) 15%, transparent)}}.bg-accent\/20{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.bg-accent\/20{background-color:color-mix(in oklab, var(--accent) 20%, transparent)}}.bg-background,.bg-bg,.bg-bg\/60{background-color:var(--bg)}@supports (color:color-mix(in lab, red, red)){.bg-bg\/60{background-color:color-mix(in oklab, var(--bg) 60%, transparent)}}.bg-bg\/70{background-color:var(--bg)}@supports (color:color-mix(in lab, red, red)){.bg-bg\/70{background-color:color-mix(in oklab, var(--bg) 70%, transparent)}}.bg-bg\/80{background-color:var(--bg)}@supports (color:color-mix(in lab, red, red)){.bg-bg\/80{background-color:color-mix(in oklab, var(--bg) 80%, transparent)}}.bg-bg\/85{background-color:var(--bg)}@supports (color:color-mix(in lab, red, red)){.bg-bg\/85{background-color:color-mix(in oklab, var(--bg) 85%, transparent)}}.bg-bg\/95{background-color:var(--bg)}@supports (color:color-mix(in lab, red, red)){.bg-bg\/95{background-color:color-mix(in oklab, var(--bg) 95%, transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\/50{background-color:color-mix(in oklab, var(--color-black) 50%, transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab, red, red)){.bg-black\/60{background-color:color-mix(in oklab, var(--color-black) 60%, transparent)}}.bg-black\/85{background-color:#000000d9}@supports (color:color-mix(in lab, red, red)){.bg-black\/85{background-color:color-mix(in oklab, var(--color-black) 85%, transparent)}}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--surface)}.bg-danger,.bg-danger\/10{background-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.bg-danger\/10{background-color:color-mix(in oklab, var(--danger) 10%, transparent)}}.bg-danger\/15{background-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.bg-danger\/15{background-color:color-mix(in oklab, var(--danger) 15%, transparent)}}.bg-destructive{background-color:var(--danger)}.bg-elevated{background-color:var(--elevated)}.bg-muted,.bg-muted\/5{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/5{background-color:color-mix(in oklab, var(--muted) 5%, transparent)}}.bg-muted\/40{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/40{background-color:color-mix(in oklab, var(--muted) 40%, transparent)}}.bg-popover{background-color:var(--surface)}.bg-primary{background-color:var(--accent)}.bg-secondary{background-color:var(--elevated)}.bg-success\/15{background-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.bg-success\/15{background-color:color-mix(in oklab, var(--success) 15%, transparent)}}.bg-surface,.bg-surface\/40{background-color:var(--surface)}@supports (color:color-mix(in lab, red, red)){.bg-surface\/40{background-color:color-mix(in oklab, var(--surface) 40%, transparent)}}.bg-surface\/80{background-color:var(--surface)}@supports (color:color-mix(in lab, red, red)){.bg-surface\/80{background-color:color-mix(in oklab, var(--surface) 80%, transparent)}}.bg-surface\/95{background-color:var(--surface)}@supports (color:color-mix(in lab, red, red)){.bg-surface\/95{background-color:color-mix(in oklab, var(--surface) 95%, transparent)}}.bg-transparent{background-color:#0000}.bg-warning\/15{background-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.bg-warning\/15{background-color:color-mix(in oklab, var(--warning) 15%, transparent)}}.bg-white{background-color:var(--color-white)}.bg-clip-padding{background-clip:padding-box}.fill-current{fill:currentColor}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0{padding:0}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-3\.5{padding:calc(var(--spacing) * 3.5)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-px{padding:1px}.px-\(--cell-size\){padding-inline:var(--cell-size)}.px-0{padding-inline:0}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.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-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-20{padding-inline:calc(var(--spacing) * 20)}.py-0{padding-block:0}.py-0\!{padding-block:0!important}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-20{padding-block:calc(var(--spacing) * 20)}.pt-0{padding-top:0}.pt-1{padding-top:var(--spacing)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pt-\[10vh\]{padding-top:10vh}.pr-1{padding-right:var(--spacing)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-6{padding-right:calc(var(--spacing) * 6)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pr-24{padding-right:calc(var(--spacing) * 24)}.pb-1{padding-bottom:var(--spacing)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-16{padding-bottom:calc(var(--spacing) * 16)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-8{padding-left:calc(var(--spacing) * 8)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-top{vertical-align:top}.font-mono{font-family:var(--font-mono)}.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-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.8rem\]{font-size:.8rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[13px\]{font-size:13px}.text-\[15px\]{font-size:15px}.text-\[28px\]{font-size:28px}.leading-none{--tw-leading:1;line-height:1}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.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-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)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.text-accent{color:var(--accent)}.text-accent-foreground{color:var(--on-accent)}.text-amber-600{color:var(--color-amber-600)}.text-card-foreground{color:var(--text)}.text-current{color:currentColor}.text-danger{color:var(--danger)}.text-destructive-foreground{color:var(--on-danger)}.text-foreground,.text-foreground\/50{color:var(--text)}@supports (color:color-mix(in lab, red, red)){.text-foreground\/50{color:color-mix(in oklab, var(--text) 50%, transparent)}}.text-muted,.text-muted-foreground,.text-muted\/30{color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.text-muted\/30{color:color-mix(in oklab, var(--muted) 30%, transparent)}}.text-muted\/50{color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.text-muted\/50{color:color-mix(in oklab, var(--muted) 50%, transparent)}}.text-popover-foreground{color:var(--text)}.text-primary{color:var(--accent)}.text-primary-foreground{color:var(--on-accent)}.text-red-600{color:var(--color-red-600)}.text-secondary-foreground{color:var(--text)}.text-success{color:var(--success)}.text-text,.text-text\/80{color:var(--text)}@supports (color:color-mix(in lab, red, red)){.text-text\/80{color:color-mix(in oklab, var(--text) 80%, transparent)}}.text-text\/90{color:var(--text)}@supports (color:color-mix(in lab, red, red)){.text-text\/90{color:color-mix(in oklab, var(--text) 90%, transparent)}}.text-warning{color:var(--warning)}.text-white{color:var(--color-white)}.text-white\/70{color:#ffffffb3}@supports (color:color-mix(in lab, red, red)){.text-white\/70{color:color-mix(in oklab, var(--color-white) 70%, transparent)}}.text-white\/90{color:#ffffffe6}@supports (color:color-mix(in lab, red, red)){.text-white\/90{color:color-mix(in oklab, var(--color-white) 90%, transparent)}}.text-yellow-400{color:var(--color-yellow-400)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);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)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px 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-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--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-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px 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-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);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)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + 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)}.ring-0\!{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.ring-1{--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)}.ring-destructive\/20{--tw-ring-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.ring-destructive\/20{--tw-ring-color:color-mix(in oklab, var(--danger) 20%, transparent)}}.ring-foreground\/10{--tw-ring-color:var(--text)}@supports (color:color-mix(in lab, red, red)){.ring-foreground\/10{--tw-ring-color:color-mix(in oklab, var(--text) 10%, transparent)}}.ring-offset-background{--tw-ring-offset-color:var(--bg)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.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,)}.drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a)) drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a) drop-shadow(0 1px 1px #0000000f);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,)}.sepia{--tw-sepia:sepia(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,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,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,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-\[color\,box-shadow\]{transition-property:color,box-shadow;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))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-100{--tw-duration:.1s;transition-duration:.1s}.outline-none{--tw-outline-style:none;outline-style:none}.outline-none\!{--tw-outline-style:none!important;outline-style:none!important}.select-none{-webkit-user-select:none;user-select:none}.\[--cell-size\:--spacing\(8\)\]{--cell-size:calc(var(--spacing) * 8)}.running{animation-play-state:running}.not-last\:border-r:not(:last-child){border-right-style:var(--tw-border-style);border-right-width:1px}@media (hover:hover){.group-hover\:text-accent:is(:where(.group):hover *){color:var(--accent)}.group-hover\:text-text:is(:where(.group):hover *){color:var(--text)}.group-hover\:opacity-100:is(:where(.group):hover *),.group-hover\/av\:opacity-100:is(:where(.group\/av):hover *),.group-hover\/cov\:opacity-100:is(:where(.group\/cov):hover *),.group-hover\/field\:opacity-100:is(:where(.group\/field):hover *),.group-hover\/group\:opacity-100:is(:where(.group\/group):hover *),.group-hover\/group2\:opacity-100:is(:where(.group\/group2):hover *),.group-hover\/group3\:opacity-100:is(:where(.group\/group3):hover *),.group-hover\/group4\:opacity-100:is(:where(.group\/group4):hover *),.group-hover\/img\:opacity-100:is(:where(.group\/img):hover *){opacity:1}}.group-has-data-\[slot\=combobox-clear\]\/input-group\:hidden:is(:where(.group\/input-group):has([data-slot=combobox-clear]) *){display:none}.group-has-\[\>input\]\/input-group\:pt-2\.5:is(:where(.group\/input-group):has(>input) *){padding-top:calc(var(--spacing) * 2.5)}.group-has-\[\>input\]\/input-group\:pb-2\.5:is(:where(.group\/input-group):has(>input) *){padding-bottom:calc(var(--spacing) * 2.5)}.group-data-empty\/combobox-content\:flex:is(:where(.group\/combobox-content)[data-empty] *){display:flex}.group-data-\[disabled\=true\]\/input-group\:opacity-50:is(:where(.group\/input-group)[data-disabled=true] *){opacity:.5}.group-data-\[focused\=true\]\/day\:relative:is(:where(.group\/day)[data-focused=true] *){position:relative}.group-data-\[focused\=true\]\/day\:z-10:is(:where(.group\/day)[data-focused=true] *){z-index:10}.group-data-\[focused\=true\]\/day\:border-ring:is(:where(.group\/day)[data-focused=true] *){border-color:var(--accent)}.group-data-\[focused\=true\]\/day\:ring-\[3px\]:is(:where(.group\/day)[data-focused=true] *){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + 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)}.group-data-\[focused\=true\]\/day\:ring-ring\/50:is(:where(.group\/day)[data-focused=true] *){--tw-ring-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.group-data-\[focused\=true\]\/day\:ring-ring\/50:is(:where(.group\/day)[data-focused=true] *){--tw-ring-color:color-mix(in oklab, var(--accent) 50%, transparent)}}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-70:is(:where(.peer):disabled~*){opacity:.7}.selection\:bg-primary ::selection{background-color:var(--accent)}.selection\:bg-primary::selection{background-color:var(--accent)}.selection\:text-primary-foreground ::selection{color:var(--on-accent)}.selection\:text-primary-foreground::selection{color:var(--on-accent)}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-7::file-selector-button{height:calc(var(--spacing) * 7)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--text)}.placeholder\:text-muted::placeholder,.placeholder\:text-muted-foreground::placeholder,.placeholder\:text-muted\/40::placeholder{color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.placeholder\:text-muted\/40::placeholder{color:color-mix(in oklab, var(--muted) 40%, transparent)}}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.focus-within\:border-ring:focus-within{border-color:var(--accent)}.focus-within\:ring-\[3px\]:focus-within{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + 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)}.focus-within\:ring-ring\/50:focus-within{--tw-ring-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.focus-within\:ring-ring\/50:focus-within{--tw-ring-color:color-mix(in oklab, var(--accent) 50%, transparent)}}@media (hover:hover){.hover\:border-accent:hover,.hover\:border-accent\/40:hover{border-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\:border-accent\/40:hover{border-color:color-mix(in oklab, var(--accent) 40%, transparent)}}.hover\:border-accent\/60:hover{border-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\:border-accent\/60:hover{border-color:color-mix(in oklab, var(--accent) 60%, transparent)}}.hover\:border-border2:hover{border-color:var(--border2)}.hover\:border-danger:hover{border-color:var(--danger)}.hover\:bg-accent:hover,.hover\:bg-accent\/10:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/10:hover{background-color:color-mix(in oklab, var(--accent) 10%, transparent)}}.hover\:bg-accent\/20:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/20:hover{background-color:color-mix(in oklab, var(--accent) 20%, transparent)}}.hover\:bg-accent2:hover{background-color:var(--accent2)}.hover\:bg-bg\/70:hover{background-color:var(--bg)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-bg\/70:hover{background-color:color-mix(in oklab, var(--bg) 70%, transparent)}}.hover\:bg-bg\/80:hover{background-color:var(--bg)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-bg\/80:hover{background-color:color-mix(in oklab, var(--bg) 80%, transparent)}}.hover\:bg-black\/70:hover{background-color:#000000b3}@supports (color:color-mix(in lab, red, red)){.hover\:bg-black\/70:hover{background-color:color-mix(in oklab, var(--color-black) 70%, transparent)}}.hover\:bg-border:hover{background-color:var(--border)}.hover\:bg-danger\/10:hover{background-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-danger\/10:hover{background-color:color-mix(in oklab, var(--danger) 10%, transparent)}}.hover\:bg-elevated:hover,.hover\:bg-elevated\/60:hover{background-color:var(--elevated)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-elevated\/60:hover{background-color:color-mix(in oklab, var(--elevated) 60%, transparent)}}.hover\:bg-muted\/15:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/15:hover{background-color:color-mix(in oklab, var(--muted) 15%, transparent)}}.hover\:bg-surface:hover{background-color:var(--surface)}.hover\:bg-transparent:hover{background-color:#0000}.hover\:text-accent:hover{color:var(--accent)}.hover\:text-accent-foreground:hover{color:var(--on-accent)}.hover\:text-accent2:hover{color:var(--accent2)}.hover\:text-danger:hover{color:var(--danger)}.hover\:text-foreground:hover,.hover\:text-text:hover{color:var(--text)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}.hover\:opacity-100:hover{opacity:1}}.focus\:z-1:focus{z-index:1}.focus\:z-10:focus{z-index:10}.focus\:border-accent:focus,.focus\:border-ring:focus{border-color:var(--accent)}.focus\:bg-elevated:focus{background-color:var(--elevated)}.focus\:bg-transparent:focus{background-color:#0000}.focus\:text-text:focus{color:var(--text)}.focus\:ring-0:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + 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)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + 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)}.focus\:ring-\[3px\]:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + 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)}.focus\:ring-ring:focus,.focus\:ring-ring\/50:focus{--tw-ring-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.focus\:ring-ring\/50:focus{--tw-ring-color:color-mix(in oklab, var(--accent) 50%, transparent)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:border-border:focus-visible{border-color:var(--border)}.focus-visible\:border-ring:focus-visible{border-color:var(--accent)}.focus-visible\:opacity-100:focus-visible{opacity:1}.focus-visible\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + 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)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + 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)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + 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)}.focus-visible\:ring-ring:focus-visible,.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--accent) 50%, transparent)}}.focus-visible\:ring-offset-0:focus-visible{--tw-ring-offset-width:0px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color:var(--bg)}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.has-focus\:border-ring:has(:focus){border-color:var(--accent)}.has-focus\:ring-\[3px\]:has(:focus){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + 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)}.has-focus\:ring-ring\/50:has(:focus){--tw-ring-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.has-focus\:ring-ring\/50:has(:focus){--tw-ring-color:color-mix(in oklab, var(--accent) 50%, transparent)}}.has-disabled\:pointer-events-none:has(:disabled){pointer-events:none}.has-disabled\:cursor-not-allowed:has(:disabled){cursor:not-allowed}.has-disabled\:opacity-50:has(:disabled){opacity:.5}.has-aria-invalid\:border-destructive:has([aria-invalid=true]){border-color:var(--danger)}.has-aria-invalid\:ring-\[3px\]:has([aria-invalid=true]){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + 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)}.has-aria-invalid\:ring-destructive\/20:has([aria-invalid=true]){--tw-ring-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.has-aria-invalid\:ring-destructive\/20:has([aria-invalid=true]){--tw-ring-color:color-mix(in oklab, var(--danger) 20%, transparent)}}.has-data-\[slot\=combobox-chip\]\:px-1\.5:has([data-slot=combobox-chip]){padding-inline:calc(var(--spacing) * 1.5)}.has-data-\[slot\=combobox-chip-remove\]\:pr-0:has([data-slot=combobox-chip-remove]){padding-right:0}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:border-ring:has([data-slot=input-group-control]:focus-visible){border-color:var(--accent)}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-\[3px\]:has([data-slot=input-group-control]:focus-visible){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + 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)}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-ring\/50:has([data-slot=input-group-control]:focus-visible){--tw-ring-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-ring\/50:has([data-slot=input-group-control]:focus-visible){--tw-ring-color:color-mix(in oklab, var(--accent) 50%, transparent)}}.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:border-destructive:has([data-slot][aria-invalid=true]){border-color:var(--danger)}.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/20:has([data-slot][aria-invalid=true]){--tw-ring-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/20:has([data-slot][aria-invalid=true]){--tw-ring-color:color-mix(in oklab, var(--danger) 20%, transparent)}}.has-\[input\:focus\]\:border-ring:has(:is(input:focus)){border-color:var(--accent)}.has-\[input\:focus\]\:ring-\[3px\]:has(:is(input:focus)){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + 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)}.has-\[input\:focus\]\:ring-ring\/50:has(:is(input:focus)){--tw-ring-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.has-\[input\:focus\]\:ring-ring\/50:has(:is(input:focus)){--tw-ring-color:color-mix(in oklab, var(--accent) 50%, transparent)}}.has-\[\>\[data-align\=block-end\]\]\:h-auto:has(>[data-align=block-end]){height:auto}.has-\[\>\[data-align\=block-end\]\]\:flex-col:has(>[data-align=block-end]){flex-direction:column}.has-\[\>\[data-align\=block-start\]\]\:h-auto:has(>[data-align=block-start]){height:auto}.has-\[\>\[data-align\=block-start\]\]\:flex-col:has(>[data-align=block-start]){flex-direction:column}.has-\[\>button\]\:mr-\[-0\.45rem\]:has(>button){margin-right:-.45rem}.has-\[\>button\]\:ml-\[-0\.45rem\]:has(>button){margin-left:-.45rem}.has-\[\>kbd\]\:mr-\[-0\.35rem\]:has(>kbd){margin-right:-.35rem}.has-\[\>kbd\]\:ml-\[-0\.35rem\]:has(>kbd){margin-left:-.35rem}.has-\[\>svg\]\:p-0:has(>svg){padding:0}.has-\[\>svg\]\:px-2:has(>svg){padding-inline:calc(var(--spacing) * 2)}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing) * 2.5)}.has-\[\>textarea\]\:h-auto:has(>textarea){height:auto}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--danger)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--danger) 20%, transparent)}}.aria-pressed\:bg-transparent[aria-pressed=true]{background-color:#0000}.aria-selected\:text-muted-foreground[aria-selected=true]{color:var(--muted)}.data-closed\:animate-out[data-closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-closed\:fade-out-0[data-closed]{--tw-exit-opacity:0}.data-closed\:zoom-out-95[data-closed]{--tw-exit-scale:.95}.data-empty\:p-0[data-empty]{padding:0}.data-highlighted\:bg-accent\/15[data-highlighted]{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.data-highlighted\:bg-accent\/15[data-highlighted]{background-color:color-mix(in oklab, var(--accent) 15%, transparent)}}.data-highlighted\:text-accent[data-highlighted]{color:var(--accent)}.data-open\:animate-in[data-open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-open\:fade-in-0[data-open]{--tw-enter-opacity:0}.data-open\:zoom-in-95[data-open]{--tw-enter-scale:.95}.data-pressed\:bg-transparent[data-pressed]{background-color:#0000}.data-selected\:bg-primary[data-selected]{background-color:var(--accent)}.data-selected\:text-primary-foreground[data-selected]{color:var(--on-accent)}@media (hover:hover){.data-selected\:hover\:bg-primary[data-selected]:hover{background-color:var(--accent)}.data-selected\:hover\:text-primary-foreground[data-selected]:hover{color:var(--on-accent)}}.data-\[chips\=true\]\:min-w-\(--anchor-width\)[data-chips=true]{min-width:var(--anchor-width)}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:var(--muted)}.data-\[range-end\=true\]\:rounded-md[data-range-end=true]{border-radius:8px}.data-\[range-end\=true\]\:rounded-r-md[data-range-end=true]{border-top-right-radius:8px;border-bottom-right-radius:8px}.data-\[range-end\=true\]\:bg-primary[data-range-end=true]{background-color:var(--accent)}.data-\[range-end\=true\]\:text-primary-foreground[data-range-end=true]{color:var(--on-accent)}.data-\[range-middle\=true\]\:rounded-none[data-range-middle=true]{border-radius:0}.data-\[range-middle\=true\]\:bg-accent[data-range-middle=true]{background-color:var(--accent)}.data-\[range-middle\=true\]\:text-accent-foreground[data-range-middle=true]{color:var(--on-accent)}.data-\[range-start\=true\]\:rounded-md[data-range-start=true]{border-radius:8px}.data-\[range-start\=true\]\:rounded-l-md[data-range-start=true]{border-top-left-radius:8px;border-bottom-left-radius:8px}.data-\[range-start\=true\]\:bg-primary[data-range-start=true]{background-color:var(--accent)}.data-\[range-start\=true\]\:text-primary-foreground[data-range-start=true]{color:var(--on-accent)}.data-\[selected\]\:bg-primary[data-selected]{background-color:var(--accent)}.data-\[selected\]\:text-primary-foreground[data-selected]{color:var(--on-accent)}@media (hover:hover){.data-\[selected\]\:hover\:bg-primary[data-selected]:hover{background-color:var(--accent)}}.data-\[selected-single\=true\]\:bg-primary[data-selected-single=true]{background-color:var(--accent)}.data-\[selected-single\=true\]\:text-primary-foreground[data-selected-single=true]{color:var(--on-accent)}.data-\[selected\=true\]\:rounded-none[data-selected=true]{border-radius:0}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:var(--spacing);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}:is(.\*\:data-\[slot\=input-group\]\:m-1>*)[data-slot=input-group]{margin:var(--spacing)}:is(.\*\:data-\[slot\=input-group\]\:mb-0>*)[data-slot=input-group]{margin-bottom:0}:is(.\*\:data-\[slot\=input-group\]\:h-8>*)[data-slot=input-group]{height:calc(var(--spacing) * 8)}:is(.\*\:data-\[slot\=input-group\]\:border-input\/30>*)[data-slot=input-group]{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){:is(.\*\:data-\[slot\=input-group\]\:border-input\/30>*)[data-slot=input-group]{border-color:color-mix(in oklab, var(--border) 30%, transparent)}}:is(.\*\:data-\[slot\=input-group\]\:bg-input\/30>*)[data-slot=input-group]{background-color:var(--border)}@supports (color:color-mix(in lab, red, red)){:is(.\*\:data-\[slot\=input-group\]\:bg-input\/30>*)[data-slot=input-group]{background-color:color-mix(in oklab, var(--border) 30%, transparent)}}:is(.\*\:data-\[slot\=input-group\]\:bg-transparent>*)[data-slot=input-group]{background-color:#0000}:is(.\*\:data-\[slot\=input-group\]\:shadow-none>*)[data-slot=input-group]{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}:is(.\*\*\:data-\[slot\=scroll-area-scrollbar\]\:m-0 *)[data-slot=scroll-area-scrollbar]{margin:0}.data-\[state\=checked\]\:translate-x-5[data-state=checked]{--tw-translate-x:calc(var(--spacing) * 5);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=checked\]\:border-primary[data-state=checked]{border-color:var(--accent)}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:var(--accent)}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:var(--on-accent)}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=closed\]\:duration-200[data-state=closed]{--tw-duration:.2s;transition-duration:.2s}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=closed\]\:slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y:100%}.data-\[state\=empty\]\:text-border[data-state=empty]{color:var(--border)}.data-\[state\=indeterminate\]\:border-primary[data-state=indeterminate]{border-color:var(--accent)}.data-\[state\=indeterminate\]\:bg-primary[data-state=indeterminate]{background-color:var(--accent)}.data-\[state\=indeterminate\]\:text-primary-foreground[data-state=indeterminate]{color:var(--on-accent)}.data-\[state\=open\]\:animate-in[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\[state\=open\]\:slide-in-from-bottom[data-state=open]{--tw-enter-translate-y:100%}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x:0px;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=unchecked\]\:bg-border[data-state=unchecked]{background-color:var(--border)}@media (width>=640px){.list\:block{display:block}.list\:hidden{display:none}}@media (width>=768px){.nav\:bottom-4{bottom:calc(var(--spacing) * 4)}.nav\:block{display:block}.nav\:flex{display:flex}.nav\:hidden{display:none}.nav\:pb-0{padding-bottom:0}.nav\:pl-52{padding-left:calc(var(--spacing) * 52)}}@media (width>=1000px){.panel\:block{display:block}.panel\:hidden{display:none}}@media (width>=40rem){.sm\:inline{display:inline}.sm\:w-auto{width:auto}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-\[7rem_7rem_1fr\]{grid-template-columns:7rem 7rem 1fr}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:gap-4{gap:calc(var(--spacing) * 4)}.sm\:self-auto{align-self:auto}.sm\:border-t-0{border-top-style:var(--tw-border-style);border-top-width:0}.sm\:p-6{padding:calc(var(--spacing) * 6)}.sm\:pt-0{padding-top:0}}@media (width>=48rem){.md\:inset-x-auto{inset-inline:auto}.md\:top-1\/2{top:50%}.md\:right-6{right:calc(var(--spacing) * 6)}.md\:bottom-auto{bottom:auto}.md\:left-1\/2{left:50%}.md\:left-6{left:calc(var(--spacing) * 6)}.md\:-mx-8{margin-inline:calc(var(--spacing) * -8)}.md\:-mt-10{margin-top:calc(var(--spacing) * -10)}.md\:h-64{height:calc(var(--spacing) * 64)}.md\:h-\[85dvh\]{height:85dvh}.md\:max-h-\[85dvh\]{max-height:85dvh}.md\:w-\[80vw\]{width:80vw}.md\:w-full{width:100%}.md\:max-w-\[1040px\]{max-width:1040px}.md\:max-w-md{max-width:var(--container-md)}.md\:max-w-xl{max-width:var(--container-xl)}.md\:-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.md\:-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.md\:flex-row{flex-direction:row}.md\:overflow-y-hidden{overflow-y:hidden}.md\:rounded-2xl{border-radius:var(--radius-2xl)}.md\:px-6{padding-inline:calc(var(--spacing) * 6)}.md\:px-8{padding-inline:calc(var(--spacing) * 8)}.md\:py-10{padding-block:calc(var(--spacing) * 10)}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.md\:data-\[state\=closed\]\:slide-out-to-bottom-0[data-state=closed]{--tw-exit-translate-y:calc(0*100%)}.md\:data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.md\:data-\[state\=open\]\:slide-in-from-bottom-0[data-state=open]{--tw-enter-translate-y:calc(0*100%)}.md\:data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}}@media (width>=64rem){.lg\:inline-flex{display:inline-flex}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@container (width>=20rem){.\@\[20rem\]\:w-full{width:100%}.\@\[20rem\]\:flex-col{flex-direction:column}.\@\[20rem\]\:items-stretch{align-items:stretch}.\@\[20rem\]\:gap-0{gap:0}}@container (width>=28rem){.\@md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@container (width>=42rem){.\@2xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (prefers-color-scheme:dark){.dark\:bg-input\/30{background-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-input\/30{background-color:color-mix(in oklab, var(--border) 30%, transparent)}}.dark\:bg-transparent{background-color:#0000}@media (hover:hover){.dark\:hover\:text-accent-foreground:hover{color:var(--on-accent)}}.dark\:disabled\:bg-input\/80:disabled{background-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.dark\:disabled\:bg-input\/80:disabled{background-color:color-mix(in oklab, var(--border) 80%, transparent)}}.dark\:has-aria-invalid\:border-destructive\/50:has([aria-invalid=true]){border-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.dark\:has-aria-invalid\:border-destructive\/50:has([aria-invalid=true]){border-color:color-mix(in oklab, var(--danger) 50%, transparent)}}.dark\:has-aria-invalid\:ring-destructive\/40:has([aria-invalid=true]){--tw-ring-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.dark\:has-aria-invalid\:ring-destructive\/40:has([aria-invalid=true]){--tw-ring-color:color-mix(in oklab, var(--danger) 40%, transparent)}}.dark\:has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/40:has([data-slot][aria-invalid=true]){--tw-ring-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.dark\:has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/40:has([data-slot][aria-invalid=true]){--tw-ring-color:color-mix(in oklab, var(--danger) 40%, transparent)}}.dark\:aria-invalid\:ring-destructive\/40[aria-invalid=true]{--tw-ring-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.dark\:aria-invalid\:ring-destructive\/40[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--danger) 40%, transparent)}}}@media (pointer:coarse){.pointer-coarse\:size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.pointer-coarse\:px-3{padding-inline:calc(var(--spacing) * 3)}.pointer-coarse\:py-2{padding-block:calc(var(--spacing) * 2)}.pointer-coarse\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.pointer-coarse\:opacity-100{opacity:1}}.\[\&_\*\[data-slot\=combobox-trigger\]\]\:border-destructive [data-slot=combobox-trigger]{border-color:var(--danger)}.\[\&_\*\[data-slot\=combobox-trigger\]\]\:ring-destructive\/50 [data-slot=combobox-trigger]{--tw-ring-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.\[\&_\*\[data-slot\=combobox-trigger\]\]\:ring-destructive\/50 [data-slot=combobox-trigger]{--tw-ring-color:color-mix(in oklab, var(--danger) 50%, transparent)}}.\[\&_\[data-slot\=scroll-area-viewport\]\]\:h-full [data-slot=scroll-area-viewport]{height:100%}.\[\&_\[data-slot\=scroll-area-viewport\]\]\:overscroll-contain [data-slot=scroll-area-viewport]{overscroll-behavior:contain}.\[\&_img\]\:rounded-none img{border-radius:0}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\]\:transition-colors svg{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))}.\[\&_svg\]\:duration-200 svg{--tw-duration:.2s;transition-duration:.2s}.data-\[state\=empty\]\:\[\&_svg\]\:fill-transparent[data-state=empty] svg{fill:#0000}.data-\[state\=full\]\:\[\&_svg\]\:fill-current[data-state=full] svg{fill:currentColor}.data-\[state\=partial\]\:\[\&_svg\]\:fill-\(--partial-fill\)[data-state=partial] svg{fill:var(--partial-fill)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-full svg:not([class*=size-]){width:100%;height:100%}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-full\! svg:not([class*=size-]){width:100%!important;height:100%!important}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:rounded-\[5px\] svg:not([class*=size-]){border-radius:5px}.\[\&\:\:-webkit-calendar-picker-indicator\]\:hidden::-webkit-calendar-picker-indicator{display:none}.\[\&\:\:-webkit-calendar-picker-indicator\]\:appearance-none::-webkit-calendar-picker-indicator{appearance:none}.\[\&\:\:-webkit-inner-spin-button\]\:appearance-none::-webkit-inner-spin-button{appearance:none}.\[\&\:\:-webkit-outer-spin-button\]\:appearance-none::-webkit-outer-spin-button{appearance:none}.\[\&\:first-child\[data-selected\=true\]_button\]\:rounded-l-md:first-child[data-selected=true] button{border-top-left-radius:8px;border-bottom-left-radius:8px}.\[\.border-b\]\:pb-3.border-b{padding-bottom:calc(var(--spacing) * 3)}.\[\.border-t\]\:pt-3.border-t{padding-top:calc(var(--spacing) * 3)}:is(.rtl\:\*\*\:\[\.rdp-button\\_next\>svg\]\:rotate-180:where(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)),[dir=rtl],[dir=rtl] *) *):is(.rdp-button_next>svg),:is(.rtl\:\*\*\:\[\.rdp-button\\_previous\>svg\]\:rotate-180:where(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)),[dir=rtl],[dir=rtl] *) *):is(.rdp-button_previous>svg){rotate:180deg}.\[\&\:last-child\[data-selected\=true\]_button\]\:rounded-r-md:last-child[data-selected=true] button{border-top-right-radius:8px;border-bottom-right-radius:8px}.\[\&\:nth-child\(2\)\[data-selected\=true\]_button\]\:rounded-l-md:nth-child(2)[data-selected=true] button{border-top-left-radius:8px;border-bottom-left-radius:8px}.\[\&\>\*\]\:rounded-none>*{border-radius:0}.\[\&\>div\]\:h-\[60dvh\]>div{height:60dvh}.\[\&\>input\]\:h-auto>input{height:auto}.\[\&\>input\]\:rounded-none>input{border-radius:0}.\[\&\>input\]\:border-0>input{border-style:var(--tw-border-style);border-width:0}.\[\&\>input\]\:bg-transparent>input{background-color:#0000}.\[\&\>input\]\:shadow-none>input{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.\[\&\>input\]\:focus-visible\:ring-0>input:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + 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)}.has-\[\>\[data-align\=block-end\]\]\:\[\&\>input\]\:pt-3:has(>[data-align=block-end])>input{padding-top:calc(var(--spacing) * 3)}.has-\[\>\[data-align\=block-start\]\]\:\[\&\>input\]\:pb-3:has(>[data-align=block-start])>input{padding-bottom:calc(var(--spacing) * 3)}.has-\[\>\[data-align\=inline-end\]\]\:\[\&\>input\]\:pr-2:has(>[data-align=inline-end])>input{padding-right:calc(var(--spacing) * 2)}.has-\[\>\[data-align\=inline-start\]\]\:\[\&\>input\]\:pl-2:has(>[data-align=inline-start])>input{padding-left:calc(var(--spacing) * 2)}.\[\&\>kbd\]\:rounded-\[calc\(var\(--radius\)-5px\)\]>kbd{border-radius:calc(var(--radius) - 5px)}.\[\&\>span\]\:line-clamp-1>span{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.\[\&\>span\]\:text-xs>span{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\[\&\>span\]\:opacity-70>span{opacity:.7}.\[\&\>svg\]\:size-3\.5>svg{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&\>svg\]\:text-muted-foreground>svg{color:var(--muted)}.\[\&\>svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3\.5>svg:not([class*=size-]){width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&\>svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4>svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}[data-slot=card-content] .\[\[data-slot\=card-content\]_\&\]\:bg-transparent,[data-slot=popover-content] .\[\[data-slot\=popover-content\]_\&\]\:bg-transparent{background-color:#0000}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--bg:#0c0e13;--surface:#13161e;--elevated:#1a1e28;--border:#242836;--border2:#2e3444;--text:#e8eaf0;--muted:#7b859a;--accent:#8689e6;--accent2:#6f72d8;--on-accent:#0c0e13;--danger:#ff6b6b;--on-danger:#0c0e13;--success:#4ade80;--warning:#fbbf24;--shadow:0 8px 24px #0006}:root[data-theme=light]{--bg:#f7f8fa;--surface:#fff;--elevated:#f0f2f6;--border:#e2e5ea;--border2:#d3d7df;--text:#1a1d24;--muted:#687083;--accent:#4f46e5;--accent2:#4338ca;--on-accent:#fff;--danger:#d92d20;--on-danger:#fff;--success:#15803d;--warning:#b45309;--shadow:0 8px 24px #2832501f}@media (prefers-color-scheme:light){:root:not([data-theme]){--bg:#f7f8fa;--surface:#fff;--elevated:#f0f2f6;--border:#e2e5ea;--border2:#d3d7df;--text:#1a1d24;--muted:#687083;--accent:#4f46e5;--accent2:#4338ca;--danger:#d92d20;--success:#15803d;--warning:#b45309;--shadow:0 8px 24px #2832501f}}:root[data-theme=eink]{--bg:#fff;--surface:#fff;--elevated:#f2f2f2;--border:#000;--border2:#000;--text:#000;--muted:#3a3a3a;--accent:#0d3bb0;--accent2:#082a85;--on-accent:#fff;--danger:#b80016;--on-danger:#fff;--success:#0a6e1d;--warning:#9a5200;--shadow:none;--cat-1:#b80016;--cat-2:#9a5200;--cat-3:#6e5b00;--cat-4:#0a6e1d;--cat-5:#006d6d;--cat-6:#0d3bb0;--cat-7:#5b1aa6;--cat-8:#a80060}:root[data-theme=eink] .cat-chip{color:var(--cat);border-color:var(--cat)}:root[data-theme=eink] .eink-solid{background-color:var(--bg);-webkit-backdrop-filter:none}:root[data-theme=eink] .bg-accent\/10,:root[data-theme=eink] .bg-accent\/15{background-color:var(--elevated)!important;color:var(--text)!important}:root[data-theme=eink] .bg-accent\/10.text-accent,:root[data-theme=eink] .bg-accent\/15.text-accent,:root[data-theme=eink] .bg-accent\/10 .text-accent,:root[data-theme=eink] .bg-accent\/15 .text-accent{color:var(--text)!important}:root[data-theme=eink] *,:root[data-theme=eink] :before,:root[data-theme=eink] :after{box-shadow:none!important;transition:none!important;animation:none!important}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;overscroll-behavior:none;margin:0;line-height:1.45}.login-page{isolation:isolate;background:radial-gradient(circle at 12% 15%, var(--accent), transparent 28%), radial-gradient(circle at 90% 88%, #32d7bb12, transparent 28%), var(--bg);place-items:center;min-height:100dvh;padding:32px 20px;display:grid;position:relative;overflow:hidden}@supports (color:color-mix(in lab, red, red)){.login-page{background:radial-gradient(circle at 12% 15%, color-mix(in srgb, var(--accent) 10%, transparent), transparent 28%), radial-gradient(circle at 90% 88%, #32d7bb12, transparent 28%), var(--bg)}}.login-page:before{z-index:-1;background-image:linear-gradient(var(--text) 1px, transparent 1px), linear-gradient(90deg, var(--text) 1px, transparent 1px);position:absolute;inset:0}@supports (color:color-mix(in lab, red, red)){.login-page:before{background-image:linear-gradient(color-mix(in srgb, var(--text) 3%, transparent) 1px, transparent 1px), linear-gradient(90deg, color-mix(in srgb, var(--text) 3%, transparent) 1px, transparent 1px)}}.login-page:before{content:"";opacity:.34;background-size:44px 44px;-webkit-mask-image:linear-gradient(#000,#0000 75%);mask-image:linear-gradient(#000,#0000 75%)}.login-shell{grid-template-columns:minmax(0,1fr) minmax(360px,430px);align-items:stretch;gap:64px;width:min(100%,920px);display:grid}.login-intro{flex-direction:column;justify-content:space-between;min-height:510px;padding:22px 0;display:flex}.login-brand,.login-mobile-brand{color:var(--text);letter-spacing:-.04em;align-items:center;gap:10px;font-size:20px;font-weight:750;display:inline-flex}.login-brand-mark{border:1px solid var(--accent);grid-template-rows:repeat(2,7px);grid-template-columns:repeat(2,7px);place-content:center;gap:4px;width:34px;height:34px;display:grid}@supports (color:color-mix(in lab, red, red)){.login-brand-mark{border:1px solid color-mix(in srgb, var(--accent) 55%, white 10%)}}.login-brand-mark{background:linear-gradient(145deg, var(--accent), #4fbdc9);box-shadow:0 10px 28px var(--accent);border-radius:11px}@supports (color:color-mix(in lab, red, red)){.login-brand-mark{box-shadow:0 10px 28px color-mix(in srgb, var(--accent) 28%, transparent)}}.login-brand-mark i{opacity:.92;background:#fff;border-radius:2px;display:block}.login-brand-mark i:nth-child(2),.login-brand-mark i:nth-child(3){opacity:.62}.login-intro-copy{max-width:450px;margin-top:auto;margin-bottom:auto}.login-eyebrow,.login-card-kicker{color:var(--accent);letter-spacing:.14em;text-transform:uppercase;margin:0 0 16px;font-size:11px;font-weight:700}.login-intro h2{max-width:440px;color:var(--text);letter-spacing:-.065em;margin:0;font-size:clamp(36px,5vw,58px);line-height:1.02}.login-intro-copy>p:last-child{max-width:340px;color:var(--muted);margin:24px 0 0;font-size:16px;line-height:1.6}.login-status{color:var(--muted);align-items:center;gap:9px;font-size:12px;display:flex}.login-status-dot{background:#43d6a1;border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 4px #43d6a124}.login-card{border:1px solid var(--border2);width:100%;padding:42px;position:relative}@supports (color:color-mix(in lab, red, red)){.login-card{border:1px solid color-mix(in srgb, var(--border2) 82%, white 4%)}}.login-card{background:var(--surface);border-radius:28px}@supports (color:color-mix(in lab, red, red)){.login-card{background:color-mix(in srgb, var(--surface) 92%, transparent)}}.login-card{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);box-shadow:0 28px 80px #00000047,inset 0 1px #ffffff12}.login-card-heading h1{color:var(--text);letter-spacing:-.045em;margin:0;font-size:30px}.login-card-subtitle{color:var(--muted);margin:10px 0 0;font-size:14px;line-height:1.5}.login-mobile-brand{margin-bottom:28px;display:none}.login-fields{flex-direction:column;gap:17px;margin:30px 0 24px;display:flex}.login-fields>div{width:100%}.login-fields>div>div{min-width:0;flex:100%!important;width:100%!important;max-width:none!important}.login-fields [class~=group\/field]{width:100%!important}.login-fields label{color:var(--muted);margin-bottom:8px;font-size:12px;font-weight:600;display:block}.login-fields input{border-color:var(--border);background:var(--bg);border-radius:13px;height:50px}@supports (color:color-mix(in lab, red, red)){.login-fields input{background:color-mix(in srgb, var(--bg) 70%, var(--surface))}}.login-fields input{padding:0 15px;font-size:15px}.login-fields input:hover{border-color:var(--border2)}.login-fields input:focus{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent)}@supports (color:color-mix(in lab, red, red)){.login-fields input:focus{box-shadow:0 0 0 4px color-mix(in srgb, var(--accent) 14%, transparent)}}.login-error{border:1px solid var(--danger);margin-top:22px}@supports (color:color-mix(in lab, red, red)){.login-error{border:1px solid color-mix(in srgb, var(--danger) 45%, transparent)}}.login-error{background:var(--danger);border-radius:12px}@supports (color:color-mix(in lab, red, red)){.login-error{background:color-mix(in srgb, var(--danger) 10%, transparent)}}.login-error{color:var(--danger);padding:12px 14px;font-size:13px}.login-submit{background:linear-gradient(110deg, var(--accent), #6e9be8);width:100%;height:52px;box-shadow:0 12px 24px var(--accent);border-radius:13px;justify-content:space-between;padding:0 17px 0 20px;font-size:14px}@supports (color:color-mix(in lab, red, red)){.login-submit{box-shadow:0 12px 24px color-mix(in srgb, var(--accent) 20%, transparent)}}.login-submit:hover{background:linear-gradient(110deg, var(--accent2), #5e89dc)}.login-submit-arrow{font-size:21px;line-height:1;transition:transform .2s}.login-submit:hover .login-submit-arrow{transform:translate(3px)}.login-footer{text-align:center;color:var(--muted);margin:22px 0 0;font-size:11px}.login-orb{z-index:-1;filter:blur(70px);opacity:.12;border-radius:50%;width:260px;height:260px;position:absolute}.login-orb-one{background:var(--accent);top:-90px;left:23%}.login-orb-two{background:#30cbb0;bottom:-80px;right:-70px}@media (width<=720px){.login-page{padding:20px 16px}.login-shell{width:min(100%,440px);display:block}.login-intro{display:none}.login-card{border-radius:22px;padding:30px 24px 26px}.login-mobile-brand{display:inline-flex}}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-border2);border-radius:4px}@media (pointer:fine){::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{border:2px solid var(--color-bg);background-clip:padding-box}}.folder-tree{padding:2px 4px 6px}.folder-tree-scroll,.folder-tree-nodes{min-width:0}.folder-tree-header{letter-spacing:.09em;text-transform:uppercase;color:var(--color-muted);padding:2px 8px 6px;font-size:10px;font-weight:600}.folder-children{border-left:1px solid var(--color-border);margin-left:14px}.folder-node{cursor:pointer;border-radius:7px;align-items:center;gap:5px;margin:1px 0;padding:8px;font-size:13px;transition:background .1s,color .1s;display:flex;position:relative}.folder-node:hover{background:var(--text)}@supports (color:color-mix(in lab, red, red)){.folder-node:hover{background:color-mix(in srgb, var(--text) 5%, transparent)}}.folder-node.active{background:var(--accent)}@supports (color:color-mix(in lab, red, red)){.folder-node.active{background:color-mix(in srgb, var(--accent) 15%, transparent)}}.folder-node.active{color:var(--color-accent);font-weight:500}:root[data-theme=eink] .folder-node.active{background:var(--elevated);color:var(--text);font-weight:700}.folder-icon{flex-shrink:0;font-size:15px}.folder-caret{width:16px;height:16px;color:var(--color-muted);border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;transition:background .1s,color .1s;display:flex}.folder-caret:hover{background:var(--color-border);color:var(--color-text)}.folder-caret-spacer{flex-shrink:0;width:16px}.folder-name{flex:0 auto;min-width:0}.folder-actions{visibility:hidden;opacity:0;gap:2px;transition:opacity .1s;display:flex}.folder-node:hover .folder-actions,.folder-node:focus-within .folder-actions,:root[data-theme=eink] .folder-actions{visibility:visible;opacity:1}.folder-btn{color:var(--color-muted);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:2px 5px;font-size:12px;line-height:1}.folder-btn:hover{background:var(--color-border);color:var(--color-text)}.folder-btn-del:hover{color:var(--color-danger)!important}.folder-add-btn{border:1px dashed var(--color-border2);width:calc(100% - 8px);color:var(--color-muted);cursor:pointer;text-align:left;background:0 0;border-radius:8px;margin:4px;padding:6px 10px;font-size:12px;display:block}.folder-add-btn:hover{border-color:var(--color-accent);color:var(--color-accent)}.folder-new-input{align-items:center;gap:5px;padding:4px 8px;display:flex}.folder-new-input input{flex:1;padding:4px 8px;font-size:13px}.folder-rename-input{flex:1;padding:3px 6px;font-size:13px}.btn-add{border:1px dashed var(--color-border2);color:var(--color-muted);cursor:pointer;background:0 0;border-radius:8px;padding:6px 12px;font-size:13px}.btn-add:hover{border-color:var(--color-accent);color:var(--color-accent)}.btn-remove{color:var(--color-muted);cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:16px;line-height:1}.btn-remove:hover{color:var(--color-danger)}.drawer-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:50;background:#0009;animation:.15s fade-in;position:fixed;inset:0}.drawer{background:var(--color-surface);border-top:1px solid var(--color-border);z-index:51;border-radius:20px 20px 0 0;flex-direction:column;max-height:92dvh;animation:.2s slide-up;display:flex;position:fixed;bottom:0;left:0;right:0}.drawer-handle{background:var(--color-border2);border-radius:2px;flex-shrink:0;width:36px;height:4px;margin:12px auto 0}.drawer-header{border-bottom:1px solid var(--color-border);flex-shrink:0;justify-content:space-between;align-items:center;padding:16px 20px 12px;display:flex}.drawer-title{font-size:16px;font-weight:600}.drawer-close{background:var(--color-elevated);color:var(--color-muted);border-radius:var(--radius-full);cursor:pointer;border:none;justify-content:center;align-items:center;width:30px;height:30px;font-size:16px;display:flex}.drawer-body{flex:1;padding:20px;overflow-y:auto}.modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:50;background:#000000a6;justify-content:center;align-items:flex-start;padding:48px 20px;animation:.15s fade-in;display:flex;position:fixed;inset:0;overflow-y:auto}.modal{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-xl);flex-shrink:0;width:100%;max-width:600px;padding:28px;animation:.2s slide-down}.modal-header{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.modal-title{margin:0;font-size:17px;font-weight:600}.modal-close{background:var(--color-elevated);color:var(--color-muted);border-radius:var(--radius-full);cursor:pointer;border:none;justify-content:center;align-items:center;width:32px;height:32px;font-size:18px;display:flex}.modal-close:hover{background:var(--color-border);color:var(--color-text)}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes slide-up{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}@keyframes slide-down{0%{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}.lightbox-btn{color:#fff;cursor:pointer;background:#ffffff14;border:none;border-radius:9999px;justify-content:center;align-items:center;width:44px;height:44px;transition:background .15s;display:flex}.lightbox-btn:hover{background:#fff3}.crepe-wrap .milkdown{--crepe-color-background:var(--color-surface);--crepe-color-on-background:var(--color-text);--crepe-color-surface:var(--color-elevated);--crepe-color-surface-low:var(--color-surface);--crepe-color-on-surface:var(--color-text);--crepe-color-on-surface-variant:var(--color-muted);--crepe-color-outline:var(--color-border);--crepe-color-primary:var(--color-accent);--crepe-color-secondary:var(--color-elevated);--crepe-color-hover:var(--color-elevated);--crepe-color-selected:var(--color-accent)}@supports (color:color-mix(in lab, red, red)){.crepe-wrap .milkdown{--crepe-color-selected:color-mix(in srgb, var(--color-accent) 22%, transparent)}}.crepe-wrap .milkdown{--crepe-color-inline-code:var(--color-accent);--crepe-font-default:var(--font-sans);--crepe-font-title:var(--font-sans);background:0 0}.crepe-wrap .milkdown .ProseMirror{min-height:0;padding:0}.crepe-wrap .milkdown .ProseMirror:focus{outline:none}.crepe-wrap .milkdown .ProseMirror{color:var(--color-text);font-size:14px;line-height:1.6}.crepe-wrap .milkdown .ProseMirror :is(h1,h2,h3,h4,h5,h6){font-family:var(--font-sans);color:var(--color-text);margin:1.1em 0 .45em;line-height:1.3}.crepe-wrap .milkdown .ProseMirror h1{font-size:1.6em;font-weight:700}.crepe-wrap .milkdown .ProseMirror h2{font-size:1.35em;font-weight:700}.crepe-wrap .milkdown .ProseMirror h3{font-size:1.15em;font-weight:600}.crepe-wrap .milkdown .ProseMirror h4{font-size:1em;font-weight:600}.crepe-wrap .milkdown .ProseMirror h5{font-size:.9em;font-weight:600}.crepe-wrap .milkdown .ProseMirror h6{color:var(--color-muted);font-size:.85em;font-weight:600}.crepe-wrap .milkdown .ProseMirror p{margin:.5em 0}.crepe-wrap .milkdown .ProseMirror>:first-child{margin-top:0}.crepe-wrap .milkdown .ProseMirror>:last-child{margin-bottom:0}.crepe-wrap .milkdown .ProseMirror a{color:var(--color-accent)}.crepe-wrap .milkdown .ProseMirror blockquote{border-left:3px solid var(--color-accent);color:var(--color-muted);margin:.7em 0;padding-left:.9em}.crepe-wrap .milkdown .ProseMirror :not(pre)>code{color:var(--color-accent);font-size:.9em}.crepe-wrap .milkdown .ProseMirror ul{margin:.5em 0;padding-left:1.5em;list-style:outside}.crepe-wrap .milkdown .ProseMirror ol{margin:.5em 0;padding-left:1.6em;list-style:decimal}.crepe-wrap .milkdown .ProseMirror li{margin:.15em 0}.crepe-wrap .milkdown .ProseMirror li>p{margin:0}.crepe-wrap .milkdown .ProseMirror li::marker{color:var(--color-muted)}.crepe-wrap .milkdown .ProseMirror ul ul{list-style:circle}.crepe-wrap .milkdown .ProseMirror li>ul,.crepe-wrap .milkdown .ProseMirror li>ol{margin:.15em 0}.json-editor-wrap>div{background:var(--color-bg)}.json-editor-wrap textarea{outline:none}.md-static{color:var(--color-text);font-size:14px;line-height:1.6}.md-static :is(h1,h2,h3,h4,h5,h6){font-family:var(--font-sans);color:var(--color-text);margin:1.1em 0 .45em;line-height:1.3}.md-static h1{font-size:1.6em;font-weight:700}.md-static h2{font-size:1.35em;font-weight:700}.md-static h3{font-size:1.15em;font-weight:600}.md-static h4{font-size:1em;font-weight:600}.md-static h5{font-size:.9em;font-weight:600}.md-static h6{color:var(--color-muted);font-size:.85em;font-weight:600}.md-static>:first-child{margin-top:0}.md-static>:last-child{margin-bottom:0}.md-static p{margin:.5em 0}.md-static a{color:var(--color-accent);text-decoration:underline}.md-static blockquote{border-left:3px solid var(--color-accent);color:var(--color-muted);margin:.7em 0;padding-left:.9em}.md-static pre{font-family:var(--font-mono,ui-monospace, monospace);background:var(--color-elevated);border-radius:8px;margin:.6em 0;padding:.6em .8em;font-size:.9em;overflow-x:auto}.md-static :not(pre)>code{font-family:var(--font-mono,ui-monospace, monospace);color:var(--color-accent);background:var(--color-elevated);border-radius:4px;padding:.1em .3em;font-size:.9em}.md-static ul,.md-static ol{margin:.5em 0;padding-left:1.4em}.md-static li{margin:.2em 0}.md-static table{border-collapse:collapse;width:max-content;max-width:100%;margin:.6em 0;font-size:.95em;display:block;overflow-x:auto}.md-static th,.md-static td{border:1px solid var(--color-border);text-align:left;padding:.35em .6em}.md-static th{background:var(--color-elevated);font-weight:600}.md-static details{border:1px solid var(--color-border);background:var(--color-surface);border-radius:8px;margin:.5em 0;padding:.4em .75em}.md-static summary{cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:600}.md-static details[open] summary{margin-bottom:.5em}@property --tw-border-spacing-x{syntax:"<length>";inherits:false;initial-value:0}@property --tw-border-spacing-y{syntax:"<length>";inherits:false;initial-value:0}@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-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{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-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}@media (prefers-color-scheme:dark){.w-tc-editor{--color-fg-default:#c9d1d9;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-markup-bold:#c9d1d9}}@media (prefers-color-scheme:light){.w-tc-editor{--color-fg-default:#24292f;--color-canvas-subtle:#f6f8fa;--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-markup-bold:#24292f}}.w-tc-editor[data-color-mode*=dark],[data-color-mode*=dark] .w-tc-editor,[data-color-mode*=dark] .w-tc-editor-var,body[data-color-mode*=dark]{--color-fg-default:#c9d1d9;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-markup-bold:#c9d1d9}.w-tc-editor[data-color-mode*=light],[data-color-mode*=light] .w-tc-editor,[data-color-mode*=light] .w-tc-editor-var,body[data-color-mode*=light]{--color-fg-default:#24292f;--color-canvas-subtle:#f6f8fa;--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-markup-bold:#24292f}.w-tc-editor{background-color:var(--color-canvas-subtle);color:var(--color-fg-default);font-family:inherit;font-size:12px}.w-tc-editor-text,.w-tc-editor-preview{min-height:16px}.w-tc-editor-preview pre{white-space:inherit;font-family:inherit;font-size:inherit;margin:0;padding:0}.w-tc-editor-preview pre code{font-family:inherit}.w-tc-editor code[class*=language-] .token.cdata,.w-tc-editor pre[class*=language-] .token.cdata,.w-tc-editor code[class*=language-] .token.comment,.w-tc-editor pre[class*=language-] .token.comment,.w-tc-editor code[class*=language-] .token.doctype,.w-tc-editor pre[class*=language-] .token.doctype,.w-tc-editor code[class*=language-] .token.prolog,.w-tc-editor pre[class*=language-] .token.prolog{color:var(--color-prettylights-syntax-comment)}.w-tc-editor code[class*=language-] .token.punctuation,.w-tc-editor pre[class*=language-] .token.punctuation{color:var(--color-prettylights-syntax-sublimelinter-gutter-mark)}.w-tc-editor code[class*=language-] .namespace,.w-tc-editor pre[class*=language-] .namespace{opacity:.7}.w-tc-editor code[class*=language-] .token.boolean,.w-tc-editor pre[class*=language-] .token.boolean,.w-tc-editor code[class*=language-] .token.constant,.w-tc-editor pre[class*=language-] .token.constant,.w-tc-editor code[class*=language-] .token.deleted,.w-tc-editor pre[class*=language-] .token.deleted,.w-tc-editor code[class*=language-] .token.number,.w-tc-editor pre[class*=language-] .token.number,.w-tc-editor code[class*=language-] .token.symbol,.w-tc-editor pre[class*=language-] .token.symbol{color:var(--color-prettylights-syntax-entity-tag)}.w-tc-editor code[class*=language-] .token.builtin,.w-tc-editor pre[class*=language-] .token.builtin,.w-tc-editor code[class*=language-] .token.char,.w-tc-editor pre[class*=language-] .token.char,.w-tc-editor code[class*=language-] .token.inserted,.w-tc-editor pre[class*=language-] .token.inserted,.w-tc-editor code[class*=language-] .token.selector,.w-tc-editor pre[class*=language-] .token.selector,.w-tc-editor code[class*=language-] .token.string,.w-tc-editor pre[class*=language-] .token.string,.w-tc-editor code[class*=language-] .style .token.string,.w-tc-editor pre[class*=language-] .style .token.string,.w-tc-editor code[class*=language-] .token.entity,.w-tc-editor pre[class*=language-] .token.entity,.w-tc-editor code[class*=language-] .token.property,.w-tc-editor pre[class*=language-] .token.property,.w-tc-editor code[class*=language-] .token.operator,.w-tc-editor pre[class*=language-] .token.operator,.w-tc-editor code[class*=language-] .token.url,.w-tc-editor pre[class*=language-] .token.url{color:var(--color-prettylights-syntax-constant)}.w-tc-editor code[class*=language-] .token.atrule,.w-tc-editor pre[class*=language-] .token.atrule,.w-tc-editor code[class*=language-] .token.property-access .token.method,.w-tc-editor pre[class*=language-] .token.property-access .token.method,.w-tc-editor code[class*=language-] .token.keyword,.w-tc-editor pre[class*=language-] .token.keyword{color:var(--color-prettylights-syntax-keyword)}.w-tc-editor code[class*=language-] .token.function,.w-tc-editor pre[class*=language-] .token.function{color:var(--color-prettylights-syntax-string)}.w-tc-editor code[class*=language-] .token.important,.w-tc-editor pre[class*=language-] .token.important,.w-tc-editor code[class*=language-] .token.regex,.w-tc-editor pre[class*=language-] .token.regex,.w-tc-editor code[class*=language-] .token.variable,.w-tc-editor pre[class*=language-] .token.variable{color:var(--color-prettylights-syntax-string-regexp)}.w-tc-editor code[class*=language-] .token.bold,.w-tc-editor pre[class*=language-] .token.bold,.w-tc-editor code[class*=language-] .token.important,.w-tc-editor pre[class*=language-] .token.important{color:var(--color-prettylights-syntax-markup-bold)}.w-tc-editor code[class*=language-] .token.tag,.w-tc-editor pre[class*=language-] .token.tag{color:var(--color-prettylights-syntax-entity-tag)}.w-tc-editor code[class*=language-] .token.attr-value,.w-tc-editor pre[class*=language-] .token.attr-value,.w-tc-editor code[class*=language-] .token.attr-name,.w-tc-editor pre[class*=language-] .token.attr-name{color:var(--color-prettylights-syntax-constant)}.w-tc-editor code[class*=language-] .token.selector .class,.w-tc-editor pre[class*=language-] .token.selector .class,.w-tc-editor code[class*=language-] .token.class-name,.w-tc-editor pre[class*=language-] .token.class-name{color:var(--color-prettylights-syntax-entity)}
|