@aiquants/menu-bar 1.18.1 → 1.18.3
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/MenuBar.d.ts +2 -29
- package/dist/components/SessionInfo.d.ts +1 -26
- package/dist/contents/MenuContent.d.ts +2 -14
- package/dist/contents/MenuList.d.ts +0 -38
- package/dist/contents/OverlayShadow.d.ts +0 -19
- package/dist/elements/MenuSwitch.d.ts +9 -10
- package/dist/events/pinEvent.d.ts +2 -37
- package/dist/hooks/useMenuPinState.d.ts +1 -16
- package/dist/index.d.ts +11 -21
- package/dist/index.es.js +264 -259
- package/dist/index.umd.js +2 -2
- package/dist/styles/menu-bar.standalone.css +1 -1
- package/dist/types/user.d.ts +0 -7
- package/dist/types.d.ts +1 -15
- package/package.json +2 -3
- package/dist/__tests__/pinEvent.test.d.ts +0 -1
- package/src/MenuBar.tsx +0 -248
- package/src/__tests__/pinEvent.test.tsx +0 -68
- package/src/components/SessionInfo.tsx +0 -95
- package/src/contents/MenuContent.tsx +0 -79
- package/src/contents/MenuList.tsx +0 -400
- package/src/contents/OverlayShadow.tsx +0 -30
- package/src/elements/MenuSwitch.tsx +0 -118
- package/src/events/pinEvent.ts +0 -129
- package/src/hooks/useMenuPinState.ts +0 -58
- package/src/index.ts +0 -29
- package/src/lucide-icons.d.ts +0 -6
- package/src/styles/components.entry.css +0 -11
- package/src/styles/menu-bar.css +0 -224
- package/src/styles/standalone.entry.css +0 -12
- package/src/types/user.ts +0 -12
- package/src/types.ts +0 -24
package/dist/index.umd.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(S,o){typeof exports=="object"&&typeof module<"u"?o(exports,require("react"),require("react-router-dom")):typeof define=="function"&&define.amd?define(["exports","react","react-router-dom"],o):(S=typeof globalThis<"u"?globalThis:S||self,o(S["@aiquants/menu-bar"]={},S.React,S.ReactRouterDOM))})(this,(function(S,o,B){"use strict";var U={exports:{}},D={};var oe;function ye(){if(oe)return D;oe=1;var n=Symbol.for("react.transitional.element"),t=Symbol.for("react.fragment");function s(a,c,i){var d=null;if(i!==void 0&&(d=""+i),c.key!==void 0&&(d=""+c.key),"key"in c){i={};for(var p in c)p!=="key"&&(i[p]=c[p])}else i=c;return c=i.ref,{$$typeof:n,type:a,key:d,ref:c!==void 0?c:null,props:i}}return D.Fragment=t,D.jsx=s,D.jsxs=s,D}var Y={};var ie;function ke(){return ie||(ie=1,process.env.NODE_ENV!=="production"&&(function(){function n(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===ne?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case h:return"Fragment";case I:return"Profiler";case P:return"StrictMode";case H:return"Suspense";case ee:return"SuspenseList";case W:return"Activity"}if(typeof e=="object")switch(typeof e.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),e.$$typeof){case l:return"Portal";case R:return e.displayName||"Context";case v:return(e._context.displayName||"Context")+".Consumer";case L:var u=e.render;return e=e.displayName,e||(e=u.displayName||u.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case te:return u=e.displayName||null,u!==null?u:n(e.type)||"Memo";case V:u=e._payload,e=e._init;try{return n(e(u))}catch{}}return null}function t(e){return""+e}function s(e){try{t(e);var u=!1}catch{u=!0}if(u){u=console;var g=u.error,_=typeof Symbol=="function"&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object";return g.call(u,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",_),t(e)}}function a(e){if(e===h)return"<>";if(typeof e=="object"&&e!==null&&e.$$typeof===V)return"<...>";try{var u=n(e);return u?"<"+u+">":"<...>"}catch{return"<...>"}}function c(){var e=O.A;return e===null?null:e.getOwner()}function i(){return Error("react-stack-top-frame")}function d(e){if(Z.call(e,"key")){var u=Object.getOwnPropertyDescriptor(e,"key").get;if(u&&u.isReactWarning)return!1}return e.key!==void 0}function p(e,u){function g(){F||(F=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",u))}g.isReactWarning=!0,Object.defineProperty(e,"key",{get:g,configurable:!0})}function m(){var e=n(this.type);return k[e]||(k[e]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),e=this.props.ref,e!==void 0?e:null}function b(e,u,g,_,q,se){var j=g.ref;return e={$$typeof:x,type:e,key:u,props:g,_owner:_},(j!==void 0?j:null)!==null?Object.defineProperty(e,"ref",{enumerable:!1,get:m}):Object.defineProperty(e,"ref",{enumerable:!1,value:null}),e._store={},Object.defineProperty(e._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:q}),Object.defineProperty(e,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:se}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function f(e,u,g,_,q,se){var j=u.children;if(j!==void 0)if(_)if(re(j)){for(_=0;_<j.length;_++)N(j[_]);Object.freeze&&Object.freeze(j)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else N(j);if(Z.call(u,"key")){j=n(e);var z=Object.keys(u).filter(function(qe){return qe!=="key"});_=0<z.length?"{key: someKey, "+z.join(": ..., ")+": ...}":"{key: someKey}",J[j+_]||(z=0<z.length?"{"+z.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
|
|
2
2
|
let props = %s;
|
|
3
3
|
<%s {...props} />
|
|
4
4
|
React keys must be passed directly to JSX without using spread:
|
|
5
5
|
let props = %s;
|
|
6
|
-
<%s key={someKey} {...props} />`,y,g,z,g),J[g+y]=!0)}if(g=null,x!==void 0&&(s(x),g=""+x),u(d)&&(s(d.key),g=""+d.key),"key"in d){x={};for(var ae in d)ae!=="key"&&(x[ae]=d[ae])}else x=d;return g&&m(x,typeof e=="function"?e.displayName||e.name||"Unknown":e),h(e,g,x,c(),B,se)}function w(e){v(e)?e._store&&(e._store.validated=1):typeof e=="object"&&e!==null&&e.$$typeof===V&&(e._payload.status==="fulfilled"?v(e._payload.value)&&e._payload.value._store&&(e._payload.value._store.validated=1):e._store&&(e._store.validated=1))}function v(e){return typeof e=="object"&&e!==null&&e.$$typeof===P}var S=a,P=Symbol.for("react.transitional.element"),i=Symbol.for("react.portal"),p=Symbol.for("react.fragment"),R=Symbol.for("react.strict_mode"),j=Symbol.for("react.profiler"),_=Symbol.for("react.consumer"),I=Symbol.for("react.context"),L=Symbol.for("react.forward_ref"),H=Symbol.for("react.suspense"),ee=Symbol.for("react.suspense_list"),te=Symbol.for("react.memo"),V=Symbol.for("react.lazy"),W=Symbol.for("react.activity"),ne=Symbol.for("react.client.reference"),T=S.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,Z=Object.prototype.hasOwnProperty,re=Array.isArray,O=console.createTask?console.createTask:function(){return null};S={react_stack_bottom_frame:function(e){return e()}};var F,k={},C=S.react_stack_bottom_frame.bind(S,l)(),A=O(o(l)),J={};Y.Fragment=p,Y.jsx=function(e,d,x){var y=1e4>T.recentlyCreatedOwnerStacks++;return f(e,d,x,!1,y?Error("react-stack-top-frame"):C,y?O(o(e)):A)},Y.jsxs=function(e,d,x){var y=1e4>T.recentlyCreatedOwnerStacks++;return f(e,d,x,!0,y?Error("react-stack-top-frame"):C,y?O(o(e)):A)}})()),Y}var ie;function we(){return ie||(ie=1,process.env.NODE_ENV==="production"?U.exports=ge():U.exports=ve()),U.exports}var r=we();const Ne=n=>n.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),_e=n=>n.replace(/^([A-Z])|[\s-_]+(\w)/g,(t,s,o)=>o?o.toUpperCase():s.toLowerCase()),ce=n=>{const t=_e(n);return t.charAt(0).toUpperCase()+t.slice(1)},ue=(...n)=>n.filter((t,s,o)=>!!t&&t.trim()!==""&&o.indexOf(t)===s).join(" ").trim(),je=n=>{for(const t in n)if(t.startsWith("aria-")||t==="role"||t==="title")return!0};var Ee={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const Ce=a.forwardRef(({color:n="currentColor",size:t=24,strokeWidth:s=2,absoluteStrokeWidth:o,className:c="",children:l,iconNode:u,...m},b)=>a.createElement("svg",{ref:b,...Ee,width:t,height:t,stroke:n,strokeWidth:o?Number(s)*24/Number(t):s,className:ue("lucide",c),...!l&&!je(m)&&{"aria-hidden":"true"},...m},[...u.map(([h,f])=>a.createElement(h,f)),...Array.isArray(l)?l:[l]]));const M=(n,t)=>{const s=a.forwardRef(({className:o,...c},l)=>a.createElement(Ce,{ref:l,iconNode:t,className:ue(`lucide-${Ne(ce(n))}`,`lucide-${n}`,o),...c}));return s.displayName=ce(n),s};const Se=M("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);const Me=M("user",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]),Pe="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iI2NiZDVlMSI+PHBhdGggZD0iTTEyIDEyYzIuMjEgMCA0LTEuNzkgNC00cy0xLjc5LTQtNC00LTQgMS43OS00IDQgMS43OSA0IDQgNHptMCAyYy0yLjY3IDAtOCAxLjM0LTggNHYyaDE2di0yYzAtMi42Ni01LjMzLTQtOC00eiIvPjwvc3ZnPg==",de=({to:n,className:t,children:s})=>r.jsx("a",{href:n,className:t,children:s}),Re=n=>{const{user:t,LinkComponent:s=de}=n;return r.jsx("div",{className:"w-full",children:t?r.jsxs("div",{className:"aiquants-session-card group relative flex flex-col gap-2 rounded-xl border border-white/20 bg-white/10 p-2.5 shadow-sm backdrop-blur-md transition-all duration-200 hover:border-white/30 hover:bg-white/15 dark:border-slate-700/60 dark:bg-slate-800/60 dark:hover:border-slate-600/80 dark:hover:bg-slate-800/90",children:[r.jsxs("div",{className:"flex min-w-0 items-center gap-2.5",children:[r.jsxs("div",{className:"relative shrink-0",children:[r.jsx("div",{className:"h-8 w-8 overflow-hidden rounded-full border border-white/40 shadow-xs dark:border-slate-500",children:r.jsx("img",{className:"h-full w-full rounded-full object-cover",src:t.photo||Pe,alt:t.displayName||"user profile"})}),r.jsx("span",{className:"absolute -right-0.5 -bottom-0.5 h-2.5 w-2.5 rounded-full border-2 border-slate-900 bg-emerald-400",title:"Online"})]}),r.jsxs("div",{className:"min-w-0 flex-1 leading-tight",children:[r.jsx("div",{className:"truncate font-semibold text-xs text-white tracking-tight dark:text-slate-100",title:t.displayName,children:t.displayName}),r.jsx("div",{className:"mt-0.5 font-medium text-[10px] text-white/75 tracking-tight dark:text-slate-400",children:"Google Account"})]})]}),r.jsxs("div",{className:"grid grid-cols-2 gap-1.5 border-white/15 border-t pt-1.5 dark:border-slate-700/50",children:[r.jsxs(s,{className:"flex items-center justify-center gap-1 rounded-md border border-white/15 bg-white/10 px-2 py-1 font-medium text-[11px] text-white transition-all duration-150 hover:bg-white/25 active:scale-95 dark:border-slate-600/50 dark:bg-slate-700/50 dark:text-slate-200 dark:hover:bg-slate-600/80",to:"/",children:[r.jsx(Me,{size:11,className:"shrink-0 opacity-80"}),r.jsx("span",{className:"truncate",children:"プロフィール"})]}),r.jsxs(s,{className:"flex items-center justify-center gap-1 rounded-md border border-white/15 bg-white/10 px-2 py-1 font-medium text-[11px] text-white transition-all duration-150 hover:bg-white/25 active:scale-95 dark:border-slate-600/50 dark:bg-slate-700/50 dark:text-slate-200 dark:hover:bg-slate-600/80",to:"https://myaccount.google.com/",children:[r.jsx(Se,{size:11,className:"shrink-0 opacity-80"}),r.jsx("span",{className:"truncate",children:"Google"})]})]})]}):r.jsx("div",{className:"aiquants-session-card flex items-center justify-between rounded-xl border border-white/20 bg-white/10 p-2.5 shadow-xs dark:border-slate-700/60 dark:bg-slate-800/60",children:r.jsx("span",{className:"font-medium text-white/90 text-xs dark:text-slate-200",children:"ログインしてください"})})})},G="aiquants-menu-pin-change";let E={pinned:!1,width:0};const X=(n=240)=>{if(typeof window>"u"||typeof document>"u")return{pinned:!1,width:0};try{const t=getComputedStyle(document.documentElement).getPropertyValue("--aiquants-menu-pinned-width").trim();if(t){const l=Number.parseInt(t,10);if(!Number.isNaN(l)){const u=l>0,m=u?l||n:0;return E.pinned===u&&E.width===m||(E={pinned:u,width:m}),E}}const o=localStorage.getItem("aiquants-menu-pinned")==="true",c=o?n:0;return E.pinned===o&&E.width===c||(E={pinned:o,width:c}),E}catch{return{pinned:!1,width:0}}},q=(n,t)=>{if(typeof window>"u")return;const s={pinned:n,width:t};(E.pinned!==n||E.width!==t)&&(E=s);const o=new CustomEvent(G,{detail:s,bubbles:!0,cancelable:!1});window.dispatchEvent(o)},fe=(n,t)=>{if(typeof window>"u")return()=>{};const{immediate:s=!0,defaultPinnedWidth:o=240}=t??{};if(s){const l=X(o);n(l)}const c=l=>{const u=l;u.detail&&n(u.detail)};return window.addEventListener(G,c,{passive:!0}),()=>{window.removeEventListener(G,c)}},Te=n=>{const t=n?.defaultPinnedWidth??240,s=n?.initialPinned??!1,o=a.useCallback(u=>fe(()=>{u()},{immediate:!1,defaultPinnedWidth:t}),[t]),c=a.useCallback(()=>X(t),[t]),l=a.useCallback(()=>({pinned:s,width:s?t:0}),[s,t]);return a.useSyncExternalStore(o,c,l)};const Oe=M("log-out",[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]]);const he=M("pin",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z",key:"1nkz8b"}]]);const me=M("pin-off",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M15 9.34V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H7.89",key:"znwnzq"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M9 9v1.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h11",key:"c9qhm2"}]]);const Ae=M("chart-no-axes-column-increasing",[["path",{d:"M5 21v-6",key:"1hz6c0"}],["path",{d:"M12 21V9",key:"uvy0l4"}],["path",{d:"M19 21V3",key:"11j9sm"}]]);const Ie=M("download",[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]]);const pe=M("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);const Le=M("link",[["path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71",key:"1cjeqo"}],["path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71",key:"19qd67"}]]);const ze=M("lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]]);const De=M("table",[["path",{d:"M12 3v18",key:"108xh3"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M3 15h18",key:"5xshup"}]]),Ye=typeof window<"u"?a.useLayoutEffect:a.useEffect,be="aiquants-menu-scroll",xe=new RegExp(/(^https?:\/\/)|(\.(html|htm)?$)/),He={report:pe,slip:pe,table:De,chart:Ae,download:Ie,lock:ze,href:Le},Ve=({mark:n,children:t})=>{const s=n?He[n]:void 0;return s?r.jsxs("div",{className:"flex flex-nowrap items-center",children:[r.jsx(s,{className:"h-3.5 w-3.5 shrink-0"}),r.jsx("div",{className:"aiquants-menu-link mx-1 hover:underline",children:t})]}):r.jsx("span",{className:"mx-1 text-sky-600 hover:underline dark:text-sky-400",children:t})},K=(n,t)=>t?{menu:{id:n.id,title:n.title,href:n.href},submenu:{subid:t.subid,title:t.title,href:t.href,mark:t.mark,new:t.new}}:{menu:{id:n.id,title:n.title,href:n.href}},We=({item:n,parentMenu:t,onMenuSelected:s})=>{if(n.href==="separator")return r.jsx("hr",{className:"aiquants-menu-separator mx-2 my-1 h-px"});const o=r.jsx(Ve,{mark:n.mark,children:n.title}),c={onClick:()=>{s&&s(K(t,n))}};return n.new?r.jsx("a",{href:n.href,rel:"noopener noreferrer",target:"_blank",...c,children:o}):xe.test(n.href)?r.jsx("a",{href:n.href,...c,children:o}):r.jsx(Q.Link,{to:n.href,...c,children:o})},ke=n=>n?n.split(/[?#]/)[0].replace(/(?!^\/)\/$/,""):"",ye=(n,t)=>{const s=t!=="/"&&t.endsWith("/")?t.slice(0,-1):t;for(const o of n){if(ke(o.href)===s)return o.id;if(o.submenu){for(const c of o.submenu)if(ke(c.href)===s)return o.id}}return null},Fe=n=>{const{menuList:t,onMenuSelected:s,pinnedSubmenuIds:o=[],onToggleSubmenuPin:c}=n;let l="";try{l=Q.useLocation().pathname}catch{typeof window<"u"&&(l=window.location.pathname)}const u=a.useMemo(()=>ye(t,l),[t,l]),[m,b]=a.useState(u),h=a.useRef(l),f=a.useRef(u!==null);a.useEffect(()=>{if(h.current!==l&&(h.current=l,f.current=!1),!f.current){const i=ye(t,l);i!==null&&(b(i),f.current=!0)}},[l,t]);const w=a.useCallback(i=>{o.includes(i)||b(R=>R===i?null:i)},[o]),v=a.useRef(null);Ye(()=>{const i=v.current;if(i)try{const p=sessionStorage.getItem(be);if(p!==null){const R=Number.parseFloat(p);Number.isNaN(R)||(i.scrollTop=R)}}catch{}},[]);const S=a.useCallback(()=>{const i=v.current;if(i)try{sessionStorage.setItem(be,String(i.scrollTop))}catch{}},[]),P=a.useMemo(()=>r.jsx(r.Fragment,{children:t.map(i=>r.jsx("div",{children:i.href?r.jsx("div",{className:"aiquants-menu-list-item relative mb-0.5 ml-1 flex items-center rounded-l-xl px-2.5 py-1 text-xs before:mr-2 before:inline-block before:h-2 before:w-2 before:shrink-0 before:rounded-full before:content-[''] sm:text-sm",children:xe.test(i.href)?r.jsx("a",{href:i.href,onClick:()=>{s&&s(K(i))},children:r.jsx("span",{className:"aiquants-menu-link hover:underline",children:i.title})}):r.jsx(Q.Link,{to:i.href,onClick:()=>{s&&s(K(i))},children:r.jsx("span",{className:"aiquants-menu-link hover:underline",children:i.title})})}):r.jsxs("details",{className:"aiquants-menu-accordion-details",open:i.id===m||o.includes(i.id),children:[r.jsxs("summary",{className:"aiquants-menu-list-item aiquants-menu-accordion-summary relative mb-0.5 ml-1 list-none rounded-l-xl px-2.5 py-1 text-xs outline-none before:mr-2 before:inline-block before:h-2 before:w-2 before:shrink-0 before:rounded-full before:content-[''] sm:text-sm",onClick:p=>{p.preventDefault(),w(i.id)},onKeyDown:p=>{(p.key==="Enter"||p.key===" ")&&(p.preventDefault(),w(i.id))},children:[r.jsx("span",{children:i.title}),r.jsx("button",{type:"button",onClick:p=>{p.stopPropagation(),p.preventDefault(),c&&c(i.id)},className:`aiquants-submenu-pin-button ${o.includes(i.id)?"pinned":""}`,title:o.includes(i.id)?"ピン留め解除":"ピン留め",children:o.includes(i.id)?r.jsx(he,{size:13}):r.jsx(me,{size:13})})]}),r.jsx("div",{className:"aiquants-menu-submenu pointer-events-auto my-0.5 mr-1 ml-3.5 rounded-lg px-2 py-1 shadow-sm",children:i.submenu.map(p=>r.jsx("div",{className:"aiquants-menu-accordion-container block w-full whitespace-nowrap py-0.5 text-xs",children:r.jsx(We,{item:p,parentMenu:i,onMenuSelected:s})},p.subid))})]})},i.id))}),[t,s,m,w,o]);return r.jsx("div",{ref:v,onScroll:S,className:"hidden-scrollbar h-0 grow overflow-y-scroll",children:P})},Ue=n=>{const{menuList:t,menuHeader:s,open:o,onMenuSelected:c,onClickSignout:l,theme:u,toggleTheme:m,isPinned:b,onTogglePin:h,pinnedSubmenuIds:f,onToggleSubmenuPin:w}=n;return r.jsxs("div",{className:`aiquants-menu-content fixed top-0 right-0 z-2147483642 flex min-h-dvh w-[240px] select-none flex-col transition-transform duration-500 ${o?"aiquants-menu-translate-x-0":"aiquants-menu-translate-x-250"}`,children:[r.jsx("div",{className:"flex shrink-0 flex-col justify-center border-white/15 border-b px-2.5 py-2 dark:border-slate-700/60",children:s}),r.jsx("div",{className:"flex grow flex-col overflow-y-auto",children:r.jsx(Fe,{menuList:t,onMenuSelected:c,pinnedSubmenuIds:f,onToggleSubmenuPin:w})}),r.jsx("div",{className:"border-white/15 border-t px-2.5 py-1.5 dark:border-slate-700/60",children:r.jsxs("div",{className:"flex items-center justify-between gap-1.5",children:[r.jsx("button",{type:"button",onClick:h,"data-aqmb-pin-button":!0,className:`flex h-7 items-center justify-center rounded-md px-2 text-[11px] text-white shadow-2xs transition-colors duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-amber-300/60 ${b?"bg-amber-500 hover:bg-amber-600 dark:bg-amber-600 dark:hover:bg-amber-500":"border border-white/20 bg-white/10 hover:bg-white/20 dark:border-slate-600/60 dark:bg-slate-700/60 dark:hover:bg-slate-600"}`,title:b?"ピン留め解除":"ピン留め","aria-label":b?"ピン留め解除":"ピン留め",children:b?r.jsx(he,{size:12}):r.jsx(me,{size:12})}),r.jsx("button",{type:"button",onClick:m,"data-aqmb-theme-button":!0,className:"group relative flex h-7 items-center justify-center rounded-md border border-white/20 bg-white/10 px-2 text-[11px] text-white shadow-2xs backdrop-blur-xs transition-all duration-200 hover:bg-white/20 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/40 dark:border-slate-600/60 dark:bg-slate-700/60 dark:hover:bg-slate-600",title:u==="dark"?"ライトモードに切り替え":"ダークモードに切り替え","aria-label":u==="dark"?"ライトモードに切り替え":"ダークモードに切り替え",children:r.jsx("span",{className:"text-xs transition-transform duration-200 group-hover:scale-110",children:u==="dark"?"🌞":"🌙"})}),r.jsxs("button",{type:"button","data-aqmb-signout-button":!0,className:"aiquants-signout-button flex h-7 flex-1 items-center justify-center gap-1.5 whitespace-nowrap rounded-md bg-red-500/90 px-2.5 font-medium text-[11px] text-white shadow-2xs transition-colors duration-200 hover:bg-red-600 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-red-300/60 dark:bg-red-600/90 dark:hover:bg-red-500",onClick:l,children:[r.jsx(Oe,{size:11,className:"shrink-0"}),r.jsx("span",{children:"サインアウト"})]})]})})]})},Ge=n=>{const{isOverlay:t,onOverlayClick:s}=n;return r.jsx("button",{type:"button",className:`fixed inset-0 z-2147483640 cursor-default bg-black/50 transition-opacity duration-500 ${t?"opacity-100":"pointer-events-none opacity-0"}`,onClick:s})},Ze=n=>{const{open:t,onMenuOpen:s,onMenuClose:o,theme:c}=n,l=a.useRef(t),u=a.useRef(null),m=a.useRef(null),b=a.useRef(null),h=a.useRef(null),f=a.useRef(null),w=a.useCallback(()=>{if(u.current&&m.current&&b.current&&h.current&&f.current){const j=c==="dark"?"#fff":"#000";u.current.style.backgroundColor=j,u.current.style.width="100%",u.current.style.height="3px",u.current.style.transform="",m.current.style.opacity="1",m.current.style.backgroundColor=j,b.current.style.opacity="1",b.current.style.backgroundColor=j,h.current.style.backgroundColor=j,h.current.style.width="100%",h.current.style.height="3px",h.current.style.transform="",f.current.style.color=j,f.current.classList.remove("after:content-['close']"),f.current.classList.remove("after:ml-0.5"),f.current.classList.add("after:content-['menu']"),f.current.classList.add("after:-ml-0.5"),l.current=!0}},[c]),v=a.useCallback(()=>{u.current&&m.current&&b.current&&h.current&&f.current&&(u.current.style.backgroundColor="#fff",u.current.style.width="32px",u.current.style.height="4px",u.current.style.transform="translateY(9px) rotate(-45deg)",m.current.style.opacity="0",b.current.style.opacity="0",h.current.style.backgroundColor="#fff",h.current.style.width="32px",h.current.style.height="4px",h.current.style.transform="translateY(-9px) rotate(45deg)",f.current.style.color="#fff",f.current.classList.remove("after:content-['menu']"),f.current.classList.remove("after:-ml-0.5"),f.current.classList.add("after:content-['close']"),f.current.classList.add("after:ml-0.5"),l.current=!1)},[]),S=a.useCallback(()=>{w(),o&&o()},[w,o]),P=a.useCallback(()=>{v(),s&&s()},[v,s]),i=a.useCallback(()=>{l.current?P():S()},[S,P]),p=a.useCallback(j=>{j.currentTarget.blur()},[]),R=a.useCallback(j=>{j.preventDefault()},[]);return a.useEffect(()=>{t?w():v()},[t,w,v]),r.jsxs("button",{type:"button","data-aqmb-menu-switch":!0,className:"aiquants-menu-switch inline-block h-[27px] w-[27px] cursor-pointer align-middle outline-hidden",onClick:i,onFocus:p,onMouseDown:R,tabIndex:-1,children:[r.jsx("span",{className:"absolute top-0 left-0 box-border inline-block h-[3px] w-full select-none",ref:u}),r.jsx("span",{className:"absolute top-1.5 left-0 box-border inline-block h-[3px] w-full select-none",ref:m}),r.jsx("span",{className:"absolute top-3 left-0 box-border inline-block h-[3px] w-full select-none",ref:b}),r.jsx("span",{className:"absolute top-[18px] left-0 box-border inline-block h-[3px] w-full select-none",ref:h}),r.jsx("div",{className:"absolute w-full text-xs after:mt-2 after:block",ref:f})]})},$=typeof window<"u"?a.useLayoutEffect:a.useEffect,Je=n=>{const{menuList:t,menuHeader:s,onClickSignout:o,isMenuhide:c,isMenuHide:l,theme:u,toggleTheme:m,onMenuNavigate:b,isPinned:h,pinnedWidth:f=240,onPinChange:w,pinnedSubmenuIds:v,initialPinnedSubmenuIds:S,onSubmenuPinChange:P,closeOnEscape:i="auto"}=n,p=l??c??!1,[R,j]=a.useState(()=>{try{return localStorage.getItem("aiquants-menu-pinned")==="true"}catch{return!1}}),_=h!==void 0?h:R,[I,L]=a.useState(_);a.useEffect(()=>{_&&L(!0)},[_]);const[H,ee]=a.useState(()=>{if(S)return S;try{const k=localStorage.getItem("aiquants-submenu-pinned");if(k){const C=JSON.parse(k);if(Array.isArray(C))return C.filter(A=>typeof A=="number")}}catch{}return[]}),te=v!==void 0?v:H,V=a.useCallback(k=>{const C=v!==void 0?v:H,A=C.includes(k)?C.filter(J=>J!==k):[...C,k];if(v===void 0){ee(A);try{localStorage.setItem("aiquants-submenu-pinned",JSON.stringify(A))}catch{}}P&&P(A)},[v,H,P]),W=a.useRef(w);$(()=>{W.current=w},[w]),$(()=>{const k=_?f:0,C=`${k}px`;document.documentElement.style.setProperty("--aiquants-menu-pinned-width",C),q(_,k)},[_,f]),$(()=>()=>{document.documentElement.style.setProperty("--aiquants-menu-pinned-width","0px"),q(!1,0)},[]);const ne=a.useCallback(()=>{L(!0)},[]),T=a.useCallback(()=>{if(L(!1),h===void 0){j(!1);try{localStorage.removeItem("aiquants-menu-pinned")}catch{}}W.current?.(!1,0)},[h]),Z=a.useCallback(()=>{const k=!_,C=k?f:0;if(h===void 0){j(k);try{k?localStorage.setItem("aiquants-menu-pinned","true"):localStorage.removeItem("aiquants-menu-pinned")}catch{}}W.current?.(k,C)},[_,h,f]),re=a.useCallback(k=>{b&&b(k),_||L(!1)},[b,_]),O=a.useCallback(k=>{k.key==="Escape"&&T()},[T]),F=i===!0||i==="auto"&&!_;return a.useEffect(()=>(I&&F?window.addEventListener("keydown",O):window.removeEventListener("keydown",O),()=>{window.removeEventListener("keydown",O)}),[I,F,O]),p?null:r.jsxs("div",{className:`aiquants-menu-bar ${u}`,children:[r.jsx(Ze,{onMenuClose:T,onMenuOpen:ne,open:!I,theme:u}),r.jsx(Ue,{menuList:t,menuHeader:s,onClickSignout:o,onMenuSelected:re,open:I,theme:u,toggleTheme:m,isPinned:_,onTogglePin:Z,pinnedSubmenuIds:te,onToggleSubmenuPin:V}),r.jsx(Ge,{isOverlay:I&&!_,onOverlayClick:T})]})};N.DefaultLink=de,N.MENU_PIN_CHANGE_EVENT=G,N.MenuBar=Je,N.SessionInfo=Re,N.dispatchMenuPinChange=q,N.getInitialPinState=X,N.subscribeMenuPinChange=fe,N.useMenuPinState=Te,Object.defineProperty(N,Symbol.toStringTag,{value:"Module"})}));
|
|
6
|
+
<%s key={someKey} {...props} />`,_,j,z,j),J[j+_]=!0)}if(j=null,g!==void 0&&(s(g),j=""+g),d(u)&&(s(u.key),j=""+u.key),"key"in u){g={};for(var ae in u)ae!=="key"&&(g[ae]=u[ae])}else g=u;return j&&p(g,typeof e=="function"?e.displayName||e.name||"Unknown":e),b(e,j,g,c(),q,se)}function N(e){w(e)?e._store&&(e._store.validated=1):typeof e=="object"&&e!==null&&e.$$typeof===V&&(e._payload.status==="fulfilled"?w(e._payload.value)&&e._payload.value._store&&(e._payload.value._store.validated=1):e._store&&(e._store.validated=1))}function w(e){return typeof e=="object"&&e!==null&&e.$$typeof===x}var y=o,x=Symbol.for("react.transitional.element"),l=Symbol.for("react.portal"),h=Symbol.for("react.fragment"),P=Symbol.for("react.strict_mode"),I=Symbol.for("react.profiler"),v=Symbol.for("react.consumer"),R=Symbol.for("react.context"),L=Symbol.for("react.forward_ref"),H=Symbol.for("react.suspense"),ee=Symbol.for("react.suspense_list"),te=Symbol.for("react.memo"),V=Symbol.for("react.lazy"),W=Symbol.for("react.activity"),ne=Symbol.for("react.client.reference"),O=y.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,Z=Object.prototype.hasOwnProperty,re=Array.isArray,A=console.createTask?console.createTask:function(){return null};y={react_stack_bottom_frame:function(e){return e()}};var F,k={},C=y.react_stack_bottom_frame.bind(y,i)(),T=A(a(i)),J={};Y.Fragment=h,Y.jsx=function(e,u,g){var _=1e4>O.recentlyCreatedOwnerStacks++;return f(e,u,g,!1,_?Error("react-stack-top-frame"):C,_?A(a(e)):T)},Y.jsxs=function(e,u,g){var _=1e4>O.recentlyCreatedOwnerStacks++;return f(e,u,g,!0,_?Error("react-stack-top-frame"):C,_?A(a(e)):T)}})()),Y}var le;function we(){return le||(le=1,process.env.NODE_ENV==="production"?U.exports=ye():U.exports=ke()),U.exports}var r=we();const Ne=n=>n.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),_e=n=>n.replace(/^([A-Z])|[\s-_]+(\w)/g,(t,s,a)=>a?a.toUpperCase():s.toLowerCase()),ce=n=>{const t=_e(n);return t.charAt(0).toUpperCase()+t.slice(1)},ue=(...n)=>n.filter((t,s,a)=>!!t&&t.trim()!==""&&a.indexOf(t)===s).join(" ").trim(),je=n=>{for(const t in n)if(t.startsWith("aria-")||t==="role"||t==="title")return!0};var Ee={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const Se=o.forwardRef(({color:n="currentColor",size:t=24,strokeWidth:s=2,absoluteStrokeWidth:a,className:c="",children:i,iconNode:d,...p},m)=>o.createElement("svg",{ref:m,...Ee,width:t,height:t,stroke:n,strokeWidth:a?Number(s)*24/Number(t):s,className:ue("lucide",c),...!i&&!je(p)&&{"aria-hidden":"true"},...p},[...d.map(([b,f])=>o.createElement(b,f)),...Array.isArray(i)?i:[i]]));const M=(n,t)=>{const s=o.forwardRef(({className:a,...c},i)=>o.createElement(Se,{ref:i,iconNode:t,className:ue(`lucide-${Ne(ce(n))}`,`lucide-${n}`,a),...c}));return s.displayName=ce(n),s};const Ce=M("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);const Me=M("user",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]),Pe="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iI2NiZDVlMSI+PHBhdGggZD0iTTEyIDEyYzIuMjEgMCA0LTEuNzkgNC00cy0xLjc5LTQtNC00LTQgMS43OS00IDQgMS43OSA0IDQgNHptMCAyYy0yLjY3IDAtOCAxLjM0LTggNHYyaDE2di0yYzAtMi42Ni01LjMzLTQtOC00eiIvPjwvc3ZnPg==",de=({to:n,className:t,children:s})=>r.jsx("a",{href:n,className:t,children:s}),Re=n=>{const{user:t,LinkComponent:s=de}=n;return r.jsx("div",{className:"w-full",children:t?r.jsxs("div",{className:"aiquants-session-card group relative flex flex-col gap-2 rounded-xl border border-white/20 bg-white/10 p-2.5 shadow-sm backdrop-blur-md transition-all duration-200 hover:border-white/30 hover:bg-white/15 dark:border-slate-700/60 dark:bg-slate-800/60 dark:hover:border-slate-600/80 dark:hover:bg-slate-800/90",children:[r.jsxs("div",{className:"flex min-w-0 items-center gap-2.5",children:[r.jsxs("div",{className:"relative shrink-0",children:[r.jsx("div",{className:"h-8 w-8 overflow-hidden rounded-full border border-white/40 shadow-xs dark:border-slate-500",children:r.jsx("img",{className:"h-full w-full rounded-full object-cover",src:t.photo||Pe,alt:t.displayName||"user profile"})}),r.jsx("span",{className:"absolute -right-0.5 -bottom-0.5 h-2.5 w-2.5 rounded-full border-2 border-slate-900 bg-emerald-400",title:"Online"})]}),r.jsxs("div",{className:"min-w-0 flex-1 leading-tight",children:[r.jsx("div",{className:"truncate font-semibold text-white text-xs tracking-tight dark:text-slate-100",title:t.displayName,children:t.displayName}),r.jsx("div",{className:"mt-0.5 font-medium text-[10px] text-white/75 tracking-tight dark:text-slate-400",children:"Google Account"})]})]}),r.jsxs("div",{className:"grid grid-cols-2 gap-1.5 border-white/15 border-t pt-1.5 dark:border-slate-700/50",children:[r.jsxs(s,{className:"flex items-center justify-center gap-1 rounded-md border border-white/15 bg-white/10 px-2 py-1 font-medium text-[11px] text-white transition-all duration-150 hover:bg-white/25 active:scale-95 dark:border-slate-600/50 dark:bg-slate-700/50 dark:text-slate-200 dark:hover:bg-slate-600/80",to:"/",children:[r.jsx(Me,{size:11,className:"shrink-0 opacity-80"}),r.jsx("span",{className:"truncate",children:"プロフィール"})]}),r.jsxs(s,{className:"flex items-center justify-center gap-1 rounded-md border border-white/15 bg-white/10 px-2 py-1 font-medium text-[11px] text-white transition-all duration-150 hover:bg-white/25 active:scale-95 dark:border-slate-600/50 dark:bg-slate-700/50 dark:text-slate-200 dark:hover:bg-slate-600/80",to:"https://myaccount.google.com/",children:[r.jsx(Ce,{size:11,className:"shrink-0 opacity-80"}),r.jsx("span",{className:"truncate",children:"Google"})]})]})]}):r.jsx("div",{className:"aiquants-session-card flex items-center justify-between rounded-xl border border-white/20 bg-white/10 p-2.5 shadow-xs dark:border-slate-700/60 dark:bg-slate-800/60",children:r.jsx("span",{className:"font-medium text-white/90 text-xs dark:text-slate-200",children:"ログインしてください"})})})},G="aiquants-menu-pin-change";let E={pinned:!1,width:0,active:!1};const Q=(n=240)=>{if(typeof window>"u"||typeof document>"u")return{pinned:!1,width:0,active:!1};try{const t=getComputedStyle(document.documentElement).getPropertyValue("--aiquants-menu-pinned-width").trim();if(t){const d=Number.parseInt(t,10);if(!Number.isNaN(d)){const p=d>0,m=p?d||n:0,b=E.active??p;return E.pinned===p&&E.width===m&&E.active===b||(E={pinned:p,width:m,active:b}),E}}const a=localStorage.getItem("aiquants-menu-pinned")==="true",c=a?n:0,i=E.active??a;return E.pinned===a&&E.width===c&&E.active===i||(E={pinned:a,width:c,active:i}),E}catch{return{pinned:!1,width:0,active:!1}}},X=(n,t,s)=>{if(typeof window>"u")return;const a=s??n,c={pinned:n,width:t,active:a};(E.pinned!==n||E.width!==t||E.active!==a)&&(E=c);const i=new CustomEvent(G,{detail:c,bubbles:!0,cancelable:!1});window.dispatchEvent(i)},fe=(n,t)=>{if(typeof window>"u")return()=>{};const{immediate:s=!0,defaultPinnedWidth:a=240}=t??{};if(s){const i=Q(a);n(i)}const c=i=>{const d=i;d.detail&&n(d.detail)};return window.addEventListener(G,c,{passive:!0}),()=>{window.removeEventListener(G,c)}},Te=n=>{const t=n?.defaultPinnedWidth??240,s=n?.initialPinned??!1,a=o.useCallback(d=>fe(()=>{d()},{immediate:!1,defaultPinnedWidth:t}),[t]),c=o.useCallback(()=>Q(t),[t]),i=o.useCallback(()=>({pinned:s,width:s?t:0}),[s,t]);return o.useSyncExternalStore(a,c,i)};const Oe=M("log-out",[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]]);const he=M("pin",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z",key:"1nkz8b"}]]);const me=M("pin-off",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M15 9.34V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H7.89",key:"znwnzq"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M9 9v1.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h11",key:"c9qhm2"}]]);const Ae=M("chart-no-axes-column-increasing",[["path",{d:"M5 21v-6",key:"1hz6c0"}],["path",{d:"M12 21V9",key:"uvy0l4"}],["path",{d:"M19 21V3",key:"11j9sm"}]]);const Ie=M("download",[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]]);const pe=M("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);const Le=M("link",[["path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71",key:"1cjeqo"}],["path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71",key:"19qd67"}]]);const ze=M("lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]]);const De=M("table",[["path",{d:"M12 3v18",key:"108xh3"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M3 15h18",key:"5xshup"}]]),Ye=typeof window<"u"?o.useLayoutEffect:o.useEffect,be="aiquants-menu-scroll",xe=new RegExp(/(^https?:\/\/)|(\.(html|htm)?$)/),He={report:pe,slip:pe,table:De,chart:Ae,download:Ie,lock:ze,href:Le},Ve=({mark:n,children:t})=>{const s=n?He[n]:void 0;return s?r.jsxs("div",{className:"flex flex-nowrap items-center",children:[r.jsx(s,{className:"h-3.5 w-3.5 shrink-0"}),r.jsx("div",{className:"aiquants-menu-link mx-1 hover:underline",children:t})]}):r.jsx("span",{className:"mx-1 text-sky-600 hover:underline dark:text-sky-400",children:t})},K=(n,t)=>t?{menu:{id:n.id,title:n.title,href:n.href},submenu:{subid:t.subid,title:t.title,href:t.href,mark:t.mark,new:t.new}}:{menu:{id:n.id,title:n.title,href:n.href}},We=({item:n,parentMenu:t,onMenuSelected:s})=>{if(n.href==="separator")return r.jsx("hr",{className:"aiquants-menu-separator mx-2 my-1 h-px"});const a=r.jsx(Ve,{mark:n.mark,children:n.title}),c={onClick:()=>{s&&s(K(t,n))}};return n.new?r.jsx("a",{href:n.href,rel:"noopener noreferrer",target:"_blank",...c,children:a}):xe.test(n.href)?r.jsx("a",{href:n.href,...c,children:a}):r.jsx(B.Link,{to:n.href,...c,children:a})},ve=n=>n?n.split(/[?#]/)[0].replace(/(?!^\/)\/$/,""):"",ge=(n,t)=>{const s=t!=="/"&&t.endsWith("/")?t.slice(0,-1):t;for(const a of n){if(ve(a.href)===s)return a.id;if(a.submenu){for(const c of a.submenu)if(ve(c.href)===s)return a.id}}return null},Fe=n=>{const{menuList:t,onMenuSelected:s,pinnedSubmenuIds:a=[],onToggleSubmenuPin:c}=n;let i="";try{i=B.useLocation().pathname}catch{typeof window<"u"&&(i=window.location.pathname)}const d=o.useMemo(()=>ge(t,i),[t,i]),[p,m]=o.useState(d),b=o.useRef(i),f=o.useRef(d!==null);o.useEffect(()=>{if(b.current!==i&&(b.current=i,f.current=!1),!f.current){const l=ge(t,i);l!==null&&(m(l),f.current=!0)}},[i,t]);const N=o.useCallback(l=>{a.includes(l)||m(P=>P===l?null:l)},[a]),w=o.useRef(null);Ye(()=>{const l=w.current;if(l)try{const h=sessionStorage.getItem(be);if(h!==null){const P=Number.parseFloat(h);Number.isNaN(P)||(l.scrollTop=P)}}catch{}},[]);const y=o.useCallback(()=>{const l=w.current;if(l)try{sessionStorage.setItem(be,String(l.scrollTop))}catch{}},[]),x=o.useMemo(()=>r.jsx(r.Fragment,{children:t.map(l=>r.jsx("div",{children:l.href?r.jsx("div",{className:"aiquants-menu-list-item relative mb-0.5 ml-1 flex items-center rounded-l-xl px-2.5 py-1 text-xs before:mr-2 before:inline-block before:h-2 before:w-2 before:shrink-0 before:rounded-full before:content-[''] sm:text-sm",children:xe.test(l.href)?r.jsx("a",{href:l.href,onClick:()=>{s&&s(K(l))},children:r.jsx("span",{className:"aiquants-menu-link hover:underline",children:l.title})}):r.jsx(B.Link,{to:l.href,onClick:()=>{s&&s(K(l))},children:r.jsx("span",{className:"aiquants-menu-link hover:underline",children:l.title})})}):r.jsxs("details",{className:"aiquants-menu-accordion-details",open:l.id===p||a.includes(l.id),children:[r.jsxs("summary",{className:"aiquants-menu-list-item aiquants-menu-accordion-summary relative mb-0.5 ml-1 list-none rounded-l-xl px-2.5 py-1 text-xs outline-none before:mr-2 before:inline-block before:h-2 before:w-2 before:shrink-0 before:rounded-full before:content-[''] sm:text-sm",onClick:h=>{h.preventDefault(),N(l.id)},onKeyDown:h=>{(h.key==="Enter"||h.key===" ")&&(h.preventDefault(),N(l.id))},children:[r.jsx("span",{children:l.title}),r.jsx("button",{type:"button",onClick:h=>{h.stopPropagation(),h.preventDefault(),c&&c(l.id)},className:`aiquants-submenu-pin-button ${a.includes(l.id)?"pinned":""}`,title:a.includes(l.id)?"ピン留め解除":"ピン留め",children:a.includes(l.id)?r.jsx(he,{size:13}):r.jsx(me,{size:13})})]}),r.jsx("div",{className:"aiquants-menu-submenu pointer-events-auto my-0.5 mr-1 ml-3.5 rounded-lg px-2 py-1 shadow-sm",children:l.submenu.map(h=>r.jsx("div",{className:"aiquants-menu-accordion-container block w-full whitespace-nowrap py-0.5 text-xs",children:r.jsx(We,{item:h,parentMenu:l,onMenuSelected:s})},h.subid))})]})},l.id))}),[t,s,p,N,a]);return r.jsx("div",{ref:w,onScroll:y,className:"hidden-scrollbar h-0 grow overflow-y-scroll",children:x})},Ue=n=>{const{menuList:t,menuHeader:s,open:a,onMenuSelected:c,onClickSignout:i,theme:d,toggleTheme:p,isPinned:m,onTogglePin:b,pinnedSubmenuIds:f,onToggleSubmenuPin:N}=n;return r.jsxs("div",{className:`aiquants-menu-content fixed top-0 right-0 z-2147483642 flex min-h-dvh w-[240px] select-none flex-col transition-transform duration-500 ${a?"aiquants-menu-translate-x-0":"aiquants-menu-translate-x-250"}`,children:[r.jsx("div",{className:"flex shrink-0 flex-col justify-center border-white/15 border-b px-2.5 py-2 dark:border-slate-700/60",children:s}),r.jsx("div",{className:"flex grow flex-col overflow-y-auto",children:r.jsx(Fe,{menuList:t,onMenuSelected:c,pinnedSubmenuIds:f,onToggleSubmenuPin:N})}),r.jsx("div",{className:"border-white/15 border-t px-2.5 py-1.5 dark:border-slate-700/60",children:r.jsxs("div",{className:"flex items-center justify-between gap-1.5",children:[r.jsx("button",{type:"button",onClick:b,"data-aqmb-pin-button":!0,className:`flex h-7 items-center justify-center rounded-md px-2 text-[11px] text-white shadow-2xs transition-colors duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-amber-300/60 ${m?"bg-amber-500 hover:bg-amber-600 dark:bg-amber-600 dark:hover:bg-amber-500":"border border-white/20 bg-white/10 hover:bg-white/20 dark:border-slate-600/60 dark:bg-slate-700/60 dark:hover:bg-slate-600"}`,title:m?"ピン留め解除":"ピン留め","aria-label":m?"ピン留め解除":"ピン留め",children:m?r.jsx(he,{size:12}):r.jsx(me,{size:12})}),r.jsx("button",{type:"button",onClick:p,"data-aqmb-theme-button":!0,className:"group relative flex h-7 items-center justify-center rounded-md border border-white/20 bg-white/10 px-2 text-[11px] text-white shadow-2xs backdrop-blur-xs transition-all duration-200 hover:bg-white/20 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/40 dark:border-slate-600/60 dark:bg-slate-700/60 dark:hover:bg-slate-600",title:d==="dark"?"ライトモードに切り替え":"ダークモードに切り替え","aria-label":d==="dark"?"ライトモードに切り替え":"ダークモードに切り替え",children:r.jsx("span",{className:"text-xs transition-transform duration-200 group-hover:scale-110",children:d==="dark"?"🌞":"🌙"})}),r.jsxs("button",{type:"button","data-aqmb-signout-button":!0,className:"aiquants-signout-button flex h-7 flex-1 items-center justify-center gap-1.5 whitespace-nowrap rounded-md bg-red-500/90 px-2.5 font-medium text-[11px] text-white shadow-2xs transition-colors duration-200 hover:bg-red-600 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-red-300/60 dark:bg-red-600/90 dark:hover:bg-red-500",onClick:i,children:[r.jsx(Oe,{size:11,className:"shrink-0"}),r.jsx("span",{children:"サインアウト"})]})]})})]})},Ge=n=>{const{isOverlay:t,onOverlayClick:s}=n;return r.jsx("button",{type:"button",className:`fixed inset-0 z-2147483640 cursor-default bg-black/50 transition-opacity duration-500 ${t?"opacity-100":"pointer-events-none opacity-0"}`,onClick:s})},Ze=n=>{const{open:t,isOpen:s,onMenuOpen:a,onMenuClose:c,onToggle:i,theme:d="light",className:p}=n,m=t??(s!==void 0?!s:!0),b=o.useRef(m),f=o.useRef(null),N=o.useRef(null),w=o.useRef(null),y=o.useRef(null),x=o.useRef(null),l=o.useCallback(()=>{if(f.current&&N.current&&w.current&&y.current&&x.current){const v=d==="dark"?"#fff":"#000";f.current.style.backgroundColor=v,f.current.style.width="100%",f.current.style.height="3px",f.current.style.transform="none",N.current.style.opacity="1",N.current.style.backgroundColor=v,w.current.style.opacity="1",w.current.style.backgroundColor=v,y.current.style.backgroundColor=v,y.current.style.width="100%",y.current.style.height="3px",y.current.style.transform="none",x.current.style.color=v,x.current.classList.remove("after:content-['close']"),x.current.classList.remove("after:ml-0.5"),x.current.classList.add("after:content-['menu']"),x.current.classList.add("after:-ml-0.5"),b.current=!0}},[d]),h=o.useCallback(()=>{f.current&&N.current&&w.current&&y.current&&x.current&&(f.current.style.backgroundColor="#fff",f.current.style.width="32px",f.current.style.height="4px",f.current.style.transform="translateY(9px) rotate(-45deg)",N.current.style.opacity="0",w.current.style.opacity="0",y.current.style.backgroundColor="#fff",y.current.style.width="32px",y.current.style.height="4px",y.current.style.transform="translateY(-9px) rotate(45deg)",x.current.style.color="#fff",x.current.classList.remove("after:content-['menu']"),x.current.classList.remove("after:-ml-0.5"),x.current.classList.add("after:content-['close']"),x.current.classList.add("after:ml-0.5"),b.current=!1)},[]);o.useEffect(()=>{m?l():h()},[m,l,h]);const P=o.useCallback(()=>{b.current?(h(),a?.(),i?.(!0)):(l(),c?.(),i?.(!1))},[h,l,a,c,i]),I=!m;return r.jsxs("button",{type:"button","data-aqmb-menu-switch":"true","aria-label":I?"Close menu":"Open menu","aria-expanded":I,className:`aiquants-menu-switch z-[2147483647] inline-block h-[27px] w-[27px] cursor-pointer align-middle outline-hidden ${p||""}`,onClick:P,children:[r.jsx("span",{ref:f,className:"absolute top-0 left-0 box-border inline-block h-[3px] w-full select-none transition-all duration-500"}),r.jsx("span",{ref:N,className:"absolute top-[6px] left-0 box-border inline-block h-[3px] w-full select-none transition-all duration-500"}),r.jsx("span",{ref:w,className:"absolute top-[12px] left-0 box-border inline-block h-[3px] w-full select-none transition-all duration-500"}),r.jsx("span",{ref:y,className:"absolute top-[18px] left-0 box-border inline-block h-[3px] w-full select-none transition-all duration-500"}),r.jsx("div",{ref:x,className:"absolute w-full text-xs transition-all duration-500 after:mt-2 after:block"})]})},$=typeof window<"u"?o.useLayoutEffect:o.useEffect,Je=n=>{const{menuList:t,menuHeader:s,onClickSignout:a,isMenuhide:c,isMenuHide:i,theme:d,toggleTheme:p,onMenuNavigate:m,isPinned:b,pinnedWidth:f=240,onPinChange:N,pinnedSubmenuIds:w,initialPinnedSubmenuIds:y,onSubmenuPinChange:x,closeOnEscape:l="auto"}=n,h=i??c??!1,[P,I]=o.useState(()=>{try{return localStorage.getItem("aiquants-menu-pinned")==="true"}catch{return!1}}),v=b!==void 0?b:P,[R,L]=o.useState(v);o.useEffect(()=>{v&&L(!0)},[v]);const[H,ee]=o.useState(()=>{if(y)return y;try{const k=localStorage.getItem("aiquants-submenu-pinned");if(k){const C=JSON.parse(k);if(Array.isArray(C))return C.filter(T=>typeof T=="number")}}catch{}return[]}),te=w!==void 0?w:H,V=o.useCallback(k=>{const C=w!==void 0?w:H,T=C.includes(k)?C.filter(J=>J!==k):[...C,k];if(w===void 0){ee(T);try{localStorage.setItem("aiquants-submenu-pinned",JSON.stringify(T))}catch{}}x&&x(T)},[w,H,x]),W=o.useRef(N);$(()=>{W.current=N},[N]),$(()=>{const k=v?f:0,C=`${k}px`;document.documentElement.style.setProperty("--aiquants-menu-pinned-width",C),X(v,k,R||v)},[v,f,R]),$(()=>()=>{document.documentElement.style.setProperty("--aiquants-menu-pinned-width","0px"),X(!1,0)},[]);const ne=o.useCallback(()=>{L(!0)},[]),O=o.useCallback(()=>{if(L(!1),b===void 0){I(!1);try{localStorage.removeItem("aiquants-menu-pinned")}catch{}}W.current?.(!1,0)},[b]),Z=o.useCallback(()=>{const k=!v,C=k?f:0;if(b===void 0){I(k);try{k?localStorage.setItem("aiquants-menu-pinned","true"):localStorage.removeItem("aiquants-menu-pinned")}catch{}}W.current?.(k,C)},[v,b,f]),re=o.useCallback(k=>{m&&m(k),v||L(!1)},[m,v]),A=o.useCallback(k=>{k.key==="Escape"&&O()},[O]),F=l===!0||l==="auto"&&!v;return o.useEffect(()=>(R&&F?window.addEventListener("keydown",A):window.removeEventListener("keydown",A),()=>{window.removeEventListener("keydown",A)}),[R,F,A]),h?null:r.jsxs("div",{className:`aiquants-menu-bar ${d}`,children:[r.jsx(Ze,{onMenuClose:O,onMenuOpen:ne,open:!R,theme:d}),r.jsx(Ue,{menuList:t,menuHeader:s,onClickSignout:a,onMenuSelected:re,open:R,theme:d,toggleTheme:p,isPinned:v,onTogglePin:Z,pinnedSubmenuIds:te,onToggleSubmenuPin:V}),r.jsx(Ge,{isOverlay:R&&!v,onOverlayClick:O})]})};S.DefaultLink=de,S.MENU_PIN_CHANGE_EVENT=G,S.MenuBar=Je,S.SessionInfo=Re,S.dispatchMenuPinChange=X,S.getInitialPinState=Q,S.subscribeMenuPinChange=fe,S.useMenuPinState=Te,Object.defineProperty(S,Symbol.toStringTag,{value:"Module"})}));
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */
|
|
2
2
|
/*! @aiquants/menu-bar standalone CSS — 非 Tailwind ホスト専用。ホストの Tailwind ビルドと混在させないこと (同名ユーティリティ重複でカスケード反転が起きる) */
|
|
3
|
-
@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-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking: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-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-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-content:""}}}@layer theme{:root,:host{--color-red-300:oklch(80.8% .114 19.571);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-emerald-400:oklch(76.5% .177 163.223);--color-sky-400:oklch(74.6% .16 232.661);--color-sky-600:oklch(58.8% .158 241.966);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-black:#000;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--leading-tight:1.25;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--blur-xs:4px;--blur-md:12px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1)}}@layer base;@layer components{:root{--aiquants-menu-pinned-width:0px;--aqmb-switch-position:fixed;--aqmb-switch-top:6px;--aqmb-switch-right:8px;--aqmb-switch-left:auto;--aqmb-switch-bottom:auto;--aqmb-switch-z-index:2147480000}.aiquants-menu-bar{font-size:1rem;line-height:1.5;position:relative}.aiquants-menu-bar *{box-sizing:border-box}.aiquants-menu-bar a,.aiquants-menu-bar button{cursor:pointer;background:0 0;border:none;text-decoration:none}.aiquants-menu-bar.dark{color-scheme:dark}.aiquants-menu-bar.dark .aiquants-menu-content{background-color:#0f172a}.aiquants-menu-bar.light .aiquants-menu-content,.aiquants-menu-bar .aiquants-menu-content{background-color:#0369a1}.aiquants-menu-bar.dark .aiquants-signout-button{background-color:#334155}.aiquants-menu-bar.dark .aiquants-signout-button:hover{background-color:#475569}.aiquants-menu-bar.light .aiquants-signout-button,.aiquants-menu-bar .aiquants-signout-button{white-space:nowrap;background-color:#2563eb;min-width:0}.aiquants-menu-bar.light .aiquants-signout-button:hover,.aiquants-menu-bar .aiquants-signout-button:hover{background-color:#1e40af}.aiquants-menu-bar.dark .aiquants-menu-list-item{color:#d1d5db;background-color:#334155}.aiquants-menu-bar.dark .aiquants-menu-list-item:before{background-color:#94a3b8}.aiquants-menu-bar.dark .aiquants-menu-submenu{background-color:#1e293b}.aiquants-menu-bar.dark .aiquants-menu-link{color:#38bdf8}.aiquants-menu-bar.dark .aiquants-menu-separator{border-color:#4b5563}.aiquants-menu-bar.light .aiquants-menu-list-item,.aiquants-menu-bar .aiquants-menu-list-item{color:#4b5563;background-color:#bae6fd}.aiquants-menu-bar.light .aiquants-menu-list-item:before,.aiquants-menu-bar .aiquants-menu-list-item:before{background-color:#fff}.aiquants-menu-bar.light .aiquants-menu-submenu,.aiquants-menu-bar .aiquants-menu-submenu{background-color:#fafafa}.aiquants-menu-bar.light .aiquants-menu-link,.aiquants-menu-bar .aiquants-menu-link{color:#0284c7}.aiquants-menu-bar.light .aiquants-menu-separator,.aiquants-menu-bar .aiquants-menu-separator{border-color:#4b5563}.aiquants-menu-bar .aiquants-menu-separator{border-top:1px solid;height:0}.aiquants-menu-bar .aiquants-session-card{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.aiquants-menu-accordion-summary{cursor:pointer;justify-content:space-between;align-items:center;display:flex}.aiquants-menu-accordion-summary::-webkit-details-marker{display:none}.aiquants-menu-accordion-summary span{text-align:left;flex-grow:1}.aiquants-submenu-pin-button{border-radius:.25rem;justify-content:center;align-items:center;padding:.15rem;transition:all .3s;display:inline-flex}.aiquants-menu-bar.light .aiquants-submenu-pin-button{color:#4b556366}.aiquants-menu-bar.light .aiquants-submenu-pin-button:hover{color:#4b5563cc;background-color:#4b55631a}.aiquants-menu-bar.light .aiquants-submenu-pin-button.pinned{color:#d97706}.aiquants-menu-bar.light .aiquants-submenu-pin-button.pinned:hover{color:#b45309;background-color:#d977061a}.aiquants-menu-bar.dark .aiquants-submenu-pin-button{color:#fff6}.aiquants-menu-bar.dark .aiquants-submenu-pin-button:hover{color:#fffc;background-color:#ffffff1a}.aiquants-menu-bar.dark .aiquants-submenu-pin-button.pinned{color:#f59e0b}.aiquants-menu-bar.dark .aiquants-submenu-pin-button.pinned:hover{color:#fbbf24;background-color:#f59e0b26}.aiquants-menu-accordion-container{contain:content;transition:block-size .5s}.aiquants-menu-translate-x-0{transform:translate(0)}.aiquants-menu-translate-x-250{transform:translate(250px)}.aiquants-menu-switch{position:var(--aqmb-switch-position,fixed);top:var(--aqmb-switch-top,6px);right:var(--aqmb-switch-right,8px);left:var(--aqmb-switch-left,auto);bottom:var(--aqmb-switch-bottom,auto);z-index:var(--aqmb-switch-z-index,2147480000)}}@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.top-0{top:calc(var(--spacing) * 0)}.top-1\.5{top:calc(var(--spacing) * 1.5)}.top-3{top:calc(var(--spacing) * 3)}.top-\[18px\]{top:18px}.-right-0\.5{right:calc(var(--spacing) * -.5)}.right-0{right:calc(var(--spacing) * 0)}.-bottom-0\.5{bottom:calc(var(--spacing) * -.5)}.left-0{left:calc(var(--spacing) * 0)}.z-2147483640{z-index:2147483640}.z-2147483642{z-index:2147483642}.mx-1{margin-inline:calc(var(--spacing) * 1)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.my-0\.5{margin-block:calc(var(--spacing) * .5)}.my-1{margin-block:calc(var(--spacing) * 1)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mr-1{margin-right:calc(var(--spacing) * 1)}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-3\.5{margin-left:calc(var(--spacing) * 3.5)}.box-border{box-sizing:border-box}.block{display:block}.flex{display:flex}.grid{display:grid}.inline-block{display:inline-block}.table{display:table}.h-0{height:calc(var(--spacing) * 0)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-\[3px\]{height:3px}.h-\[27px\]{height:27px}.h-full{height:100%}.h-px{height:1px}.min-h-dvh{min-height:100dvh}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-8{width:calc(var(--spacing) * 8)}.w-\[27px\]{width:27px}.w-\[240px\]{width:240px}.w-full{width:100%}.min-w-0{min-width:calc(var(--spacing) * 0)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.list-none{list-style-type:none}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-nowrap{flex-wrap:nowrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing) * 1)}.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)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-y-scroll{overflow-y:scroll}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-l-xl{border-top-left-radius:var(--radius-xl);border-bottom-left-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-slate-900{border-color:var(--color-slate-900)}.border-white\/15{border-color:#ffffff26}@supports (color:color-mix(in lab, red, red)){.border-white\/15{border-color:color-mix(in oklab, var(--color-white) 15%, transparent)}}.border-white\/20{border-color:#fff3}@supports (color:color-mix(in lab, red, red)){.border-white\/20{border-color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.border-white\/40{border-color:#fff6}@supports (color:color-mix(in lab, red, red)){.border-white\/40{border-color:color-mix(in oklab, var(--color-white) 40%, transparent)}}.bg-amber-500{background-color:var(--color-amber-500)}.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-emerald-400{background-color:var(--color-emerald-400)}.bg-red-500\/90{background-color:#fb2c36e6}@supports (color:color-mix(in lab, red, red)){.bg-red-500\/90{background-color:color-mix(in oklab, var(--color-red-500) 90%, transparent)}}.bg-white\/10{background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.bg-white\/10{background-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.object-cover{object-fit:cover}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.pt-1\.5{padding-top:calc(var(--spacing) * 1.5)}.align-middle{vertical-align:middle}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.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)}.whitespace-nowrap{white-space:nowrap}.text-sky-600{color:var(--color-sky-600)}.text-white{color:var(--color-white)}.text-white\/75{color:#ffffffbf}@supports (color:color-mix(in lab, red, red)){.text-white\/75{color:color-mix(in oklab, var(--color-white) 75%, 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)}}.opacity-0{opacity:0}.opacity-80{opacity:.8}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xs{--tw-shadow:0 1px 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)}.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-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)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-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-xs{--tw-backdrop-blur:blur(var(--blur-xs));-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-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-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-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}@media (hover:hover){.group-hover\:scale-110:is(:where(.group):hover *){--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}}.before\:mr-2:before{content:var(--tw-content);margin-right:calc(var(--spacing) * 2)}.before\:inline-block:before{content:var(--tw-content);display:inline-block}.before\:h-2:before{content:var(--tw-content);height:calc(var(--spacing) * 2)}.before\:w-2:before{content:var(--tw-content);width:calc(var(--spacing) * 2)}.before\:shrink-0:before{content:var(--tw-content);flex-shrink:0}.before\:rounded-full:before{content:var(--tw-content);border-radius:3.40282e38px}.before\:content-\[\'\'\]:before{--tw-content:"";content:var(--tw-content)}.after\:mt-2:after{content:var(--tw-content);margin-top:calc(var(--spacing) * 2)}.after\:-ml-0\.5:after{content:var(--tw-content);margin-left:calc(var(--spacing) * -.5)}.after\:ml-0\.5:after{content:var(--tw-content);margin-left:calc(var(--spacing) * .5)}.after\:block:after{content:var(--tw-content);display:block}.after\:content-\[\'close\'\]:after{--tw-content:"close";content:var(--tw-content)}.after\:content-\[\'menu\'\]:after{--tw-content:"menu";content:var(--tw-content)}@media (hover:hover){.hover\:border-white\/30:hover{border-color:#ffffff4d}@supports (color:color-mix(in lab, red, red)){.hover\:border-white\/30:hover{border-color:color-mix(in oklab, var(--color-white) 30%, transparent)}}.hover\:bg-amber-600:hover{background-color:var(--color-amber-600)}.hover\:bg-red-600:hover{background-color:var(--color-red-600)}.hover\:bg-white\/15:hover{background-color:#ffffff26}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/15:hover{background-color:color-mix(in oklab, var(--color-white) 15%, transparent)}}.hover\:bg-white\/20:hover{background-color:#fff3}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/20:hover{background-color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.hover\:bg-white\/25:hover{background-color:#ffffff40}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/25:hover{background-color:color-mix(in oklab, var(--color-white) 25%, transparent)}}.hover\:underline:hover{text-decoration-line:underline}}.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-amber-300\/60:focus-visible{--tw-ring-color:#ffd23699}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-amber-300\/60:focus-visible{--tw-ring-color:color-mix(in oklab, var(--color-amber-300) 60%, transparent)}}.focus-visible\:ring-red-300\/60:focus-visible{--tw-ring-color:#ffa3a399}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-red-300\/60:focus-visible{--tw-ring-color:color-mix(in oklab, var(--color-red-300) 60%, transparent)}}.focus-visible\:ring-white\/40:focus-visible{--tw-ring-color:#fff6}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-white\/40:focus-visible{--tw-ring-color:color-mix(in oklab, var(--color-white) 40%, transparent)}}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}@media (min-width:40rem){.sm\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.dark\:border-slate-500:where(.dark,.dark *){border-color:var(--color-slate-500)}.dark\:border-slate-600\/50:where(.dark,.dark *){border-color:#45556c80}@supports (color:color-mix(in lab, red, red)){.dark\:border-slate-600\/50:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-slate-600) 50%, transparent)}}.dark\:border-slate-600\/60:where(.dark,.dark *){border-color:#45556c99}@supports (color:color-mix(in lab, red, red)){.dark\:border-slate-600\/60:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-slate-600) 60%, transparent)}}.dark\:border-slate-700\/50:where(.dark,.dark *){border-color:#31415880}@supports (color:color-mix(in lab, red, red)){.dark\:border-slate-700\/50:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-slate-700) 50%, transparent)}}.dark\:border-slate-700\/60:where(.dark,.dark *){border-color:#31415899}@supports (color:color-mix(in lab, red, red)){.dark\:border-slate-700\/60:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-slate-700) 60%, transparent)}}.dark\:bg-amber-600:where(.dark,.dark *){background-color:var(--color-amber-600)}.dark\:bg-red-600\/90:where(.dark,.dark *){background-color:#e40014e6}@supports (color:color-mix(in lab, red, red)){.dark\:bg-red-600\/90:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-red-600) 90%, transparent)}}.dark\:bg-slate-700\/50:where(.dark,.dark *){background-color:#31415880}@supports (color:color-mix(in lab, red, red)){.dark\:bg-slate-700\/50:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-slate-700) 50%, transparent)}}.dark\:bg-slate-700\/60:where(.dark,.dark *){background-color:#31415899}@supports (color:color-mix(in lab, red, red)){.dark\:bg-slate-700\/60:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-slate-700) 60%, transparent)}}.dark\:bg-slate-800\/60:where(.dark,.dark *){background-color:#1d293d99}@supports (color:color-mix(in lab, red, red)){.dark\:bg-slate-800\/60:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-slate-800) 60%, transparent)}}.dark\:text-sky-400:where(.dark,.dark *){color:var(--color-sky-400)}.dark\:text-slate-100:where(.dark,.dark *){color:var(--color-slate-100)}.dark\:text-slate-200:where(.dark,.dark *){color:var(--color-slate-200)}.dark\:text-slate-400:where(.dark,.dark *){color:var(--color-slate-400)}@media (hover:hover){.dark\:hover\:border-slate-600\/80:where(.dark,.dark *):hover{border-color:#45556ccc}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:border-slate-600\/80:where(.dark,.dark *):hover{border-color:color-mix(in oklab, var(--color-slate-600) 80%, transparent)}}.dark\:hover\:bg-amber-500:where(.dark,.dark *):hover{background-color:var(--color-amber-500)}.dark\:hover\:bg-red-500:where(.dark,.dark *):hover{background-color:var(--color-red-500)}.dark\:hover\:bg-slate-600:where(.dark,.dark *):hover{background-color:var(--color-slate-600)}.dark\:hover\:bg-slate-600\/80:where(.dark,.dark *):hover{background-color:#45556ccc}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-slate-600\/80:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-slate-600) 80%, transparent)}}.dark\:hover\:bg-slate-800\/90:where(.dark,.dark *):hover{background-color:#1d293de6}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-slate-800\/90:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-slate-800) 90%, transparent)}}}}@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-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-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-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}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-content{syntax:"*";inherits:false;initial-value:""}
|
|
3
|
+
@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-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking: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-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-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-content:""}}}@layer theme{:root,:host{--color-red-300:oklch(80.8% .114 19.571);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-emerald-400:oklch(76.5% .177 163.223);--color-sky-400:oklch(74.6% .16 232.661);--color-sky-600:oklch(58.8% .158 241.966);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-black:#000;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--leading-tight:1.25;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--blur-xs:4px;--blur-md:12px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1)}}@layer base;@layer components{:root{--aiquants-menu-pinned-width:0px;--aqmb-switch-position:fixed;--aqmb-switch-top:6px;--aqmb-switch-right:8px;--aqmb-switch-left:auto;--aqmb-switch-bottom:auto;--aqmb-switch-z-index:2147480000}.aiquants-menu-bar{font-size:1rem;line-height:1.5;position:relative}.aiquants-menu-bar *{box-sizing:border-box}.aiquants-menu-bar a,.aiquants-menu-bar button{cursor:pointer;background:0 0;border:none;text-decoration:none}.aiquants-menu-bar.dark{color-scheme:dark}.aiquants-menu-bar.dark .aiquants-menu-content{background-color:#0f172a}.aiquants-menu-bar.light .aiquants-menu-content,.aiquants-menu-bar .aiquants-menu-content{background-color:#0369a1}.aiquants-menu-bar.dark .aiquants-signout-button{background-color:#334155}.aiquants-menu-bar.dark .aiquants-signout-button:hover{background-color:#475569}.aiquants-menu-bar.light .aiquants-signout-button,.aiquants-menu-bar .aiquants-signout-button{white-space:nowrap;background-color:#2563eb;min-width:0}.aiquants-menu-bar.light .aiquants-signout-button:hover,.aiquants-menu-bar .aiquants-signout-button:hover{background-color:#1e40af}.aiquants-menu-bar.dark .aiquants-menu-list-item{color:#d1d5db;background-color:#334155}.aiquants-menu-bar.dark .aiquants-menu-list-item:before{background-color:#94a3b8}.aiquants-menu-bar.dark .aiquants-menu-submenu{background-color:#1e293b}.aiquants-menu-bar.dark .aiquants-menu-link{color:#38bdf8}.aiquants-menu-bar.dark .aiquants-menu-separator{border-color:#4b5563}.aiquants-menu-bar.light .aiquants-menu-list-item,.aiquants-menu-bar .aiquants-menu-list-item{color:#4b5563;background-color:#bae6fd}.aiquants-menu-bar.light .aiquants-menu-list-item:before,.aiquants-menu-bar .aiquants-menu-list-item:before{background-color:#fff}.aiquants-menu-bar.light .aiquants-menu-submenu,.aiquants-menu-bar .aiquants-menu-submenu{background-color:#fafafa}.aiquants-menu-bar.light .aiquants-menu-link,.aiquants-menu-bar .aiquants-menu-link{color:#0284c7}.aiquants-menu-bar.light .aiquants-menu-separator,.aiquants-menu-bar .aiquants-menu-separator{border-color:#4b5563}.aiquants-menu-bar .aiquants-menu-separator{border-top:1px solid;height:0}.aiquants-menu-bar .aiquants-session-card{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.aiquants-menu-accordion-summary{cursor:pointer;justify-content:space-between;align-items:center;display:flex}.aiquants-menu-accordion-summary::-webkit-details-marker{display:none}.aiquants-menu-accordion-summary span{text-align:left;flex-grow:1}.aiquants-submenu-pin-button{border-radius:.25rem;justify-content:center;align-items:center;padding:.15rem;transition:all .3s;display:inline-flex}.aiquants-menu-bar.light .aiquants-submenu-pin-button{color:#4b556366}.aiquants-menu-bar.light .aiquants-submenu-pin-button:hover{color:#4b5563cc;background-color:#4b55631a}.aiquants-menu-bar.light .aiquants-submenu-pin-button.pinned{color:#d97706}.aiquants-menu-bar.light .aiquants-submenu-pin-button.pinned:hover{color:#b45309;background-color:#d977061a}.aiquants-menu-bar.dark .aiquants-submenu-pin-button{color:#fff6}.aiquants-menu-bar.dark .aiquants-submenu-pin-button:hover{color:#fffc;background-color:#ffffff1a}.aiquants-menu-bar.dark .aiquants-submenu-pin-button.pinned{color:#f59e0b}.aiquants-menu-bar.dark .aiquants-submenu-pin-button.pinned:hover{color:#fbbf24;background-color:#f59e0b26}.aiquants-menu-accordion-container{contain:content;transition:block-size .5s}.aiquants-menu-translate-x-0{transform:translate(0)}.aiquants-menu-translate-x-250{transform:translate(250px)}.aiquants-menu-switch{position:var(--aqmb-switch-position,fixed);top:var(--aqmb-switch-top,6px);right:var(--aqmb-switch-right,8px);left:var(--aqmb-switch-left,auto);bottom:var(--aqmb-switch-bottom,auto);z-index:var(--aqmb-switch-z-index,2147480000)}}@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.top-0{top:calc(var(--spacing) * 0)}.top-\[6px\]{top:6px}.top-\[12px\]{top:12px}.top-\[18px\]{top:18px}.-right-0\.5{right:calc(var(--spacing) * -.5)}.right-0{right:calc(var(--spacing) * 0)}.-bottom-0\.5{bottom:calc(var(--spacing) * -.5)}.left-0{left:calc(var(--spacing) * 0)}.z-2147483640{z-index:2147483640}.z-2147483642{z-index:2147483642}.z-\[2147483647\]{z-index:2147483647}.mx-1{margin-inline:calc(var(--spacing) * 1)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.my-0\.5{margin-block:calc(var(--spacing) * .5)}.my-1{margin-block:calc(var(--spacing) * 1)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mr-1{margin-right:calc(var(--spacing) * 1)}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-3\.5{margin-left:calc(var(--spacing) * 3.5)}.box-border{box-sizing:border-box}.block{display:block}.flex{display:flex}.grid{display:grid}.inline-block{display:inline-block}.table{display:table}.h-0{height:calc(var(--spacing) * 0)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-\[3px\]{height:3px}.h-\[27px\]{height:27px}.h-full{height:100%}.h-px{height:1px}.min-h-dvh{min-height:100dvh}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-8{width:calc(var(--spacing) * 8)}.w-\[27px\]{width:27px}.w-\[240px\]{width:240px}.w-full{width:100%}.min-w-0{min-width:calc(var(--spacing) * 0)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.list-none{list-style-type:none}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-nowrap{flex-wrap:nowrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing) * 1)}.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)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-y-scroll{overflow-y:scroll}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-l-xl{border-top-left-radius:var(--radius-xl);border-bottom-left-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-slate-900{border-color:var(--color-slate-900)}.border-white\/15{border-color:#ffffff26}@supports (color:color-mix(in lab, red, red)){.border-white\/15{border-color:color-mix(in oklab, var(--color-white) 15%, transparent)}}.border-white\/20{border-color:#fff3}@supports (color:color-mix(in lab, red, red)){.border-white\/20{border-color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.border-white\/40{border-color:#fff6}@supports (color:color-mix(in lab, red, red)){.border-white\/40{border-color:color-mix(in oklab, var(--color-white) 40%, transparent)}}.bg-amber-500{background-color:var(--color-amber-500)}.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-emerald-400{background-color:var(--color-emerald-400)}.bg-red-500\/90{background-color:#fb2c36e6}@supports (color:color-mix(in lab, red, red)){.bg-red-500\/90{background-color:color-mix(in oklab, var(--color-red-500) 90%, transparent)}}.bg-white\/10{background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.bg-white\/10{background-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.object-cover{object-fit:cover}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.pt-1\.5{padding-top:calc(var(--spacing) * 1.5)}.align-middle{vertical-align:middle}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.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)}.whitespace-nowrap{white-space:nowrap}.text-sky-600{color:var(--color-sky-600)}.text-white{color:var(--color-white)}.text-white\/75{color:#ffffffbf}@supports (color:color-mix(in lab, red, red)){.text-white\/75{color:color-mix(in oklab, var(--color-white) 75%, 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)}}.opacity-0{opacity:0}.opacity-80{opacity:.8}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xs{--tw-shadow:0 1px 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)}.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-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)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-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-xs{--tw-backdrop-blur:blur(var(--blur-xs));-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-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-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-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}@media (hover:hover){.group-hover\:scale-110:is(:where(.group):hover *){--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}}.before\:mr-2:before{content:var(--tw-content);margin-right:calc(var(--spacing) * 2)}.before\:inline-block:before{content:var(--tw-content);display:inline-block}.before\:h-2:before{content:var(--tw-content);height:calc(var(--spacing) * 2)}.before\:w-2:before{content:var(--tw-content);width:calc(var(--spacing) * 2)}.before\:shrink-0:before{content:var(--tw-content);flex-shrink:0}.before\:rounded-full:before{content:var(--tw-content);border-radius:3.40282e38px}.before\:content-\[\'\'\]:before{--tw-content:"";content:var(--tw-content)}.after\:mt-2:after{content:var(--tw-content);margin-top:calc(var(--spacing) * 2)}.after\:-ml-0\.5:after{content:var(--tw-content);margin-left:calc(var(--spacing) * -.5)}.after\:ml-0\.5:after{content:var(--tw-content);margin-left:calc(var(--spacing) * .5)}.after\:block:after{content:var(--tw-content);display:block}.after\:content-\[\'close\'\]:after{--tw-content:"close";content:var(--tw-content)}.after\:content-\[\'menu\'\]:after{--tw-content:"menu";content:var(--tw-content)}@media (hover:hover){.hover\:border-white\/30:hover{border-color:#ffffff4d}@supports (color:color-mix(in lab, red, red)){.hover\:border-white\/30:hover{border-color:color-mix(in oklab, var(--color-white) 30%, transparent)}}.hover\:bg-amber-600:hover{background-color:var(--color-amber-600)}.hover\:bg-red-600:hover{background-color:var(--color-red-600)}.hover\:bg-white\/15:hover{background-color:#ffffff26}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/15:hover{background-color:color-mix(in oklab, var(--color-white) 15%, transparent)}}.hover\:bg-white\/20:hover{background-color:#fff3}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/20:hover{background-color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.hover\:bg-white\/25:hover{background-color:#ffffff40}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/25:hover{background-color:color-mix(in oklab, var(--color-white) 25%, transparent)}}.hover\:underline:hover{text-decoration-line:underline}}.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-amber-300\/60:focus-visible{--tw-ring-color:#ffd23699}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-amber-300\/60:focus-visible{--tw-ring-color:color-mix(in oklab, var(--color-amber-300) 60%, transparent)}}.focus-visible\:ring-red-300\/60:focus-visible{--tw-ring-color:#ffa3a399}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-red-300\/60:focus-visible{--tw-ring-color:color-mix(in oklab, var(--color-red-300) 60%, transparent)}}.focus-visible\:ring-white\/40:focus-visible{--tw-ring-color:#fff6}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-white\/40:focus-visible{--tw-ring-color:color-mix(in oklab, var(--color-white) 40%, transparent)}}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}@media (min-width:40rem){.sm\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.dark\:border-slate-500:where(.dark,.dark *){border-color:var(--color-slate-500)}.dark\:border-slate-600\/50:where(.dark,.dark *){border-color:#45556c80}@supports (color:color-mix(in lab, red, red)){.dark\:border-slate-600\/50:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-slate-600) 50%, transparent)}}.dark\:border-slate-600\/60:where(.dark,.dark *){border-color:#45556c99}@supports (color:color-mix(in lab, red, red)){.dark\:border-slate-600\/60:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-slate-600) 60%, transparent)}}.dark\:border-slate-700\/50:where(.dark,.dark *){border-color:#31415880}@supports (color:color-mix(in lab, red, red)){.dark\:border-slate-700\/50:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-slate-700) 50%, transparent)}}.dark\:border-slate-700\/60:where(.dark,.dark *){border-color:#31415899}@supports (color:color-mix(in lab, red, red)){.dark\:border-slate-700\/60:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-slate-700) 60%, transparent)}}.dark\:bg-amber-600:where(.dark,.dark *){background-color:var(--color-amber-600)}.dark\:bg-red-600\/90:where(.dark,.dark *){background-color:#e40014e6}@supports (color:color-mix(in lab, red, red)){.dark\:bg-red-600\/90:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-red-600) 90%, transparent)}}.dark\:bg-slate-700\/50:where(.dark,.dark *){background-color:#31415880}@supports (color:color-mix(in lab, red, red)){.dark\:bg-slate-700\/50:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-slate-700) 50%, transparent)}}.dark\:bg-slate-700\/60:where(.dark,.dark *){background-color:#31415899}@supports (color:color-mix(in lab, red, red)){.dark\:bg-slate-700\/60:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-slate-700) 60%, transparent)}}.dark\:bg-slate-800\/60:where(.dark,.dark *){background-color:#1d293d99}@supports (color:color-mix(in lab, red, red)){.dark\:bg-slate-800\/60:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-slate-800) 60%, transparent)}}.dark\:text-sky-400:where(.dark,.dark *){color:var(--color-sky-400)}.dark\:text-slate-100:where(.dark,.dark *){color:var(--color-slate-100)}.dark\:text-slate-200:where(.dark,.dark *){color:var(--color-slate-200)}.dark\:text-slate-400:where(.dark,.dark *){color:var(--color-slate-400)}@media (hover:hover){.dark\:hover\:border-slate-600\/80:where(.dark,.dark *):hover{border-color:#45556ccc}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:border-slate-600\/80:where(.dark,.dark *):hover{border-color:color-mix(in oklab, var(--color-slate-600) 80%, transparent)}}.dark\:hover\:bg-amber-500:where(.dark,.dark *):hover{background-color:var(--color-amber-500)}.dark\:hover\:bg-red-500:where(.dark,.dark *):hover{background-color:var(--color-red-500)}.dark\:hover\:bg-slate-600:where(.dark,.dark *):hover{background-color:var(--color-slate-600)}.dark\:hover\:bg-slate-600\/80:where(.dark,.dark *):hover{background-color:#45556ccc}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-slate-600\/80:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-slate-600) 80%, transparent)}}.dark\:hover\:bg-slate-800\/90:where(.dark,.dark *):hover{background-color:#1d293de6}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-slate-800\/90:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-slate-800) 90%, transparent)}}}}@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-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-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-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}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-content{syntax:"*";inherits:false;initial-value:""}
|
package/dist/types/user.d.ts
CHANGED
package/dist/types.d.ts
CHANGED
|
@@ -1,21 +1,7 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module types
|
|
3
|
-
* @description Common type definitions for @aiquants/menu-bar.
|
|
4
|
-
* @description @aiquants/menu-bar の共通型定義。
|
|
5
|
-
*/
|
|
6
1
|
export type Theme = "light" | "dark";
|
|
7
|
-
/**
|
|
8
|
-
* Menu pin change event payload detail interface.
|
|
9
|
-
* メニューピン留め状態変更イベントの詳細ペイロード。
|
|
10
|
-
*/
|
|
11
2
|
export interface MenuPinChangeDetail {
|
|
12
|
-
/** Whether the menu is currently pinned open. メニューが現在ピン留めされているかどうか。 */
|
|
13
3
|
pinned: boolean;
|
|
14
|
-
/** Pinned width in pixels (e.g. 240 or 0). ピン留め時の幅 (ピクセル単位)。 */
|
|
15
4
|
width: number;
|
|
5
|
+
active?: boolean;
|
|
16
6
|
}
|
|
17
|
-
/**
|
|
18
|
-
* Custom Event type for menu pin change events.
|
|
19
|
-
* メニューピン留め状態変更カスタムイベントの型。
|
|
20
|
-
*/
|
|
21
7
|
export type MenuPinCustomEvent = CustomEvent<MenuPinChangeDetail>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aiquants/menu-bar",
|
|
3
|
-
"version": "1.18.
|
|
3
|
+
"version": "1.18.3",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "A React menu bar component with authentication support and theming",
|
|
6
6
|
"keywords": [
|
|
@@ -32,7 +32,6 @@
|
|
|
32
32
|
},
|
|
33
33
|
"files": [
|
|
34
34
|
"dist",
|
|
35
|
-
"src",
|
|
36
35
|
"README.md",
|
|
37
36
|
"LICENSE"
|
|
38
37
|
],
|
|
@@ -70,7 +69,7 @@
|
|
|
70
69
|
"access": "public"
|
|
71
70
|
},
|
|
72
71
|
"scripts": {
|
|
73
|
-
"build": "vite build && pnpm build:css",
|
|
72
|
+
"build": "vite build && pnpm build:css && node ../../.config/scripts/strip-dts-comments.mjs dist",
|
|
74
73
|
"build:css": "tailwindcss -i src/styles/components.entry.css -o dist/styles/menu-bar.css --minify && tailwindcss -i src/styles/standalone.entry.css -o dist/styles/menu-bar.standalone.css --minify",
|
|
75
74
|
"dev": "vite build --watch",
|
|
76
75
|
"watch": "vite build --watch",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/src/MenuBar.tsx
DELETED
|
@@ -1,248 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module MenuBar
|
|
3
|
-
* @description Main menu bar component for @aiquants/menu-bar.
|
|
4
|
-
* @description @aiquants/menu-bar のメインメニューバーコンポーネント。
|
|
5
|
-
*/
|
|
6
|
-
import { useCallback, useEffect, useLayoutEffect, useRef, useState } from "react"
|
|
7
|
-
|
|
8
|
-
const useSafeLayoutEffect = typeof window !== "undefined" ? useLayoutEffect : useEffect
|
|
9
|
-
|
|
10
|
-
import { MenuContent } from "./contents/MenuContent"
|
|
11
|
-
import type { IMenu, MenuNavigationPayload } from "./contents/MenuList"
|
|
12
|
-
import { OverlayShadow } from "./contents/OverlayShadow"
|
|
13
|
-
import { MenuSwitch } from "./elements/MenuSwitch"
|
|
14
|
-
import { dispatchMenuPinChange } from "./events/pinEvent"
|
|
15
|
-
import type { Theme } from "./types"
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Props interface for the MenuBar component.
|
|
19
|
-
* MenuBar コンポーネントのプロップスインターフェース。
|
|
20
|
-
*/
|
|
21
|
-
export interface IMenuBarProps {
|
|
22
|
-
/** List of menu items. メニュー項目のリスト。 */
|
|
23
|
-
menuList: IMenu[]
|
|
24
|
-
/** Optional header content rendered at top of menu drawer. メニューヘッダー要素。 */
|
|
25
|
-
menuHeader?: React.ReactNode
|
|
26
|
-
/** Callback handler for sign out button click. サインアウト処理ハンドラー。 */
|
|
27
|
-
onClickSignout(): void
|
|
28
|
-
/** Whether to hide the menu bar (legacy camelCase). メニュー非表示フラグ(旧表記)。 */
|
|
29
|
-
isMenuhide?: boolean
|
|
30
|
-
/** Whether to hide the menu bar. メニュー非表示フラグ。 */
|
|
31
|
-
isMenuHide?: boolean
|
|
32
|
-
/** Current active color theme. 現在のテーマ。 */
|
|
33
|
-
theme: Theme
|
|
34
|
-
/** Toggle handler for switching color theme. テーマ切り替えハンドラー。 */
|
|
35
|
-
toggleTheme: () => void
|
|
36
|
-
/** Navigation callback when a menu item is selected. メニュー遷移ハンドラー。 */
|
|
37
|
-
onMenuNavigate?(payload: MenuNavigationPayload): void
|
|
38
|
-
/** Controlled pinning state (optional). ピン留め状態制御プロップ。 */
|
|
39
|
-
isPinned?: boolean
|
|
40
|
-
/** Custom width in pixels when menu is pinned (default: 240). ピン留め時の幅(px)。 */
|
|
41
|
-
pinnedWidth?: number
|
|
42
|
-
/** Callback invoked when menu pin state changes. ピン留め状態変更時のコールバック。 */
|
|
43
|
-
onPinChange?(pinned: boolean, widthPx: number): void
|
|
44
|
-
/** Controlled list of pinned submenu IDs. ピン留めサブメニューIDリスト(制御)。 */
|
|
45
|
-
pinnedSubmenuIds?: number[]
|
|
46
|
-
/** Initial list of pinned submenu IDs for uncontrolled mode. ピン留めサブメニューID初期リスト。 */
|
|
47
|
-
initialPinnedSubmenuIds?: number[]
|
|
48
|
-
/** Callback invoked when submenu pin state changes. サブメニューピン留め変更時コールバック。 */
|
|
49
|
-
onSubmenuPinChange?(pinnedIds: number[]): void
|
|
50
|
-
/** Controls whether the Escape key closes the menu drawer. Escape キーによるメニュー閉鎖制御。 */
|
|
51
|
-
closeOnEscape?: boolean | "auto"
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* Renders the primary collapsible and pinnable menu bar with drawer navigation.
|
|
56
|
-
* 折りたたみ・ピン留め対応のプライマリメニューバーコンポーネント。
|
|
57
|
-
*
|
|
58
|
-
* @param props - MenuBarProps configuration.
|
|
59
|
-
* @returns Rendered JSX element or null.
|
|
60
|
-
*/
|
|
61
|
-
export const MenuBar = (props: IMenuBarProps): React.JSX.Element | null => {
|
|
62
|
-
const {
|
|
63
|
-
menuList,
|
|
64
|
-
menuHeader,
|
|
65
|
-
onClickSignout,
|
|
66
|
-
isMenuhide,
|
|
67
|
-
isMenuHide,
|
|
68
|
-
theme,
|
|
69
|
-
toggleTheme,
|
|
70
|
-
onMenuNavigate,
|
|
71
|
-
isPinned: propIsPinned,
|
|
72
|
-
pinnedWidth = 240,
|
|
73
|
-
onPinChange,
|
|
74
|
-
pinnedSubmenuIds: propPinnedSubmenuIds,
|
|
75
|
-
initialPinnedSubmenuIds,
|
|
76
|
-
onSubmenuPinChange,
|
|
77
|
-
closeOnEscape = "auto",
|
|
78
|
-
} = props
|
|
79
|
-
|
|
80
|
-
const shouldHideMenu = isMenuHide ?? isMenuhide ?? false
|
|
81
|
-
|
|
82
|
-
const [internalIsPinned, setInternalIsPinned] = useState(() => {
|
|
83
|
-
try {
|
|
84
|
-
return localStorage.getItem("aiquants-menu-pinned") === "true"
|
|
85
|
-
} catch {
|
|
86
|
-
return false
|
|
87
|
-
}
|
|
88
|
-
})
|
|
89
|
-
|
|
90
|
-
const isPinned = propIsPinned !== undefined ? propIsPinned : internalIsPinned
|
|
91
|
-
const [isMenuOpen, setIsMenuOpen] = useState(isPinned)
|
|
92
|
-
|
|
93
|
-
// isPinned が true に変化した場合は自動的にメニューを開いた状態にする
|
|
94
|
-
useEffect(() => {
|
|
95
|
-
if (isPinned) {
|
|
96
|
-
setIsMenuOpen(true)
|
|
97
|
-
}
|
|
98
|
-
}, [isPinned])
|
|
99
|
-
|
|
100
|
-
const [pinnedSubmenuIds, setPinnedSubmenuIds] = useState<number[]>(() => {
|
|
101
|
-
if (initialPinnedSubmenuIds) {
|
|
102
|
-
return initialPinnedSubmenuIds
|
|
103
|
-
}
|
|
104
|
-
try {
|
|
105
|
-
const saved = localStorage.getItem("aiquants-submenu-pinned")
|
|
106
|
-
if (saved) {
|
|
107
|
-
const parsed = JSON.parse(saved)
|
|
108
|
-
if (Array.isArray(parsed)) {
|
|
109
|
-
return parsed.filter((id) => typeof id === "number")
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
} catch {}
|
|
113
|
-
return []
|
|
114
|
-
})
|
|
115
|
-
|
|
116
|
-
const activePinnedSubmenuIds = propPinnedSubmenuIds !== undefined ? propPinnedSubmenuIds : pinnedSubmenuIds
|
|
117
|
-
|
|
118
|
-
const handleToggleSubmenuPin = useCallback(
|
|
119
|
-
(id: number) => {
|
|
120
|
-
const currentIds = propPinnedSubmenuIds !== undefined ? propPinnedSubmenuIds : pinnedSubmenuIds
|
|
121
|
-
const nextIds = currentIds.includes(id) ? currentIds.filter((x) => x !== id) : [...currentIds, id]
|
|
122
|
-
|
|
123
|
-
if (propPinnedSubmenuIds === undefined) {
|
|
124
|
-
setPinnedSubmenuIds(nextIds)
|
|
125
|
-
try {
|
|
126
|
-
localStorage.setItem("aiquants-submenu-pinned", JSON.stringify(nextIds))
|
|
127
|
-
} catch {}
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
if (onSubmenuPinChange) {
|
|
131
|
-
onSubmenuPinChange(nextIds)
|
|
132
|
-
}
|
|
133
|
-
},
|
|
134
|
-
[propPinnedSubmenuIds, pinnedSubmenuIds, onSubmenuPinChange],
|
|
135
|
-
)
|
|
136
|
-
|
|
137
|
-
// コールバック関数参照を useRef で最新保持し、エフェクト再実行のインライン関数連鎖を遮断
|
|
138
|
-
const onPinChangeRef = useRef(onPinChange)
|
|
139
|
-
useSafeLayoutEffect(() => {
|
|
140
|
-
onPinChangeRef.current = onPinChange
|
|
141
|
-
}, [onPinChange])
|
|
142
|
-
|
|
143
|
-
// ピン状態変化時に CSS 変数をセットし、CustomEvent を自動発行
|
|
144
|
-
useSafeLayoutEffect(() => {
|
|
145
|
-
const effectiveWidth = isPinned ? pinnedWidth : 0
|
|
146
|
-
const widthCss = `${effectiveWidth}px`
|
|
147
|
-
document.documentElement.style.setProperty("--aiquants-menu-pinned-width", widthCss)
|
|
148
|
-
|
|
149
|
-
// CustomEvent 発行
|
|
150
|
-
dispatchMenuPinChange(isPinned, effectiveWidth)
|
|
151
|
-
}, [isPinned, pinnedWidth])
|
|
152
|
-
|
|
153
|
-
// アンマウント時に CSS 変数をリセットしピン解除通知を発行
|
|
154
|
-
useSafeLayoutEffect(() => {
|
|
155
|
-
return () => {
|
|
156
|
-
document.documentElement.style.setProperty("--aiquants-menu-pinned-width", "0px")
|
|
157
|
-
dispatchMenuPinChange(false, 0)
|
|
158
|
-
}
|
|
159
|
-
}, [])
|
|
160
|
-
|
|
161
|
-
const handleMenuOpen = useCallback(() => {
|
|
162
|
-
setIsMenuOpen(true)
|
|
163
|
-
}, [])
|
|
164
|
-
|
|
165
|
-
const handleMenuClose = useCallback(() => {
|
|
166
|
-
setIsMenuOpen(false)
|
|
167
|
-
if (propIsPinned === undefined) {
|
|
168
|
-
setInternalIsPinned(false)
|
|
169
|
-
try {
|
|
170
|
-
localStorage.removeItem("aiquants-menu-pinned")
|
|
171
|
-
} catch {}
|
|
172
|
-
}
|
|
173
|
-
onPinChangeRef.current?.(false, 0)
|
|
174
|
-
}, [propIsPinned])
|
|
175
|
-
|
|
176
|
-
const handleTogglePin = useCallback(() => {
|
|
177
|
-
const nextPinned = !isPinned
|
|
178
|
-
const nextWidth = nextPinned ? pinnedWidth : 0
|
|
179
|
-
|
|
180
|
-
if (propIsPinned === undefined) {
|
|
181
|
-
setInternalIsPinned(nextPinned)
|
|
182
|
-
try {
|
|
183
|
-
if (nextPinned) {
|
|
184
|
-
localStorage.setItem("aiquants-menu-pinned", "true")
|
|
185
|
-
} else {
|
|
186
|
-
localStorage.removeItem("aiquants-menu-pinned")
|
|
187
|
-
}
|
|
188
|
-
} catch {}
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
onPinChangeRef.current?.(nextPinned, nextWidth)
|
|
192
|
-
}, [isPinned, propIsPinned, pinnedWidth])
|
|
193
|
-
|
|
194
|
-
const handleMenuSelected = useCallback(
|
|
195
|
-
(payload: MenuNavigationPayload) => {
|
|
196
|
-
if (onMenuNavigate) {
|
|
197
|
-
onMenuNavigate(payload)
|
|
198
|
-
}
|
|
199
|
-
if (!isPinned) {
|
|
200
|
-
setIsMenuOpen(false)
|
|
201
|
-
}
|
|
202
|
-
},
|
|
203
|
-
[onMenuNavigate, isPinned],
|
|
204
|
-
)
|
|
205
|
-
|
|
206
|
-
const handleEscKey = useCallback(
|
|
207
|
-
(e: KeyboardEvent) => {
|
|
208
|
-
if (e.key === "Escape") {
|
|
209
|
-
handleMenuClose()
|
|
210
|
-
}
|
|
211
|
-
},
|
|
212
|
-
[handleMenuClose],
|
|
213
|
-
)
|
|
214
|
-
|
|
215
|
-
const escapeCloses = closeOnEscape === true || (closeOnEscape === "auto" && !isPinned)
|
|
216
|
-
|
|
217
|
-
useEffect(() => {
|
|
218
|
-
if (isMenuOpen && escapeCloses) {
|
|
219
|
-
window.addEventListener("keydown", handleEscKey)
|
|
220
|
-
} else {
|
|
221
|
-
window.removeEventListener("keydown", handleEscKey)
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
return () => {
|
|
225
|
-
window.removeEventListener("keydown", handleEscKey)
|
|
226
|
-
}
|
|
227
|
-
}, [isMenuOpen, escapeCloses, handleEscKey])
|
|
228
|
-
|
|
229
|
-
return shouldHideMenu ? null : (
|
|
230
|
-
<div className={`aiquants-menu-bar ${theme}`}>
|
|
231
|
-
<MenuSwitch onMenuClose={handleMenuClose} onMenuOpen={handleMenuOpen} open={!isMenuOpen} theme={theme} />
|
|
232
|
-
<MenuContent
|
|
233
|
-
menuList={menuList}
|
|
234
|
-
menuHeader={menuHeader}
|
|
235
|
-
onClickSignout={onClickSignout}
|
|
236
|
-
onMenuSelected={handleMenuSelected}
|
|
237
|
-
open={isMenuOpen}
|
|
238
|
-
theme={theme}
|
|
239
|
-
toggleTheme={toggleTheme}
|
|
240
|
-
isPinned={isPinned}
|
|
241
|
-
onTogglePin={handleTogglePin}
|
|
242
|
-
pinnedSubmenuIds={activePinnedSubmenuIds}
|
|
243
|
-
onToggleSubmenuPin={handleToggleSubmenuPin}
|
|
244
|
-
/>
|
|
245
|
-
<OverlayShadow isOverlay={isMenuOpen && !isPinned} onOverlayClick={handleMenuClose} />
|
|
246
|
-
</div>
|
|
247
|
-
)
|
|
248
|
-
}
|