From 2b81e7308fc053d2b251eac9c03a1f791f8f9d4b Mon Sep 17 00:00:00 2001 From: Kevin Zheng Date: Thu, 21 Nov 2024 14:59:37 +1100 Subject: [PATCH] Update icons --- bun.lockb | Bin 514544 -> 514880 bytes client/package.json | 2 + client/src/Sidebar.tsx | 4 +- .../app-bar/FeaturePickerButton.tsx | 2 +- client/src/components/app-bar/Input.tsx | 2 +- client/src/components/app-bar/Playback.tsx | 216 +++++----- client/src/components/generic/ListEditor.tsx | 6 +- client/src/components/generic/Modal.tsx | 2 +- client/src/components/generic/Overline.tsx | 2 +- client/src/components/generic/Snackbar.tsx | 2 +- .../components/inspector/EventInspector.tsx | 5 +- .../src/components/inspector/FileDropZone.tsx | 2 +- .../src/components/inspector/Placeholder.tsx | 2 +- .../components/inspector/TraceRenderer.tsx | 2 +- .../components/inspector/TrustedContent.tsx | 2 +- .../src/components/inspector/ViewControls.tsx | 2 +- client/src/components/inspector/ViewTree.tsx | 2 +- .../layer-editor/LayerListEditor.tsx | 2 +- .../settings-editor/RendererEditor.tsx | 2 +- .../settings-editor/RendererListEditor.tsx | 2 +- .../settings-editor/ServerListEditor.tsx | 2 +- .../title-bar/ExportWorkspaceModal.tsx | 2 +- client/src/components/title-bar/TitleBar.tsx | 378 +++++++++--------- client/src/layers/map/index.tsx | 4 +- client/src/layers/query/index.tsx | 8 +- client/src/layers/trace/index.tsx | 6 +- client/src/pages/DebugPage.tsx | 2 +- client/src/pages/ExplorePage.tsx | 10 +- client/src/pages/InfoPage.tsx | 2 +- client/src/pages/Page.tsx | 11 +- client/src/pages/PageMeta.tsx | 1 + client/src/pages/RecipesPage.tsx | 2 +- client/src/pages/SettingsPage.tsx | 10 +- client/src/pages/SidebarPage.tsx | 2 +- client/src/pages/SourcePage.tsx | 2 +- client/src/pages/StepsPage.tsx | 2 +- client/src/pages/TreePage.tsx | 8 +- client/src/pages/ViewportPage.tsx | 6 +- client/src/pages/index.tsx | 25 +- client/src/public/manifest.json | 4 +- 40 files changed, 388 insertions(+), 360 deletions(-) diff --git a/bun.lockb b/bun.lockb index 6938ce0fbd5dab7362e1fc8652cd285ccafc538b..bc194f8d7ea2291b7597ebc13923b24b584ee318 100644 GIT binary patch delta 56064 zcmeFaX;@Wd-}k>au$84!nVFK2Qx2r$lx_@h$PtSaO@-796%`dVaDYm|hAXkCXlJKZ zmS&}vR#pyFW>%JHR5nUwW}{?QW|msk^ZBlIZsfl2>wg{h^Wr&<|BLqF*Wda3oWnZj zHEdY?{9MylHZ{Hb;`s5Gmrh>O=A&V$3Gb{M{n*Nzer&(-=a#+wZTCD_yzI$2nUL!r_5AldTUeAeH*3ah67Qj4 z9e5*F1+K%YVgpxuwi~uSesgR?Y$I$P?B9?3e2uZ+VpZW8nKNc4Ovua2n_VzHn{sbn z>ou&+6JGfRSmk?qsB9NsQDeZFfLd79ynqZ!FcGT*#jW$=bFt^(UlF>lext&D98T5S zja9Cfuqx$Atg5;3DX*O&d{ysetoq?Tnx%d`^0d!a7keAN^5tPw`WS2@?8F%p6DG{e z&C1Q1I47Te%irL|XJbh}tY|n1Re`&o^)eJ#+aIoe?26R^&&O(D8`$)JJmgjAYpf3R zK2{ZeBXr%_jhxRndZlg-m7d+GaQP;$E1n>Y%2w_w(6V&;%e$9i_TS5Ev3K3^RE8Q3ORA69ifR_1lek{8`_#}^#}=zs^T z&CSZ3FgqbTZ^HCEb&Bt15~}yRZ1oBV5Bd}M8oLKAzth?USanLVEiXG%+@NXU8{56Z zI<)3Ct z9ccTpm9_P;nnr&Sul}sUD*qc;@|{=oECD4b!79OxSXHlk=(>iD3R~i7lGJ_Av*Ff` zWY&ql4X=yshp%c}YIz&1N;?A^iyioZci5B5y`z1O)ls%t8=k%4Noi+qVfC~P&&D%8 z_6`)DeY5aY&;+cyKRjFQG%xC%Gbg*l^vviq(930;_(m{fSrJZ}=*wlnSZh z^RVanrumA-x&dEN3Re9TUawDn>a}S2XI>8^60ZWBecrqXZ!Uk?_|M=M5WfSf^_rVG zDIssdl!-@e{I{V4=Qb*QXTQ(ap4dmR8YXWi^%W%?@Twn+RV^ZK^Qv77U)8Zb={qm}AigF-CBFK%=Rq%jr_i28jZ)4ztHvFTtwQrealUdZ<(5rYVU(d6mD~(n*Z zg++(FK+)>oz3NTRnma=kS&mPFqQ%zUi&eoBv$AHfU;7T&e0#CtS$WsZ$;vJ8&BAYu zf7MB^As1mU!hhorpRY6aeyrx&Y;0>^p|5Bp0Zq|MvFBsQP=H!K1gp8Q;V;jYF~;iG zwm!c*DqFE?;Uf`#w`cCgY7P`&8)3&=JJj-SSoQ1}znA_3{Kkavwx*Jytz2)W$!CmA|5%ci_LUs@Rkm&;J;!3ci6= z!zRw0FgrJUMpnt+^nYW(TnbQvYq0Vkp{wO*>UI0IOb0RBmR&G`nmww-S z2M$ldC(iN?cpp|nSd7&WzJ9i6!+f4icc7}!D=@q!G(|I~=lQ0QKwUk`7PR#ouPaNb zm|75ft{0y>A!}kb72MO%YvIpub?q!J6v5T!u}~ww+mkUi-{{6({;7p?W=zv;KSco= zoA_97QgK-_F=5uU$>AMsmR2^OEySy9pFGd+PS!3>yo#;GD*ydh&4D&pHQ+(g$!9;K3+ zkb9eZ-5K7NEAX`vHeoev2T3P?cuTLmg3LMBPp9%9TK_Gqmh3F|KEUTo!Kd89qFHlt zW~r6OFZ2%ZG6iX3g)8uOE05of)d5Dg_6|@;I#u*Az6xH4uL=Bq8!!HKta{;o%S*7D z7f0KA@q^+OKipUJ!j;};k~=dqm)`OPFY;O(kJSOr#i~Mev8urMnKP$nWzO*BWX_&2 zh5qeDL8?F%1*@mN2witUqyN#blV@sf_%%nm@RN3fbTM-#l#4Zcc`#cBapcJKzb z7QT*N*wL%am!#Kh?AFPf?$6_^mTmE6ZMsW~ngG<^J4m2e@g7#Q%#ix
K+u}P|?YQlU*LKn^(eJwu`+LyuYl_{ERWsj% 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 delta 55238 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 diff --git a/client/package.json b/client/package.json index 6a5a9cd..e1c5aa4 100644 --- a/client/package.json +++ b/client/package.json @@ -9,6 +9,8 @@ "@emotion/styled": "^11.13.5", "@hello-pangea/dnd": "^17.0.0", "@monaco-editor/react": "^4.6.0", + "@mui-symbols-material/w300": "^0.3.3", + "@mui-symbols-material/w400": "^0.3.3", "@mui/icons-material": "^6.1.8", "@mui/lab": "^6.0.0-beta.16", "@mui/material": "^6.1.8", diff --git a/client/src/Sidebar.tsx b/client/src/Sidebar.tsx index 3bd0d9d..3c050b3 100644 --- a/client/src/Sidebar.tsx +++ b/client/src/Sidebar.tsx @@ -180,12 +180,12 @@ export function Sidebar({ children }: { children?: ReactNode }) { alignItems: "center", display: "flex", "> svg > path": { - strokeWidth: 0.5, + strokeWidth: 1, stroke: bgcolor, }, }} > - {c.icon} + {c.iconThin ?? c.icon} } diff --git a/client/src/components/app-bar/FeaturePickerButton.tsx b/client/src/components/app-bar/FeaturePickerButton.tsx index ed522c7..c61266f 100644 --- a/client/src/components/app-bar/FeaturePickerButton.tsx +++ b/client/src/components/app-bar/FeaturePickerButton.tsx @@ -1,4 +1,4 @@ -import { KeyboardArrowDownOutlined } from "@mui/icons-material"; +import { KeyboardArrowDownOutlined } from "@mui-symbols-material/w400"; import { Box, Button, ButtonProps } from "@mui/material"; import { Props } from "./FeaturePicker"; diff --git a/client/src/components/app-bar/Input.tsx b/client/src/components/app-bar/Input.tsx index 647a319..d58a067 100644 --- a/client/src/components/app-bar/Input.tsx +++ b/client/src/components/app-bar/Input.tsx @@ -1,4 +1,4 @@ -import { FileOpenOutlined } from "@mui/icons-material"; +import { FileOpenOutlined } from "@mui-symbols-material/w400"; import { useSnackbar } from "components/generic/Snackbar"; import { find, get, startCase } from "lodash"; import { Map, UploadedTrace } from "slices/UIState"; diff --git a/client/src/components/app-bar/Playback.tsx b/client/src/components/app-bar/Playback.tsx index 85b3fe4..2a815d3 100644 --- a/client/src/components/app-bar/Playback.tsx +++ b/client/src/components/app-bar/Playback.tsx @@ -7,7 +7,7 @@ import { ChevronLeftOutlined as PreviousIcon, SkipNextOutlined as SkipIcon, SkipPreviousOutlined as StopIcon, -} from "@mui/icons-material"; +} from "@mui-symbols-material/w300"; import { Button, Collapse, @@ -98,113 +98,115 @@ export function Playback({ layer }: { layer?: Layer }) { const [stepInput, setStepInput] = useState(""); const parsedStepInput = parseInt(stepInput); const parsedStepInputValid = !isNaN(parsedStepInput); - return (<> - } - onClick={() => { - stepTo(findBreakpoint(-1)); - }} - disabled={!canStop || !canStepBackward} - /> - } - onClick={stepBackward} - disabled={!canStepBackward} - /> - , - onClick: () => pause(), - disabled: !canPause, - } - : { - label: "play", - icon: , - onClick: () => play(), - disabled: !canPlay, - color: "primary", - })} - /> - } - onClick={stepForward} - disabled={!canStepForward} - /> - } - onClick={() => { - stepTo(findBreakpoint()); - }} - disabled={!canStepForward} - /> - {divider} - - {(state) => ( - <> - + - {step} - - - - setStepInput(e.target.value)} - defaultValue={step} - placeholder="0" - sx={{ width: 180, border: "none" }} - slotProps={{ - input: { - sx: { fontSize: "0.875rem" }, - startAdornment: ( - Step - ), - endAdornment: ( - - } - label="Go" - size="small" - color="inherit" - disabled={ - !parsedStepInputValid || parsedStepInput === step - } - onClick={() => { - stepTo(parsedStepInput); - state.close(); - }} - /> - - ), - } - }} - /> - - - )} - - ); + setStepInput(e.target.value)} + defaultValue={step} + placeholder="0" + sx={{ width: 180, border: "none" }} + slotProps={{ + input: { + sx: { fontSize: "0.875rem" }, + startAdornment: ( + Step + ), + endAdornment: ( + + } + label="Go" + size="small" + color="inherit" + disabled={ + !parsedStepInputValid || parsedStepInput === step + } + onClick={() => { + stepTo(parsedStepInput); + state.close(); + }} + /> + + ), + }, + }} + /> + + + )} + + + ); } export function MinimisedPlaybackControls({ layer, diff --git a/client/src/components/generic/ListEditor.tsx b/client/src/components/generic/ListEditor.tsx index e44ca3f..041c8d8 100644 --- a/client/src/components/generic/ListEditor.tsx +++ b/client/src/components/generic/ListEditor.tsx @@ -1,9 +1,9 @@ import { - Add, - ClearOutlined as DeleteIcon, + AddOutlined as Add, + CloseOutlined as DeleteIcon, DragHandleOutlined, EditOutlined as EditIcon, -} from "@mui/icons-material"; +} from "@mui-symbols-material/w400"; import { Box, Button, diff --git a/client/src/components/generic/Modal.tsx b/client/src/components/generic/Modal.tsx index a879219..0de7bba 100644 --- a/client/src/components/generic/Modal.tsx +++ b/client/src/components/generic/Modal.tsx @@ -1,4 +1,4 @@ -import { ArrowBack } from "@mui/icons-material"; +import { ArrowBackOutlined as ArrowBack } from "@mui-symbols-material/w400"; import { AppBar, Box, diff --git a/client/src/components/generic/Overline.tsx b/client/src/components/generic/Overline.tsx index 976212d..91894d2 100644 --- a/client/src/components/generic/Overline.tsx +++ b/client/src/components/generic/Overline.tsx @@ -1,4 +1,4 @@ -import { FiberManualRecord as Dot } from "@mui/icons-material"; +import { FiberManualRecordOutlined as Dot } from "@mui-symbols-material/w400"; import { Typography as Type, TypographyProps } from "@mui/material"; import { ComponentProps, ReactNode } from "react"; diff --git a/client/src/components/generic/Snackbar.tsx b/client/src/components/generic/Snackbar.tsx index 02f9030..d51c5bf 100644 --- a/client/src/components/generic/Snackbar.tsx +++ b/client/src/components/generic/Snackbar.tsx @@ -1,4 +1,4 @@ -import { CloseOutlined as CloseIcon } from "@mui/icons-material"; +import { CloseOutlined as CloseIcon } from "@mui-symbols-material/w400"; import { Button, IconButton, Snackbar } from "@mui/material"; import { filter, noop } from "lodash"; import { Label } from "./Label"; diff --git a/client/src/components/inspector/EventInspector.tsx b/client/src/components/inspector/EventInspector.tsx index d587ed7..08a3d48 100644 --- a/client/src/components/inspector/EventInspector.tsx +++ b/client/src/components/inspector/EventInspector.tsx @@ -1,4 +1,7 @@ -import { DataObjectOutlined, FiberManualRecord } from "@mui/icons-material"; +import { + DataObjectOutlined, + FiberManualRecordFilledOutlined as FiberManualRecord, +} from "@mui-symbols-material/w400"; import { Box, Divider, diff --git a/client/src/components/inspector/FileDropZone.tsx b/client/src/components/inspector/FileDropZone.tsx index 6c23fc3..40db19a 100644 --- a/client/src/components/inspector/FileDropZone.tsx +++ b/client/src/components/inspector/FileDropZone.tsx @@ -1,4 +1,4 @@ -import { WorkspacesOutlined } from "@mui/icons-material"; +import { WorkspacesOutlined } from "@mui-symbols-material/w400"; import { Backdrop, Stack, Typography as Type } from "@mui/material"; import { useSnackbar } from "components/generic/Snackbar"; import { ORIGIN_FILESYSTEM, useWorkspace } from "hooks/useWorkspace"; diff --git a/client/src/components/inspector/Placeholder.tsx b/client/src/components/inspector/Placeholder.tsx index 2a1e0ab..deb4edb 100644 --- a/client/src/components/inspector/Placeholder.tsx +++ b/client/src/components/inspector/Placeholder.tsx @@ -1,4 +1,4 @@ -import { WidgetsOutlined } from "@mui/icons-material"; +import { WidgetsOutlined } from "@mui-symbols-material/w400"; import { Box, Typography as Type } from "@mui/material"; import { Flex, FlexProps } from "components/generic/Flex"; import { ReactElement, ReactNode } from "react"; diff --git a/client/src/components/inspector/TraceRenderer.tsx b/client/src/components/inspector/TraceRenderer.tsx index 05445cf..27ebdfe 100644 --- a/client/src/components/inspector/TraceRenderer.tsx +++ b/client/src/components/inspector/TraceRenderer.tsx @@ -1,7 +1,7 @@ import { BlurOnOutlined as DisabledIcon, ViewInArOutlined, -} from "@mui/icons-material"; +} from "@mui-symbols-material/w400"; import { Box, CircularProgress, useTheme } from "@mui/material"; import { RendererProps, SelectEvent } from "components/renderer/Renderer"; import { usePlaybackState } from "hooks/usePlaybackState"; diff --git a/client/src/components/inspector/TrustedContent.tsx b/client/src/components/inspector/TrustedContent.tsx index d80fe24..a6739ca 100644 --- a/client/src/components/inspector/TrustedContent.tsx +++ b/client/src/components/inspector/TrustedContent.tsx @@ -2,7 +2,7 @@ import { CheckOutlined, DoneAllOutlined, ShieldOutlined, -} from "@mui/icons-material"; +} from "@mui-symbols-material/w400"; import { Link, Stack } from "@mui/material"; import { ReactNode } from "react"; import { Placeholder } from "./Placeholder"; diff --git a/client/src/components/inspector/ViewControls.tsx b/client/src/components/inspector/ViewControls.tsx index 025cdb6..5f8392a 100644 --- a/client/src/components/inspector/ViewControls.tsx +++ b/client/src/components/inspector/ViewControls.tsx @@ -4,7 +4,7 @@ import { MoreVertOutlined as MoreIcon, OpenInNewOutlined as PopOutIcon, ViewAgendaOutlined as SplitIcon, -} from "@mui/icons-material"; +} from "@mui-symbols-material/w400"; import { Box, Divider, diff --git a/client/src/components/inspector/ViewTree.tsx b/client/src/components/inspector/ViewTree.tsx index c0cab00..bf250f6 100644 --- a/client/src/components/inspector/ViewTree.tsx +++ b/client/src/components/inspector/ViewTree.tsx @@ -1,5 +1,5 @@ import Split, { SplitDirection } from "@devbookhq/splitter"; -import { DragIndicatorOutlined } from "@mui/icons-material"; +import { DragIndicatorOutlined } from "@mui-symbols-material/w400"; import { Box, useTheme } from "@mui/material"; import { Flex } from "components/generic/Flex"; import { diff --git a/client/src/components/layer-editor/LayerListEditor.tsx b/client/src/components/layer-editor/LayerListEditor.tsx index 2e88be0..bf3596d 100644 --- a/client/src/components/layer-editor/LayerListEditor.tsx +++ b/client/src/components/layer-editor/LayerListEditor.tsx @@ -1,4 +1,4 @@ -import { MoreVertOutlined } from "@mui/icons-material"; +import { MoreVertOutlined } from "@mui-symbols-material/w400"; import { Box, IconButton, Menu, MenuItem, MenuList } from "@mui/material"; import { ListEditor } from "components/generic/ListEditor"; import { head, map } from "lodash"; diff --git a/client/src/components/settings-editor/RendererEditor.tsx b/client/src/components/settings-editor/RendererEditor.tsx index 6f590e5..7c754d0 100644 --- a/client/src/components/settings-editor/RendererEditor.tsx +++ b/client/src/components/settings-editor/RendererEditor.tsx @@ -1,4 +1,4 @@ -import { EditOutlined as EditIcon } from "@mui/icons-material"; +import { EditOutlined as EditIcon } from "@mui-symbols-material/w400"; import { Box, Chip, diff --git a/client/src/components/settings-editor/RendererListEditor.tsx b/client/src/components/settings-editor/RendererListEditor.tsx index 9414795..dca588a 100644 --- a/client/src/components/settings-editor/RendererListEditor.tsx +++ b/client/src/components/settings-editor/RendererListEditor.tsx @@ -1,4 +1,4 @@ -import { ReplayOutlined as ResetIcon } from "@mui/icons-material"; +import { ReplayOutlined as ResetIcon } from "@mui-symbols-material/w400"; import { Box } from "@mui/material"; import { defaultTransport } from "client"; import { FeaturePickerButton } from "components/app-bar/FeaturePickerButton"; diff --git a/client/src/components/settings-editor/ServerListEditor.tsx b/client/src/components/settings-editor/ServerListEditor.tsx index 4c6a0de..ecddd4f 100644 --- a/client/src/components/settings-editor/ServerListEditor.tsx +++ b/client/src/components/settings-editor/ServerListEditor.tsx @@ -1,4 +1,4 @@ -import { ReplayOutlined as ResetIcon } from "@mui/icons-material"; +import { ReplayOutlined as ResetIcon } from "@mui-symbols-material/w400"; import { Box } from "@mui/material"; import { defaultTransport } from "client"; import { FeaturePickerButton } from "components/app-bar/FeaturePickerButton"; diff --git a/client/src/components/title-bar/ExportWorkspaceModal.tsx b/client/src/components/title-bar/ExportWorkspaceModal.tsx index 986eab5..d232c42 100644 --- a/client/src/components/title-bar/ExportWorkspaceModal.tsx +++ b/client/src/components/title-bar/ExportWorkspaceModal.tsx @@ -1,4 +1,4 @@ -import { DownloadOutlined } from "@mui/icons-material"; +import { DownloadOutlined } from "@mui-symbols-material/w400"; import { Box, Stack, TextField, Typography } from "@mui/material"; import { Button } from "components/generic/Button"; import Modal, { ModalAppBar } from "components/generic/Modal"; diff --git a/client/src/components/title-bar/TitleBar.tsx b/client/src/components/title-bar/TitleBar.tsx index 487a4b9..0aac766 100644 --- a/client/src/components/title-bar/TitleBar.tsx +++ b/client/src/components/title-bar/TitleBar.tsx @@ -2,7 +2,7 @@ import { OpenInNewOutlined, SearchOutlined, WorkspacesOutlined, -} from "@mui/icons-material"; +} from "@mui-symbols-material/w400"; import { Box, ButtonBase, @@ -183,195 +183,197 @@ export const TitleBar = () => { }); } - return (<> - `1px solid ${t.palette.background.default}`, - minHeight: 36, - paddingLeft: "env(titlebar-area-x, 0px)", - height: visible ? "env(titlebar-area-height, 50px)" : 0, - width: "env(titlebar-area-width, 100%)", - WebkitAppRegion: "drag", - overflowX: "auto", - }} - > - - - - {(!visible || rect.x === 0) && ( - // Hide for macos style windows - ( - - ) - )} - {} - {[ - { - key: "view", - items: [ - { - disabled: !canOpenWindows, - key: "panel-new-window", - type: "action", - name: "New window", - action: () => openWindow(), - }, - { type: "divider" }, - { - type: "action", - key: `panel-new-right`, - name: "Add view to the right", - action: () => handleOpenPanel("horizontal"), - }, - { - type: "action", - key: `panel-new-bottom`, - name: "Add view below", - action: () => handleOpenPanel("vertical"), - }, - { type: "divider" }, - { - type: "action", - name: "Reset layout", - key: "panel-reset", - action: () => setView(getDefaultViewTree), - }, - { - type: "action", - name: "Reload window", - key: "panel-reload", - action: () => location.reload(), - }, - // { - // type: "action", - // name: "New workspace", - // action: () => - // openWindow({ linked: false, minimal: false }), - // }, - ], - }, - { - key: "workspace", - items: [ - { - type: "action", - name: "Open workspace", - key: "workspace-load", - action: load, - }, - { - type: "action", - name: "Save workspace", - key: "workspace-save", - action: save, - }, - { type: "divider" }, - { - type: "action", - name: ( - } - /> - ), - key: "workspace-save-metadata", - action: () => setExportModalOpen(true), - }, - ], - }, - { - key: "help", - items: [ - { - type: "action", - name: "Open repository in GitHub", - key: "github", - action: () => open(repository, "_blank"), - }, - { - type: "action", - name: "Changelog", - key: "changelog", - action: () => open(`${changelog}/${version}`, "_blank"), - }, - { - type: "action", - name: "Documentation", - key: "documentation", - action: () => open(docs, "_blank"), - }, - ], - }, - ].map(({ key, items }) => ( - - {(state) => ( - <> - - - {items.map((item, i) => { - if (item.type === "action") { - const { name, key, action } = item; - return ( - { - action?.(); - state.close(); - }} - > - {name} - - ); - } else { - return ; - } - })} - - - - {startCase(key)} - - - )} - - ))} - {/* + return ( + <> + `1px solid ${t.palette.background.default}`, + minHeight: 36, + paddingLeft: "env(titlebar-area-x, 0px)", + height: visible ? "env(titlebar-area-height, 50px)" : 0, + width: "env(titlebar-area-width, 100%)", + WebkitAppRegion: "drag", + overflowX: "auto", + }} + > + + + + {(!visible || rect.x === 0) && ( + // Hide for macos style windows + + + + )} + {} + {[ + { + key: "view", + items: [ + { + disabled: !canOpenWindows, + key: "panel-new-window", + type: "action", + name: "New window", + action: () => openWindow(), + }, + { type: "divider" }, + { + type: "action", + key: `panel-new-right`, + name: "Add view to the right", + action: () => handleOpenPanel("horizontal"), + }, + { + type: "action", + key: `panel-new-bottom`, + name: "Add view below", + action: () => handleOpenPanel("vertical"), + }, + { type: "divider" }, + { + type: "action", + name: "Reset layout", + key: "panel-reset", + action: () => setView(getDefaultViewTree), + }, + { + type: "action", + name: "Reload window", + key: "panel-reload", + action: () => location.reload(), + }, + // { + // type: "action", + // name: "New workspace", + // action: () => + // openWindow({ linked: false, minimal: false }), + // }, + ], + }, + { + key: "workspace", + items: [ + { + type: "action", + name: "Open workspace", + key: "workspace-load", + action: load, + }, + { + type: "action", + name: "Save workspace", + key: "workspace-save", + action: save, + }, + { type: "divider" }, + { + type: "action", + name: ( + } + /> + ), + key: "workspace-save-metadata", + action: () => setExportModalOpen(true), + }, + ], + }, + { + key: "help", + items: [ + { + type: "action", + name: "Open repository in GitHub", + key: "github", + action: () => open(repository, "_blank"), + }, + { + type: "action", + name: "Changelog", + key: "changelog", + action: () => open(`${changelog}/${version}`, "_blank"), + }, + { + type: "action", + name: "Documentation", + key: "documentation", + action: () => open(docs, "_blank"), + }, + ], + }, + ].map(({ key, items }) => ( + + {(state) => ( + <> + + + {items.map((item, i) => { + if (item.type === "action") { + const { name, key, action } = item; + return ( + { + action?.(); + state.close(); + }} + > + {name} + + ); + } else { + return ; + } + })} + + + + {startCase(key)} + + + )} + + ))} + {/* */} - - - - - setExportModalOpen(false)} - /> - ); + + + + + setExportModalOpen(false)} + /> + + ); }; export function CommandsButton() { diff --git a/client/src/layers/map/index.tsx b/client/src/layers/map/index.tsx index 2274c3a..08cd9a3 100644 --- a/client/src/layers/map/index.tsx +++ b/client/src/layers/map/index.tsx @@ -1,4 +1,4 @@ -import { MapTwoTone } from "@mui/icons-material"; +import { MapOutlined } from "@mui-symbols-material/w400"; import { CircularProgress, Typography } from "@mui/material"; import { MapPicker } from "components/app-bar/Input"; import { custom, readUploadedMap } from "components/app-bar/upload"; @@ -40,7 +40,7 @@ export type MapLayer = Layer; export const controller = { key: "map", - icon: , + icon: , inferName: (layer) => layer?.source?.map ? `${layer.source.map.name} (${startCase(layer.source.map.format)})` diff --git a/client/src/layers/query/index.tsx b/client/src/layers/query/index.tsx index 28d0e2b..c6d916b 100644 --- a/client/src/layers/query/index.tsx +++ b/client/src/layers/query/index.tsx @@ -1,10 +1,10 @@ import { CodeOutlined, - PlaceOutlined as DestinationIcon, + LocationOnOutlined as DestinationIcon, LayersOutlined, - RouteTwoTone, + RouteOutlined, TripOriginOutlined as StartIcon, -} from "@mui/icons-material"; +} from "@mui-symbols-material/w400"; import { Box, Typography as Type } from "@mui/material"; import { FeaturePicker } from "components/app-bar/FeaturePicker"; import { useSnackbar } from "components/generic/Snackbar"; @@ -70,7 +70,7 @@ const maxStringPropLength = 40; export const controller = { ...omit(traceController, "claimImportedFile"), key: "query", - icon: , + icon: , compress: (layer) => pick(layer, [ "mapLayerKey", diff --git a/client/src/layers/trace/index.tsx b/client/src/layers/trace/index.tsx index e2a8592..3cff2ff 100644 --- a/client/src/layers/trace/index.tsx +++ b/client/src/layers/trace/index.tsx @@ -1,8 +1,8 @@ import { ArrowOutwardRounded, DataObjectOutlined, - RouteTwoTone, -} from "@mui/icons-material"; + RouteOutlined, +} from "@mui-symbols-material/w400"; import { Box, ListItemIcon, @@ -165,7 +165,7 @@ export type TraceLayer = Layer; export const controller = { key: "trace", - icon: , + icon: , inferName: (layer) => layer.source?.trace?.name ?? "Untitled Trace", error: (layer) => layer?.source?.trace?.error || layer?.source?.parsedTrace?.error, diff --git a/client/src/pages/DebugPage.tsx b/client/src/pages/DebugPage.tsx index d7ae490..cf8c11a 100644 --- a/client/src/pages/DebugPage.tsx +++ b/client/src/pages/DebugPage.tsx @@ -1,7 +1,7 @@ import { BugReportOutlined, LayersOutlined as LayersIcon, -} from "@mui/icons-material"; +} from "@mui-symbols-material/w400"; import { TabContext, TabList, TabPanel } from "@mui/lab"; import { Box, Divider, Tab, Typography as Type } from "@mui/material"; import { FeaturePicker } from "components/app-bar/FeaturePicker"; diff --git a/client/src/pages/ExplorePage.tsx b/client/src/pages/ExplorePage.tsx index 58a5a0f..0738132 100644 --- a/client/src/pages/ExplorePage.tsx +++ b/client/src/pages/ExplorePage.tsx @@ -1,8 +1,8 @@ import { - LaunchOutlined, + RocketLaunchOutlined as LaunchOutlined, SearchOutlined, WorkspacesOutlined, -} from "@mui/icons-material"; +} from "@mui-symbols-material/w400"; import { TabContext, TabList, TabPanel } from "@mui/lab"; import { Avatar, @@ -373,7 +373,7 @@ export function ExplorePage({ template: Page }: PageContentProps) { } return ( - ( + Explore explore @@ -436,7 +436,7 @@ export function ExplorePage({ template: Page }: PageContentProps) { ), - } + }, }} /> @@ -521,6 +521,6 @@ export function ExplorePage({ template: Page }: PageContentProps) { {controls} - ) + ); } diff --git a/client/src/pages/InfoPage.tsx b/client/src/pages/InfoPage.tsx index b76433a..7b5595f 100644 --- a/client/src/pages/InfoPage.tsx +++ b/client/src/pages/InfoPage.tsx @@ -1,4 +1,4 @@ -import { CloseOutlined, ListOutlined } from "@mui/icons-material"; +import { CloseOutlined, ListOutlined } from "@mui-symbols-material/w400"; import { Divider, List, ListItem, ListItemText } from "@mui/material"; import { FeaturePickerButton } from "components/app-bar/FeaturePickerButton"; import { Flex } from "components/generic/Flex"; diff --git a/client/src/pages/Page.tsx b/client/src/pages/Page.tsx index 1591f74..c88723a 100644 --- a/client/src/pages/Page.tsx +++ b/client/src/pages/Page.tsx @@ -1,20 +1,15 @@ -import { - ErrorOutlineOutlined, - SentimentDissatisfiedOutlined, - WidgetsOutlined, -} from "@mui/icons-material"; +import { ErrorOutlined, WidgetsOutlined } from "@mui-symbols-material/w400"; import { Box, Divider, Stack } from "@mui/material"; import { FeaturePicker } from "components/app-bar/FeaturePicker"; -import { Button } from "components/generic/Button"; import { Flex } from "components/generic/Flex"; import { Scroll } from "components/generic/Scrollbars"; import { Space } from "components/generic/Space"; import { Placeholder } from "components/inspector/Placeholder"; +import { withSlots } from "components/withSlots"; import { values } from "lodash"; import { pages } from "pages"; import React, { ReactNode } from "react"; import { ErrorBoundary } from "react-error-boundary"; -import { withSlots } from "components/withSlots"; import { PanelState } from "slices/view"; import { useAcrylic } from "theme"; @@ -96,7 +91,7 @@ export const Page = withSlots( } + icon={} /> )} diff --git a/client/src/pages/PageMeta.tsx b/client/src/pages/PageMeta.tsx index fcc24d6..d988671 100644 --- a/client/src/pages/PageMeta.tsx +++ b/client/src/pages/PageMeta.tsx @@ -11,6 +11,7 @@ export type PageMeta = { id: string; name: string; icon: ReactElement; + iconThin?: ReactElement; color?: AccentColor; description?: string; content: (props: PageContentProps) => ReactNode; diff --git a/client/src/pages/RecipesPage.tsx b/client/src/pages/RecipesPage.tsx index c05d9bf..f39c85f 100644 --- a/client/src/pages/RecipesPage.tsx +++ b/client/src/pages/RecipesPage.tsx @@ -1,4 +1,4 @@ -import { WorkspacesOutlined } from "@mui/icons-material"; +import { WorkspacesOutlined } from "@mui-symbols-material/w400"; import { Box, CircularProgress, diff --git a/client/src/pages/SettingsPage.tsx b/client/src/pages/SettingsPage.tsx index 4a5f772..ed1581b 100644 --- a/client/src/pages/SettingsPage.tsx +++ b/client/src/pages/SettingsPage.tsx @@ -1,4 +1,4 @@ -import { RestartAltOutlined } from "@mui/icons-material"; +import { RestartAltOutlined } from "@mui-symbols-material/w400"; import { TabContext, TabList, TabPanel } from "@mui/lab"; import { Box, @@ -338,7 +338,7 @@ export function TrustedOriginListEditor() { // // ))} // - ( + - ) + ); } export function MapParserListEditor() { @@ -374,7 +374,7 @@ export function MapParserListEditor() { // // ))} // - ( + button={false} sortable @@ -395,6 +395,6 @@ export function MapParserListEditor() { key: "", })} /> - ) + ); } diff --git a/client/src/pages/SidebarPage.tsx b/client/src/pages/SidebarPage.tsx index d132de1..10ad5a1 100644 --- a/client/src/pages/SidebarPage.tsx +++ b/client/src/pages/SidebarPage.tsx @@ -1,4 +1,4 @@ -import { FullscreenOutlined } from "@mui/icons-material"; +import { FullscreenOutlined } from "@mui-symbols-material/w400"; import { Box, Typography } from "@mui/material"; import { useSidebarBackground } from "Sidebar"; import { Flex } from "components/generic/Flex"; diff --git a/client/src/pages/SourcePage.tsx b/client/src/pages/SourcePage.tsx index 50f7e44..90b7192 100644 --- a/client/src/pages/SourcePage.tsx +++ b/client/src/pages/SourcePage.tsx @@ -1,5 +1,5 @@ import { Editor } from "@monaco-editor/react"; -import { CodeOutlined } from "@mui/icons-material"; +import { CodeOutlined } from "@mui-symbols-material/w400"; import { CircularProgress, Tab, Tabs, useTheme } from "@mui/material"; import { Flex } from "components/generic/Flex"; import { Placeholder } from "components/inspector/Placeholder"; diff --git a/client/src/pages/StepsPage.tsx b/client/src/pages/StepsPage.tsx index 74c78dd..e7f78ce 100644 --- a/client/src/pages/StepsPage.tsx +++ b/client/src/pages/StepsPage.tsx @@ -2,7 +2,7 @@ import { FiberManualRecordOutlined, LayersOutlined as LayersIcon, SegmentOutlined, -} from "@mui/icons-material"; +} from "@mui-symbols-material/w400"; import { Box, Divider, Stack, SxProps, Theme, useTheme } from "@mui/material"; import { grey } from "@mui/material/colors"; import { FeaturePicker } from "components/app-bar/FeaturePicker"; diff --git a/client/src/pages/TreePage.tsx b/client/src/pages/TreePage.tsx index 4a45c82..5dd6729 100644 --- a/client/src/pages/TreePage.tsx +++ b/client/src/pages/TreePage.tsx @@ -1,12 +1,14 @@ import { AccountTreeOutlined, - CenterFocusWeakOutlined, DataObjectOutlined, LayersOutlined as LayersIcon, ModeStandbyOutlined, - FlipCameraAndroidOutlined as RotateIcon, TimelineOutlined, -} from "@mui/icons-material"; +} from "@mui-symbols-material/w400"; +import { + CenterFocusWeakOutlined, + FlipCameraAndroidOutlined as RotateIcon, +} from "@mui-symbols-material/w300"; import { Box, CircularProgress, diff --git a/client/src/pages/ViewportPage.tsx b/client/src/pages/ViewportPage.tsx index 402fb29..19127f4 100644 --- a/client/src/pages/ViewportPage.tsx +++ b/client/src/pages/ViewportPage.tsx @@ -1,10 +1,12 @@ import { BlurCircularOutlined, + LayersOutlined, +} from "@mui-symbols-material/w400"; +import { CameraOutlined, CenterFocusWeakOutlined, - LayersOutlined, TimesOneMobiledataOutlined, -} from "@mui/icons-material"; +} from "@mui-symbols-material/w300"; import { Box, Divider, Stack, SxProps, Theme } from "@mui/material"; import { FeaturePicker } from "components/app-bar/FeaturePicker"; import { FeaturePickerMulti } from "components/app-bar/FeaturePickerMulti"; diff --git a/client/src/pages/index.tsx b/client/src/pages/index.tsx index 3bde5d7..08c5782 100644 --- a/client/src/pages/index.tsx +++ b/client/src/pages/index.tsx @@ -1,15 +1,25 @@ +import { + CodeOutlined as CodeOutlinedThin, + BugReportOutlined as DebuggerIconThin, + LayersOutlined as LayersIconThin, + ListOutlined as ListOutlinedThin, + RocketLaunchOutlined as RocketIconThin, + SettingsOutlined as SettingsIconThin, + SegmentOutlined as StepsIconThin, + AccountTreeOutlined as TreeIconThin, + ViewInArOutlined as ViewportIconThin, +} from "@mui-symbols-material/w300"; import { CodeOutlined, BugReportOutlined as DebuggerIcon, LayersOutlined as LayersIcon, ListOutlined, - CodeOutlined as LogsIcon, RocketLaunchOutlined as RocketIcon, SettingsOutlined as SettingsIcon, SegmentOutlined as StepsIcon, AccountTreeOutlined as TreeIcon, ViewInArOutlined as ViewportIcon, -} from "@mui/icons-material"; +} from "@mui-symbols-material/w400"; import { Dictionary } from "lodash"; import { DebugPage } from "./DebugPage"; import { ExplorePage } from "./ExplorePage"; @@ -17,10 +27,10 @@ import { InfoPage } from "./InfoPage"; import { LayersPage } from "./LayersPage"; import { PageMeta } from "./PageMeta"; import { SettingsPage } from "./SettingsPage"; +import { SourcePage } from "./SourcePage"; import { StepsPage } from "./StepsPage"; import { TreePage } from "./TreePage"; import { ViewportPage } from "./ViewportPage"; -import { SourcePage } from "./SourcePage"; export const pages: Dictionary = { explore: { @@ -29,6 +39,7 @@ export const pages: Dictionary = { color: "deepOrange", description: "Browse examples and guides", icon: , + iconThin: , content: ExplorePage, allowFullscreen: true, showInSidebar: "always", @@ -39,6 +50,7 @@ export const pages: Dictionary = { description: "", color: "pink", icon: , + iconThin: , content: LayersPage, allowFullscreen: true, showInSidebar: "mobile-only", @@ -49,6 +61,7 @@ export const pages: Dictionary = { description: "", color: "pink", icon: , + iconThin: , content: StepsPage, allowFullscreen: true, }, @@ -58,6 +71,7 @@ export const pages: Dictionary = { description: "", color: "deepPurple", icon: , + iconThin: , content: ViewportPage, allowFullscreen: true, }, @@ -67,6 +81,7 @@ export const pages: Dictionary = { description: "", color: "deepPurple", icon: , + iconThin: , content: TreePage, allowFullscreen: true, }, @@ -76,6 +91,7 @@ export const pages: Dictionary = { description: "", color: "deepPurple", icon: , + iconThin: , content: SourcePage, allowFullscreen: true, showInSidebar: "mobile-only", @@ -86,6 +102,7 @@ export const pages: Dictionary = { description: "", color: "indigo", icon: , + iconThin: , content: DebugPage, allowFullscreen: true, showInSidebar: "mobile-only", @@ -96,6 +113,7 @@ export const pages: Dictionary = { description: "", color: "grey", icon: , + iconThin: , content: InfoPage, allowFullscreen: true, }, @@ -105,6 +123,7 @@ export const pages: Dictionary = { description: "", color: "grey", icon: , + iconThin: , content: SettingsPage, allowFullscreen: true, showInSidebar: "always", diff --git a/client/src/public/manifest.json b/client/src/public/manifest.json index adfdb3c..380a826 100644 --- a/client/src/public/manifest.json +++ b/client/src/public/manifest.json @@ -1,9 +1,9 @@ { "short_name": "Posthoc", "name": "Posthoc", - "version": "1.2.5-4", + "version": "1.2.5-5", "description": "Understand sequential decision-making through visualisation.", - "version_name": "1.2.5-4; mid November 2024", + "version_name": "1.2.5-5; mid November 2024", "repository": "https://github.com/ShortestPathLab/posthoc-app", "changelog": "http://posthoc.pathfinding.ai/blog", "docs": "https://posthoc.pathfinding.ai/docs/overview",