@techzyapp/ui-library 1.0.13 → 1.0.14
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/{AdminRoot-BuB92RpF.cjs → AdminRoot-DBKF9d3i.cjs} +2 -2
- package/dist/{AdminRoot-BuB92RpF.cjs.map → AdminRoot-DBKF9d3i.cjs.map} +1 -1
- package/dist/{AdminRoot-TCS_blQB.js → AdminRoot-DlP5Yq4L.js} +2 -2
- package/dist/{AdminRoot-TCS_blQB.js.map → AdminRoot-DlP5Yq4L.js.map} +1 -1
- package/dist/{Breadcrumbs-DvgctFLS.js → Breadcrumbs-6S4gCiJI.js} +2 -2
- package/dist/{Breadcrumbs-DvgctFLS.js.map → Breadcrumbs-6S4gCiJI.js.map} +1 -1
- package/dist/{Breadcrumbs-BnxhmyK5.cjs → Breadcrumbs-DMg5ER2H.cjs} +2 -2
- package/dist/{Breadcrumbs-BnxhmyK5.cjs.map → Breadcrumbs-DMg5ER2H.cjs.map} +1 -1
- package/dist/{PageNotFound-CmT-Wr9m.js → PageNotFound-HcL5rrHL.js} +2 -2
- package/dist/{PageNotFound-CmT-Wr9m.js.map → PageNotFound-HcL5rrHL.js.map} +1 -1
- package/dist/{PageNotFound-CxLUFoJa.cjs → PageNotFound-Lpw0M3TR.cjs} +2 -2
- package/dist/{PageNotFound-CxLUFoJa.cjs.map → PageNotFound-Lpw0M3TR.cjs.map} +1 -1
- package/dist/{RootLayout-CxMadTU1.cjs → RootLayout-1zRZNGGP.cjs} +2 -2
- package/dist/{RootLayout-CxMadTU1.cjs.map → RootLayout-1zRZNGGP.cjs.map} +1 -1
- package/dist/{RootLayout-CqQZ6h5c.js → RootLayout-CRZEk1E_.js} +3 -3
- package/dist/{RootLayout-CqQZ6h5c.js.map → RootLayout-CRZEk1E_.js.map} +1 -1
- package/dist/Sidebar-Bhx7mWAj.cjs +2 -0
- package/dist/Sidebar-Bhx7mWAj.cjs.map +1 -0
- package/dist/Sidebar-DPJIyW3Z.js +429 -0
- package/dist/Sidebar-DPJIyW3Z.js.map +1 -0
- package/dist/components/Breadcrumbs/index.cjs +1 -1
- package/dist/components/Breadcrumbs/index.js +1 -1
- package/dist/components/PageNotFound/index.cjs +1 -1
- package/dist/components/PageNotFound/index.js +1 -1
- package/dist/components/RootLayout/index.cjs +1 -1
- package/dist/components/RootLayout/index.js +1 -1
- package/dist/components/Sidebar/Sidebar.d.cts +7 -0
- package/dist/components/Sidebar/Sidebar.d.ts +7 -0
- package/dist/components/Sidebar/index.cjs +1 -1
- package/dist/components/Sidebar/index.js +1 -1
- package/dist/entries/app.cjs +1 -1
- package/dist/entries/app.js +1 -1
- package/dist/entries/components.cjs +1 -1
- package/dist/entries/components.js +4 -4
- package/dist/index.cjs +1 -1
- package/dist/index.js +5 -5
- package/package.json +1 -1
- package/dist/Sidebar-CT_NUo_7.cjs +0 -2
- package/dist/Sidebar-CT_NUo_7.cjs.map +0 -1
- package/dist/Sidebar-Csd3iKbS.js +0 -424
- package/dist/Sidebar-Csd3iKbS.js.map +0 -1
|
@@ -6,7 +6,7 @@ import { A as l } from "../Avatar-BJVCdo-K.js";
|
|
|
6
6
|
import { A as T } from "../AvatarGroup-DdJf4aT7.js";
|
|
7
7
|
import { B as c } from "../Badge-DSWigoGC.js";
|
|
8
8
|
import { B as n } from "../Blockquote-CNIuJFHq.js";
|
|
9
|
-
import { B as S } from "../Breadcrumbs-
|
|
9
|
+
import { B as S } from "../Breadcrumbs-6S4gCiJI.js";
|
|
10
10
|
import { B } from "../Button-CUsXYM-m.js";
|
|
11
11
|
import { C as D } from "../Card-DhpudGvF.js";
|
|
12
12
|
import { C as R } from "../Checkbox-XKL_Q5qj.js";
|
|
@@ -25,7 +25,7 @@ import { D as Y } from "../Dropdown-FfkmluRu.js";
|
|
|
25
25
|
import { E as $ } from "../EmptyState-CVyFXprK.js";
|
|
26
26
|
import { F as ro } from "../FileCard-Cpc5frNm.js";
|
|
27
27
|
import { F as ao } from "../FileUploader-B_nKMh_K.js";
|
|
28
|
-
import { F as so, S as po } from "../Sidebar-
|
|
28
|
+
import { F as so, S as po } from "../Sidebar-DPJIyW3Z.js";
|
|
29
29
|
import { F as xo } from "../Flag-Ck1xK22A.js";
|
|
30
30
|
import { F as io } from "../Flex-BFn4P1tJ.js";
|
|
31
31
|
import { F as To } from "../FullscreenToggle-DmC0jTay.js";
|
|
@@ -43,13 +43,13 @@ import { M as Oo } from "../MultilineTextField-CwNCJ9lZ.js";
|
|
|
43
43
|
import { N as Eo } from "../NumberField-X2HsSpu9.js";
|
|
44
44
|
import { O as _o } from "../OtpField-CB05q0NX.js";
|
|
45
45
|
import { P as jo } from "../PageLayout-WKWnj5cw.js";
|
|
46
|
-
import { P as Ho } from "../PageNotFound-
|
|
46
|
+
import { P as Ho } from "../PageNotFound-HcL5rrHL.js";
|
|
47
47
|
import { P as Ko } from "../Pagination-BuP4N1bj.js";
|
|
48
48
|
import { P as Vo } from "../Popover-CgIU4Rhg.js";
|
|
49
49
|
import { R as Xo, a as Yo } from "../RadioGroup-DbodUJW8.js";
|
|
50
50
|
import { R as $o } from "../RemoveDialog-DU6MqkO8.js";
|
|
51
51
|
import { R as rr } from "../RichTextEditor-k-NlWb4Y.js";
|
|
52
|
-
import { R as ar } from "../RootLayout-
|
|
52
|
+
import { R as ar } from "../RootLayout-CRZEk1E_.js";
|
|
53
53
|
import { S as sr } from "../Select-D7KJ-YMU.js";
|
|
54
54
|
import { S as mr } from "../Slider-oGXd5e9X.js";
|
|
55
55
|
import { S as fr, a as ir } from "../SpeedDial-DEWzAGXi.js";
|
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const F=require("./Form-Bz2xgkEm.cjs"),s=require("./useForm-C7erBHt0.cjs"),C=require("./useLockBodyScroll-CIXHZo-Q.cjs"),u=require("./useMediaQuery-CHMrI6Dy.cjs"),m=require("./useClipboard-BjTIX-4g.cjs"),o=require("./access-DPUHbE-S.cjs"),e=require("./ConfigProvider-BHNx-NHV.cjs"),i=require("./messages-Jxz2YMcA.cjs"),r=require("./translations-CXEeeUDL.cjs"),a=require("./table-CZRQGNdk.cjs"),S=require("./AuthGuard-kfOZviar.cjs"),h=require("./authLayoutRoute-BVQ4LhuU.cjs"),E=require("./AdminRoot-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const F=require("./Form-Bz2xgkEm.cjs"),s=require("./useForm-C7erBHt0.cjs"),C=require("./useLockBodyScroll-CIXHZo-Q.cjs"),u=require("./useMediaQuery-CHMrI6Dy.cjs"),m=require("./useClipboard-BjTIX-4g.cjs"),o=require("./access-DPUHbE-S.cjs"),e=require("./ConfigProvider-BHNx-NHV.cjs"),i=require("./messages-Jxz2YMcA.cjs"),r=require("./translations-CXEeeUDL.cjs"),a=require("./table-CZRQGNdk.cjs"),S=require("./AuthGuard-kfOZviar.cjs"),h=require("./authLayoutRoute-BVQ4LhuU.cjs"),E=require("./AdminRoot-DBKF9d3i.cjs"),n=require("./Icon-CXTl_QAP.cjs"),c=require("./Accordion-Dy_dM79Y.cjs"),R=require("./Alert-D99G0StL.cjs"),b=require("./AuthLayout-pvqB9w-B.cjs"),B=require("./Avatar-_ufXh3AY.cjs"),L=require("./AvatarGroup-TW1pt4tj.cjs"),t=require("./breakpoints-Dpnh6BbG.cjs"),D=require("./Badge-BQpr2Jee.cjs"),P=require("./Blockquote-CxHwOecc.cjs"),N=require("./Breadcrumbs-DMg5ER2H.cjs"),_=require("./Button-Cj6pckNl.cjs"),k=require("./Card-DD9SWHzZ.cjs"),I=require("./Checkbox-DXOzYIAz.cjs"),M=require("./Chip-B2lY4TJ0.cjs"),l=require("./ChoiceCardGroup-6eFM1eL0.cjs"),U=require("./Code-CUdpWlY5.cjs"),v=require("./CodeBlock-EhB7v9-R.cjs"),d=require("./Col-BdQeyKEX.cjs"),Q=require("./ColorPicker-Dc1y9Zuu.cjs"),K=require("./CopyButton-D_DCLHhb.cjs"),O=require("./DashedButton-q7AOqKUE.cjs"),G=require("./DatePicker-CEczjGZy.cjs"),x=require("./DateTimePicker-CDyGxUBX.cjs"),Y=require("./Divider-CzbhdCiD.cjs"),f=require("./Dropdown-Ui7h2TGd.cjs"),w=require("./EmptyState-B77utgEn.cjs"),H=require("./FileCard-CsGW2sxE.cjs"),j=require("./FileUploader-DDi_uzIx.cjs"),T=require("./Sidebar-Bhx7mWAj.cjs"),z=require("./Flag-BJLWKB9J.cjs"),J=require("./Flex-C6tHC8n7.cjs"),V=require("./FullscreenToggle-MCxGzAEe.cjs"),W=require("./Grid-frN0D9lR.cjs"),q=require("./names-C2Yj1p3u.cjs"),X=require("./IconButton-BoY2y_pV.cjs"),Z=require("./List-ChXO0Hz-.cjs"),$=require("./ListItem-DWQorRxG.cjs"),ee=require("./Loader-Cwb1bOHj.cjs"),re=require("./Masonry-9LrJKlhI.cjs"),oe=require("./Modal-CO3c3sGY.cjs"),te=require("./MultiSelect-DVOVHuIm.cjs"),ie=require("./MultilineTextField-Dz6Fg8RJ.cjs"),se=require("./NumberField-BH237Vt2.cjs"),ue=require("./OtpField-CXP59zM2.cjs"),ae=require("./PageLayout-CuVuZEbR.cjs"),ne=require("./PageNotFound-Lpw0M3TR.cjs"),ce=require("./Pagination-Dcs_Znx3.cjs"),le=require("./Popover-CBI1icIM.cjs"),p=require("./RadioGroup-C8u7eNBS.cjs"),de=require("./RemoveDialog-Cwtq9wAt.cjs"),Te=require("./RichTextEditor-GxbnzLRe.cjs"),qe=require("./RootLayout-1zRZNGGP.cjs"),pe=require("./Select-DjMZec8c.cjs"),Ae=require("./Slider-dxYVXRev.cjs"),A=require("./SpeedDial-CyiPagdu.cjs"),ge=require("./Stepper-PW7c45PV.cjs"),ye=require("./SwatchPicker-DbAU9-ux.cjs"),Fe=require("./Switch-DRkZ6kHJ.cjs"),Ce=require("./Table-C_Ov-kvK.cjs"),me=require("./Tabs-CaHTJ99w.cjs"),Se=require("./TagsField-BQIwSX5m.cjs"),he=require("./TextField-fmt7aacg.cjs"),Ee=require("./ThemeToggle-Cz5I2-DL.cjs"),Re=require("./TimePicker-B-c6uIaY.cjs"),g=require("./Timeline-CoxW0Ia_.cjs"),be=require("./Toaster-qdS8Urgy.cjs"),y=require("./ToggleButtonGroup-DYRLwKKh.cjs"),Be=require("./Tooltip-Ao7az09p.cjs"),Le=require("./TranslatedFields-C30ww45c.cjs"),De=require("./Typography-BFatE1_A.cjs"),Pe=require("./UserCard-C8rC_gzD.cjs"),Ne=require("./toastStore-B4Tk2Xk7.cjs");exports.Form=F.Form;exports.useDisclosure=s.useDisclosure;exports.useForm=s.useForm;exports.useLockBodyScroll=C.useLockBodyScroll;exports.useBreakpointMatches=u.useBreakpointMatches;exports.useMediaQuery=u.useMediaQuery;exports.useClipboard=m.useClipboard;exports.getAccessKeys=o.getAccessKeys;exports.hasAccess=o.hasAccess;exports.setAccessKeys=o.setAccessKeys;exports.useAccessKeys=o.useAccessKeys;exports.ConfigProvider=e.ConfigProvider;exports.DEFAULT_FONT_FAMILY=e.DEFAULT_FONT_FAMILY;exports.DEFAULT_NESTED_TAB_QUERY_KEY=e.DEFAULT_NESTED_TAB_QUERY_KEY;exports.DEFAULT_STEP_QUERY_KEY=e.DEFAULT_STEP_QUERY_KEY;exports.DEFAULT_TABS_QUERY_KEY=e.DEFAULT_TABS_QUERY_KEY;exports.applyTheme=e.applyTheme;exports.useHeaderConfig=e.useHeaderConfig;exports.useLanguage=e.useLanguage;exports.useLocales=e.useLocales;exports.useNestedTabQueryKey=e.useNestedTabQueryKey;exports.useStepQueryKey=e.useStepQueryKey;exports.useT=e.useT;exports.useTableQueryConfig=e.useTableQueryConfig;exports.useTabsQueryKey=e.useTabsQueryKey;exports.useTheme=e.useTheme;exports.useTranslations=e.useTranslations;exports.useTranslationsNamespace=e.useTranslationsNamespace;exports.createAppTranslator=i.createAppTranslator;exports.createTranslator=i.createTranslator;exports.flagFor=i.flagFor;exports.DEFAULT_TRANSLATIONS_NAMESPACE=r.DEFAULT_TRANSLATIONS_NAMESPACE;exports.buildTranslationName=r.buildTranslationName;exports.buildTranslations=r.buildTranslations;exports.flattenTranslations=r.flattenTranslations;exports.nestTranslations=r.nestTranslations;exports.toFormData=r.toFormData;exports.buildTableQuery=a.buildTableQuery;exports.parseTableQuery=a.parseTableQuery;exports.AuthGuard=S.AuthGuard;exports.authLayoutRoute=h.authLayoutRoute;exports.AdminRoot=E.AdminRoot;exports.Icon=n.Icon;exports.icons=n.icons;exports.Accordion=c.Accordion;exports.AccordionItem=c.AccordionItem;exports.Alert=R.Alert;exports.AuthLayout=b.AuthLayout;exports.Avatar=B.Avatar;exports.AvatarGroup=L.AvatarGroup;exports.BREAKPOINTS=t.BREAKPOINTS;exports.BREAKPOINT_ORDER=t.BREAKPOINT_ORDER;exports.breakpointQuery=t.breakpointQuery;exports.resolveResponsive=t.resolveResponsive;exports.Badge=D.Badge;exports.Blockquote=P.Blockquote;exports.Breadcrumbs=N.Breadcrumbs;exports.Button=_.Button;exports.Card=k.Card;exports.Checkbox=I.Checkbox;exports.Chip=M.Chip;exports.ChoiceCard=l.ChoiceCard;exports.ChoiceCardGroup=l.ChoiceCardGroup;exports.Code=U.Code;exports.CodeBlock=v.CodeBlock;exports.Col=d.Col;exports.Row=d.Row;exports.ColorPicker=Q.ColorPicker;exports.CopyButton=K.CopyButton;exports.DashedButton=O.DashedButton;exports.DatePicker=G.DatePicker;exports.DateTimePicker=x.DateTimePicker;exports.Divider=Y.Divider;exports.Dropdown=f.Dropdown;exports.EmptyState=w.EmptyState;exports.FileCard=H.FileCard;exports.FileUploader=j.FileUploader;exports.FirstRouteRedirect=T.FirstRouteRedirect;exports.Sidebar=T.Sidebar;exports.Flag=z.Flag;exports.Flex=J.Flex;exports.FullscreenToggle=V.FullscreenToggle;exports.Grid=W.Grid;exports.ICON_COUNT=q.ICON_COUNT;exports.ICON_NAMES=q.ICON_NAMES;exports.IconButton=X.IconButton;exports.List=Z.List;exports.ListItem=$.ListItem;exports.Loader=ee.Loader;exports.Masonry=re.Masonry;exports.Modal=oe.Modal;exports.MultiSelect=te.MultiSelect;exports.MultilineTextField=ie.MultilineTextField;exports.NumberField=se.NumberField;exports.OtpField=ue.OtpField;exports.PageLayout=ae.PageLayout;exports.PageNotFound=ne.PageNotFound;exports.Pagination=ce.Pagination;exports.Popover=le.Popover;exports.Radio=p.Radio;exports.RadioGroup=p.RadioGroup;exports.RemoveDialog=de.RemoveDialog;exports.RichTextEditor=Te.RichTextEditor;exports.RootLayout=qe.RootLayout;exports.Select=pe.Select;exports.Slider=Ae.Slider;exports.SpeedDial=A.SpeedDial;exports.SpeedDialAction=A.SpeedDialAction;exports.Stepper=ge.Stepper;exports.SwatchPicker=ye.SwatchPicker;exports.Switch=Fe.Switch;exports.Table=Ce.Table;exports.Tabs=me.Tabs;exports.TagsField=Se.TagsField;exports.TextField=he.TextField;exports.ThemeToggle=Ee.ThemeToggle;exports.TimePicker=Re.TimePicker;exports.Timeline=g.Timeline;exports.TimelineItem=g.TimelineItem;exports.Toaster=be.Toaster;exports.ToggleButton=y.ToggleButton;exports.ToggleButtonGroup=y.ToggleButtonGroup;exports.Tooltip=Be.Tooltip;exports.TranslatedFields=Le.TranslatedFields;exports.Typography=De.Typography;exports.UserCard=Pe.UserCard;exports.toast=Ne.toast;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.js
CHANGED
|
@@ -10,7 +10,7 @@ import { D as G, b as Y, a as w, f as j, n as q, t as H } from "./translations-D
|
|
|
10
10
|
import { b as J, p as V } from "./table-DF3zTrC3.js";
|
|
11
11
|
import { A as X } from "./AuthGuard-CVklwDbj.js";
|
|
12
12
|
import { a as $ } from "./authLayoutRoute-B10sXioW.js";
|
|
13
|
-
import { A as ro } from "./AdminRoot-
|
|
13
|
+
import { A as ro } from "./AdminRoot-DlP5Yq4L.js";
|
|
14
14
|
import { I as ao, i as so } from "./Icon-CophpkHo.js";
|
|
15
15
|
import { A as po, a as mo } from "./Accordion-CAxa1I-m.js";
|
|
16
16
|
import { A as xo } from "./Alert-B3rDvpbO.js";
|
|
@@ -20,7 +20,7 @@ import { A as co } from "./AvatarGroup-DdJf4aT7.js";
|
|
|
20
20
|
import { B as Co, a as Fo, b as So, r as go } from "./breakpoints-BbDakdqF.js";
|
|
21
21
|
import { B as Do } from "./Badge-DSWigoGC.js";
|
|
22
22
|
import { B as Eo } from "./Blockquote-CNIuJFHq.js";
|
|
23
|
-
import { B as bo } from "./Breadcrumbs-
|
|
23
|
+
import { B as bo } from "./Breadcrumbs-6S4gCiJI.js";
|
|
24
24
|
import { B as ho } from "./Button-CUsXYM-m.js";
|
|
25
25
|
import { C as No } from "./Card-DhpudGvF.js";
|
|
26
26
|
import { C as Io } from "./Checkbox-XKL_Q5qj.js";
|
|
@@ -39,7 +39,7 @@ import { D as tr } from "./Dropdown-FfkmluRu.js";
|
|
|
39
39
|
import { E as mr } from "./EmptyState-CVyFXprK.js";
|
|
40
40
|
import { F as xr } from "./FileCard-Cpc5frNm.js";
|
|
41
41
|
import { F as ur } from "./FileUploader-B_nKMh_K.js";
|
|
42
|
-
import { F as lr, S as nr } from "./Sidebar-
|
|
42
|
+
import { F as lr, S as nr } from "./Sidebar-DPJIyW3Z.js";
|
|
43
43
|
import { F as cr } from "./Flag-Ck1xK22A.js";
|
|
44
44
|
import { F as Cr } from "./Flex-BFn4P1tJ.js";
|
|
45
45
|
import { F as Sr } from "./FullscreenToggle-DmC0jTay.js";
|
|
@@ -56,13 +56,13 @@ import { M as Gr } from "./MultilineTextField-CwNCJ9lZ.js";
|
|
|
56
56
|
import { N as wr } from "./NumberField-X2HsSpu9.js";
|
|
57
57
|
import { O as qr } from "./OtpField-CB05q0NX.js";
|
|
58
58
|
import { P as zr } from "./PageLayout-WKWnj5cw.js";
|
|
59
|
-
import { P as Vr } from "./PageNotFound-
|
|
59
|
+
import { P as Vr } from "./PageNotFound-HcL5rrHL.js";
|
|
60
60
|
import { P as Xr } from "./Pagination-BuP4N1bj.js";
|
|
61
61
|
import { P as $r } from "./Popover-CgIU4Rhg.js";
|
|
62
62
|
import { R as re, a as ee } from "./RadioGroup-DbodUJW8.js";
|
|
63
63
|
import { R as se } from "./RemoveDialog-DU6MqkO8.js";
|
|
64
64
|
import { R as pe } from "./RichTextEditor-k-NlWb4Y.js";
|
|
65
|
-
import { R as fe } from "./RootLayout-
|
|
65
|
+
import { R as fe } from "./RootLayout-CRZEk1E_.js";
|
|
66
66
|
import { S as ie } from "./Select-D7KJ-YMU.js";
|
|
67
67
|
import { S as Te } from "./Slider-oGXd5e9X.js";
|
|
68
68
|
import { S as ne, a as de } from "./SpeedDial-DEWzAGXi.js";
|
package/package.json
CHANGED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";const i=require("react/jsx-runtime"),v=require("react"),g=require("@tanstack/react-router"),R=require("clsx"),S=require("./Icon-CXTl_QAP.cjs"),D=require("./List-ChXO0Hz-.cjs"),k=require("./ListItem-DWQorRxG.cjs"),E=require("./TextField-fmt7aacg.cjs"),T=require("./access-DPUHbE-S.cjs"),$=require("./ConfigProvider-BHNx-NHV.cjs"),B="_nav_a1zzi_4",F="_module_a1zzi_17",q="_search_a1zzi_25",M="_searchPanel_a1zzi_31",A="_moduleLabel_a1zzi_46",O="_leaves_a1zzi_61",K="_navBadge_a1zzi_66",V="_navDot_a1zzi_78",Y="_leafDot_a1zzi_86",U="_collapsible_a1zzi_95",H="_collapsibleClosed_a1zzi_100",G="_collapsibleInner_a1zzi_103",Q="_chevron_a1zzi_109",W="_chevronButton_a1zzi_119",m={nav:B,module:F,search:q,searchPanel:M,moduleLabel:A,leaves:O,navBadge:K,navDot:V,leafDot:Y,collapsible:U,collapsibleClosed:H,collapsibleInner:G,chevron:Q,chevronButton:W},L=k.ListItem,X=e=>e.split("-").map(s=>s.charAt(0).toUpperCase()+s.slice(1)).join(" "),w=e=>e.replace(/^\/+|\/+$/g,""),z=(e,s)=>e.order-s.order||e.label.localeCompare(s.label);function y(e){const s=[];for(const o of e){const c=o.staticData,n=w(o.fullPath);!(c!=null&&c.name)||!n||s.push({path:n,name:c.name,sd:c})}const a=new Map(s.map(o=>[o.path,o])),t=s.map(o=>o.path),l=o=>t.some(c=>c!==o&&c.startsWith(`${o}/`)),f=new Set(e.map(o=>o.fullPath)),h=o=>f.has(`/${o}/`),b=(o,c)=>{const n=a.get(o);return{label:(n==null?void 0:n.name)??X(c),icon:n==null?void 0:n.sd.icon,badge:n==null?void 0:n.sd.badge,dot:n==null?void 0:n.sd.dot,order:(n==null?void 0:n.sd.order)??Number.POSITIVE_INFINITY}},p=new Map,d=o=>{let c=p.get(o);if(!c){const n=b(o,o);c={label:n.label,icon:n.icon,order:n.order,groups:new Map},p.set(o,c)}return c},x=[];for(const{path:o,name:c,sd:n}of s){const N=o.split("/");if(N.length<=2&&l(o)||n.hidden)continue;if(N.length===1){x.push({label:c,to:`/${o}`,icon:n.icon,badge:n.badge,dot:n.dot,order:n.order??Number.POSITIVE_INFINITY});continue}const r=d(N[0]);if(N.length===2)r.groups.set(o,{label:c,icon:n.icon,to:`/${o}`,badge:n.badge,dot:n.dot,order:n.order??Number.POSITIVE_INFINITY,leaves:[],isContainer:!1});else{const u=N.slice(0,2).join("/");let _=r.groups.get(u);if(!_){const I=b(u,N[1]);_={label:I.label,icon:I.icon,badge:I.badge,dot:I.dot,order:I.order,to:h(u)?`/${u}`:void 0,leaves:[],isContainer:!0},r.groups.set(u,_)}_.leaves.push({label:c,to:`/${o}`,icon:n.icon,badge:n.badge,dot:n.dot,order:n.order??Number.POSITIVE_INFINITY})}}return{links:x.sort(z).map(o=>({label:o.label,to:o.to,icon:o.icon,badge:o.badge,dot:o.dot})),modules:[...p.values()].sort(z).map(o=>({module:o.label,icon:o.icon,groups:[...o.groups.values()].sort(z).map(c=>({label:c.label,icon:c.icon,to:c.to,badge:c.badge,dot:c.dot,children:c.isContainer?c.leaves.sort(z).map(n=>({label:n.label,to:n.to,icon:n.icon,badge:n.badge,dot:n.dot})):void 0}))}))}}function C(){const e=g.useRouter(),s=T.useAccessKeys();return v.useMemo(()=>y(Object.values(e.looseRoutesById).map(a=>{var t;return{fullPath:a.fullPath,staticData:(t=a.options)==null?void 0:t.staticData}}).filter(a=>{var t;return T.hasAccess((t=a.staticData)==null?void 0:t.roles)})),[e,s])}function P(e){var s;if(e.links[0])return e.links[0].to;for(const a of e.modules)for(const t of a.groups){if(t.to)return t.to;const l=(s=t.children)==null?void 0:s[0];if(l)return l.to}}function J(){return P(C())}function Z(){var a,t;const e=g.useRouter(),s=g.useRouterState({select:l=>l.matches});for(let l=s.length-1;l>=0;l--){const f=e.looseRoutesById[s[l].routeId],h=(t=(a=f==null?void 0:f.options)==null?void 0:a.staticData)==null?void 0:t.name;if(h)return h}}function ee(e){const s=new Set;for(const a of e.links)s.add(a.to);for(const a of e.modules)for(const t of a.groups){t.to&&s.add(t.to);for(const l of t.children??[])s.add(l.to)}return s}function te(){var f;const e=C(),s=g.useRouterState({select:h=>h.matches}),a=P(e),t=ee(e),l=[];for(const h of s){const b=(f=h.staticData)==null?void 0:f.name;if(!b)continue;const p=`/${w(h.pathname)}`;l.push({label:b,to:t.has(p)?p:void 0})}return l.length>0&&(l[l.length-1]={label:l[l.length-1].label}),{homeTo:a,items:l}}function oe(){const e=J();return e?i.jsx(g.Navigate,{to:e}):null}function ne(){const{links:e,modules:s}=C(),a=g.useRouterState({select:t=>t.location.pathname});return i.jsxs("nav",{className:m.nav,children:[e.length>0?i.jsx(D.List,{children:e.map(t=>i.jsx(L,{as:g.Link,to:t.to,icon:t.icon,selected:a===t.to,clickable:!0,trailing:j(t.badge,t.dot),children:t.label},t.to))}):null,s.map(t=>i.jsxs("div",{className:m.module,children:[i.jsx("div",{className:m.moduleLabel,children:t.module}),i.jsx(D.List,{children:t.groups.map(l=>i.jsx(ue,{group:l,pathname:a},l.label))})]},t.module))]})}function se(e){const s=[];for(const a of e.links)s.push({label:a.label,to:a.to});for(const a of e.modules)for(const t of a.groups){t.to&&s.push({label:t.label,to:t.to,context:a.module});for(const l of t.children??[])s.push({label:l.label,to:l.to,context:`${a.module} · ${t.label}`})}return s}const ae=8;function le(){const e=$.useT(),s=C(),a=g.useNavigate(),t=v.useMemo(()=>se(s),[s]),[l,f]=v.useState(""),[h,b]=v.useState(!1),[p,d]=v.useState(0),x=v.useRef(null),o=v.useMemo(()=>{const r=l.trim().toLowerCase();return r?t.filter(u=>{var _;return u.label.toLowerCase().includes(r)||(((_=u.context)==null?void 0:_.toLowerCase().includes(r))??!1)}).slice(0,ae):[]},[t,l]),c=h&&o.length>0;v.useEffect(()=>d(0),[l]),v.useEffect(()=>{d(r=>r>o.length-1?Math.max(0,o.length-1):r)},[o.length]),v.useEffect(()=>{if(!h)return;const r=u=>{x.current&&!x.current.contains(u.target)&&b(!1)};return document.addEventListener("pointerdown",r),()=>document.removeEventListener("pointerdown",r)},[h]);const n=r=>{a({to:r}),f(""),b(!1)},N=r=>{if(c)if(r.key==="ArrowDown")r.preventDefault(),d(u=>(u+1)%o.length);else if(r.key==="ArrowUp")r.preventDefault(),d(u=>(u-1+o.length)%o.length);else if(r.key==="Enter"){r.preventDefault();const u=o[p];u&&n(u.to)}else r.key==="Escape"&&b(!1)};return i.jsxs("div",{ref:x,className:m.search,role:"combobox","aria-expanded":c,"aria-haspopup":"listbox",children:[i.jsx(E.TextField,{value:l,onChange:r=>{f(r.target.value),b(!0)},onFocus:()=>b(!0),onKeyDown:N,adornment:i.jsx(S.Icon,{name:"SearchNormal"}),placeholder:e("sidebar.searchPages"),"aria-label":e("sidebar.searchPages"),autoComplete:"off"}),c?i.jsx("div",{className:m.searchPanel,children:i.jsx(D.List,{role:"listbox",children:o.map((r,u)=>i.jsx(k.ListItem,{description:r.context,clickable:!0,selected:u===p,onMouseDown:_=>_.preventDefault(),onMouseEnter:()=>d(u),onClick:()=>n(r.to),children:r.label},r.to))})}):null]})}function ce(e,s){var a;return e.to&&s===e.to?!0:((a=e.children)==null?void 0:a.some(t=>t.to===s))??!1}function re(e){return e?i.jsx("span",{className:m.navBadge,children:e}):null}function ie(e){return e?i.jsx("span",{className:m.navDot,style:{background:`var(--tz-color-${e})`}}):null}function j(e,s,a){if(!(e==null&&s==null&&a==null))return i.jsxs(i.Fragment,{children:[re(e),ie(s),a]})}function ue({group:e,pathname:s}){var b,p;const a=ce(e,s),t=!!((b=e.children)!=null&&b.length),[l,f]=v.useState(a);if(v.useEffect(()=>{a&&f(!0)},[a]),!t&&e.to)return i.jsx(L,{as:g.Link,to:e.to,icon:e.icon,selected:a,clickable:!0,trailing:j(e.badge,e.dot),children:e.label});const h=i.jsx(S.Icon,{name:"ArrowDown4",size:"sm",className:m.chevron,"data-open":l?"true":"false"});return i.jsxs(i.Fragment,{children:[t&&e.to?i.jsx(L,{as:g.Link,to:e.to,icon:e.icon,selected:a,clickable:!0,onClick:()=>f(!0),trailing:j(e.badge,e.dot,i.jsx("button",{type:"button",className:m.chevronButton,"aria-label":`${l?"Collapse":"Expand"} ${e.label}`,"aria-expanded":l,onClick:d=>{d.preventDefault(),d.stopPropagation(),f(x=>!x)},children:h})),children:e.label}):i.jsx(k.ListItem,{icon:e.icon,selected:a,clickable:!0,"aria-expanded":l,onClick:()=>f(d=>!d),trailing:j(e.badge,e.dot,h),children:e.label}),t?i.jsx("div",{className:R.clsx(m.collapsible,!l&&m.collapsibleClosed),children:i.jsx("div",{className:m.collapsibleInner,children:i.jsx(D.List,{className:m.leaves,children:(p=e.children)==null?void 0:p.map(d=>i.jsx(L,{as:g.Link,to:d.to,icon:i.jsx("span",{className:m.leafDot}),selected:s===d.to,size:"md",clickable:!0,trailing:j(d.badge,d.dot),children:d.label},d.to))})})}):null]})}exports.FirstRouteRedirect=oe;exports.NavSearch=le;exports.Sidebar=ne;exports.buildNavTree=y;exports.firstNavTo=P;exports.useBreadcrumbs=te;exports.usePageTitle=Z;
|
|
2
|
-
//# sourceMappingURL=Sidebar-CT_NUo_7.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Sidebar-CT_NUo_7.cjs","sources":["../src/components/Sidebar/Sidebar.tsx"],"sourcesContent":["import {\n useEffect,\n useMemo,\n useRef,\n useState,\n type ChangeEvent,\n type KeyboardEvent,\n type MouseEvent,\n type ReactNode,\n} from 'react'\nimport {\n Link,\n Navigate,\n useNavigate,\n useRouter,\n useRouterState,\n type LinkProps,\n type StaticDataRouteOption,\n} from '@tanstack/react-router'\nimport { clsx } from 'clsx'\nimport { Icon } from '../Icon'\nimport { List, ListItem, type ListItemProps } from '../List'\nimport { TextField } from '../TextField'\nimport { useT, type ThemeColor } from '../../theme'\nimport type { IconName } from '../../icons/names'\nimport { hasAccess, useAccessKeys } from '../../helpers/access'\nimport styles from './Sidebar.module.css'\n\n// `ListItem` rendered as a TanStack `Link` — it forwards unrecognized props (like `to`) to the\n// element, so this typed alias lets us pass `to` while keeping `ListItem`'s look + behavior.\nconst NavLink = ListItem as unknown as (props: ListItemProps & { to: string }) => ReactNode\n\nexport type { IconName }\n\n// Typed `staticData` for consumers — every route describes its own menu entry.\ndeclare module '@tanstack/react-router' {\n interface StaticDataRouteOption {\n /** Menu label. A route with no `name` never appears in the menu. */\n name?: string\n /** Optional menu icon (the library's `IconName` union). */\n icon?: IconName\n /** Sort order within the parent (ascending); falls back to alphabetical. */\n order?: number\n /** Routed but hidden from the menu. */\n hidden?: boolean\n /** Allowed accessKeys (OR — user needs any one). Omitted/empty = public. */\n roles?: string[]\n /** Small text label (e.g. `\"New\"`) shown as a pill on the menu row. */\n badge?: string\n /** Theme color of a small dot indicator on the menu row (e.g. `\"error\"`). */\n dot?: ThemeColor\n }\n}\n\nexport interface NavLeaf {\n label: string\n to: string\n icon?: IconName\n badge?: string\n dot?: ThemeColor\n}\nexport interface NavGroup {\n label: string\n icon?: IconName\n to?: string\n badge?: string\n dot?: ThemeColor\n children?: NavLeaf[]\n}\nexport interface NavModule {\n module: string\n icon?: IconName\n groups: NavGroup[]\n}\n\nconst prettify = (seg: string) =>\n seg\n .split('-')\n .map((w) => w.charAt(0).toUpperCase() + w.slice(1))\n .join(' ')\nconst trimSlashes = (p: string) => p.replace(/^\\/+|\\/+$/g, '')\nconst byOrderThenLabel = (\n a: { order: number; label: string },\n b: { order: number; label: string },\n) => a.order - b.order || a.label.localeCompare(b.label)\n\ninterface LeafAcc {\n label: string\n to: string\n icon?: IconName\n badge?: string\n dot?: ThemeColor\n order: number\n}\ninterface GroupAcc {\n label: string\n icon?: IconName\n to?: string\n badge?: string\n dot?: ThemeColor\n order: number\n leaves: LeafAcc[]\n isContainer: boolean\n}\ninterface ModuleAcc {\n label: string\n icon?: IconName\n order: number\n groups: Map<string, GroupAcc>\n}\n\n/** A single route, reduced to what the menu needs. */\nexport interface NavRoute {\n fullPath: string\n staticData?: StaticDataRouteOption\n}\n\n/**\n * Pure menu builder — derives the 3-level nav tree (module → group → page) from a flat route list.\n * Kept router-free so it's unit-testable; `useNavTree` feeds it the live routes.\n */\nexport function buildNavTree(routes: NavRoute[]): { links: NavLeaf[]; modules: NavModule[] } {\n const entries: Array<{ path: string; name: string; sd: StaticDataRouteOption }> = []\n for (const route of routes) {\n const sd = route.staticData\n const path = trimSlashes(route.fullPath)\n if (!sd?.name || !path) continue\n entries.push({ path, name: sd.name, sd })\n }\n\n const metaByPath = new Map(entries.map((e) => [e.path, e]))\n const paths = entries.map((e) => e.path)\n const isContainer = (p: string) => paths.some((o) => o !== p && o.startsWith(`${p}/`))\n const rawFullPaths = new Set(routes.map((r) => r.fullPath))\n const groupHasOwnPage = (groupKey: string) => rawFullPaths.has(`/${groupKey}/`)\n\n const chrome = (key: string, seg: string) => {\n const e = metaByPath.get(key)\n return {\n label: e?.name ?? prettify(seg),\n icon: e?.sd.icon,\n badge: e?.sd.badge,\n dot: e?.sd.dot,\n order: e?.sd.order ?? Number.POSITIVE_INFINITY,\n }\n }\n\n const modules = new Map<string, ModuleAcc>()\n const getModule = (seg: string) => {\n let mod = modules.get(seg)\n if (!mod) {\n const c = chrome(seg, seg)\n mod = { label: c.label, icon: c.icon, order: c.order, groups: new Map() }\n modules.set(seg, mod)\n }\n return mod\n }\n\n const topLinks: LeafAcc[] = []\n for (const { path, name, sd } of entries) {\n const segs = path.split('/')\n // The menu is 3 levels deep by design (module → group → page). A path only counts as a\n // \"container\" (holds children instead of being its own row) at the module/group levels; a\n // depth-3+ route is always a leaf, so a named page with even-deeper children isn't dropped.\n // Routes deeper than 3 segments still appear — flattened as leaves under their depth-2 group\n // (their `to` stays correct) — the nav just can't nest beyond level 3.\n if ((segs.length <= 2 && isContainer(path)) || sd.hidden) continue\n if (segs.length === 1) {\n topLinks.push({\n label: name,\n to: `/${path}`,\n icon: sd.icon,\n badge: sd.badge,\n dot: sd.dot,\n order: sd.order ?? Number.POSITIVE_INFINITY,\n })\n continue\n }\n const mod = getModule(segs[0])\n if (segs.length === 2) {\n mod.groups.set(path, {\n label: name,\n icon: sd.icon,\n to: `/${path}`,\n badge: sd.badge,\n dot: sd.dot,\n order: sd.order ?? Number.POSITIVE_INFINITY,\n leaves: [],\n isContainer: false,\n })\n } else {\n const groupKey = segs.slice(0, 2).join('/')\n let group = mod.groups.get(groupKey)\n if (!group) {\n const c = chrome(groupKey, segs[1])\n group = {\n label: c.label,\n icon: c.icon,\n badge: c.badge,\n dot: c.dot,\n order: c.order,\n to: groupHasOwnPage(groupKey) ? `/${groupKey}` : undefined,\n leaves: [],\n isContainer: true,\n }\n mod.groups.set(groupKey, group)\n }\n group.leaves.push({\n label: name,\n to: `/${path}`,\n icon: sd.icon,\n badge: sd.badge,\n dot: sd.dot,\n order: sd.order ?? Number.POSITIVE_INFINITY,\n })\n }\n }\n\n return {\n links: topLinks\n .sort(byOrderThenLabel)\n .map((l) => ({ label: l.label, to: l.to, icon: l.icon, badge: l.badge, dot: l.dot })),\n modules: [...modules.values()].sort(byOrderThenLabel).map(\n (mod): NavModule => ({\n module: mod.label,\n icon: mod.icon,\n groups: [...mod.groups.values()].sort(byOrderThenLabel).map(\n (g): NavGroup => ({\n label: g.label,\n icon: g.icon,\n to: g.to,\n badge: g.badge,\n dot: g.dot,\n children: g.isContainer\n ? g.leaves.sort(byOrderThenLabel).map((l) => ({\n label: l.label,\n to: l.to,\n icon: l.icon,\n badge: l.badge,\n dot: l.dot,\n }))\n : undefined,\n }),\n ),\n }),\n ),\n }\n}\n\nfunction useNavTree(): { links: NavLeaf[]; modules: NavModule[] } {\n const router = useRouter()\n const accessKeys = useAccessKeys() // re-render the menu when the user's roles change (login/logout)\n return useMemo(\n () =>\n buildNavTree(\n Object.values(router.looseRoutesById)\n .map((route) => ({\n fullPath: route.fullPath,\n staticData: route.options?.staticData,\n }))\n // Drop pages the current user can't access — empty groups/modules then vanish on their own.\n .filter((route) => hasAccess(route.staticData?.roles)),\n ),\n [router, accessKeys],\n )\n}\n\n/** The first menu destination (top link, else first group/leaf) — used by `FirstRouteRedirect`. */\nexport function firstNavTo(tree: { links: NavLeaf[]; modules: NavModule[] }): string | undefined {\n if (tree.links[0]) return tree.links[0].to\n for (const mod of tree.modules)\n for (const group of mod.groups) {\n if (group.to) return group.to\n const firstChild = group.children?.[0]\n if (firstChild) return firstChild.to\n }\n return undefined\n}\n\nfunction useFirstNavTo() {\n return firstNavTo(useNavTree())\n}\n\n/**\n * The current page's title — the `staticData.name` of the deepest matched route that declares one.\n * Used by `RootLayout` to label the header automatically (e.g. \"Dashboard\").\n */\nexport function usePageTitle(): string | undefined {\n const router = useRouter()\n const matches = useRouterState({ select: (s) => s.matches })\n for (let i = matches.length - 1; i >= 0; i--) {\n const route = router.looseRoutesById[matches[i].routeId]\n const name = route?.options?.staticData?.name\n if (name) return name\n }\n return undefined\n}\n\n/** One breadcrumb. `to` is set only when the crumb points at a real, navigable menu page. */\nexport interface Breadcrumb {\n label: string\n to?: string\n}\n\n/** Every `to` that the menu actually navigates to (top links, group pages, leaves). */\nfunction navigablePaths(tree: { links: NavLeaf[]; modules: NavModule[] }): Set<string> {\n const set = new Set<string>()\n for (const link of tree.links) set.add(link.to)\n for (const mod of tree.modules)\n for (const group of mod.groups) {\n if (group.to) set.add(group.to)\n for (const leaf of group.children ?? []) set.add(leaf.to)\n }\n return set\n}\n\n/**\n * Breadcrumb trail for the current route, derived from the active match chain: one crumb per matched\n * route that declares a `staticData.name` (module → group → page). `homeTo` is the first allowed menu\n * page (same target as `FirstRouteRedirect`). Intermediate crumbs link only when they map to a real\n * navigable page; the last crumb (the current page) is always plain text.\n */\nexport function useBreadcrumbs(): { homeTo?: string; items: Breadcrumb[] } {\n const tree = useNavTree()\n const matches = useRouterState({ select: (s) => s.matches })\n const homeTo = firstNavTo(tree)\n const navigable = navigablePaths(tree)\n\n const items: Breadcrumb[] = []\n for (const match of matches) {\n const name = match.staticData?.name\n if (!name) continue\n const full = `/${trimSlashes(match.pathname)}`\n items.push({ label: name, to: navigable.has(full) ? full : undefined })\n }\n // The current page is where you already are — never a link.\n if (items.length > 0) items[items.length - 1] = { label: items[items.length - 1].label }\n return { homeTo, items }\n}\n\n/** Drop-in component for the `/` route: forwards to whatever sits FIRST in the menu. */\nexport function FirstRouteRedirect() {\n const to = useFirstNavTo()\n return to ? <Navigate to={to as LinkProps['to']} /> : null\n}\n\n/** Auto-generated navigation, derived from the routes' `staticData`. Rendered inside `RootLayout`. */\nexport function Sidebar() {\n const { links, modules } = useNavTree()\n const pathname = useRouterState({ select: (s) => s.location.pathname })\n\n return (\n <nav className={styles.nav}>\n {links.length > 0 ? (\n <List>\n {links.map((link) => (\n <NavLink\n key={link.to}\n as={Link}\n to={link.to}\n icon={link.icon}\n selected={pathname === link.to}\n clickable\n trailing={navTrailing(link.badge, link.dot)}\n >\n {link.label}\n </NavLink>\n ))}\n </List>\n ) : null}\n {modules.map((mod) => (\n <div className={styles.module} key={mod.module}>\n <div className={styles.moduleLabel}>{mod.module}</div>\n <List>\n {mod.groups.map((group) => (\n <NavGroupItem key={group.label} group={group} pathname={pathname} />\n ))}\n </List>\n </div>\n ))}\n </nav>\n )\n}\n\n/** A single searchable destination — a nav page flattened out of the tree, with a breadcrumb context. */\ninterface NavPage {\n label: string\n to: string\n /** Where it lives — e.g. `\"Components · Forms\"` — shown as the muted second line. */\n context?: string\n}\n\n/** Flatten the nav tree into every navigable page (top links + group pages + leaves). */\nfunction flattenPages(tree: { links: NavLeaf[]; modules: NavModule[] }): NavPage[] {\n const pages: NavPage[] = []\n for (const link of tree.links) pages.push({ label: link.label, to: link.to })\n for (const mod of tree.modules)\n for (const group of mod.groups) {\n if (group.to) pages.push({ label: group.label, to: group.to, context: mod.module })\n for (const leaf of group.children ?? [])\n pages.push({\n label: leaf.label,\n to: leaf.to,\n context: `${mod.module} · ${group.label}`,\n })\n }\n return pages\n}\n\nconst MAX_SEARCH_RESULTS = 8\n\n/**\n * Header search over the sidebar's pages — type to filter the nav (by page name or its section) and\n * pick a suggestion to jump there. Data comes from the same `useNavTree` the sidebar uses (so it\n * respects RBAC). Keyboard: Up/Down move, Enter opens, Escape closes. Rendered by `RootLayout`'s header.\n */\nexport function NavSearch() {\n const t = useT()\n const tree = useNavTree()\n const navigate = useNavigate()\n const pages = useMemo(() => flattenPages(tree), [tree])\n\n const [query, setQuery] = useState('')\n const [open, setOpen] = useState(false)\n const [active, setActive] = useState(0)\n const rootRef = useRef<HTMLDivElement | null>(null)\n\n const results = useMemo(() => {\n const q = query.trim().toLowerCase()\n if (!q) return []\n return pages\n .filter(\n (p) => p.label.toLowerCase().includes(q) || (p.context?.toLowerCase().includes(q) ?? false),\n )\n .slice(0, MAX_SEARCH_RESULTS)\n }, [pages, query])\n\n const showList = open && results.length > 0\n\n // reset the highlighted row whenever the query changes\n useEffect(() => setActive(0), [query])\n\n // clamp the highlight if the result set shrinks without a query change (e.g. RBAC pages update)\n useEffect(() => {\n setActive((a) => (a > results.length - 1 ? Math.max(0, results.length - 1) : a))\n }, [results.length])\n\n // close the suggestions on an outside pointerdown\n useEffect(() => {\n if (!open) return\n const onDown = (event: PointerEvent) => {\n if (rootRef.current && !rootRef.current.contains(event.target as Node)) setOpen(false)\n }\n document.addEventListener('pointerdown', onDown)\n return () => document.removeEventListener('pointerdown', onDown)\n }, [open])\n\n const go = (to: string) => {\n navigate({ to: to as LinkProps['to'] })\n setQuery('')\n setOpen(false)\n }\n\n const onKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (!showList) return\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n setActive((i) => (i + 1) % results.length)\n } else if (event.key === 'ArrowUp') {\n event.preventDefault()\n setActive((i) => (i - 1 + results.length) % results.length)\n } else if (event.key === 'Enter') {\n event.preventDefault()\n const hit = results[active]\n if (hit) go(hit.to)\n } else if (event.key === 'Escape') {\n setOpen(false)\n }\n }\n\n return (\n <div\n ref={rootRef}\n className={styles.search}\n role=\"combobox\"\n aria-expanded={showList}\n aria-haspopup=\"listbox\"\n >\n <TextField\n value={query}\n onChange={(event: ChangeEvent<HTMLInputElement>) => {\n setQuery(event.target.value)\n setOpen(true)\n }}\n onFocus={() => setOpen(true)}\n onKeyDown={onKeyDown}\n adornment={<Icon name=\"SearchNormal\" />}\n placeholder={t('sidebar.searchPages')}\n aria-label={t('sidebar.searchPages')}\n autoComplete=\"off\"\n />\n {showList ? (\n <div className={styles.searchPanel}>\n <List role=\"listbox\">\n {results.map((page, i) => (\n <ListItem\n key={page.to}\n description={page.context}\n clickable\n selected={i === active}\n // keep the input focused through the click so blur doesn't close the list first\n onMouseDown={(event: MouseEvent) => event.preventDefault()}\n onMouseEnter={() => setActive(i)}\n onClick={() => go(page.to)}\n >\n {page.label}\n </ListItem>\n ))}\n </List>\n </div>\n ) : null}\n </div>\n )\n}\n\nfunction groupIsActive(group: NavGroup, pathname: string): boolean {\n if (group.to && pathname === group.to) return true\n return group.children?.some((leaf) => leaf.to === pathname) ?? false\n}\n\n/** A small \"New\"-style pill rendered on a menu row from `staticData.badge`. */\nfunction navBadge(text?: string) {\n return text ? <span className={styles.navBadge}>{text}</span> : null\n}\n\n/** A small colored dot indicator on a menu row from `staticData.dot`. */\nfunction navDot(color?: ThemeColor) {\n return color ? (\n <span className={styles.navDot} style={{ background: `var(--tz-color-${color})` }} />\n ) : null\n}\n\n/** The menu row's trailing slot: dot + badge + an optional chevron (omitted entirely when empty). */\nfunction navTrailing(badge?: string, dot?: ThemeColor, chevron?: ReactNode): ReactNode {\n if (badge == null && dot == null && chevron == null) return undefined\n return (\n <>\n {navBadge(badge)}\n {navDot(dot)}\n {chevron}\n </>\n )\n}\n\nfunction NavGroupItem({ group, pathname }: { group: NavGroup; pathname: string }) {\n const active = groupIsActive(group, pathname)\n const hasChildren = !!group.children?.length\n const [open, setOpen] = useState(active)\n\n // re-open when navigation makes this group active via a path the mount-time seed missed\n // (NavSearch, Breadcrumbs, back/forward) — collapsing an active group hides the current page\n useEffect(() => {\n if (active) setOpen(true)\n }, [active])\n\n // a plain level-2 page (no children) — just a link row\n if (!hasChildren && group.to) {\n return (\n <NavLink\n as={Link}\n to={group.to}\n icon={group.icon}\n selected={active}\n clickable\n trailing={navTrailing(group.badge, group.dot)}\n >\n {group.label}\n </NavLink>\n )\n }\n\n const chevron = (\n <Icon\n name=\"ArrowDown4\"\n size=\"sm\"\n className={styles.chevron}\n data-open={open ? 'true' : 'false'}\n />\n )\n\n return (\n <>\n {hasChildren && group.to ? (\n // \"Case B\": the row navigates (and expands); a separate chevron only toggles.\n <NavLink\n as={Link}\n to={group.to}\n icon={group.icon}\n selected={active}\n clickable\n onClick={() => setOpen(true)}\n trailing={navTrailing(\n group.badge,\n group.dot,\n <button\n type=\"button\"\n className={styles.chevronButton}\n aria-label={`${open ? 'Collapse' : 'Expand'} ${group.label}`}\n aria-expanded={open}\n onClick={(event: MouseEvent) => {\n event.preventDefault()\n event.stopPropagation()\n setOpen((o) => !o)\n }}\n >\n {chevron}\n </button>,\n )}\n >\n {group.label}\n </NavLink>\n ) : (\n // a pure container — the whole row toggles its children\n <ListItem\n icon={group.icon}\n selected={active}\n clickable\n aria-expanded={open}\n onClick={() => setOpen((o) => !o)}\n trailing={navTrailing(group.badge, group.dot, chevron)}\n >\n {group.label}\n </ListItem>\n )}\n {hasChildren ? (\n // smooth collapse, same grid-template-rows technique as Card\n <div className={clsx(styles.collapsible, !open && styles.collapsibleClosed)}>\n <div className={styles.collapsibleInner}>\n <List className={styles.leaves}>\n {group.children?.map((leaf) => (\n <NavLink\n key={leaf.to}\n as={Link}\n to={leaf.to}\n icon={<span className={styles.leafDot} />}\n selected={pathname === leaf.to}\n size=\"md\"\n clickable\n trailing={navTrailing(leaf.badge, leaf.dot)}\n >\n {leaf.label}\n </NavLink>\n ))}\n </List>\n </div>\n </div>\n ) : null}\n </>\n )\n}\n"],"names":["NavLink","ListItem","prettify","seg","w","trimSlashes","p","byOrderThenLabel","a","b","buildNavTree","routes","entries","route","sd","path","metaByPath","e","paths","isContainer","o","rawFullPaths","r","groupHasOwnPage","groupKey","chrome","key","modules","getModule","mod","c","topLinks","name","segs","group","l","g","useNavTree","router","useRouter","accessKeys","useAccessKeys","useMemo","_a","hasAccess","firstNavTo","tree","firstChild","useFirstNavTo","usePageTitle","matches","useRouterState","s","i","_b","navigablePaths","set","link","leaf","useBreadcrumbs","homeTo","navigable","items","match","full","FirstRouteRedirect","to","jsx","Navigate","Sidebar","links","pathname","jsxs","styles","List","Link","navTrailing","NavGroupItem","flattenPages","pages","MAX_SEARCH_RESULTS","NavSearch","t","useT","navigate","useNavigate","query","setQuery","useState","open","setOpen","active","setActive","rootRef","useRef","results","q","showList","useEffect","onDown","event","go","onKeyDown","hit","TextField","Icon","page","groupIsActive","navBadge","text","navDot","color","badge","dot","chevron","Fragment","hasChildren","clsx"],"mappings":"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"}
|
package/dist/Sidebar-Csd3iKbS.js
DELETED
|
@@ -1,424 +0,0 @@
|
|
|
1
|
-
import { jsx as i, jsxs as z, Fragment as $ } from "react/jsx-runtime";
|
|
2
|
-
import { useMemo as y, useState as C, useRef as R, useEffect as P } from "react";
|
|
3
|
-
import { Navigate as M, useRouterState as x, Link as k, useRouter as B, useNavigate as O } from "@tanstack/react-router";
|
|
4
|
-
import { clsx as j } from "clsx";
|
|
5
|
-
import { I as E } from "./Icon-CophpkHo.js";
|
|
6
|
-
import { L as T } from "./List-LqbfF6gU.js";
|
|
7
|
-
import { L as S } from "./ListItem-B4Upc0Hy.js";
|
|
8
|
-
import { T as K } from "./TextField-Bg4TwkVD.js";
|
|
9
|
-
import { u as V, h as Y } from "./access-Db4knwyR.js";
|
|
10
|
-
import { a as U } from "./ConfigProvider-BYruQYHC.js";
|
|
11
|
-
const q = "_nav_a1zzi_4", H = "_module_a1zzi_17", G = "_search_a1zzi_25", Q = "_searchPanel_a1zzi_31", W = "_moduleLabel_a1zzi_46", X = "_leaves_a1zzi_61", J = "_navBadge_a1zzi_66", Z = "_navDot_a1zzi_78", ee = "_leafDot_a1zzi_86", te = "_collapsible_a1zzi_95", oe = "_collapsibleClosed_a1zzi_100", ne = "_collapsibleInner_a1zzi_103", ae = "_chevron_a1zzi_109", se = "_chevronButton_a1zzi_119", b = {
|
|
12
|
-
nav: q,
|
|
13
|
-
module: H,
|
|
14
|
-
search: G,
|
|
15
|
-
searchPanel: Q,
|
|
16
|
-
moduleLabel: W,
|
|
17
|
-
leaves: X,
|
|
18
|
-
navBadge: J,
|
|
19
|
-
navDot: Z,
|
|
20
|
-
leafDot: ee,
|
|
21
|
-
collapsible: te,
|
|
22
|
-
collapsibleClosed: oe,
|
|
23
|
-
collapsibleInner: ne,
|
|
24
|
-
chevron: ae,
|
|
25
|
-
chevronButton: se
|
|
26
|
-
}, w = S, le = (e) => e.split("-").map((a) => a.charAt(0).toUpperCase() + a.slice(1)).join(" "), F = (e) => e.replace(/^\/+|\/+$/g, ""), D = (e, a) => e.order - a.order || e.label.localeCompare(a.label);
|
|
27
|
-
function ce(e) {
|
|
28
|
-
const a = [];
|
|
29
|
-
for (const o of e) {
|
|
30
|
-
const c = o.staticData, n = F(o.fullPath);
|
|
31
|
-
!(c != null && c.name) || !n || a.push({ path: n, name: c.name, sd: c });
|
|
32
|
-
}
|
|
33
|
-
const s = new Map(a.map((o) => [o.path, o])), t = a.map((o) => o.path), l = (o) => t.some((c) => c !== o && c.startsWith(`${o}/`)), f = new Set(e.map((o) => o.fullPath)), m = (o) => f.has(`/${o}/`), h = (o, c) => {
|
|
34
|
-
const n = s.get(o);
|
|
35
|
-
return {
|
|
36
|
-
label: (n == null ? void 0 : n.name) ?? le(c),
|
|
37
|
-
icon: n == null ? void 0 : n.sd.icon,
|
|
38
|
-
badge: n == null ? void 0 : n.sd.badge,
|
|
39
|
-
dot: n == null ? void 0 : n.sd.dot,
|
|
40
|
-
order: (n == null ? void 0 : n.sd.order) ?? Number.POSITIVE_INFINITY
|
|
41
|
-
};
|
|
42
|
-
}, p = /* @__PURE__ */ new Map(), u = (o) => {
|
|
43
|
-
let c = p.get(o);
|
|
44
|
-
if (!c) {
|
|
45
|
-
const n = h(o, o);
|
|
46
|
-
c = { label: n.label, icon: n.icon, order: n.order, groups: /* @__PURE__ */ new Map() }, p.set(o, c);
|
|
47
|
-
}
|
|
48
|
-
return c;
|
|
49
|
-
}, g = [];
|
|
50
|
-
for (const { path: o, name: c, sd: n } of a) {
|
|
51
|
-
const _ = o.split("/");
|
|
52
|
-
if (_.length <= 2 && l(o) || n.hidden) continue;
|
|
53
|
-
if (_.length === 1) {
|
|
54
|
-
g.push({
|
|
55
|
-
label: c,
|
|
56
|
-
to: `/${o}`,
|
|
57
|
-
icon: n.icon,
|
|
58
|
-
badge: n.badge,
|
|
59
|
-
dot: n.dot,
|
|
60
|
-
order: n.order ?? Number.POSITIVE_INFINITY
|
|
61
|
-
});
|
|
62
|
-
continue;
|
|
63
|
-
}
|
|
64
|
-
const r = u(_[0]);
|
|
65
|
-
if (_.length === 2)
|
|
66
|
-
r.groups.set(o, {
|
|
67
|
-
label: c,
|
|
68
|
-
icon: n.icon,
|
|
69
|
-
to: `/${o}`,
|
|
70
|
-
badge: n.badge,
|
|
71
|
-
dot: n.dot,
|
|
72
|
-
order: n.order ?? Number.POSITIVE_INFINITY,
|
|
73
|
-
leaves: [],
|
|
74
|
-
isContainer: !1
|
|
75
|
-
});
|
|
76
|
-
else {
|
|
77
|
-
const d = _.slice(0, 2).join("/");
|
|
78
|
-
let v = r.groups.get(d);
|
|
79
|
-
if (!v) {
|
|
80
|
-
const N = h(d, _[1]);
|
|
81
|
-
v = {
|
|
82
|
-
label: N.label,
|
|
83
|
-
icon: N.icon,
|
|
84
|
-
badge: N.badge,
|
|
85
|
-
dot: N.dot,
|
|
86
|
-
order: N.order,
|
|
87
|
-
to: m(d) ? `/${d}` : void 0,
|
|
88
|
-
leaves: [],
|
|
89
|
-
isContainer: !0
|
|
90
|
-
}, r.groups.set(d, v);
|
|
91
|
-
}
|
|
92
|
-
v.leaves.push({
|
|
93
|
-
label: c,
|
|
94
|
-
to: `/${o}`,
|
|
95
|
-
icon: n.icon,
|
|
96
|
-
badge: n.badge,
|
|
97
|
-
dot: n.dot,
|
|
98
|
-
order: n.order ?? Number.POSITIVE_INFINITY
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
return {
|
|
103
|
-
links: g.sort(D).map((o) => ({ label: o.label, to: o.to, icon: o.icon, badge: o.badge, dot: o.dot })),
|
|
104
|
-
modules: [...p.values()].sort(D).map(
|
|
105
|
-
(o) => ({
|
|
106
|
-
module: o.label,
|
|
107
|
-
icon: o.icon,
|
|
108
|
-
groups: [...o.groups.values()].sort(D).map(
|
|
109
|
-
(c) => ({
|
|
110
|
-
label: c.label,
|
|
111
|
-
icon: c.icon,
|
|
112
|
-
to: c.to,
|
|
113
|
-
badge: c.badge,
|
|
114
|
-
dot: c.dot,
|
|
115
|
-
children: c.isContainer ? c.leaves.sort(D).map((n) => ({
|
|
116
|
-
label: n.label,
|
|
117
|
-
to: n.to,
|
|
118
|
-
icon: n.icon,
|
|
119
|
-
badge: n.badge,
|
|
120
|
-
dot: n.dot
|
|
121
|
-
})) : void 0
|
|
122
|
-
})
|
|
123
|
-
)
|
|
124
|
-
})
|
|
125
|
-
)
|
|
126
|
-
};
|
|
127
|
-
}
|
|
128
|
-
function L() {
|
|
129
|
-
const e = B(), a = V();
|
|
130
|
-
return y(
|
|
131
|
-
() => ce(
|
|
132
|
-
Object.values(e.looseRoutesById).map((s) => {
|
|
133
|
-
var t;
|
|
134
|
-
return {
|
|
135
|
-
fullPath: s.fullPath,
|
|
136
|
-
staticData: (t = s.options) == null ? void 0 : t.staticData
|
|
137
|
-
};
|
|
138
|
-
}).filter((s) => {
|
|
139
|
-
var t;
|
|
140
|
-
return Y((t = s.staticData) == null ? void 0 : t.roles);
|
|
141
|
-
})
|
|
142
|
-
),
|
|
143
|
-
[e, a]
|
|
144
|
-
);
|
|
145
|
-
}
|
|
146
|
-
function A(e) {
|
|
147
|
-
var a;
|
|
148
|
-
if (e.links[0]) return e.links[0].to;
|
|
149
|
-
for (const s of e.modules)
|
|
150
|
-
for (const t of s.groups) {
|
|
151
|
-
if (t.to) return t.to;
|
|
152
|
-
const l = (a = t.children) == null ? void 0 : a[0];
|
|
153
|
-
if (l) return l.to;
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
function re() {
|
|
157
|
-
return A(L());
|
|
158
|
-
}
|
|
159
|
-
function ke() {
|
|
160
|
-
var s, t;
|
|
161
|
-
const e = B(), a = x({ select: (l) => l.matches });
|
|
162
|
-
for (let l = a.length - 1; l >= 0; l--) {
|
|
163
|
-
const f = e.looseRoutesById[a[l].routeId], m = (t = (s = f == null ? void 0 : f.options) == null ? void 0 : s.staticData) == null ? void 0 : t.name;
|
|
164
|
-
if (m) return m;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
function ie(e) {
|
|
168
|
-
const a = /* @__PURE__ */ new Set();
|
|
169
|
-
for (const s of e.links) a.add(s.to);
|
|
170
|
-
for (const s of e.modules)
|
|
171
|
-
for (const t of s.groups) {
|
|
172
|
-
t.to && a.add(t.to);
|
|
173
|
-
for (const l of t.children ?? []) a.add(l.to);
|
|
174
|
-
}
|
|
175
|
-
return a;
|
|
176
|
-
}
|
|
177
|
-
function we() {
|
|
178
|
-
var f;
|
|
179
|
-
const e = L(), a = x({ select: (m) => m.matches }), s = A(e), t = ie(e), l = [];
|
|
180
|
-
for (const m of a) {
|
|
181
|
-
const h = (f = m.staticData) == null ? void 0 : f.name;
|
|
182
|
-
if (!h) continue;
|
|
183
|
-
const p = `/${F(m.pathname)}`;
|
|
184
|
-
l.push({ label: h, to: t.has(p) ? p : void 0 });
|
|
185
|
-
}
|
|
186
|
-
return l.length > 0 && (l[l.length - 1] = { label: l[l.length - 1].label }), { homeTo: s, items: l };
|
|
187
|
-
}
|
|
188
|
-
function Te() {
|
|
189
|
-
const e = re();
|
|
190
|
-
return e ? /* @__PURE__ */ i(M, { to: e }) : null;
|
|
191
|
-
}
|
|
192
|
-
function Le() {
|
|
193
|
-
const { links: e, modules: a } = L(), s = x({ select: (t) => t.location.pathname });
|
|
194
|
-
return /* @__PURE__ */ z("nav", { className: b.nav, children: [
|
|
195
|
-
e.length > 0 ? /* @__PURE__ */ i(T, { children: e.map((t) => /* @__PURE__ */ i(
|
|
196
|
-
w,
|
|
197
|
-
{
|
|
198
|
-
as: k,
|
|
199
|
-
to: t.to,
|
|
200
|
-
icon: t.icon,
|
|
201
|
-
selected: s === t.to,
|
|
202
|
-
clickable: !0,
|
|
203
|
-
trailing: I(t.badge, t.dot),
|
|
204
|
-
children: t.label
|
|
205
|
-
},
|
|
206
|
-
t.to
|
|
207
|
-
)) }) : null,
|
|
208
|
-
a.map((t) => /* @__PURE__ */ z("div", { className: b.module, children: [
|
|
209
|
-
/* @__PURE__ */ i("div", { className: b.moduleLabel, children: t.module }),
|
|
210
|
-
/* @__PURE__ */ i(T, { children: t.groups.map((l) => /* @__PURE__ */ i(be, { group: l, pathname: s }, l.label)) })
|
|
211
|
-
] }, t.module))
|
|
212
|
-
] });
|
|
213
|
-
}
|
|
214
|
-
function de(e) {
|
|
215
|
-
const a = [];
|
|
216
|
-
for (const s of e.links) a.push({ label: s.label, to: s.to });
|
|
217
|
-
for (const s of e.modules)
|
|
218
|
-
for (const t of s.groups) {
|
|
219
|
-
t.to && a.push({ label: t.label, to: t.to, context: s.module });
|
|
220
|
-
for (const l of t.children ?? [])
|
|
221
|
-
a.push({
|
|
222
|
-
label: l.label,
|
|
223
|
-
to: l.to,
|
|
224
|
-
context: `${s.module} · ${t.label}`
|
|
225
|
-
});
|
|
226
|
-
}
|
|
227
|
-
return a;
|
|
228
|
-
}
|
|
229
|
-
const ue = 8;
|
|
230
|
-
function ye() {
|
|
231
|
-
const e = U(), a = L(), s = O(), t = y(() => de(a), [a]), [l, f] = C(""), [m, h] = C(!1), [p, u] = C(0), g = R(null), o = y(() => {
|
|
232
|
-
const r = l.trim().toLowerCase();
|
|
233
|
-
return r ? t.filter(
|
|
234
|
-
(d) => {
|
|
235
|
-
var v;
|
|
236
|
-
return d.label.toLowerCase().includes(r) || (((v = d.context) == null ? void 0 : v.toLowerCase().includes(r)) ?? !1);
|
|
237
|
-
}
|
|
238
|
-
).slice(0, ue) : [];
|
|
239
|
-
}, [t, l]), c = m && o.length > 0;
|
|
240
|
-
P(() => u(0), [l]), P(() => {
|
|
241
|
-
u((r) => r > o.length - 1 ? Math.max(0, o.length - 1) : r);
|
|
242
|
-
}, [o.length]), P(() => {
|
|
243
|
-
if (!m) return;
|
|
244
|
-
const r = (d) => {
|
|
245
|
-
g.current && !g.current.contains(d.target) && h(!1);
|
|
246
|
-
};
|
|
247
|
-
return document.addEventListener("pointerdown", r), () => document.removeEventListener("pointerdown", r);
|
|
248
|
-
}, [m]);
|
|
249
|
-
const n = (r) => {
|
|
250
|
-
s({ to: r }), f(""), h(!1);
|
|
251
|
-
}, _ = (r) => {
|
|
252
|
-
if (c)
|
|
253
|
-
if (r.key === "ArrowDown")
|
|
254
|
-
r.preventDefault(), u((d) => (d + 1) % o.length);
|
|
255
|
-
else if (r.key === "ArrowUp")
|
|
256
|
-
r.preventDefault(), u((d) => (d - 1 + o.length) % o.length);
|
|
257
|
-
else if (r.key === "Enter") {
|
|
258
|
-
r.preventDefault();
|
|
259
|
-
const d = o[p];
|
|
260
|
-
d && n(d.to);
|
|
261
|
-
} else r.key === "Escape" && h(!1);
|
|
262
|
-
};
|
|
263
|
-
return /* @__PURE__ */ z(
|
|
264
|
-
"div",
|
|
265
|
-
{
|
|
266
|
-
ref: g,
|
|
267
|
-
className: b.search,
|
|
268
|
-
role: "combobox",
|
|
269
|
-
"aria-expanded": c,
|
|
270
|
-
"aria-haspopup": "listbox",
|
|
271
|
-
children: [
|
|
272
|
-
/* @__PURE__ */ i(
|
|
273
|
-
K,
|
|
274
|
-
{
|
|
275
|
-
value: l,
|
|
276
|
-
onChange: (r) => {
|
|
277
|
-
f(r.target.value), h(!0);
|
|
278
|
-
},
|
|
279
|
-
onFocus: () => h(!0),
|
|
280
|
-
onKeyDown: _,
|
|
281
|
-
adornment: /* @__PURE__ */ i(E, { name: "SearchNormal" }),
|
|
282
|
-
placeholder: e("sidebar.searchPages"),
|
|
283
|
-
"aria-label": e("sidebar.searchPages"),
|
|
284
|
-
autoComplete: "off"
|
|
285
|
-
}
|
|
286
|
-
),
|
|
287
|
-
c ? /* @__PURE__ */ i("div", { className: b.searchPanel, children: /* @__PURE__ */ i(T, { role: "listbox", children: o.map((r, d) => /* @__PURE__ */ i(
|
|
288
|
-
S,
|
|
289
|
-
{
|
|
290
|
-
description: r.context,
|
|
291
|
-
clickable: !0,
|
|
292
|
-
selected: d === p,
|
|
293
|
-
onMouseDown: (v) => v.preventDefault(),
|
|
294
|
-
onMouseEnter: () => u(d),
|
|
295
|
-
onClick: () => n(r.to),
|
|
296
|
-
children: r.label
|
|
297
|
-
},
|
|
298
|
-
r.to
|
|
299
|
-
)) }) }) : null
|
|
300
|
-
]
|
|
301
|
-
}
|
|
302
|
-
);
|
|
303
|
-
}
|
|
304
|
-
function fe(e, a) {
|
|
305
|
-
var s;
|
|
306
|
-
return e.to && a === e.to ? !0 : ((s = e.children) == null ? void 0 : s.some((t) => t.to === a)) ?? !1;
|
|
307
|
-
}
|
|
308
|
-
function me(e) {
|
|
309
|
-
return e ? /* @__PURE__ */ i("span", { className: b.navBadge, children: e }) : null;
|
|
310
|
-
}
|
|
311
|
-
function he(e) {
|
|
312
|
-
return e ? /* @__PURE__ */ i("span", { className: b.navDot, style: { background: `var(--tz-color-${e})` } }) : null;
|
|
313
|
-
}
|
|
314
|
-
function I(e, a, s) {
|
|
315
|
-
if (!(e == null && a == null && s == null))
|
|
316
|
-
return /* @__PURE__ */ z($, { children: [
|
|
317
|
-
me(e),
|
|
318
|
-
he(a),
|
|
319
|
-
s
|
|
320
|
-
] });
|
|
321
|
-
}
|
|
322
|
-
function be({ group: e, pathname: a }) {
|
|
323
|
-
var h, p;
|
|
324
|
-
const s = fe(e, a), t = !!((h = e.children) != null && h.length), [l, f] = C(s);
|
|
325
|
-
if (P(() => {
|
|
326
|
-
s && f(!0);
|
|
327
|
-
}, [s]), !t && e.to)
|
|
328
|
-
return /* @__PURE__ */ i(
|
|
329
|
-
w,
|
|
330
|
-
{
|
|
331
|
-
as: k,
|
|
332
|
-
to: e.to,
|
|
333
|
-
icon: e.icon,
|
|
334
|
-
selected: s,
|
|
335
|
-
clickable: !0,
|
|
336
|
-
trailing: I(e.badge, e.dot),
|
|
337
|
-
children: e.label
|
|
338
|
-
}
|
|
339
|
-
);
|
|
340
|
-
const m = /* @__PURE__ */ i(
|
|
341
|
-
E,
|
|
342
|
-
{
|
|
343
|
-
name: "ArrowDown4",
|
|
344
|
-
size: "sm",
|
|
345
|
-
className: b.chevron,
|
|
346
|
-
"data-open": l ? "true" : "false"
|
|
347
|
-
}
|
|
348
|
-
);
|
|
349
|
-
return /* @__PURE__ */ z($, { children: [
|
|
350
|
-
t && e.to ? (
|
|
351
|
-
// "Case B": the row navigates (and expands); a separate chevron only toggles.
|
|
352
|
-
/* @__PURE__ */ i(
|
|
353
|
-
w,
|
|
354
|
-
{
|
|
355
|
-
as: k,
|
|
356
|
-
to: e.to,
|
|
357
|
-
icon: e.icon,
|
|
358
|
-
selected: s,
|
|
359
|
-
clickable: !0,
|
|
360
|
-
onClick: () => f(!0),
|
|
361
|
-
trailing: I(
|
|
362
|
-
e.badge,
|
|
363
|
-
e.dot,
|
|
364
|
-
/* @__PURE__ */ i(
|
|
365
|
-
"button",
|
|
366
|
-
{
|
|
367
|
-
type: "button",
|
|
368
|
-
className: b.chevronButton,
|
|
369
|
-
"aria-label": `${l ? "Collapse" : "Expand"} ${e.label}`,
|
|
370
|
-
"aria-expanded": l,
|
|
371
|
-
onClick: (u) => {
|
|
372
|
-
u.preventDefault(), u.stopPropagation(), f((g) => !g);
|
|
373
|
-
},
|
|
374
|
-
children: m
|
|
375
|
-
}
|
|
376
|
-
)
|
|
377
|
-
),
|
|
378
|
-
children: e.label
|
|
379
|
-
}
|
|
380
|
-
)
|
|
381
|
-
) : (
|
|
382
|
-
// a pure container — the whole row toggles its children
|
|
383
|
-
/* @__PURE__ */ i(
|
|
384
|
-
S,
|
|
385
|
-
{
|
|
386
|
-
icon: e.icon,
|
|
387
|
-
selected: s,
|
|
388
|
-
clickable: !0,
|
|
389
|
-
"aria-expanded": l,
|
|
390
|
-
onClick: () => f((u) => !u),
|
|
391
|
-
trailing: I(e.badge, e.dot, m),
|
|
392
|
-
children: e.label
|
|
393
|
-
}
|
|
394
|
-
)
|
|
395
|
-
),
|
|
396
|
-
t ? (
|
|
397
|
-
// smooth collapse, same grid-template-rows technique as Card
|
|
398
|
-
/* @__PURE__ */ i("div", { className: j(b.collapsible, !l && b.collapsibleClosed), children: /* @__PURE__ */ i("div", { className: b.collapsibleInner, children: /* @__PURE__ */ i(T, { className: b.leaves, children: (p = e.children) == null ? void 0 : p.map((u) => /* @__PURE__ */ i(
|
|
399
|
-
w,
|
|
400
|
-
{
|
|
401
|
-
as: k,
|
|
402
|
-
to: u.to,
|
|
403
|
-
icon: /* @__PURE__ */ i("span", { className: b.leafDot }),
|
|
404
|
-
selected: a === u.to,
|
|
405
|
-
size: "md",
|
|
406
|
-
clickable: !0,
|
|
407
|
-
trailing: I(u.badge, u.dot),
|
|
408
|
-
children: u.label
|
|
409
|
-
},
|
|
410
|
-
u.to
|
|
411
|
-
)) }) }) })
|
|
412
|
-
) : null
|
|
413
|
-
] });
|
|
414
|
-
}
|
|
415
|
-
export {
|
|
416
|
-
Te as F,
|
|
417
|
-
ye as N,
|
|
418
|
-
Le as S,
|
|
419
|
-
ke as a,
|
|
420
|
-
ce as b,
|
|
421
|
-
A as f,
|
|
422
|
-
we as u
|
|
423
|
-
};
|
|
424
|
-
//# sourceMappingURL=Sidebar-Csd3iKbS.js.map
|