fhir Medication endpoint documentation related updates (#5196)
[openemr.git] / interface / README.md
blob41acbc2f1a656aa933894c350263fffc9d38a86f
1 # OpenEMR-interface
3 The OpenEMR UI is built with [SASS](https://sass-lang.com/) on top of a bootstrap base (compiled with [gulp](https://gulpjs.com/)).
5 ### Themes
7 Different `themes` share a common `core` and have their own overrides to customize the appearance of OpenEMR.
9 There are three different types of themes:
10 * The `light` theme is the default modern theme
11 * The `manila` theme is a combination of OpenEMR's legacy themes (which have all been removed) with some modern elements.
12 * The other themes (called `colors`) are the same `color_base` theme with different color palettes.
14 `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
16 Files specific to different themes are named with the following conventions:
17 * `themes/core` contain shared styles that all themes import toward the top of their files
18 * `themes/colors` contain all changes specific to the color theme work (led by [zbig01](https://github.com/zbig01))
19 * `themes/[component_name]` (e.g. `buttons` or `navigation-slide`) contain files named after each theme variant.
20     * See TODOs on how we might be able to manage component-level styles in the future
22 ### Special Classes
24 * `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.
26 ## Getting Started
28 Compiling SASS files locally requires [node.js](http://nodejs.org) and [npm](https://www.npmjs.com/).
30 1. **Setup your local development environment** as described in [CONTRIBUTING.md](../CONTRIBUTING.md)
32 - If running on a local machine, run `npm install` from the root directory.
33 - If running in docker: `docker exec -it [your_container_id] /bin/sh` then cd into `openemr`
35 From here you can either:
36 * `npm run dev` - just compiles the local `.scss` files and recompiles them whenever they are changed.
37 * `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)
38     * [See video of `dev-sync` in action](https://imgur.com/a/C0dVnfq)
40 ## TODOs
41 - [ ] Incorporate tabs_style_compact.css and tabs_style_full.css (and associated RTL) into scss
42 - [x] Don't require 2 build runs to build the rtl themes
43 - [ ] Add a lot of documentation on current component usage (starting with theme-only components)
44 - [ ] Migrate style dependencies in the php code to use the components from the `interface` directory
45 - [ ] Migrate component css still left in the `/themes` directory into scss