Project Ether Framework
The Project Ether Framework was developed as a common platform for all of Trimble MAPS web applications, with the additional goal of sharing with other groups within Trimble. It leverages the Trimble brand as well as some of the work done by other groups, specifically Project Origin by the SketchUp team.
Background
Project Ether is built upon and extends the Bootstrap 4 code framework. It is a responsive framework for web and mobile uses. You can use the CSS files as is, or integrate the SASS files into your own application if you wish to modify it further.
CDN
The Project Ether Framework can be used from our CDN.
<link rel="stylesheet" href="https://cdn.trimblemaps.com/ether/0.1.25/ether.css">
<link rel="stylesheet" href="https://cdn.trimblemaps.com/ether/0.1.25/ether-dark.css">
JavaScript
A number of the HTML components require JavaScript to function properly. You must inlcude the Bootstrap 4 and JQuery dependencies to use these. Refer to Bootstrap's Guide to learn where to get these files.
Install CSS with NPM
Install Project Ether in your Node.js powered apps with our tarball package:
$ npm install --save-dev @trimblemaps/ether-framework
The compiled CSS files will be found in the ./node_modules/ether-framework/dist
directory.
Customize using SASS
The SASS files will be found in the /scss
directory.
Development
Builds CSS, runs dev server, and watches for changes
npm run dev
Sample page found at http://localhost:3030/
Build Package
Builds the CSS files to /dist
npm run build
File structure
Whenever possible, avoid modifying Ether or Bootstrap core files.
For Sass, that means creating your own stylesheet that imports Ether and Bootstrap so you can modify and extend it. Assuming you’re using a package manager like npm, you’ll have a file structure that looks like this:
your-project/
├── scss
│ └── custom.scss
└── node_modules/
├── bootstrap
│ ├── js
│ └── scss
└── ether-framework
└── scss
Importing
In your custom.scss, you’ll import Ether and Bootstrap’s source Sass files. With that setup in place, you can begin to modify any of the Sass variables and maps in your custom.scss.
You can also start to add parts of Bootstrap under the // Optional
section as needed. We suggest using the full import stack from our bootstrap.scss
file as your starting point.
The main file to focus on is the _theme.scss
file (and/or _theme-dark.scss
if you want a dark look.
You should copy this file from /node_modules/project-ether-framework/scss/components
to your own SASS directory and import your copy instead of the Project Ether version in your main SASS file.
This example shows you how you should structure your main file. The order in which files ar eimported matters.
@import "../node_modules/bootstrap/scss/functions";
@import "components/functions";
@import url('https://fonts.googleapis.com/css?family=Open+Sans:400,600,700');
@import url('https://fonts.googleapis.com/css?family=Rubik:300,400,600,700');
@import "your_custom_sass_directory/your_copy_of_ether_theme_file";
@import "../node_modules/project-ether-framework/scss/components/variables";
@import "../node_modules/bootstrap/scss/variables";
@import "../node_modules/bootstrap/scss/mixins";
@import "../node_modules/bootstrap/scss/reboot";
@import "../node_modules/bootstrap/scss/type";
@import "../node_modules/bootstrap/scss/images";
@import "../node_modules/bootstrap/scss/code";
@import "../node_modules/bootstrap/scss/grid";
@import "../node_modules/bootstrap/scss/tables";
@import "../node_modules/bootstrap/scss/forms";
@import "../node_modules/bootstrap/scss/buttons";
@import "../node_modules/bootstrap/scss/transitions";
@import "../node_modules/bootstrap/scss/dropdown";
@import "../node_modules/bootstrap/scss/button-group";
@import "../node_modules/bootstrap/scss/input-group";
@import "../node_modules/bootstrap/scss/custom-forms";
@import "../node_modules/bootstrap/scss/nav";
@import "../node_modules/bootstrap/scss/navbar";
@import "../node_modules/bootstrap/scss/card";
@import "../node_modules/bootstrap/scss/breadcrumb";
@import "../node_modules/bootstrap/scss/pagination";
@import "../node_modules/bootstrap/scss/badge";
@import "../node_modules/bootstrap/scss/jumbotron";
@import "../node_modules/bootstrap/scss/alert";
@import "../node_modules/bootstrap/scss/progress";
@import "../node_modules/bootstrap/scss/media";
@import "../node_modules/bootstrap/scss/list-group";
@import "../node_modules/bootstrap/scss/close";
@import "../node_modules/bootstrap/scss/toasts";
@import "../node_modules/bootstrap/scss/modal";
@import "../node_modules/bootstrap/scss/tooltip";
@import "../node_modules/bootstrap/scss/popover";
@import "../node_modules/bootstrap/scss/carousel";
@import "../node_modules/bootstrap/scss/spinners";
@import "../node_modules/bootstrap/scss/utilities";
@import "../node_modules/bootstrap/scss/print";
@import "../node_modules/project-ether-framework/scss/components/mixins";
@import "../node_modules/project-ether-framework/scss/components/controls";
@import "../node_modules/project-ether-framework/scss/components/base";
@import "../node_modules/project-ether-framework/scss/components/layout";
@import "your_custom_sass_directory/your_sass_files";