You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.7 KiB
2.7 KiB
OpenEMR-interface
The OpenEMR UI is built with SASS on top of a bootstrap base (compiled with gulp).
Themes
Different themes
share a common core
and have their own overrides to customize the appearance of OpenEMR.
There are three different types of themes:
- The
light
theme is the default modern theme - The
manila
theme is a combination of OpenEMR's legacy themes (which have all been removed) with some modern elements. - The other themes (called
colors
) are the samecolor_base
theme with different color palettes.
rtl_
prefixed themes are built by appending the rtl.css
file to every theme automatically. These overrides provide right to left adjustments for all style*.css
files
Files specific to different themes are named with the following conventions:
themes/core
contain shared styles that all themes import toward the top of their filesthemes/colors
contain all changes specific to the color theme work (led by zbig01)themes/[component_name]
(e.g.buttons
ornavigation-slide
) contain files named after each theme variant.- See TODOs on how we might be able to manage component-level styles in the future
Special Classes
position-override
gives a hook for style to change placement of buttons. In light/manila style this is ignored and buttons go to left positioned under data entry field. Whereas in the other styles this is used to center the buttons.
Getting Started
Compiling SASS files locally requires node.js and npm.
- Setup your local development environment as described in CONTRIBUTING.md
- If running on a local machine, run
npm install
from the root directory. - If running in docker:
docker exec -it [your_container_id] /bin/sh
then cd intoopenemr
From here you can either:
npm run dev
- just compiles the local.scss
files and recompiles them whenever they are changed.npm run dev-sync
(EXPERIMENTAL*) - loads your local OpenEMR instance using BrowserSync (port 3000) in front of 80 (feel free to edit the package.json to change the port)
TODOs
- Incorporate tabs_style_compact.css and tabs_style_full.css (and associated RTL) into scss
- Don't require 2 build runs to build the rtl themes
- Add a lot of documentation on current component usage (starting with theme-only components)
- Migrate style dependencies in the php code to use the components from the
interface
directory - Migrate component css still left in the
/themes
directory into scss