diff --git a/app/api/src/docker/openscad/Dockerfile b/app/api/src/docker/openscad/Dockerfile index 77c5061..819141a 100644 --- a/app/api/src/docker/openscad/Dockerfile +++ b/app/api/src/docker/openscad/Dockerfile @@ -42,6 +42,8 @@ RUN npm install RUN echo "OPENSCADPATH=/var/task/openscad" >>/etc/profile && \ wget -P /var/task/openscad/ https://github.com/Irev-Dev/Round-Anything/archive/refs/tags/1.0.4.zip && \ unzip /var/task/openscad/1.0.4 +# Add our own theming (based on DeepOcean with a different "background" and "opencsg-face-back") +COPY openscad/cadhubtheme.json /usr/share/openscad/color-schemes/render/ COPY openscad/*.js /var/task/ COPY common/*.js /var/common/ diff --git a/app/api/src/docker/openscad/cadhubtheme.json b/app/api/src/docker/openscad/cadhubtheme.json new file mode 100644 index 0000000..b226853 --- /dev/null +++ b/app/api/src/docker/openscad/cadhubtheme.json @@ -0,0 +1,19 @@ +{ + "name" : "CadHub", + "index" : 1600, + "show-in-gui" : true, + + "colors" : { + "background" : "#1A1A1D", + "axes-color" : "#c1c1c1", + "opencsg-face-front" : "#eeeeee", + "opencsg-face-back" : "#8732F2", + "cgal-face-front" : "#eeeeee", + "cgal-face-back" : "#0babc8", + "cgal-face-2d" : "#9370db", + "cgal-edge-front" : "#0000ff", + "cgal-edge-back" : "#0000ff", + "cgal-edge-2d" : "#ff00ff", + "crosshair" : "#f0f0f0" + } +} diff --git a/app/api/src/docker/openscad/runScad.js b/app/api/src/docker/openscad/runScad.js index 89662a6..4a4db3c 100644 --- a/app/api/src/docker/openscad/runScad.js +++ b/app/api/src/docker/openscad/runScad.js @@ -21,7 +21,7 @@ module.exports.runScad = async ({ const { x: px, y: py, z: pz } = position const cameraArg = `--camera=${px},${py},${pz},${rx},${ry},${rz},${dist}` const fullPath = `/tmp/${tempFile}/output.png` - const command = `xvfb-run --auto-servernum --server-args "-screen 0 1024x768x24" openscad -o ${fullPath} ${cameraArg} --imgsize=${x},${y} --colorscheme DeepOcean /tmp/${tempFile}/main.scad` + const command = `xvfb-run --auto-servernum --server-args "-screen 0 1024x768x24" openscad -o ${fullPath} ${cameraArg} --imgsize=${x},${y} --colorscheme CadHub /tmp/${tempFile}/main.scad` console.log('command', command) try { diff --git a/app/web/src/components/EditorMenu/EditorMenu.tsx b/app/web/src/components/EditorMenu/EditorMenu.tsx index 57d8f6e..7e090c6 100644 --- a/app/web/src/components/EditorMenu/EditorMenu.tsx +++ b/app/web/src/components/EditorMenu/EditorMenu.tsx @@ -18,9 +18,9 @@ const EditorMenu = () => { const isOpenScad = state.ideType === 'openScad' const isCadQuery = state.ideType === 'cadQuery' return ( -
+
-
+
@@ -31,10 +31,12 @@ const EditorMenu = () => { - thunkDispatch({type: 'resetLayout'})} /> + thunkDispatch({ type: 'resetLayout' })} + />
) const IdeHeader = ({ handleRender }: { handleRender: () => void }) => { return ( -
-
+
+
- Render + @@ -41,8 +42,14 @@ const IdeHeader = ({ handleRender }: { handleRender: () => void }) => { return ( <> - - Share + + {open && ( diff --git a/app/web/src/components/IdeSideBar/IdeSideBar.tsx b/app/web/src/components/IdeSideBar/IdeSideBar.tsx index f887a68..9ee1d84 100644 --- a/app/web/src/components/IdeSideBar/IdeSideBar.tsx +++ b/app/web/src/components/IdeSideBar/IdeSideBar.tsx @@ -4,7 +4,7 @@ import Svg from 'src/components/Svg/Svg' const IdeSideBar = () => { return (
-
+
diff --git a/app/web/src/components/IdeViewer/IdeViewer.js b/app/web/src/components/IdeViewer/IdeViewer.js index 8f854e8..b9b3c47 100644 --- a/app/web/src/components/IdeViewer/IdeViewer.js +++ b/app/web/src/components/IdeViewer/IdeViewer.js @@ -136,7 +136,7 @@ function Sphere(props) { ) } -const IdeViewer = () => { +const IdeViewer = ({ Loading }) => { const { state, thunkDispatch } = useIdeContext() const [isDragging, setIsDragging] = useState(false) const [image, setImage] = useState() @@ -146,21 +146,13 @@ const IdeViewer = () => { setIsDragging(false) }, [state.objectData?.type, state.objectData?.data]) - const openSCADDeepOceanThemeBackground = '#323232' // the following are tailwind colors in hex, can't use these classes to color three.js meshes. const pink400 = '#F472B6' const indigo300 = '#A5B4FC' const indigo900 = '#312E81' return ( -
- {state.isLoading && ( -
-
-
- )} +
+ {state.isLoading && } {image && (
{ return (
-
+
diff --git a/app/web/src/components/PanelToolbar/PanelToolbar.tsx b/app/web/src/components/PanelToolbar/PanelToolbar.tsx index 1b88675..bb4329a 100644 --- a/app/web/src/components/PanelToolbar/PanelToolbar.tsx +++ b/app/web/src/components/PanelToolbar/PanelToolbar.tsx @@ -7,14 +7,14 @@ const PanelToolbar = ({ panelName }: { panelName: string }) => { return (
{mosaicWindowActions.connectDragSource( -
+
)} diff --git a/app/web/src/components/Svg/Svg.tsx b/app/web/src/components/Svg/Svg.tsx index c45838a..729ff8a 100644 --- a/app/web/src/components/Svg/Svg.tsx +++ b/app/web/src/components/Svg/Svg.tsx @@ -17,10 +17,12 @@ type SvgNames = | 'logout' | 'mac-cmd-key' | 'pencil' + | 'photograph' | 'plus' | 'plus-circle' | 'refresh' | 'save' + | 'share' | 'terminal' | 'trash' | 'x' @@ -345,6 +347,22 @@ const Svg = ({ /> ), + photograph: ( + + + + ), plus: ( ), + share: ( + + + + ), terminal: ( new Promise((resolve, reject) => { diff --git a/app/web/src/index.css b/app/web/src/index.css index 00aea43..2125962 100644 --- a/app/web/src/index.css +++ b/app/web/src/index.css @@ -44,10 +44,20 @@ @apply list-disc; } +#cadhub-ide.mosaic-toolbar-overrides .mosaic-blueprint-theme { + background-color: #0D0D13; +} +#cadhub-ide.mosaic-toolbar-overrides .mosaic-root { + top: 0; +} .mosaic-toolbar-overrides .mosaic-window .mosaic-window-toolbar { /* makes the height of the toolbar based off the content inside instead of hardcoded to 30px */ height: unset; } +/* used in IdeContainer component */ +#cadhub-ide .mosaic-window.console .mosaic-window-body { + overflow-y: auto; +} /* Used for LandingSection.js, if it's gone or these class isn't used there you can probably delete it */ @@ -102,7 +112,3 @@ input.error, textarea.error { border: 1px solid red; } -/* used in IdeContainer component */ -#cadhub-ide .mosaic-window.console .mosaic-window-body { - overflow-y: auto; -} diff --git a/app/web/tailwind.config.js b/app/web/tailwind.config.js index 7fc88b7..76a2c41 100644 --- a/app/web/tailwind.config.js +++ b/app/web/tailwind.config.js @@ -3,16 +3,46 @@ module.exports = { darkMode: false, // or 'media' or 'class' theme: { extend: { - backgroundImage: () => ({ - texture: `url("data:image/svg+xml,%3Csvg width='100' height='100' viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 18c3.866 0 7-3.134 7-7s-3.134-7-7-7-7 3.134-7 7 3.134 7 7 7zm48 25c3.866 0 7-3.134 7-7s-3.134-7-7-7-7 3.134-7 7 3.134 7 7 7zm-43-7c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zm63 31c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zM34 90c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zm56-76c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zM12 86c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm28-65c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm23-11c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm-6 60c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm29 22c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zM32 63c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm57-13c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm-9-21c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2zM60 91c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2zM35 41c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2zM12 60c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2z' fill='%236a49c3' fill-opacity='0.47' fill-rule='evenodd'/%3E%3C/svg%3E");`, - }), animation: { 'bounce-sm-slow': 'bounce-sm 5s linear infinite', 'twist-sm-slow': 'twist-sm 10s infinite', }, + backgroundImage: () => ({ + texture: `url("data:image/svg+xml,%3Csvg width='100' height='100' viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 18c3.866 0 7-3.134 7-7s-3.134-7-7-7-7 3.134-7 7 3.134 7 7 7zm48 25c3.866 0 7-3.134 7-7s-3.134-7-7-7-7 3.134-7 7 3.134 7 7 7zm-43-7c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zm63 31c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zM34 90c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zm56-76c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zM12 86c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm28-65c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm23-11c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm-6 60c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm29 22c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zM32 63c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm57-13c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm-9-21c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2zM60 91c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2zM35 41c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2zM12 60c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2z' fill='%236a49c3' fill-opacity='0.47' fill-rule='evenodd'/%3E%3C/svg%3E");`, + }), + borderRadius: { + half: '50%', + }, + colors: { + 'ch-gray': { + 900: '#0D0D13', + 800: '#1A1A1D', + 750: '#222222', + 760: '#232532', + 700: '#2A3038', + 300: '#CFCFD8', + }, + 'ch-purple': { + 400: '#3B0480', + 500: '#8732F2', + 600: '#A663FA', + }, + 'ch-blue': { + 600: '#79B2F8', + }, + 'ch-pink': { + 800: '#93064F', + 500: '#DF5CA0', + 300: '#F98CC5', + }, + }, cursor: { grab: 'grab' }, + fontFamily: { + 'ropa-sans': ['Ropa Sans', 'Arial', 'sans-serif'], + roboto: ['Roboto', 'Arial', 'sans-serif'], + }, keyframes: { 'bounce-sm': { '0%, 100%': { @@ -41,16 +71,9 @@ module.exports = { minHeight: { md: '28rem', }, - fontFamily: { - 'ropa-sans': ['Ropa Sans', 'Arial', 'sans-serif'], - roboto: ['Roboto', 'Arial', 'sans-serif'], - }, skew: { '-20': '-20deg', }, - borderRadius: { - half: '50%', - }, }, }, variants: {},