@aiquants/menu-bar 0.3.0 → 0.6.0

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/README.md CHANGED
@@ -31,7 +31,7 @@ export { SessionInfo, DefaultLink } from '@aiquants/menu-bar';
31
31
  export type { IMenu, ISubmenu } from '@aiquants/menu-bar';
32
32
  export type { Theme } from '@aiquants/menu-bar';
33
33
  export type { SessionInfoProps, LinkProps } from '@aiquants/menu-bar';
34
- export type { GoogleUserProfile, UserPhoto } from '@aiquants/menu-bar';
34
+ export type { UserProfile, UserPhoto } from '@aiquants/menu-bar';
35
35
 
36
36
  // CSS (import separately)
37
37
  import '@aiquants/menu-bar/css';
@@ -123,10 +123,10 @@ interface ISubmenu {
123
123
  }
124
124
  ```
125
125
 
126
- ### GoogleUserProfile Type
126
+ ### UserProfile Type
127
127
 
128
128
  ```tsx
129
- interface GoogleUserProfile {
129
+ interface UserProfile {
130
130
  displayName: string;
131
131
  photos: UserPhoto[];
132
132
  id?: string;
@@ -141,7 +141,7 @@ interface UserPhoto {
141
141
 
142
142
  ```tsx
143
143
  interface SessionInfoProps {
144
- user: GoogleUserProfile | null;
144
+ user: UserProfile | null;
145
145
  onLogout?: () => void;
146
146
  LinkComponent: React.ComponentType<LinkProps>;
147
147
  }
@@ -1,4 +1,4 @@
1
- import { GoogleUserProfile } from '../types/user';
1
+ import { UserProfile } from '../types/user';
2
2
 
3
3
  /**
4
4
  * Link component props interface.
@@ -23,7 +23,7 @@ export declare const DefaultLink: ({ to, className, children }: LinkProps) => Re
23
23
  */
24
24
  export interface SessionInfoProps {
25
25
  /** User profile information from Google OAuth */
26
- user: GoogleUserProfile | null;
26
+ user: UserProfile | null;
27
27
  /** Custom Link component (optional, defaults to DefaultLink) */
28
28
  LinkComponent?: React.ComponentType<LinkProps>;
29
29
  }
@@ -1,5 +1,5 @@
1
- import { IMenu } from './MenuList';
2
1
  import { Theme } from '../types';
2
+ import { IMenu } from './MenuList';
3
3
 
4
4
  /**
5
5
  * @interface IMenuContentProps
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- export { MenuBar } from './MenuBar';
1
+ export type { LinkProps, SessionInfoProps } from './components/SessionInfo';
2
+ export { DefaultLink, SessionInfo } from './components/SessionInfo';
2
3
  export type { IMenu, ISubmenu } from './contents/MenuList';
4
+ export { MenuBar } from './MenuBar';
3
5
  export type { Theme } from './types';
4
- export { SessionInfo, DefaultLink } from './components/SessionInfo';
5
- export type { SessionInfoProps, LinkProps } from './components/SessionInfo';
6
- export type { GoogleUserProfile, UserPhoto } from './types/user';
6
+ export type { UserProfile } from './types/user';
package/dist/index.es.js CHANGED
@@ -1,4 +1,4 @@
1
- import ie, { useRef as N, useCallback as g, useEffect as V, useState as X, useMemo as ce } from "react";
1
+ import ie, { useState as V, useCallback as g, useMemo as ce, useRef as N, useEffect as X } from "react";
2
2
  import { Link as B } from "react-router-dom";
3
3
  import { Link as ue, Lock as de, Download as fe, BarChart as me, Table as xe, FileText as z } from "lucide-react";
4
4
  var O = { exports: {} }, _ = {};
@@ -281,30 +281,19 @@ function be() {
281
281
  return G || (G = 1, process.env.NODE_ENV === "production" ? O.exports = he() : O.exports = pe()), O.exports;
282
282
  }
283
283
  var r = be();
284
- const ve = (o) => {
285
- const { open: a, onMenuOpen: s, onMenuClose: f, theme: m } = o, l = N(a), i = N(null), t = N(null), c = N(null), p = N(null), d = N(null), k = g(() => {
286
- if (i.current && t.current && c.current && p.current && d.current) {
287
- const w = m === "dark" ? "#fff" : "#000";
288
- i.current.style.backgroundColor = w, i.current.style.width = "100%", i.current.style.height = "3px", i.current.style.transform = "", t.current.style.opacity = "1", t.current.style.backgroundColor = w, c.current.style.opacity = "1", c.current.style.backgroundColor = w, p.current.style.backgroundColor = w, p.current.style.width = "100%", p.current.style.height = "3px", p.current.style.transform = "", d.current.style.color = w, d.current.classList.remove("after:content-['close']"), d.current.classList.remove("after:ml-0.5"), d.current.classList.add("after:content-['menu']"), d.current.classList.add("after:-ml-0.5"), l.current = !0;
289
- }
290
- }, [m]), b = g(() => {
291
- i.current && t.current && c.current && p.current && d.current && (i.current.style.backgroundColor = "#fff", i.current.style.width = "32px", i.current.style.height = "4px", i.current.style.transform = "translateY(9px) rotate(-45deg)", t.current.style.opacity = "0", c.current.style.opacity = "0", p.current.style.backgroundColor = "#fff", p.current.style.width = "32px", p.current.style.height = "4px", p.current.style.transform = "translateY(-9px) rotate(45deg)", d.current.style.color = "#fff", d.current.classList.remove("after:content-['menu']"), d.current.classList.remove("after:-ml-0.5"), d.current.classList.add("after:content-['close']"), d.current.classList.add("after:ml-0.5"), l.current = !1);
292
- }, []), j = g(() => {
293
- k(), f && f();
294
- }, [k, f]), S = g(() => {
295
- b(), s && s();
296
- }, [b, s]), R = g(() => {
297
- l.current ? S() : j();
298
- }, [j, S]);
299
- return V(() => {
300
- a ? k() : b();
301
- }, [a, k, b]), /* @__PURE__ */ r.jsxs("button", { type: "button", className: "fixed top-5 right-5 z-2147483648 inline-block h-[27px] w-[27px] cursor-pointer align-middle outline-hidden", onClick: R, children: [
302
- /* @__PURE__ */ r.jsx("span", { className: "absolute top-0 left-0 box-border inline-block h-[3px] w-full select-none transition-all duration-500", ref: i }),
303
- /* @__PURE__ */ r.jsx("span", { className: "absolute top-[6px] left-0 box-border inline-block h-[3px] w-full select-none transition-all duration-500", ref: t }),
304
- /* @__PURE__ */ r.jsx("span", { className: "absolute top-[12px] left-0 box-border inline-block h-[3px] w-full select-none transition-all duration-500", ref: c }),
305
- /* @__PURE__ */ r.jsx("span", { className: "absolute top-[18px] left-0 box-border inline-block h-[3px] w-full select-none transition-all duration-500", ref: p }),
306
- /* @__PURE__ */ r.jsx("div", { className: "absolute w-full text-xs transition-all duration-500 after:mt-2 after:block", ref: d })
307
- ] });
284
+ const ve = ({ to: o, className: a, children: s }) => /* @__PURE__ */ r.jsx("a", { href: o, className: a, children: s }), Se = (o) => {
285
+ const { user: a, LinkComponent: s = ve } = o;
286
+ return /* @__PURE__ */ r.jsx("div", { className: "max-h-20 max-w-52", children: /* @__PURE__ */ r.jsx("div", { className: "flex grow flex-col", children: a ? /* @__PURE__ */ r.jsxs(r.Fragment, { children: [
287
+ /* @__PURE__ */ r.jsxs("div", { className: "flex flex-row", children: [
288
+ /* @__PURE__ */ r.jsx("div", { className: "aiquants-session-photo m-1 h-14 w-14 p-0.5", children: /* @__PURE__ */ r.jsx("img", { className: "object-contain", src: a.photo, "aria-label": "profile photo" }) }),
289
+ /* @__PURE__ */ r.jsxs("div", { className: "mx-1 flex flex-col", children: [
290
+ /* @__PURE__ */ r.jsx(s, { className: "aiquants-session-link my-1 rounded-lg px-2 text-center text-xs", to: "/", children: "プロフィールを編集" }),
291
+ /* @__PURE__ */ r.jsx(s, { className: "aiquants-session-link rounded-lg px-2 text-center text-xs", to: "/", children: "プロフィール" }),
292
+ /* @__PURE__ */ r.jsx(s, { className: "aiquants-session-link my-1 rounded-lg px-2 text-center text-xs", to: "https://myaccount.google.com/", children: "Google Account" })
293
+ ] })
294
+ ] }),
295
+ /* @__PURE__ */ r.jsx("div", { className: "aiquants-session-info mb-1 min-h-[1em] w-full rounded-r-lg px-2 py-0.5 text-xs", children: a.displayName })
296
+ ] }) : /* @__PURE__ */ r.jsx("div", { className: "aiquants-session-info mb-1 min-h-[1em] w-9/12 rounded-r-lg py-0.5 pl-1 text-xs", children: "ログインはこちら" }) }) });
308
297
  }, H = new RegExp(/(^https?:\/\/)|(\.(html|htm)?$)/), ge = {
309
298
  report: z,
310
299
  slip: z,
@@ -327,7 +316,7 @@ const ve = (o) => {
327
316
  };
328
317
  return o.new ? /* @__PURE__ */ r.jsx("a", { href: o.href, rel: "noopener noreferrer", target: "_blank", ...f, children: s }) : H.test(o.href) ? /* @__PURE__ */ r.jsx("a", { href: o.href, ...f, children: s }) : /* @__PURE__ */ r.jsx(B, { to: o.href, ...f, children: s });
329
318
  }, je = (o) => {
330
- const { menuList: a, onMenuSelected: s } = o, [f, m] = X(null), l = g((t) => {
319
+ const { menuList: a, onMenuSelected: s } = o, [f, m] = V(null), l = g((t) => {
331
320
  m((c) => c === t ? null : t);
332
321
  }, []), i = ce(() => /* @__PURE__ */ r.jsx(r.Fragment, { children: a.map((t) => /* @__PURE__ */ r.jsx("div", { children: t.href ? /* @__PURE__ */ r.jsx("div", { className: "aiquants-menu-list-item before:-mt-1 relative mb-1 ml-1 h-full rounded-l-2xl p-2 align-middle text-sm before:mr-2 before:inline-block before:h-4 before:w-4 before:rounded-full before:align-middle before:content-['']", children: H.test(t.href) ? /* @__PURE__ */ r.jsx("a", { href: t.href, onClick: s, children: /* @__PURE__ */ r.jsx("span", { className: "aiquants-menu-link hover:underline", children: t.title }) }) : /* @__PURE__ */ r.jsx(B, { to: t.href, onClick: s, children: /* @__PURE__ */ r.jsx("span", { className: "aiquants-menu-link hover:underline", children: t.title }) }) }) : /* @__PURE__ */ r.jsxs("details", { className: "menu-accordion-details", open: t.id === f, children: [
333
322
  /* @__PURE__ */ r.jsx(
@@ -356,9 +345,9 @@ const ve = (o) => {
356
345
  {
357
346
  type: "button",
358
347
  onClick: t,
359
- className: "group relative flex w-full items-center justify-center gap-3 rounded-xl border-2 border-white/20 bg-white/10 backdrop-blur-sm px-4 py-3 text-sm font-medium shadow-lg transition-all duration-300 hover:border-white/30 hover:bg-white/20 hover:shadow-xl hover:scale-[1.02] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/50 focus-visible:ring-offset-2 dark:border-gray-600/50 dark:bg-gray-800/80 dark:hover:border-gray-500/70 dark:hover:bg-gray-700/90",
348
+ className: "group relative flex w-full items-center justify-center gap-3 rounded-xl border-2 border-white/20 bg-white/10 px-4 py-3 font-medium text-sm shadow-lg backdrop-blur-sm transition-all duration-300 hover:scale-[1.02] hover:border-white/30 hover:bg-white/20 hover:shadow-xl focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/50 focus-visible:ring-offset-2 dark:border-gray-600/50 dark:bg-gray-800/80 dark:hover:border-gray-500/70 dark:hover:bg-gray-700/90",
360
349
  children: [
361
- /* @__PURE__ */ r.jsx("div", { className: "flex h-6 w-6 items-center justify-center rounded-full bg-white/20 backdrop-blur-sm transition-all duration-300 group-hover:bg-white/30 group-hover:scale-110 dark:bg-gray-600/50 dark:group-hover:bg-gray-500/70", children: /* @__PURE__ */ r.jsx("span", { className: "text-lg transition-transform duration-300 group-hover:scale-110", children: i === "dark" ? "🌞" : "🌙" }) }),
350
+ /* @__PURE__ */ r.jsx("div", { className: "flex h-6 w-6 items-center justify-center rounded-full bg-white/20 backdrop-blur-sm transition-all duration-300 group-hover:scale-110 group-hover:bg-white/30 dark:bg-gray-600/50 dark:group-hover:bg-gray-500/70", children: /* @__PURE__ */ r.jsx("span", { className: "text-lg transition-transform duration-300 group-hover:scale-110", children: i === "dark" ? "🌞" : "🌙" }) }),
362
351
  /* @__PURE__ */ r.jsx("span", { className: "text-white transition-colors duration-300 group-hover:text-white/90 dark:text-gray-200 dark:group-hover:text-white", children: i === "dark" ? "Light Mode" : "Dark Mode" }),
363
352
  /* @__PURE__ */ r.jsx("div", { className: "absolute inset-0 rounded-xl bg-gradient-to-r from-transparent via-white/5 to-transparent opacity-0 transition-opacity duration-300 group-hover:opacity-100 dark:via-gray-400/10" })
364
353
  ]
@@ -377,8 +366,32 @@ const ve = (o) => {
377
366
  }, Ee = (o) => {
378
367
  const { isOverlay: a, onOverlayClick: s } = o;
379
368
  return /* @__PURE__ */ r.jsx("button", { type: "button", className: `fixed inset-0 z-2147483640 cursor-default bg-black/50 transition-opacity duration-500 ${a ? "opacity-100" : "pointer-events-none opacity-0"}`, onClick: s });
380
- }, Se = (o) => {
381
- const { menuList: a, menuHeader: s, onClickSignout: f, isMenuhide: m, theme: l, toggleTheme: i } = o, [t, c] = X(!1), p = g(() => {
369
+ }, Ne = (o) => {
370
+ const { open: a, onMenuOpen: s, onMenuClose: f, theme: m } = o, l = N(a), i = N(null), t = N(null), c = N(null), p = N(null), d = N(null), k = g(() => {
371
+ if (i.current && t.current && c.current && p.current && d.current) {
372
+ const w = m === "dark" ? "#fff" : "#000";
373
+ i.current.style.backgroundColor = w, i.current.style.width = "100%", i.current.style.height = "3px", i.current.style.transform = "", t.current.style.opacity = "1", t.current.style.backgroundColor = w, c.current.style.opacity = "1", c.current.style.backgroundColor = w, p.current.style.backgroundColor = w, p.current.style.width = "100%", p.current.style.height = "3px", p.current.style.transform = "", d.current.style.color = w, d.current.classList.remove("after:content-['close']"), d.current.classList.remove("after:ml-0.5"), d.current.classList.add("after:content-['menu']"), d.current.classList.add("after:-ml-0.5"), l.current = !0;
374
+ }
375
+ }, [m]), b = g(() => {
376
+ i.current && t.current && c.current && p.current && d.current && (i.current.style.backgroundColor = "#fff", i.current.style.width = "32px", i.current.style.height = "4px", i.current.style.transform = "translateY(9px) rotate(-45deg)", t.current.style.opacity = "0", c.current.style.opacity = "0", p.current.style.backgroundColor = "#fff", p.current.style.width = "32px", p.current.style.height = "4px", p.current.style.transform = "translateY(-9px) rotate(45deg)", d.current.style.color = "#fff", d.current.classList.remove("after:content-['menu']"), d.current.classList.remove("after:-ml-0.5"), d.current.classList.add("after:content-['close']"), d.current.classList.add("after:ml-0.5"), l.current = !1);
377
+ }, []), j = g(() => {
378
+ k(), f && f();
379
+ }, [k, f]), S = g(() => {
380
+ b(), s && s();
381
+ }, [b, s]), R = g(() => {
382
+ l.current ? S() : j();
383
+ }, [j, S]);
384
+ return X(() => {
385
+ a ? k() : b();
386
+ }, [a, k, b]), /* @__PURE__ */ r.jsxs("button", { type: "button", className: "fixed top-5 right-5 z-2147483648 inline-block h-[27px] w-[27px] cursor-pointer align-middle outline-hidden", onClick: R, children: [
387
+ /* @__PURE__ */ r.jsx("span", { className: "absolute top-0 left-0 box-border inline-block h-[3px] w-full select-none transition-all duration-500", ref: i }),
388
+ /* @__PURE__ */ r.jsx("span", { className: "absolute top-[6px] left-0 box-border inline-block h-[3px] w-full select-none transition-all duration-500", ref: t }),
389
+ /* @__PURE__ */ r.jsx("span", { className: "absolute top-[12px] left-0 box-border inline-block h-[3px] w-full select-none transition-all duration-500", ref: c }),
390
+ /* @__PURE__ */ r.jsx("span", { className: "absolute top-[18px] left-0 box-border inline-block h-[3px] w-full select-none transition-all duration-500", ref: p }),
391
+ /* @__PURE__ */ r.jsx("div", { className: "absolute w-full text-xs transition-all duration-500 after:mt-2 after:block", ref: d })
392
+ ] });
393
+ }, Oe = (o) => {
394
+ const { menuList: a, menuHeader: s, onClickSignout: f, isMenuhide: m, theme: l, toggleTheme: i } = o, [t, c] = V(!1), p = g(() => {
382
395
  c(!0);
383
396
  }, []), d = g(() => {
384
397
  c(!1);
@@ -391,29 +404,16 @@ const ve = (o) => {
391
404
  },
392
405
  [d]
393
406
  );
394
- return V(() => (t ? window.addEventListener("keydown", b, { passive: !0 }) : window.removeEventListener("keydown", b), () => {
407
+ return X(() => (t ? window.addEventListener("keydown", b, { passive: !0 }) : window.removeEventListener("keydown", b), () => {
395
408
  window.removeEventListener("keydown", b);
396
409
  }), [t, b]), m ? /* @__PURE__ */ r.jsx(r.Fragment, {}) : /* @__PURE__ */ r.jsxs("div", { className: `aiquants-menu-bar ${l}`, children: [
397
- /* @__PURE__ */ r.jsx(ve, { onMenuClose: d, onMenuOpen: p, open: !t, theme: l }),
410
+ /* @__PURE__ */ r.jsx(Ne, { onMenuClose: d, onMenuOpen: p, open: !t, theme: l }),
398
411
  /* @__PURE__ */ r.jsx(we, { menuList: a, menuHeader: s, onClickSignout: f, onMenuSelected: k, open: t, theme: l, toggleTheme: i }),
399
412
  /* @__PURE__ */ r.jsx(Ee, { isOverlay: t, onOverlayClick: d })
400
413
  ] });
401
- }, Ne = ({ to: o, className: a, children: s }) => /* @__PURE__ */ r.jsx("a", { href: o, className: a, children: s }), Oe = (o) => {
402
- const { user: a, LinkComponent: s = Ne } = o;
403
- return /* @__PURE__ */ r.jsx("div", { className: "max-h-20 max-w-52", children: /* @__PURE__ */ r.jsx("div", { className: "flex grow flex-col", children: a ? /* @__PURE__ */ r.jsxs(r.Fragment, { children: [
404
- /* @__PURE__ */ r.jsxs("div", { className: "flex flex-row", children: [
405
- /* @__PURE__ */ r.jsx("div", { className: "aiquants-session-photo m-1 h-14 w-14 p-0.5", children: /* @__PURE__ */ r.jsx("img", { className: "object-contain", src: a.photos[0].value, "aria-label": "profile photo" }) }),
406
- /* @__PURE__ */ r.jsxs("div", { className: "mx-1 flex flex-col", children: [
407
- /* @__PURE__ */ r.jsx(s, { className: "aiquants-session-link my-1 rounded-lg px-2 text-center text-xs", to: "/", children: "プロフィールを編集" }),
408
- /* @__PURE__ */ r.jsx(s, { className: "aiquants-session-link rounded-lg px-2 text-center text-xs", to: "/", children: "プロフィール" }),
409
- /* @__PURE__ */ r.jsx(s, { className: "aiquants-session-link my-1 rounded-lg px-2 text-center text-xs", to: "https://myaccount.google.com/", children: "Google Account" })
410
- ] })
411
- ] }),
412
- /* @__PURE__ */ r.jsx("div", { className: "aiquants-session-info mb-1 min-h-[1em] w-full rounded-r-lg px-2 py-0.5 text-xs", children: a.displayName })
413
- ] }) : /* @__PURE__ */ r.jsx(r.Fragment, { children: /* @__PURE__ */ r.jsx("div", { className: "aiquants-session-info mb-1 min-h-[1em] w-9/12 rounded-r-lg py-0.5 pl-1 text-xs", children: "ログインはこちら" }) }) }) });
414
414
  };
415
415
  export {
416
- Ne as DefaultLink,
417
- Se as MenuBar,
418
- Oe as SessionInfo
416
+ ve as DefaultLink,
417
+ Oe as MenuBar,
418
+ Se as SessionInfo
419
419
  };
package/dist/index.umd.js CHANGED
@@ -19,4 +19,4 @@
19
19
  <%s {...props} />
20
20
  React keys must be passed directly to JSX without using spread:
21
21
  let props = %s;
22
- <%s key={someKey} {...props} />`,h,p,R,p),H[p+h]=!0)}if(p=null,d!==void 0&&(o(d),p=""+d),i(n)&&(o(n.key),p=""+n.key),"key"in n){d={};for(var I in n)I!=="key"&&(d[I]=n[I])}else d=n;return p&&t(d,typeof e=="function"?e.displayName||e.name||"Unknown":e),b(e,p,g,j,x(),d,M,L)}function y(e){typeof e=="object"&&e!==null&&e.$$typeof===E&&e._store&&(e._store.validated=1)}var v=l,E=Symbol.for("react.transitional.element"),O=Symbol.for("react.portal"),C=Symbol.for("react.fragment"),N=Symbol.for("react.strict_mode"),ce=Symbol.for("react.profiler"),ie=Symbol.for("react.consumer"),ue=Symbol.for("react.context"),de=Symbol.for("react.forward_ref"),fe=Symbol.for("react.suspense"),me=Symbol.for("react.suspense_list"),xe=Symbol.for("react.memo"),q=Symbol.for("react.lazy"),he=Symbol.for("react.activity"),pe=Symbol.for("react.client.reference"),A=v.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,J=Object.prototype.hasOwnProperty,be=Array.isArray,P=console.createTask?console.createTask:function(){return null};v={react_stack_bottom_frame:function(e){return e()}};var G,V={},B=v.react_stack_bottom_frame.bind(v,c)(),X=P(m(c)),H={};_.Fragment=C,_.jsx=function(e,n,d,h,j){var g=1e4>A.recentlyCreatedOwnerStacks++;return f(e,n,d,!1,h,j,g?Error("react-stack-top-frame"):B,g?P(m(e)):X)},_.jsxs=function(e,n,d,h,j){var g=1e4>A.recentlyCreatedOwnerStacks++;return f(e,n,d,!0,h,j,g?Error("react-stack-top-frame"):B,g?P(m(e)):X)}}()),_}var W;function K(){return W||(W=1,process.env.NODE_ENV==="production"?S.exports=Z():S.exports=Q()),S.exports}var r=K();const $=s=>{const{open:a,onMenuOpen:o,onMenuClose:m,theme:x}=s,c=l.useRef(a),i=l.useRef(null),t=l.useRef(null),u=l.useRef(null),b=l.useRef(null),f=l.useRef(null),y=l.useCallback(()=>{if(i.current&&t.current&&u.current&&b.current&&f.current){const N=x==="dark"?"#fff":"#000";i.current.style.backgroundColor=N,i.current.style.width="100%",i.current.style.height="3px",i.current.style.transform="",t.current.style.opacity="1",t.current.style.backgroundColor=N,u.current.style.opacity="1",u.current.style.backgroundColor=N,b.current.style.backgroundColor=N,b.current.style.width="100%",b.current.style.height="3px",b.current.style.transform="",f.current.style.color=N,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"),c.current=!0}},[x]),v=l.useCallback(()=>{i.current&&t.current&&u.current&&b.current&&f.current&&(i.current.style.backgroundColor="#fff",i.current.style.width="32px",i.current.style.height="4px",i.current.style.transform="translateY(9px) rotate(-45deg)",t.current.style.opacity="0",u.current.style.opacity="0",b.current.style.backgroundColor="#fff",b.current.style.width="32px",b.current.style.height="4px",b.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"),c.current=!1)},[]),E=l.useCallback(()=>{y(),m&&m()},[y,m]),O=l.useCallback(()=>{v(),o&&o()},[v,o]),C=l.useCallback(()=>{c.current?O():E()},[E,O]);return l.useEffect(()=>{a?y():v()},[a,y,v]),r.jsxs("button",{type:"button",className:"fixed top-5 right-5 z-2147483648 inline-block h-[27px] w-[27px] cursor-pointer align-middle outline-hidden",onClick:C,children:[r.jsx("span",{className:"absolute top-0 left-0 box-border inline-block h-[3px] w-full select-none transition-all duration-500",ref:i}),r.jsx("span",{className:"absolute top-[6px] left-0 box-border inline-block h-[3px] w-full select-none transition-all duration-500",ref:t}),r.jsx("span",{className:"absolute top-[12px] left-0 box-border inline-block h-[3px] w-full select-none transition-all duration-500",ref:u}),r.jsx("span",{className:"absolute top-[18px] left-0 box-border inline-block h-[3px] w-full select-none transition-all duration-500",ref:b}),r.jsx("div",{className:"absolute w-full text-xs transition-all duration-500 after:mt-2 after:block",ref:f})]})},z=new RegExp(/(^https?:\/\/)|(\.(html|htm)?$)/),ee={report:w.FileText,slip:w.FileText,table:w.Table,chart:w.BarChart,download:w.Download,lock:w.Lock,href:w.Link},re=({mark:s,children:a})=>{const o=s?ee[s]:void 0;return o?r.jsxs("div",{className:"flex flex-nowrap items-center",children:[r.jsx(o,{className:"h-4 w-4"}),r.jsx("div",{className:"aiquants-menu-link mx-1 hover:underline",children:a})]}):r.jsx("span",{className:"mx-1 text-sky-600 hover:underline dark:text-sky-400",children:a})},ne=({item:s,onMenuSelected:a})=>{if(s.href==="separator")return r.jsx("hr",{className:"aiquants-menu-separator mx-2 my-1 h-px"});const o=r.jsx(re,{mark:s.mark,children:s.title}),m={onClick:a};return s.new?r.jsx("a",{href:s.href,rel:"noopener noreferrer",target:"_blank",...m,children:o}):z.test(s.href)?r.jsx("a",{href:s.href,...m,children:o}):r.jsx(Y.Link,{to:s.href,...m,children:o})},te=s=>{const{menuList:a,onMenuSelected:o}=s,[m,x]=l.useState(null),c=l.useCallback(t=>{x(u=>u===t?null:t)},[]),i=l.useMemo(()=>r.jsx(r.Fragment,{children:a.map(t=>r.jsx("div",{children:t.href?r.jsx("div",{className:"aiquants-menu-list-item before:-mt-1 relative mb-1 ml-1 h-full rounded-l-2xl p-2 align-middle text-sm before:mr-2 before:inline-block before:h-4 before:w-4 before:rounded-full before:align-middle before:content-['']",children:z.test(t.href)?r.jsx("a",{href:t.href,onClick:o,children:r.jsx("span",{className:"aiquants-menu-link hover:underline",children:t.title})}):r.jsx(Y.Link,{to:t.href,onClick:o,children:r.jsx("span",{className:"aiquants-menu-link hover:underline",children:t.title})})}):r.jsxs("details",{className:"menu-accordion-details",open:t.id===m,children:[r.jsx("summary",{className:"aiquants-menu-list-item menu-accordion-summary before:-mt-1 relative mb-1 ml-1 h-full list-none rounded-l-2xl p-2 align-middle text-sm outline-none before:mr-2 before:inline-block before:h-4 before:w-4 before:rounded-full before:align-middle before:content-['']",onClick:u=>{u.preventDefault(),c(t.id)},onKeyDown:u=>{(u.key==="Enter"||u.key===" ")&&(u.preventDefault(),c(t.id))},children:r.jsx("span",{children:t.title})}),r.jsx("div",{className:"aiquants-menu-submenu pointer-events-auto my-1 mr-1 ml-4 rounded p-2 shadow-md",children:t.submenu.map(u=>r.jsx("div",{className:"menu-accordion-container block w-full whitespace-nowrap text-sm",children:r.jsx(ne,{item:u,onMenuSelected:o})},u.subid))})]})},t.id))}),[a,o,m,c]);return r.jsx("div",{className:"hidden-scrollbar h-0 grow overflow-y-scroll",children:i})},se=s=>{const{menuList:a,menuHeader:o,open:m,onMenuSelected:x,onClickSignout:c,theme:i,toggleTheme:t}=s;return r.jsxs("div",{className:`aiquants-menu-content fixed top-0 right-0 z-2147483642 flex min-h-screen w-[250px] select-none flex-col transition-transform duration-500 ${m?"aiquants-menu-translate-x-0":"aiquants-menu-translate-x-250"}`,children:[r.jsx("div",{className:"flex h-[100px] flex-col",children:o}),r.jsx("div",{className:"flex grow flex-col",children:r.jsx(te,{menuList:a,onMenuSelected:x})}),r.jsx("div",{className:"p-4",children:r.jsxs("button",{type:"button",onClick:t,className:"group relative flex w-full items-center justify-center gap-3 rounded-xl border-2 border-white/20 bg-white/10 backdrop-blur-sm px-4 py-3 text-sm font-medium shadow-lg transition-all duration-300 hover:border-white/30 hover:bg-white/20 hover:shadow-xl hover:scale-[1.02] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/50 focus-visible:ring-offset-2 dark:border-gray-600/50 dark:bg-gray-800/80 dark:hover:border-gray-500/70 dark:hover:bg-gray-700/90",children:[r.jsx("div",{className:"flex h-6 w-6 items-center justify-center rounded-full bg-white/20 backdrop-blur-sm transition-all duration-300 group-hover:bg-white/30 group-hover:scale-110 dark:bg-gray-600/50 dark:group-hover:bg-gray-500/70",children:r.jsx("span",{className:"text-lg transition-transform duration-300 group-hover:scale-110",children:i==="dark"?"🌞":"🌙"})}),r.jsx("span",{className:"text-white transition-colors duration-300 group-hover:text-white/90 dark:text-gray-200 dark:group-hover:text-white",children:i==="dark"?"Light Mode":"Dark Mode"}),r.jsx("div",{className:"absolute inset-0 rounded-xl bg-gradient-to-r from-transparent via-white/5 to-transparent opacity-0 transition-opacity duration-300 group-hover:opacity-100 dark:via-gray-400/10"})]})}),r.jsx("div",{children:r.jsx("button",{type:"button",className:"aiquants-signout-button mx-2 my-5.5 rounded-lg px-5 py-2.5 font-medium text-sm text-white focus:outline-hidden focus:ring-4 focus:ring-blue-300",onClick:c,children:"サインアウト"})})]})},oe=s=>{const{isOverlay:a,onOverlayClick:o}=s;return r.jsx("button",{type:"button",className:`fixed inset-0 z-2147483640 cursor-default bg-black/50 transition-opacity duration-500 ${a?"opacity-100":"pointer-events-none opacity-0"}`,onClick:o})},ae=s=>{const{menuList:a,menuHeader:o,onClickSignout:m,isMenuhide:x,theme:c,toggleTheme:i}=s,[t,u]=l.useState(!1),b=l.useCallback(()=>{u(!0)},[]),f=l.useCallback(()=>{u(!1)},[]),y=l.useCallback(()=>{u(!1)},[]),v=l.useCallback(E=>{if(E.key==="Escape")return f(),!1},[f]);return l.useEffect(()=>(t?window.addEventListener("keydown",v,{passive:!0}):window.removeEventListener("keydown",v),()=>{window.removeEventListener("keydown",v)}),[t,v]),x?r.jsx(r.Fragment,{}):r.jsxs("div",{className:`aiquants-menu-bar ${c}`,children:[r.jsx($,{onMenuClose:f,onMenuOpen:b,open:!t,theme:c}),r.jsx(se,{menuList:a,menuHeader:o,onClickSignout:m,onMenuSelected:y,open:t,theme:c,toggleTheme:i}),r.jsx(oe,{isOverlay:t,onOverlayClick:f})]})},U=({to:s,className:a,children:o})=>r.jsx("a",{href:s,className:a,children:o}),le=s=>{const{user:a,LinkComponent:o=U}=s;return r.jsx("div",{className:"max-h-20 max-w-52",children:r.jsx("div",{className:"flex grow flex-col",children:a?r.jsxs(r.Fragment,{children:[r.jsxs("div",{className:"flex flex-row",children:[r.jsx("div",{className:"aiquants-session-photo m-1 h-14 w-14 p-0.5",children:r.jsx("img",{className:"object-contain",src:a.photos[0].value,"aria-label":"profile photo"})}),r.jsxs("div",{className:"mx-1 flex flex-col",children:[r.jsx(o,{className:"aiquants-session-link my-1 rounded-lg px-2 text-center text-xs",to:"/",children:"プロフィールを編集"}),r.jsx(o,{className:"aiquants-session-link rounded-lg px-2 text-center text-xs",to:"/",children:"プロフィール"}),r.jsx(o,{className:"aiquants-session-link my-1 rounded-lg px-2 text-center text-xs",to:"https://myaccount.google.com/",children:"Google Account"})]})]}),r.jsx("div",{className:"aiquants-session-info mb-1 min-h-[1em] w-full rounded-r-lg px-2 py-0.5 text-xs",children:a.displayName})]}):r.jsx(r.Fragment,{children:r.jsx("div",{className:"aiquants-session-info mb-1 min-h-[1em] w-9/12 rounded-r-lg py-0.5 pl-1 text-xs",children:"ログインはこちら"})})})})};k.DefaultLink=U,k.MenuBar=ae,k.SessionInfo=le,Object.defineProperty(k,Symbol.toStringTag,{value:"Module"})});
22
+ <%s key={someKey} {...props} />`,h,p,R,p),H[p+h]=!0)}if(p=null,d!==void 0&&(o(d),p=""+d),i(n)&&(o(n.key),p=""+n.key),"key"in n){d={};for(var I in n)I!=="key"&&(d[I]=n[I])}else d=n;return p&&t(d,typeof e=="function"?e.displayName||e.name||"Unknown":e),b(e,p,g,j,x(),d,M,L)}function y(e){typeof e=="object"&&e!==null&&e.$$typeof===E&&e._store&&(e._store.validated=1)}var v=l,E=Symbol.for("react.transitional.element"),O=Symbol.for("react.portal"),C=Symbol.for("react.fragment"),N=Symbol.for("react.strict_mode"),ce=Symbol.for("react.profiler"),ie=Symbol.for("react.consumer"),ue=Symbol.for("react.context"),de=Symbol.for("react.forward_ref"),fe=Symbol.for("react.suspense"),me=Symbol.for("react.suspense_list"),xe=Symbol.for("react.memo"),q=Symbol.for("react.lazy"),he=Symbol.for("react.activity"),pe=Symbol.for("react.client.reference"),A=v.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,J=Object.prototype.hasOwnProperty,be=Array.isArray,P=console.createTask?console.createTask:function(){return null};v={react_stack_bottom_frame:function(e){return e()}};var G,V={},B=v.react_stack_bottom_frame.bind(v,c)(),X=P(m(c)),H={};_.Fragment=C,_.jsx=function(e,n,d,h,j){var g=1e4>A.recentlyCreatedOwnerStacks++;return f(e,n,d,!1,h,j,g?Error("react-stack-top-frame"):B,g?P(m(e)):X)},_.jsxs=function(e,n,d,h,j){var g=1e4>A.recentlyCreatedOwnerStacks++;return f(e,n,d,!0,h,j,g?Error("react-stack-top-frame"):B,g?P(m(e)):X)}}()),_}var W;function K(){return W||(W=1,process.env.NODE_ENV==="production"?S.exports=Z():S.exports=Q()),S.exports}var r=K();const z=({to:s,className:a,children:o})=>r.jsx("a",{href:s,className:a,children:o}),$=s=>{const{user:a,LinkComponent:o=z}=s;return r.jsx("div",{className:"max-h-20 max-w-52",children:r.jsx("div",{className:"flex grow flex-col",children:a?r.jsxs(r.Fragment,{children:[r.jsxs("div",{className:"flex flex-row",children:[r.jsx("div",{className:"aiquants-session-photo m-1 h-14 w-14 p-0.5",children:r.jsx("img",{className:"object-contain",src:a.photo,"aria-label":"profile photo"})}),r.jsxs("div",{className:"mx-1 flex flex-col",children:[r.jsx(o,{className:"aiquants-session-link my-1 rounded-lg px-2 text-center text-xs",to:"/",children:"プロフィールを編集"}),r.jsx(o,{className:"aiquants-session-link rounded-lg px-2 text-center text-xs",to:"/",children:"プロフィール"}),r.jsx(o,{className:"aiquants-session-link my-1 rounded-lg px-2 text-center text-xs",to:"https://myaccount.google.com/",children:"Google Account"})]})]}),r.jsx("div",{className:"aiquants-session-info mb-1 min-h-[1em] w-full rounded-r-lg px-2 py-0.5 text-xs",children:a.displayName})]}):r.jsx("div",{className:"aiquants-session-info mb-1 min-h-[1em] w-9/12 rounded-r-lg py-0.5 pl-1 text-xs",children:"ログインはこちら"})})})},U=new RegExp(/(^https?:\/\/)|(\.(html|htm)?$)/),ee={report:w.FileText,slip:w.FileText,table:w.Table,chart:w.BarChart,download:w.Download,lock:w.Lock,href:w.Link},re=({mark:s,children:a})=>{const o=s?ee[s]:void 0;return o?r.jsxs("div",{className:"flex flex-nowrap items-center",children:[r.jsx(o,{className:"h-4 w-4"}),r.jsx("div",{className:"aiquants-menu-link mx-1 hover:underline",children:a})]}):r.jsx("span",{className:"mx-1 text-sky-600 hover:underline dark:text-sky-400",children:a})},ne=({item:s,onMenuSelected:a})=>{if(s.href==="separator")return r.jsx("hr",{className:"aiquants-menu-separator mx-2 my-1 h-px"});const o=r.jsx(re,{mark:s.mark,children:s.title}),m={onClick:a};return s.new?r.jsx("a",{href:s.href,rel:"noopener noreferrer",target:"_blank",...m,children:o}):U.test(s.href)?r.jsx("a",{href:s.href,...m,children:o}):r.jsx(Y.Link,{to:s.href,...m,children:o})},te=s=>{const{menuList:a,onMenuSelected:o}=s,[m,x]=l.useState(null),c=l.useCallback(t=>{x(u=>u===t?null:t)},[]),i=l.useMemo(()=>r.jsx(r.Fragment,{children:a.map(t=>r.jsx("div",{children:t.href?r.jsx("div",{className:"aiquants-menu-list-item before:-mt-1 relative mb-1 ml-1 h-full rounded-l-2xl p-2 align-middle text-sm before:mr-2 before:inline-block before:h-4 before:w-4 before:rounded-full before:align-middle before:content-['']",children:U.test(t.href)?r.jsx("a",{href:t.href,onClick:o,children:r.jsx("span",{className:"aiquants-menu-link hover:underline",children:t.title})}):r.jsx(Y.Link,{to:t.href,onClick:o,children:r.jsx("span",{className:"aiquants-menu-link hover:underline",children:t.title})})}):r.jsxs("details",{className:"menu-accordion-details",open:t.id===m,children:[r.jsx("summary",{className:"aiquants-menu-list-item menu-accordion-summary before:-mt-1 relative mb-1 ml-1 h-full list-none rounded-l-2xl p-2 align-middle text-sm outline-none before:mr-2 before:inline-block before:h-4 before:w-4 before:rounded-full before:align-middle before:content-['']",onClick:u=>{u.preventDefault(),c(t.id)},onKeyDown:u=>{(u.key==="Enter"||u.key===" ")&&(u.preventDefault(),c(t.id))},children:r.jsx("span",{children:t.title})}),r.jsx("div",{className:"aiquants-menu-submenu pointer-events-auto my-1 mr-1 ml-4 rounded p-2 shadow-md",children:t.submenu.map(u=>r.jsx("div",{className:"menu-accordion-container block w-full whitespace-nowrap text-sm",children:r.jsx(ne,{item:u,onMenuSelected:o})},u.subid))})]})},t.id))}),[a,o,m,c]);return r.jsx("div",{className:"hidden-scrollbar h-0 grow overflow-y-scroll",children:i})},se=s=>{const{menuList:a,menuHeader:o,open:m,onMenuSelected:x,onClickSignout:c,theme:i,toggleTheme:t}=s;return r.jsxs("div",{className:`aiquants-menu-content fixed top-0 right-0 z-2147483642 flex min-h-screen w-[250px] select-none flex-col transition-transform duration-500 ${m?"aiquants-menu-translate-x-0":"aiquants-menu-translate-x-250"}`,children:[r.jsx("div",{className:"flex h-[100px] flex-col",children:o}),r.jsx("div",{className:"flex grow flex-col",children:r.jsx(te,{menuList:a,onMenuSelected:x})}),r.jsx("div",{className:"p-4",children:r.jsxs("button",{type:"button",onClick:t,className:"group relative flex w-full items-center justify-center gap-3 rounded-xl border-2 border-white/20 bg-white/10 px-4 py-3 font-medium text-sm shadow-lg backdrop-blur-sm transition-all duration-300 hover:scale-[1.02] hover:border-white/30 hover:bg-white/20 hover:shadow-xl focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/50 focus-visible:ring-offset-2 dark:border-gray-600/50 dark:bg-gray-800/80 dark:hover:border-gray-500/70 dark:hover:bg-gray-700/90",children:[r.jsx("div",{className:"flex h-6 w-6 items-center justify-center rounded-full bg-white/20 backdrop-blur-sm transition-all duration-300 group-hover:scale-110 group-hover:bg-white/30 dark:bg-gray-600/50 dark:group-hover:bg-gray-500/70",children:r.jsx("span",{className:"text-lg transition-transform duration-300 group-hover:scale-110",children:i==="dark"?"🌞":"🌙"})}),r.jsx("span",{className:"text-white transition-colors duration-300 group-hover:text-white/90 dark:text-gray-200 dark:group-hover:text-white",children:i==="dark"?"Light Mode":"Dark Mode"}),r.jsx("div",{className:"absolute inset-0 rounded-xl bg-gradient-to-r from-transparent via-white/5 to-transparent opacity-0 transition-opacity duration-300 group-hover:opacity-100 dark:via-gray-400/10"})]})}),r.jsx("div",{children:r.jsx("button",{type:"button",className:"aiquants-signout-button mx-2 my-5.5 rounded-lg px-5 py-2.5 font-medium text-sm text-white focus:outline-hidden focus:ring-4 focus:ring-blue-300",onClick:c,children:"サインアウト"})})]})},oe=s=>{const{isOverlay:a,onOverlayClick:o}=s;return r.jsx("button",{type:"button",className:`fixed inset-0 z-2147483640 cursor-default bg-black/50 transition-opacity duration-500 ${a?"opacity-100":"pointer-events-none opacity-0"}`,onClick:o})},ae=s=>{const{open:a,onMenuOpen:o,onMenuClose:m,theme:x}=s,c=l.useRef(a),i=l.useRef(null),t=l.useRef(null),u=l.useRef(null),b=l.useRef(null),f=l.useRef(null),y=l.useCallback(()=>{if(i.current&&t.current&&u.current&&b.current&&f.current){const N=x==="dark"?"#fff":"#000";i.current.style.backgroundColor=N,i.current.style.width="100%",i.current.style.height="3px",i.current.style.transform="",t.current.style.opacity="1",t.current.style.backgroundColor=N,u.current.style.opacity="1",u.current.style.backgroundColor=N,b.current.style.backgroundColor=N,b.current.style.width="100%",b.current.style.height="3px",b.current.style.transform="",f.current.style.color=N,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"),c.current=!0}},[x]),v=l.useCallback(()=>{i.current&&t.current&&u.current&&b.current&&f.current&&(i.current.style.backgroundColor="#fff",i.current.style.width="32px",i.current.style.height="4px",i.current.style.transform="translateY(9px) rotate(-45deg)",t.current.style.opacity="0",u.current.style.opacity="0",b.current.style.backgroundColor="#fff",b.current.style.width="32px",b.current.style.height="4px",b.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"),c.current=!1)},[]),E=l.useCallback(()=>{y(),m&&m()},[y,m]),O=l.useCallback(()=>{v(),o&&o()},[v,o]),C=l.useCallback(()=>{c.current?O():E()},[E,O]);return l.useEffect(()=>{a?y():v()},[a,y,v]),r.jsxs("button",{type:"button",className:"fixed top-5 right-5 z-2147483648 inline-block h-[27px] w-[27px] cursor-pointer align-middle outline-hidden",onClick:C,children:[r.jsx("span",{className:"absolute top-0 left-0 box-border inline-block h-[3px] w-full select-none transition-all duration-500",ref:i}),r.jsx("span",{className:"absolute top-[6px] left-0 box-border inline-block h-[3px] w-full select-none transition-all duration-500",ref:t}),r.jsx("span",{className:"absolute top-[12px] left-0 box-border inline-block h-[3px] w-full select-none transition-all duration-500",ref:u}),r.jsx("span",{className:"absolute top-[18px] left-0 box-border inline-block h-[3px] w-full select-none transition-all duration-500",ref:b}),r.jsx("div",{className:"absolute w-full text-xs transition-all duration-500 after:mt-2 after:block",ref:f})]})},le=s=>{const{menuList:a,menuHeader:o,onClickSignout:m,isMenuhide:x,theme:c,toggleTheme:i}=s,[t,u]=l.useState(!1),b=l.useCallback(()=>{u(!0)},[]),f=l.useCallback(()=>{u(!1)},[]),y=l.useCallback(()=>{u(!1)},[]),v=l.useCallback(E=>{if(E.key==="Escape")return f(),!1},[f]);return l.useEffect(()=>(t?window.addEventListener("keydown",v,{passive:!0}):window.removeEventListener("keydown",v),()=>{window.removeEventListener("keydown",v)}),[t,v]),x?r.jsx(r.Fragment,{}):r.jsxs("div",{className:`aiquants-menu-bar ${c}`,children:[r.jsx(ae,{onMenuClose:f,onMenuOpen:b,open:!t,theme:c}),r.jsx(se,{menuList:a,menuHeader:o,onClickSignout:m,onMenuSelected:y,open:t,theme:c,toggleTheme:i}),r.jsx(oe,{isOverlay:t,onOverlayClick:f})]})};k.DefaultLink=z,k.MenuBar=le,k.SessionInfo=$,Object.defineProperty(k,Symbol.toStringTag,{value:"Module"})});
@@ -1,20 +1,12 @@
1
- /**
2
- * User profile photo information.
3
- * ユーザープロフィール写真情報。
4
- */
5
- export interface UserPhoto {
6
- /** Photo URL */
7
- value: string;
8
- }
9
1
  /**
10
2
  * Google user profile information.
11
3
  * Googleユーザープロフィール情報。
12
4
  */
13
- export interface GoogleUserProfile {
5
+ export interface UserProfile {
14
6
  /** User display name */
15
7
  displayName: string;
16
- /** Array of user photos */
17
- photos: UserPhoto[];
8
+ /** user photo url */
9
+ photo: string;
18
10
  /** User ID */
19
11
  id?: string;
20
12
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aiquants/menu-bar",
3
- "version": "0.3.0",
3
+ "version": "0.6.0",
4
4
  "private": false,
5
5
  "description": "A React menu bar component with authentication support and theming",
6
6
  "keywords": [
@@ -15,7 +15,7 @@
15
15
  ],
16
16
  "author": {
17
17
  "name": "fehde-k",
18
- "url": "https://github.com/fehde-k"
18
+ "url": "https://x.com/fehdek"
19
19
  },
20
20
  "license": "MIT",
21
21
  "main": "dist/index.umd.js",
@@ -38,8 +38,10 @@
38
38
  "build": "vite build",
39
39
  "dev": "vite build --watch",
40
40
  "typecheck": "tsc --noEmit",
41
- "clean": "rm -rf dist",
42
- "prepublishOnly": "npm run clean && npm run typecheck && npm run build",
41
+ "license-check": "pnpm dlx license-checker --production --onlyAllow \"MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;Unlicense\"",
42
+ "license-check:json": "pnpm dlx license-checker --production --onlyAllow \"MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;Unlicense\" --json",
43
+ "clean": "rimraf dist",
44
+ "prepublishOnly": "npm run clean && npm run typecheck && npm run test --if-present && npm run build",
43
45
  "publish:patch": "npm version patch && npm publish",
44
46
  "publish:minor": "npm version minor && npm publish",
45
47
  "publish:major": "npm version major && npm publish"
@@ -61,6 +63,7 @@
61
63
  "react": "^19.1.0",
62
64
  "react-dom": "^19.1.0",
63
65
  "react-router-dom": "^7.7.1",
66
+ "rimraf": "^6.0.1",
64
67
  "typescript": "^5.3.3",
65
68
  "vite": "^7.0.6",
66
69
  "vite-plugin-dts": "^3.7.2",
@@ -70,5 +73,8 @@
70
73
  "autoprefixer": "^10.4.0",
71
74
  "postcss": "^8.4.0"
72
75
  },
73
- "dependencies": {}
76
+ "dependencies": {},
77
+ "publishConfig": {
78
+ "access": "public"
79
+ }
74
80
  }