@xyo-network/react-appbar 2.78.0 → 2.78.2
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/browser/index.cjs +563 -1
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.js +540 -1
- package/dist/browser/index.js.map +1 -1
- package/dist/neutral/index.cjs +563 -1
- package/dist/neutral/index.cjs.map +1 -1
- package/dist/neutral/index.js +540 -1
- package/dist/neutral/index.js.map +1 -1
- package/dist/node/index.cjs +581 -1
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.js +540 -1
- package/dist/node/index.js.map +1 -1
- package/package.json +8 -8
package/dist/neutral/index.js
CHANGED
@@ -1,2 +1,541 @@
|
|
1
|
-
import{AppBarEx as jo}from"@xylabs/react-appbar";import{Toolbar as xo}from"@mui/material";import{Typography as io,useTheme as po}from"@mui/material";import{FlexRow as ao}from"@xylabs/react-flexbox";import{LinkEx as mo}from"@xylabs/react-link";import{useTheme as no}from"@mui/material";import{jsx as lo}from"react/jsx-runtime";var F=o=>{let r=(no().palette.mode==="dark","https://cdn.xy.company/img/brand/XYO/XYO_icon_white.svg");return lo("img",{src:r,...o})};import{jsx as y,jsxs as co}from"react/jsx-runtime";var M=({to:o="/",version:e=!1,...r})=>{let t=po();return y(mo,{to:o,...r,children:co(ao,{paddingX:"4px",children:[y(F,{height:"40",width:"43"}),e?y(io,{position:"absolute",borderRadius:1,right:6,color:t.palette.getContrastText(t.palette.text.primary),bottom:0,bgcolor:t.palette.text.primary,paddingX:"2px",lineHeight:1,variant:"caption",border:`1px ${t.palette.getContrastText(t.palette.primary.main)} solid`,children:typeof e=="string"?e:"2.1"}):null]})})};import{jsx as E}from"react/jsx-runtime";var B=({logoTo:o="/",version:e=!1,...r})=>E(xo,{...r,children:E(M,{version:e,to:o})});import{Paper as _o,Toolbar as Ko}from"@mui/material";import{FlexRow as Qo}from"@xylabs/react-flexbox";import{DarkModeIconButton as qo}from"@xyo-network/react-app-settings";import{NetworkSelectEx as Jo}from"@xyo-network/react-network";import{useMemo as go}from"react";import{useEffect as N,useState as k}from"react";import{createContextEx as uo}from"@xyo-network/react-shared";var f=uo();import{jsx as fo}from"react/jsx-runtime";var Qe=({defaultCollapse:o=!1,defaultCollapseEnd:e=!1,children:r})=>{let[t,s]=k(o),[n,l]=k(e);return N(()=>{s(o)},[o]),N(()=>{l(e)},[e]),fo(f.Provider,{value:{collapse:t,collapseEnd:n,provided:!0,setCollapse:s,setCollapseEnd:l},children:r})};import{useContextEx as Co}from"@xyo-network/react-shared";var p=()=>Co(f,"Collapsible",!1);var rt=()=>{let{collapse:o,collapseEnd:e,setCollapse:r,setCollapseEnd:t}=p(),s=l=>{r?.(i=>l?!1:i),t?.(i=>l?!1:i)};return{defaultSiteMenuListItemProps:go(()=>({collapseEnd:e,dense:!0,iconOnly:o,sx:{px:"8px"}}),[o,e]),onMenuItemToggle:s}};import{Menu as ko,Settings as Do}from"@mui/icons-material";import{IconButton as Wo,List as Oo,SwipeableDrawer as Ao}from"@mui/material";import{FlexRow as $o}from"@xylabs/react-flexbox";import{useEffect as zo,useState as Uo}from"react";import{ListItemText as Mo,useTheme as Eo}from"@mui/material";import{FlexRow as H}from"@xylabs/react-flexbox";import{LinkEx as Bo}from"@xylabs/react-link";import{useState as X}from"react";import{Tooltip as So}from"@mui/material";import{FlexCol as Po}from"@xylabs/react-flexbox";import{VscInfo as bo}from"react-icons/vsc";import{jsx as C}from"react/jsx-runtime";var D=({title:o,...e})=>C(So,{title:o,placement:"right",...e,children:C("div",{children:C(Po,{justifyContent:"center",children:C(bo,{color:"grey"})})})});import{Typography as yo}from"@mui/material";import{jsx as ho}from"react/jsx-runtime";var W=({icon:o,...e})=>ho(yo,{display:"flex",...e,children:o});import{ListItem as Io}from"@mui/material";import{jsx as To}from"react/jsx-runtime";var O=({iconOnly:o,collapseEnd:e,sx:r,children:t,dense:s,...n})=>To(Io,{sx:{...o?{borderRadius:"50%",display:"inline-flex",flexGrow:0,width:"auto"}:{width:"100%"},...e?{columnGap:0}:{columnGap:1.5},...s?{px:"8px"}:{px:"12px"},...r},...n,children:t});import{Collapse as Lo,List as Ro}from"@mui/material";import{jsx as A}from"react/jsx-runtime";var $=({collapse:o,openSubNav:e,children:r,...t})=>A(Lo,{in:o==!0?!1:e,...t,children:A(Ro,{children:r})});import{IconButton as vo,useTheme as wo}from"@mui/material";import{VscChevronDown as Fo}from"react-icons/vsc";import{jsx as z}from"react/jsx-runtime";var U=({setOpenSubNav:o,openSubNav:e})=>{let r=wo();return z(vo,{onClick:t=>{t.stopPropagation(),o?.(!e)},sx:{marginRight:r.spacing(.5)},children:z(Fo,{fontSize:"16px"})})};import{Fragment as No,jsx as a,jsxs as g}from"react/jsx-runtime";var d=({style:o,icon:e,iconMenuTextSpacing:r,iconOnly:t,onButtonClick:s,primary:n,subNavListItems:l,sx:i,tooltip:c,to:Z,...L})=>{let{dense:R}=L,b=Eo(),{collapse:j}=p(),[v,oo]=X(!1),[eo,w]=X(!1),to=r??b.spacing(1);return g(No,{children:[g(O,{disableGutters:!0,iconOnly:t,onClick:s,dense:R,sx:{justifyContent:"space-between",...i},style:{whiteSpace:"nowrap",...o},...L,children:[a(Bo,{onMouseEnter:()=>w(!0),onMouseLeave:()=>w(!1),color:"inherit",to:Z,sx:{"& :hover":{cursor:"pointer",textDecoration:"underline"}},children:g(H,{children:[a(W,{icon:e,paddingRight:to,color:eo?"secondary":"inherit"}),a(Mo,{primary:n})]})}),g(H,{style:{marginLeft:b.spacing(1)},children:[l?a(U,{setOpenSubNav:oo,openSubNav:v}):null,c?a(D,{title:c}):null]})]}),l?a($,{openSubNav:v,collapse:j,children:l?.map((ro,so)=>a(d,{dense:R,sx:{pl:b.spacing(1)},...ro},so))}):null]})};import{jsx as x,jsxs as Ho}from"react/jsx-runtime";var G=({children:o,onMenuToggle:e,side:r="right",...t})=>{let[s,n]=Uo(!1);return zo(()=>{e?.(s)},[e,s]),Ho($o,{alignItems:"stretch",...t,children:[x(Wo,{size:"small",color:"inherit",onClick:()=>{n(!s)},children:x(ko,{fontSize:"large"})}),x(Ao,{anchor:r,open:s,onClick:()=>n(!1),onKeyDown:()=>n(!1),onClose:()=>n(!1),onOpen:()=>n(!0),children:o??x(Oo,{children:x(d,{primary:"Settings",icon:x(Do,{}),to:"/settings"})})})]})};import{Collapse as Xo,ListSubheader as Go}from"@mui/material";import{FlexCol as Vo}from"@xylabs/react-flexbox";import{jsx as h,jsxs as Yo}from"react/jsx-runtime";var Jt=({iconMenuTextSpacing:o,listItems:e,showTitle:r=!0,title:t,...s})=>Yo(Vo,{alignItems:"stretch",...s,children:[h(Xo,{in:r,timeout:700,children:h(Go,{children:t})}),e.map((n,l)=>h(d,{iconMenuTextSpacing:o,...n},l))]});import{jsx as u,jsxs as Zo}from"react/jsx-runtime";var V=({children:o,darkModeButton:e=!1,hideNetworkSelect:r,menuItems:t,networkSelectProps:s,onMenuToggle:n,precedingChildren:l,...i})=>Zo(Ko,{...i,children:[l,r?null:u(Qo,{marginX:.5,children:u(_o,{variant:"elevation",children:u(Jo,{fullWidth:!0,...s})})}),o,e?u(qo,{color:"inherit"}):null,t?u(G,{onMenuToggle:n,children:t}):null]});import{jsx as I}from"react/jsx-runtime";var dr=({systemToolbar:o,contextToolbar:e,responsive:r=!0,...t})=>I(jo,{systemToolbar:o??I(V,{}),contextToolbar:e??I(B,{}),position:"sticky",responsive:r,...t});import{Icon as oe,useTheme as ee}from"@mui/material";import{FlexRow as te}from"@xylabs/react-flexbox";import{useState as re}from"react";import{VscArrowSmallLeft as se,VscArrowSmallRight as ne}from"react-icons/vsc";import{jsx as S}from"react/jsx-runtime";var hr=o=>{let{collapse:e,setCollapse:r,setCollapseEnd:t}=p(),[s,n]=re(!1),l=ee();return S(te,{mt:2,py:2,justifyContent:e?"start":"center",...o,children:S(oe,{onClick:()=>{r?.(!e),t?.(c=>c&&!1)},onMouseEnter:()=>n(!0),onMouseLeave:()=>n(!1),fontSize:"large",sx:{color:s?l.palette.secondary.main:"inherit",cursor:"pointer"},children:e?S(ne,{}):S(se,{})})})};import{Collapse as le,styled as ie,useTheme as pe}from"@mui/material";import{jsx as me}from"react/jsx-runtime";var wr=({children:o,sx:e,...r})=>{let{collapse:t,setCollapseEnd:s}=p(),n=pe(),l=r.collapsedSize??n.spacing(5);return me(ae,{in:!t,orientation:"horizontal",collapsedSize:l,onExited:()=>s?.(!0),sx:{alignItems:"start",display:"flex",height:"100%",...e},...r,children:o})},ae=ie(le)(()=>({"& .MuiCollapse-wrapperInner":{display:"flex",flexDirection:"column"}}));import{FlexCol as he}from"@xylabs/react-flexbox";import{styled as ye}from"@mui/material";var ce=(t=>(t.Left="Left",t.Right="Right",t.WindowShade="WindowShade",t))(ce||{});import{Paper as Ce,useMediaQuery as ge}from"@mui/material";import{FlexCol as K,FlexRow as Se}from"@xylabs/react-flexbox";import{NetworkSelectEx as Pe}from"@xyo-network/react-network";import{Collapse as xe}from"@mui/material";import{FlexCol as de,FlexRow as Y}from"@xylabs/react-flexbox";import{useState as ue}from"react";import{jsx as T,jsxs as fe}from"react/jsx-runtime";var _=({children:o,controlElement:e,systemControlsType:r="WindowShade",...t})=>{let[s,n]=ue(!1),l="vertical";switch(r){case"Left":{l="horizontal";break}}return fe(Y,{className:"controls",...t,children:[T(xe,{in:s,orientation:l,timeout:500,children:T(Y,{bgcolor:"primary.main",className:"control",children:e})}),T(de,{style:{cursor:"pointer"},onClick:()=>n(!s),children:o})]})};import{Fragment as be,jsx as m}from"react/jsx-runtime";var Q=({visible:o,systemControlsType:e="WindowShade",...r})=>{let t=ge(s=>s.breakpoints.down("sm"));return o||t?m(K,{...r,className:`${r.className} system-controls-type-${e}`,children:m(_,{systemControlsType:e,controlElement:m(be,{children:m(Se,{className:"control-wrap",children:m(Ce,{variant:"elevation",elevation:0,children:m(Pe,{responsive:!1,className:"network-ex"})})})})})}):m(K,{})};var q=ye(Q,{name:"SystemControls",slot:"Root"})(({theme:o})=>({"&":{".toggle":{backgroundColor:o.palette.primary.main},alignItems:"start",zIndex:1},["&.system-controls-type-WindowShade"]:{".control":{borderRadius:"0 0 5px 5px",flexDirection:"row",flexGrow:1,justifyContent:"space-around",padding:`${o.spacing(2)} ${o.spacing(2.5)}`},".controls":{alignItems:"stretch",flexDirection:"column",flexGrow:1},".toggle":{borderRadius:"0 0 5px 5px",padding:`${o.spacing(.5)} ${o.spacing(1)}`},flexDirection:"row",position:"absolute",top:0,width:"100%"},["&.system-controls-type-Left"]:{".control":{alignItems:"start",flexDirection:"column",padding:`${o.spacing(2)} ${o.spacing(2.5)}`},".control-wrap":{marginBottom:`${o.spacing(2)}`},".toggle":{borderRadius:"0 5px 5px 0",padding:`${o.spacing(1)} ${o.spacing(.5)}`,writingMode:"vertical-rl"},flexDirection:"column",left:0,position:"fixed",top:"30vh",width:"auto"}}));import{jsx as J}from"react/jsx-runtime";var jr=o=>J(he,{children:J(q,{...o})});import{Search as Ie}from"@mui/icons-material";import{Paper as Te,TextField as Le}from"@mui/material";import{ButtonEx as Re}from"@xylabs/react-button";import{FlexRow as ve}from"@xylabs/react-flexbox";import{useState as we}from"react";import{jsx as P,jsxs as Fe}from"react/jsx-runtime";var ps=({defaultValue:o,onSearch:e,...r})=>{let[t,s]=we();return P(ve,{alignItems:"stretch",...r,children:Fe(Te,{variant:"elevation",elevation:0,style:{display:"flex",overflow:"hidden",width:"100%"},children:[P(Le,{InputProps:{color:"secondary",style:{borderBottomRightRadius:0,borderTopRightRadius:0,borderWidth:0}},variant:"outlined",size:"small",defaultValue:o,fullWidth:!0,onChange:n=>s(n.target.value),onKeyDown:n=>{n.key==="Enter"&&e?.(t)}}),P(Re,{variant:"contained",style:{borderRadius:0,borderTopLeftRadius:0},color:"secondary",onClick:()=>e?.(t),children:P(Ie,{})})]})})};export{dr as ApplicationAppBar,hr as CollapseToggleFlex,wr as CollapsibleDrawer,Qe as CollapsibleProvider,B as ContextToolbar,d as MenuListItemContainer,Jt as MenuSection,ps as SearchBar,G as SiteMenu,jr as SystemControls,ce as SystemControlsType,Q as SystemControlsUnstyled,V as SystemToolbar,p as useCollapsible,rt as useMenuItemsShared};
|
1
|
+
// src/components/AppBar/Application.tsx
|
2
|
+
import { AppBarEx } from "@xylabs/react-appbar";
|
3
|
+
|
4
|
+
// src/components/Toolbar/Context/ContextToolbar.tsx
|
5
|
+
import { Toolbar } from "@mui/material";
|
6
|
+
|
7
|
+
// src/components/Toolbar/Context/LogoLinkEx.tsx
|
8
|
+
import { Typography, useTheme as useTheme2 } from "@mui/material";
|
9
|
+
import { FlexRow } from "@xylabs/react-flexbox";
|
10
|
+
import { LinkEx } from "@xylabs/react-link";
|
11
|
+
|
12
|
+
// src/components/Toolbar/Context/Logo.tsx
|
13
|
+
import { useTheme } from "@mui/material";
|
14
|
+
import { jsx } from "react/jsx-runtime";
|
15
|
+
var Logo = (props) => {
|
16
|
+
const theme = useTheme();
|
17
|
+
const logoUrl = theme.palette.mode === "dark" ? "https://cdn.xy.company/img/brand/XYO/XYO_icon_white.svg" : "https://cdn.xy.company/img/brand/XYO/XYO_icon_white.svg";
|
18
|
+
return /* @__PURE__ */ jsx("img", { src: logoUrl, ...props });
|
19
|
+
};
|
20
|
+
|
21
|
+
// src/components/Toolbar/Context/LogoLinkEx.tsx
|
22
|
+
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
23
|
+
var LogoLinkEx = ({ to = "/", version = false, ...props }) => {
|
24
|
+
const theme = useTheme2();
|
25
|
+
return /* @__PURE__ */ jsx2(LinkEx, { to, ...props, children: /* @__PURE__ */ jsxs(FlexRow, { paddingX: "4px", children: [
|
26
|
+
/* @__PURE__ */ jsx2(Logo, { height: "40", width: "43" }),
|
27
|
+
version ? /* @__PURE__ */ jsx2(
|
28
|
+
Typography,
|
29
|
+
{
|
30
|
+
position: "absolute",
|
31
|
+
borderRadius: 1,
|
32
|
+
right: 6,
|
33
|
+
color: theme.palette.getContrastText(theme.palette.text.primary),
|
34
|
+
bottom: 0,
|
35
|
+
bgcolor: theme.palette.text.primary,
|
36
|
+
paddingX: "2px",
|
37
|
+
lineHeight: 1,
|
38
|
+
variant: "caption",
|
39
|
+
border: `1px ${theme.palette.getContrastText(theme.palette.primary.main)} solid`,
|
40
|
+
children: typeof version === "string" ? version : "2.1"
|
41
|
+
}
|
42
|
+
) : null
|
43
|
+
] }) });
|
44
|
+
};
|
45
|
+
|
46
|
+
// src/components/Toolbar/Context/ContextToolbar.tsx
|
47
|
+
import { jsx as jsx3 } from "react/jsx-runtime";
|
48
|
+
var ContextToolbar = ({ logoTo = "/", version = false, ...props }) => {
|
49
|
+
return /* @__PURE__ */ jsx3(Toolbar, { ...props, children: /* @__PURE__ */ jsx3(LogoLinkEx, { version, to: logoTo }) });
|
50
|
+
};
|
51
|
+
|
52
|
+
// src/components/Toolbar/System/SystemToolbar.tsx
|
53
|
+
import { Paper, Toolbar as Toolbar2 } from "@mui/material";
|
54
|
+
import { FlexRow as FlexRow4 } from "@xylabs/react-flexbox";
|
55
|
+
import { DarkModeIconButton } from "@xyo-network/react-app-settings";
|
56
|
+
import { NetworkSelectEx } from "@xyo-network/react-network";
|
57
|
+
|
58
|
+
// src/components/SiteMenu/hooks/useMenuItemsShared.tsx
|
59
|
+
import { useMemo } from "react";
|
60
|
+
|
61
|
+
// src/contexts/Collapsible/provider.tsx
|
62
|
+
import { useEffect, useState } from "react";
|
63
|
+
|
64
|
+
// src/contexts/Collapsible/context.ts
|
65
|
+
import { createContextEx } from "@xyo-network/react-shared";
|
66
|
+
var CollapsibleContext = createContextEx();
|
67
|
+
|
68
|
+
// src/contexts/Collapsible/provider.tsx
|
69
|
+
import { jsx as jsx4 } from "react/jsx-runtime";
|
70
|
+
var CollapsibleProvider = ({ defaultCollapse = false, defaultCollapseEnd = false, children }) => {
|
71
|
+
const [collapse, setCollapse] = useState(defaultCollapse);
|
72
|
+
const [collapseEnd, setCollapseEnd] = useState(defaultCollapseEnd);
|
73
|
+
useEffect(() => {
|
74
|
+
setCollapse(defaultCollapse);
|
75
|
+
}, [defaultCollapse]);
|
76
|
+
useEffect(() => {
|
77
|
+
setCollapseEnd(defaultCollapseEnd);
|
78
|
+
}, [defaultCollapseEnd]);
|
79
|
+
return /* @__PURE__ */ jsx4(CollapsibleContext.Provider, { value: { collapse, collapseEnd, provided: true, setCollapse, setCollapseEnd }, children });
|
80
|
+
};
|
81
|
+
|
82
|
+
// src/contexts/Collapsible/use.tsx
|
83
|
+
import { useContextEx } from "@xyo-network/react-shared";
|
84
|
+
var useCollapsible = () => useContextEx(CollapsibleContext, "Collapsible", false);
|
85
|
+
|
86
|
+
// src/components/SiteMenu/hooks/useMenuItemsShared.tsx
|
87
|
+
var useMenuItemsShared = () => {
|
88
|
+
const { collapse, collapseEnd, setCollapse, setCollapseEnd } = useCollapsible();
|
89
|
+
const onMenuItemToggle = (open) => {
|
90
|
+
setCollapse?.((previous) => open ? false : previous);
|
91
|
+
setCollapseEnd?.((previous) => open ? false : previous);
|
92
|
+
};
|
93
|
+
const defaultSiteMenuListItemProps = useMemo(
|
94
|
+
() => ({
|
95
|
+
collapseEnd,
|
96
|
+
dense: true,
|
97
|
+
iconOnly: collapse,
|
98
|
+
sx: {
|
99
|
+
px: "8px"
|
100
|
+
}
|
101
|
+
}),
|
102
|
+
[collapse, collapseEnd]
|
103
|
+
);
|
104
|
+
return { defaultSiteMenuListItemProps, onMenuItemToggle };
|
105
|
+
};
|
106
|
+
|
107
|
+
// src/components/SiteMenu/Menu.tsx
|
108
|
+
import { Menu as MenuIcon2, Settings as SettingsIcon } from "@mui/icons-material";
|
109
|
+
import { IconButton as IconButton2, List as List2, SwipeableDrawer } from "@mui/material";
|
110
|
+
import { FlexRow as FlexRow3 } from "@xylabs/react-flexbox";
|
111
|
+
import { useEffect as useEffect2, useState as useState3 } from "react";
|
112
|
+
|
113
|
+
// src/components/SiteMenu/MenuListItem/MenuListItemContainer.tsx
|
114
|
+
import { ListItemText, useTheme as useTheme4 } from "@mui/material";
|
115
|
+
import { FlexRow as FlexRow2 } from "@xylabs/react-flexbox";
|
116
|
+
import { LinkEx as LinkEx2 } from "@xylabs/react-link";
|
117
|
+
import { useState as useState2 } from "react";
|
118
|
+
|
119
|
+
// src/components/SiteMenu/MenuListItem/list-item-components/ListItemTooltip.tsx
|
120
|
+
import { Tooltip } from "@mui/material";
|
121
|
+
import { FlexCol } from "@xylabs/react-flexbox";
|
122
|
+
import { VscInfo } from "react-icons/vsc";
|
123
|
+
import { jsx as jsx5 } from "react/jsx-runtime";
|
124
|
+
var ListItemTooltip = ({ title, ...props }) => {
|
125
|
+
return /* @__PURE__ */ jsx5(Tooltip, { title, placement: "right", ...props, children: /* @__PURE__ */ jsx5("div", { children: /* @__PURE__ */ jsx5(FlexCol, { justifyContent: "center", children: /* @__PURE__ */ jsx5(VscInfo, { color: "grey" }) }) }) });
|
126
|
+
};
|
127
|
+
|
128
|
+
// src/components/SiteMenu/MenuListItem/list-item-components/MenuIcon.tsx
|
129
|
+
import { Typography as Typography2 } from "@mui/material";
|
130
|
+
import { jsx as jsx6 } from "react/jsx-runtime";
|
131
|
+
var MenuIcon = ({ icon, ...props }) => {
|
132
|
+
return /* @__PURE__ */ jsx6(Typography2, { display: "flex", ...props, children: icon });
|
133
|
+
};
|
134
|
+
|
135
|
+
// src/components/SiteMenu/MenuListItem/list-item-components/MenuListItem.tsx
|
136
|
+
import { ListItem } from "@mui/material";
|
137
|
+
import { jsx as jsx7 } from "react/jsx-runtime";
|
138
|
+
var MenuListItem = ({ iconOnly, collapseEnd, sx, children, dense, ...props }) => {
|
139
|
+
const listItemSx = iconOnly ? { borderRadius: "50%", display: "inline-flex", flexGrow: 0, width: "auto" } : { width: "100%" };
|
140
|
+
const spacingSx = collapseEnd ? { columnGap: 0 } : { columnGap: 1.5 };
|
141
|
+
const paddingSx = dense ? { px: "8px" } : { px: "12px" };
|
142
|
+
return /* @__PURE__ */ jsx7(ListItem, { sx: { ...listItemSx, ...spacingSx, ...paddingSx, ...sx }, ...props, children });
|
143
|
+
};
|
144
|
+
|
145
|
+
// src/components/SiteMenu/MenuListItem/sub-nav/SubNavListItemCollapse.tsx
|
146
|
+
import { Collapse, List } from "@mui/material";
|
147
|
+
import { jsx as jsx8 } from "react/jsx-runtime";
|
148
|
+
var SubNavListItemsCollapse = ({ collapse, openSubNav, children, ...props }) => {
|
149
|
+
return /* @__PURE__ */ jsx8(Collapse, { in: collapse == true ? false : openSubNav, ...props, children: /* @__PURE__ */ jsx8(List, { children }) });
|
150
|
+
};
|
151
|
+
|
152
|
+
// src/components/SiteMenu/MenuListItem/sub-nav/SubNavToggleIconButton.tsx
|
153
|
+
import { IconButton, useTheme as useTheme3 } from "@mui/material";
|
154
|
+
import { VscChevronDown } from "react-icons/vsc";
|
155
|
+
import { jsx as jsx9 } from "react/jsx-runtime";
|
156
|
+
var SubNavToggleIconButton = ({ setOpenSubNav, openSubNav }) => {
|
157
|
+
const theme = useTheme3();
|
158
|
+
return /* @__PURE__ */ jsx9(
|
159
|
+
IconButton,
|
160
|
+
{
|
161
|
+
onClick: (event) => {
|
162
|
+
event.stopPropagation();
|
163
|
+
setOpenSubNav?.(!openSubNav);
|
164
|
+
},
|
165
|
+
sx: { marginRight: theme.spacing(0.5) },
|
166
|
+
children: /* @__PURE__ */ jsx9(VscChevronDown, { fontSize: "16px" })
|
167
|
+
}
|
168
|
+
);
|
169
|
+
};
|
170
|
+
|
171
|
+
// src/components/SiteMenu/MenuListItem/MenuListItemContainer.tsx
|
172
|
+
import { Fragment, jsx as jsx10, jsxs as jsxs2 } from "react/jsx-runtime";
|
173
|
+
var MenuListItemContainer = ({
|
174
|
+
style,
|
175
|
+
icon,
|
176
|
+
iconMenuTextSpacing,
|
177
|
+
iconOnly,
|
178
|
+
onButtonClick,
|
179
|
+
primary,
|
180
|
+
subNavListItems,
|
181
|
+
sx,
|
182
|
+
tooltip,
|
183
|
+
to,
|
184
|
+
...props
|
185
|
+
}) => {
|
186
|
+
const { dense } = props;
|
187
|
+
const theme = useTheme4();
|
188
|
+
const { collapse } = useCollapsible();
|
189
|
+
const [openSubNav, setOpenSubNav] = useState2(false);
|
190
|
+
const [hovered, setHovered] = useState2(false);
|
191
|
+
const resolvedIconMenuTextSpacing = iconMenuTextSpacing ?? theme.spacing(1);
|
192
|
+
return /* @__PURE__ */ jsxs2(Fragment, { children: [
|
193
|
+
/* @__PURE__ */ jsxs2(
|
194
|
+
MenuListItem,
|
195
|
+
{
|
196
|
+
disableGutters: true,
|
197
|
+
iconOnly,
|
198
|
+
onClick: onButtonClick,
|
199
|
+
dense,
|
200
|
+
sx: { justifyContent: "space-between", ...sx },
|
201
|
+
style: { whiteSpace: "nowrap", ...style },
|
202
|
+
...props,
|
203
|
+
children: [
|
204
|
+
/* @__PURE__ */ jsx10(
|
205
|
+
LinkEx2,
|
206
|
+
{
|
207
|
+
onMouseEnter: () => setHovered(true),
|
208
|
+
onMouseLeave: () => setHovered(false),
|
209
|
+
color: "inherit",
|
210
|
+
to,
|
211
|
+
sx: {
|
212
|
+
"& :hover": {
|
213
|
+
cursor: "pointer",
|
214
|
+
textDecoration: "underline"
|
215
|
+
}
|
216
|
+
},
|
217
|
+
children: /* @__PURE__ */ jsxs2(FlexRow2, { children: [
|
218
|
+
/* @__PURE__ */ jsx10(MenuIcon, { icon, paddingRight: resolvedIconMenuTextSpacing, color: hovered ? "secondary" : "inherit" }),
|
219
|
+
/* @__PURE__ */ jsx10(ListItemText, { primary })
|
220
|
+
] })
|
221
|
+
}
|
222
|
+
),
|
223
|
+
/* @__PURE__ */ jsxs2(FlexRow2, { style: { marginLeft: theme.spacing(1) }, children: [
|
224
|
+
subNavListItems ? /* @__PURE__ */ jsx10(SubNavToggleIconButton, { setOpenSubNav, openSubNav }) : null,
|
225
|
+
tooltip ? /* @__PURE__ */ jsx10(ListItemTooltip, { title: tooltip }) : null
|
226
|
+
] })
|
227
|
+
]
|
228
|
+
}
|
229
|
+
),
|
230
|
+
subNavListItems ? /* @__PURE__ */ jsx10(SubNavListItemsCollapse, { openSubNav, collapse, children: subNavListItems?.map((item, index) => /* @__PURE__ */ jsx10(MenuListItemContainer, { dense, sx: { pl: theme.spacing(1) }, ...item }, index)) }) : null
|
231
|
+
] });
|
232
|
+
};
|
233
|
+
|
234
|
+
// src/components/SiteMenu/Menu.tsx
|
235
|
+
import { jsx as jsx11, jsxs as jsxs3 } from "react/jsx-runtime";
|
236
|
+
var SiteMenu = ({ children, onMenuToggle, side = "right", ...props }) => {
|
237
|
+
const [open, setOpen] = useState3(false);
|
238
|
+
useEffect2(() => {
|
239
|
+
onMenuToggle?.(open);
|
240
|
+
}, [onMenuToggle, open]);
|
241
|
+
return /* @__PURE__ */ jsxs3(FlexRow3, { alignItems: "stretch", ...props, children: [
|
242
|
+
/* @__PURE__ */ jsx11(
|
243
|
+
IconButton2,
|
244
|
+
{
|
245
|
+
size: "small",
|
246
|
+
color: "inherit",
|
247
|
+
onClick: () => {
|
248
|
+
setOpen(!open);
|
249
|
+
},
|
250
|
+
children: /* @__PURE__ */ jsx11(MenuIcon2, { fontSize: "large" })
|
251
|
+
}
|
252
|
+
),
|
253
|
+
/* @__PURE__ */ jsx11(
|
254
|
+
SwipeableDrawer,
|
255
|
+
{
|
256
|
+
anchor: side,
|
257
|
+
open,
|
258
|
+
onClick: () => setOpen(false),
|
259
|
+
onKeyDown: () => setOpen(false),
|
260
|
+
onClose: () => setOpen(false),
|
261
|
+
onOpen: () => setOpen(true),
|
262
|
+
children: children ?? /* @__PURE__ */ jsx11(List2, { children: /* @__PURE__ */ jsx11(MenuListItemContainer, { primary: "Settings", icon: /* @__PURE__ */ jsx11(SettingsIcon, {}), to: "/settings" }) })
|
263
|
+
}
|
264
|
+
)
|
265
|
+
] });
|
266
|
+
};
|
267
|
+
|
268
|
+
// src/components/SiteMenu/MenuSection.tsx
|
269
|
+
import { Collapse as Collapse2, ListSubheader } from "@mui/material";
|
270
|
+
import { FlexCol as FlexCol2 } from "@xylabs/react-flexbox";
|
271
|
+
import { jsx as jsx12, jsxs as jsxs4 } from "react/jsx-runtime";
|
272
|
+
var MenuSection = ({ iconMenuTextSpacing, listItems, showTitle = true, title, ...props }) => {
|
273
|
+
return /* @__PURE__ */ jsxs4(FlexCol2, { alignItems: "stretch", ...props, children: [
|
274
|
+
/* @__PURE__ */ jsx12(Collapse2, { in: showTitle, timeout: 700, children: /* @__PURE__ */ jsx12(ListSubheader, { children: title }) }),
|
275
|
+
listItems.map((item, index) => /* @__PURE__ */ jsx12(MenuListItemContainer, { iconMenuTextSpacing, ...item }, index))
|
276
|
+
] });
|
277
|
+
};
|
278
|
+
|
279
|
+
// src/components/Toolbar/System/SystemToolbar.tsx
|
280
|
+
import { jsx as jsx13, jsxs as jsxs5 } from "react/jsx-runtime";
|
281
|
+
var SystemToolbar = ({
|
282
|
+
children,
|
283
|
+
darkModeButton = false,
|
284
|
+
hideNetworkSelect,
|
285
|
+
menuItems,
|
286
|
+
networkSelectProps,
|
287
|
+
onMenuToggle,
|
288
|
+
precedingChildren,
|
289
|
+
...props
|
290
|
+
}) => {
|
291
|
+
return /* @__PURE__ */ jsxs5(Toolbar2, { ...props, children: [
|
292
|
+
precedingChildren,
|
293
|
+
hideNetworkSelect ? null : /* @__PURE__ */ jsx13(FlexRow4, { marginX: 0.5, children: /* @__PURE__ */ jsx13(Paper, { variant: "elevation", children: /* @__PURE__ */ jsx13(NetworkSelectEx, { fullWidth: true, ...networkSelectProps }) }) }),
|
294
|
+
children,
|
295
|
+
darkModeButton ? /* @__PURE__ */ jsx13(DarkModeIconButton, { color: "inherit" }) : null,
|
296
|
+
menuItems ? /* @__PURE__ */ jsx13(SiteMenu, { onMenuToggle, children: menuItems }) : null
|
297
|
+
] });
|
298
|
+
};
|
299
|
+
|
300
|
+
// src/components/AppBar/Application.tsx
|
301
|
+
import { jsx as jsx14 } from "react/jsx-runtime";
|
302
|
+
var ApplicationAppBar = ({ systemToolbar, contextToolbar, responsive = true, ...props }) => {
|
303
|
+
return /* @__PURE__ */ jsx14(
|
304
|
+
AppBarEx,
|
305
|
+
{
|
306
|
+
systemToolbar: systemToolbar ?? /* @__PURE__ */ jsx14(SystemToolbar, {}),
|
307
|
+
contextToolbar: contextToolbar ?? /* @__PURE__ */ jsx14(ContextToolbar, {}),
|
308
|
+
position: "sticky",
|
309
|
+
responsive,
|
310
|
+
...props
|
311
|
+
}
|
312
|
+
);
|
313
|
+
};
|
314
|
+
|
315
|
+
// src/components/CollapsibleDrawer/CollapseToggle.tsx
|
316
|
+
import { Icon, useTheme as useTheme5 } from "@mui/material";
|
317
|
+
import { FlexRow as FlexRow5 } from "@xylabs/react-flexbox";
|
318
|
+
import { useState as useState4 } from "react";
|
319
|
+
import { VscArrowSmallLeft, VscArrowSmallRight } from "react-icons/vsc";
|
320
|
+
import { jsx as jsx15 } from "react/jsx-runtime";
|
321
|
+
var CollapseToggleFlex = (props) => {
|
322
|
+
const { collapse, setCollapse, setCollapseEnd } = useCollapsible();
|
323
|
+
const [hover, setHover] = useState4(false);
|
324
|
+
const theme = useTheme5();
|
325
|
+
const handleCollapseToggle = () => {
|
326
|
+
setCollapse?.(!collapse);
|
327
|
+
setCollapseEnd?.((previous) => previous ? false : previous);
|
328
|
+
};
|
329
|
+
return /* @__PURE__ */ jsx15(FlexRow5, { mt: 2, py: 2, justifyContent: collapse ? "start" : "center", ...props, children: /* @__PURE__ */ jsx15(
|
330
|
+
Icon,
|
331
|
+
{
|
332
|
+
onClick: handleCollapseToggle,
|
333
|
+
onMouseEnter: () => setHover(true),
|
334
|
+
onMouseLeave: () => setHover(false),
|
335
|
+
fontSize: "large",
|
336
|
+
sx: { color: hover ? theme.palette.secondary.main : "inherit", cursor: "pointer" },
|
337
|
+
children: collapse ? /* @__PURE__ */ jsx15(VscArrowSmallRight, {}) : /* @__PURE__ */ jsx15(VscArrowSmallLeft, {})
|
338
|
+
}
|
339
|
+
) });
|
340
|
+
};
|
341
|
+
|
342
|
+
// src/components/CollapsibleDrawer/CollapsibleDrawer.tsx
|
343
|
+
import { Collapse as Collapse3, styled, useTheme as useTheme6 } from "@mui/material";
|
344
|
+
import { jsx as jsx16 } from "react/jsx-runtime";
|
345
|
+
var CollapsibleDrawer = ({ children, sx, ...props }) => {
|
346
|
+
const { collapse, setCollapseEnd } = useCollapsible();
|
347
|
+
const theme = useTheme6();
|
348
|
+
const collapsedSize = props.collapsedSize ?? theme.spacing(5);
|
349
|
+
return /* @__PURE__ */ jsx16(
|
350
|
+
CollapsibleFlexInner,
|
351
|
+
{
|
352
|
+
in: !collapse,
|
353
|
+
orientation: "horizontal",
|
354
|
+
collapsedSize,
|
355
|
+
onExited: () => setCollapseEnd?.(true),
|
356
|
+
sx: {
|
357
|
+
alignItems: "start",
|
358
|
+
display: "flex",
|
359
|
+
height: "100%",
|
360
|
+
...sx
|
361
|
+
},
|
362
|
+
...props,
|
363
|
+
children
|
364
|
+
}
|
365
|
+
);
|
366
|
+
};
|
367
|
+
var CollapsibleFlexInner = styled(Collapse3)(() => ({
|
368
|
+
"& .MuiCollapse-wrapperInner": {
|
369
|
+
display: "flex",
|
370
|
+
flexDirection: "column"
|
371
|
+
}
|
372
|
+
}));
|
373
|
+
|
374
|
+
// src/components/MobileSystemControls/SystemControls.tsx
|
375
|
+
import { FlexCol as FlexCol5 } from "@xylabs/react-flexbox";
|
376
|
+
|
377
|
+
// src/components/MobileSystemControls/SystemControlsRoot.tsx
|
378
|
+
import { styled as styled2 } from "@mui/material";
|
379
|
+
|
380
|
+
// src/components/MobileSystemControls/SystemControlsType.ts
|
381
|
+
var SystemControlsType = /* @__PURE__ */ ((SystemControlsType2) => {
|
382
|
+
SystemControlsType2["Left"] = "Left";
|
383
|
+
SystemControlsType2["Right"] = "Right";
|
384
|
+
SystemControlsType2["WindowShade"] = "WindowShade";
|
385
|
+
return SystemControlsType2;
|
386
|
+
})(SystemControlsType || {});
|
387
|
+
|
388
|
+
// src/components/MobileSystemControls/SystemControlsUnstyled.tsx
|
389
|
+
import { Paper as Paper2, useMediaQuery } from "@mui/material";
|
390
|
+
import { FlexCol as FlexCol4, FlexRow as FlexRow7 } from "@xylabs/react-flexbox";
|
391
|
+
import { NetworkSelectEx as NetworkSelectEx2 } from "@xyo-network/react-network";
|
392
|
+
|
393
|
+
// src/components/MobileSystemControls/controls/SystemControl.tsx
|
394
|
+
import { Collapse as Collapse4 } from "@mui/material";
|
395
|
+
import { FlexCol as FlexCol3, FlexRow as FlexRow6 } from "@xylabs/react-flexbox";
|
396
|
+
import { useState as useState5 } from "react";
|
397
|
+
import { jsx as jsx17, jsxs as jsxs6 } from "react/jsx-runtime";
|
398
|
+
var SystemControl = ({
|
399
|
+
children,
|
400
|
+
controlElement,
|
401
|
+
systemControlsType = "WindowShade" /* WindowShade */,
|
402
|
+
...props
|
403
|
+
}) => {
|
404
|
+
const [toggleControls, setToggleControls] = useState5(false);
|
405
|
+
let orientation = "vertical";
|
406
|
+
switch (systemControlsType) {
|
407
|
+
case "Left" /* Left */: {
|
408
|
+
orientation = "horizontal";
|
409
|
+
break;
|
410
|
+
}
|
411
|
+
}
|
412
|
+
return /* @__PURE__ */ jsxs6(FlexRow6, { className: "controls", ...props, children: [
|
413
|
+
/* @__PURE__ */ jsx17(Collapse4, { in: toggleControls, orientation, timeout: 500, children: /* @__PURE__ */ jsx17(FlexRow6, { bgcolor: "primary.main", className: "control", children: controlElement }) }),
|
414
|
+
/* @__PURE__ */ jsx17(FlexCol3, { style: { cursor: "pointer" }, onClick: () => setToggleControls(!toggleControls), children })
|
415
|
+
] });
|
416
|
+
};
|
417
|
+
|
418
|
+
// src/components/MobileSystemControls/SystemControlsUnstyled.tsx
|
419
|
+
import { Fragment as Fragment2, jsx as jsx18 } from "react/jsx-runtime";
|
420
|
+
var SystemControlsUnstyled = ({
|
421
|
+
visible,
|
422
|
+
systemControlsType = "WindowShade" /* WindowShade */,
|
423
|
+
...props
|
424
|
+
}) => {
|
425
|
+
const isSmall = useMediaQuery((theme) => theme.breakpoints.down("sm"));
|
426
|
+
return visible || isSmall ? /* @__PURE__ */ jsx18(FlexCol4, { ...props, className: `${props.className} system-controls-type-${systemControlsType}`, children: /* @__PURE__ */ jsx18(
|
427
|
+
SystemControl,
|
428
|
+
{
|
429
|
+
systemControlsType,
|
430
|
+
controlElement: /* @__PURE__ */ jsx18(Fragment2, { children: /* @__PURE__ */ jsx18(FlexRow7, { className: "control-wrap", children: /* @__PURE__ */ jsx18(Paper2, { variant: "elevation", elevation: 0, children: /* @__PURE__ */ jsx18(NetworkSelectEx2, { responsive: false, className: "network-ex" }) }) }) })
|
431
|
+
}
|
432
|
+
) }) : /* @__PURE__ */ jsx18(FlexCol4, {});
|
433
|
+
};
|
434
|
+
|
435
|
+
// src/components/MobileSystemControls/SystemControlsRoot.tsx
|
436
|
+
var SystemControlsRoot = styled2(SystemControlsUnstyled, { name: "SystemControls", slot: "Root" })(({ theme }) => ({
|
437
|
+
// shared defaults
|
438
|
+
["&"]: {
|
439
|
+
".toggle": {
|
440
|
+
backgroundColor: theme.palette.primary.main
|
441
|
+
},
|
442
|
+
alignItems: "start",
|
443
|
+
zIndex: 1
|
444
|
+
},
|
445
|
+
// WindowShade System Controls styles
|
446
|
+
[`&.system-controls-type-${"WindowShade" /* WindowShade */}`]: {
|
447
|
+
".control": {
|
448
|
+
borderRadius: "0 0 5px 5px",
|
449
|
+
flexDirection: "row",
|
450
|
+
flexGrow: 1,
|
451
|
+
justifyContent: "space-around",
|
452
|
+
padding: `${theme.spacing(2)} ${theme.spacing(2.5)}`
|
453
|
+
},
|
454
|
+
".controls": {
|
455
|
+
alignItems: "stretch",
|
456
|
+
flexDirection: "column",
|
457
|
+
flexGrow: 1
|
458
|
+
},
|
459
|
+
".toggle": {
|
460
|
+
borderRadius: "0 0 5px 5px",
|
461
|
+
padding: `${theme.spacing(0.5)} ${theme.spacing(1)}`
|
462
|
+
},
|
463
|
+
flexDirection: "row",
|
464
|
+
position: "absolute",
|
465
|
+
top: 0,
|
466
|
+
width: "100%"
|
467
|
+
},
|
468
|
+
// Left System Control styles
|
469
|
+
[`&.system-controls-type-${"Left" /* Left */}`]: {
|
470
|
+
".control": {
|
471
|
+
alignItems: "start",
|
472
|
+
flexDirection: "column",
|
473
|
+
padding: `${theme.spacing(2)} ${theme.spacing(2.5)}`
|
474
|
+
},
|
475
|
+
".control-wrap": {
|
476
|
+
marginBottom: `${theme.spacing(2)}`
|
477
|
+
},
|
478
|
+
".toggle": {
|
479
|
+
borderRadius: "0 5px 5px 0",
|
480
|
+
padding: `${theme.spacing(1)} ${theme.spacing(0.5)}`,
|
481
|
+
writingMode: "vertical-rl"
|
482
|
+
},
|
483
|
+
flexDirection: "column",
|
484
|
+
left: 0,
|
485
|
+
position: "fixed",
|
486
|
+
top: "30vh",
|
487
|
+
width: "auto"
|
488
|
+
}
|
489
|
+
}));
|
490
|
+
|
491
|
+
// src/components/MobileSystemControls/SystemControls.tsx
|
492
|
+
import { jsx as jsx19 } from "react/jsx-runtime";
|
493
|
+
var SystemControls = (props) => {
|
494
|
+
return /* @__PURE__ */ jsx19(FlexCol5, { children: /* @__PURE__ */ jsx19(SystemControlsRoot, { ...props }) });
|
495
|
+
};
|
496
|
+
|
497
|
+
// src/components/SearchBar/SearchBar.tsx
|
498
|
+
import { Search as SearchIcon } from "@mui/icons-material";
|
499
|
+
import { Paper as Paper3, TextField } from "@mui/material";
|
500
|
+
import { ButtonEx } from "@xylabs/react-button";
|
501
|
+
import { FlexRow as FlexRow8 } from "@xylabs/react-flexbox";
|
502
|
+
import { useState as useState6 } from "react";
|
503
|
+
import { jsx as jsx20, jsxs as jsxs7 } from "react/jsx-runtime";
|
504
|
+
var SearchBar = ({ defaultValue, onSearch, ...props }) => {
|
505
|
+
const [term, setTerm] = useState6();
|
506
|
+
return /* @__PURE__ */ jsx20(FlexRow8, { alignItems: "stretch", ...props, children: /* @__PURE__ */ jsxs7(Paper3, { variant: "elevation", elevation: 0, style: { display: "flex", overflow: "hidden", width: "100%" }, children: [
|
507
|
+
/* @__PURE__ */ jsx20(
|
508
|
+
TextField,
|
509
|
+
{
|
510
|
+
InputProps: { color: "secondary", style: { borderBottomRightRadius: 0, borderTopRightRadius: 0, borderWidth: 0 } },
|
511
|
+
variant: "outlined",
|
512
|
+
size: "small",
|
513
|
+
defaultValue,
|
514
|
+
fullWidth: true,
|
515
|
+
onChange: (event) => setTerm(event.target.value),
|
516
|
+
onKeyDown: (event) => {
|
517
|
+
if (event.key === "Enter") onSearch?.(term);
|
518
|
+
}
|
519
|
+
}
|
520
|
+
),
|
521
|
+
/* @__PURE__ */ jsx20(ButtonEx, { variant: "contained", style: { borderRadius: 0, borderTopLeftRadius: 0 }, color: "secondary", onClick: () => onSearch?.(term), children: /* @__PURE__ */ jsx20(SearchIcon, {}) })
|
522
|
+
] }) });
|
523
|
+
};
|
524
|
+
export {
|
525
|
+
ApplicationAppBar,
|
526
|
+
CollapseToggleFlex,
|
527
|
+
CollapsibleDrawer,
|
528
|
+
CollapsibleProvider,
|
529
|
+
ContextToolbar,
|
530
|
+
MenuListItemContainer,
|
531
|
+
MenuSection,
|
532
|
+
SearchBar,
|
533
|
+
SiteMenu,
|
534
|
+
SystemControls,
|
535
|
+
SystemControlsType,
|
536
|
+
SystemControlsUnstyled,
|
537
|
+
SystemToolbar,
|
538
|
+
useCollapsible,
|
539
|
+
useMenuItemsShared
|
540
|
+
};
|
2
541
|
//# sourceMappingURL=index.js.map
|