TODC Bootstrap
A Google-styled theme for Bootstrap.
Explore TODC Bootstrap docs »
Report bug · Request feature
Table of contents
- Overview
- Quick start
- Status
- Compatibility
- Requirements
- Bugs and feature requests
- Documentation
- Contributing
- Versioning
- Creators
- Thanks
- Copyright and license
- Acknowledgements
Overview
This is a Google-styled theme for Bootstrap. Because I'm a fan of the new Google UI seen in Gmail, Docs, Calendar, etc, I decided to reproduce the look of these new UI elements for my own personal use. The project's goal isn't UI parity with Google Apps -- it's feature parity with Bootstrap, themed with Google's UI in mind.
TODC Bootstrap was created by Tim O'Donnell, and maintained with the support and involvement of the community.
Quick start
Several quick start options are available:
- Download the latest release.
- Clone the repo:
git clone https://github.com/todc/todc-bootstrap.git
. - Install with npm:
npm install [email protected]
- Install with yarn:
yarn add [email protected]
- Install with Composer:
composer require todc/todc-bootstrap:5.0.0-5.0.0-alpha2
.
NOTE - After cloning/installing todc-bootstrap you must run grunt checkout-bootstrap
from the todc-bootstrap directory. This will download the correct version of the Bootstrap source.
Read the Getting started page for information on the framework contents, templates and examples, and more.
Status
TODO - Configure BrowserStack
What's included
Within the download you'll find the following directories and files, logically grouping common assets and providing both compiled and minified variations. You'll see something like this:
todc-bootstrap/
└── dist/
├── css/
│ ├── bootstrap-grid.css
│ ├── bootstrap-grid.css.map
│ ├── bootstrap-grid.min.css
│ ├── bootstrap-grid.min.css.map
│ ├── bootstrap-reboot.css
│ ├── bootstrap-reboot.css.map
│ ├── bootstrap-reboot.min.css
│ ├── bootstrap-reboot.min.css.map
│ ├── bootstrap-utilities.css
│ ├── bootstrap-utilities.css.map
│ ├── bootstrap-utilities.min.css
│ ├── bootstrap-utilities.min.css.map
│ ├── bootstrap.css
│ ├── bootstrap.css.map
│ ├── bootstrap.min.css
│ ├── bootstrap.min.css.map
│ ├── todc-bootstrap-utilities.css
│ ├── todc-bootstrap-utilities.css.map
│ ├── todc-bootstrap-utilities.min.css
│ ├── todc-bootstrap-utilities.min.css.map
│ ├── todc-bootstrap.css
│ ├── todc-bootstrap.css.map
│ ├── todc-bootstrap.min.css
│ └── todc-bootstrap.min.css.map
└── js/
├── bootstrap.bundle.js
├── bootstrap.bundle.js.map
├── bootstrap.bundle.min.js
├── bootstrap.bundle.min.js.map
├── bootstrap.esm.js
├── bootstrap.esm.js.map
├── bootstrap.esm.min.js
├── bootstrap.esm.min.js.map
├── bootstrap.js
├── bootstrap.js.map
├── bootstrap.min.js
└── bootstrap.min.js.map
We provide compiled CSS and JS (bootstrap.*, todc-bootstrap.*
), as well as compiled and minified CSS and JS (bootstrap.min.*, todc-bootstrap.min.*
). source maps (bootstrap.*.map, todc-bootstrap.*.map
) are available for use with certain browsers' developer tools. Bundled JS files (bootstrap.bundle.js
and minified bootstrap.bundle.min.js
) include Popper.
Compatibility
This is being tested in the latest versions of Chrome, Firefox, and IE8+.
The following projects are specifically designed for use with todc-bootstrap:
- todc-select2 - Google-themed select menus
- todc-datepicker - Google-themed datepicker component
Requirements
- SASS - for compiling
.scss
files into CSS - Bootstrap - this will be automatically checked out, if necessary, during the build process
Bugs and feature requests
Have a bug or a feature request? Please first read the issue guidelines and search for existing and closed issues. If your problem or idea is not addressed yet, please open a new issue.
Documentation
TODC Bootstrap's documentation, included in this repo in the root directory, is built with Hugo and publicly hosted on GitHub Pages at https://todc.github.io/todc-bootstrap/. The docs may also be run locally.
Documentation search is powered by Algolia's DocSearch. Working on our search? Be sure to set debug: true
in site/assets/js/src/search.js
file.
Running documentation locally
- Run
npm install
to install the Node.js dependencies, including Hugo (the site builder). - Run
npm run test
(or a specific npm script) to rebuild distributed CSS and JavaScript files, as well as our docs assets. - From the root
/todc-bootstrap
directory, runnpm run docs-serve
in the command line. - Open
http://localhost:9002/
in your browser, and voilà.
Learn more about using Hugo by reading its documentation.
Documentation for previous releases
You can find all our previous releases docs on https://todc.github.io/todc-bootstrap/docs/versions/.
Previous releases and their documentation are also available for download.
Contributing
Please read through our contributing guidelines. Included are directions for opening issues, coding standards, and notes on development.
Editor preferences are available in the editor config for easy use in common text editors. Read more and download plugins at https://editorconfig.org/.
Versioning
For transparency into our release cycle and in striving to maintain backward compatibility, Bootstrap is maintained under the Semantic Versioning guidelines. Sometimes we screw up, but we adhere to those rules whenever possible.
See the Releases section of our GitHub project for changelogs for each release version of TODC Bootstrap.
Releases will be numbered with the following format:
<major>.<minor>.<patch>-<major>.<minor>.<patch>
The first set of <major>.<minor>.<patch>
is the Bootstrap version while the second set is the todc-bootstrap version.
Given a version number MAJOR.MINOR.PATCH, increment the:
- MAJOR version when you make incompatible API changes,
- MINOR version when you add functionality in a backwards-compatible manner, and
- PATCH version when you make backwards-compatible bug fixes.
Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format.
Creators
Tim O'Donnell
Thanks
Thanks to BrowserStack for providing the infrastructure that allows us to test in real browsers!
Copyright and license
Copyright 2011-2020 Tim O'Donnell. Code released under the MIT license. Docs released under Creative Commons.
NOTE This project was previously and incorrectly licensed under the Public Domain. It has now been changed to be compatible with Bootstrap's current license.
Acknowledgements
Inspired by Bootstrap and, of course, Google.
Verify we still match Google styles
Bootstrap 3
Some things to consider for upgrading this project to Bootstrap 3. Please see here for the complete list of changes for Bootstrap 3, twitter/bootstrap#6342
A build of this project using Bootstrap 3.0.0 is available here, http://acmetech.github.com/todc-bootstrap-3/
Google Style Navbars
Here are my ideas on how we can implement the different navbars Google uses:
Google uses two variants of a navbar in their webpages:
We want to support both options!
Gmail-esque Navbar
We style the regular navbar-inner class to be just like gmail and the html / css class structure could remain the same.
Developer-esque Navheader & Navbar
div.navbar
-.navbar-google
to indicate the Developer-esque nav themediv.navbar-header
class where content could be placed (logo, search bar, etc.)ul.nav
to be similar to the tabs on developers.google.comShould no :focus outline when :active
Note: Browser add
focus
andactive
status when you ~~~mouseup~~~ mousedown a elementNow
https://todc.github.io/todc-bootstrap/css/#buttons-options
Expect
https://translate.google.com
Default branch name
Hi @todc,
What are your thoughts on renaming the "master" branch to "main"? Bootstrap did it here c28934cb1871d6b6bd6a866660493a1137de17c6.
If you would like to change the name, I don't have access to the repository settings to change the default branch. I can take care of everything else and then the default can be changed.
Thanks
Top navigation and the items.
Hi guys,
I've just started using TODC and getting two issues. First one is the top padding when top navigation is top fixed position. The second is that not sure why menu items got shrank.
Add Card UI components
Can you port some of the features from bootplus? http://aozora.github.io/bootplus/plus.html
especially the News Card, People Card and People Hover Card
W3C CSS Validator for todo-bootstrap running to 300+ error
I started noticing lately that the project website in itself has 300+ css validation errors.
http://jigsaw.w3.org/css-validator/validator?uri=http%3A%2F%2Ftodc.github.io%2Ftodc-bootstrap%2F&profile=css3&usermedium=all&warning=1&vextwarning=&lang=en
What could be the issues using the todo custom css style-sheet in any project?
New Logo
Hi @todc,
Bootstrap has changed its logo for version 5.
I've updated the todc-bootstrap logo to reflect the new design. Let me know your thoughts.
Thanks
Add blue border on .btn-link:focus, and Proper "Proper fix #179"
Add blue border on
.btn-link:focus
Proper "Proper fix #179"
It wrong at CSS priority. My wrong fix:
Expect:

Some reason cause I can't build, so you should build and test.
Nested dropdowns are broken in recent update
I've just updated to the most recent version (cloned from repo), and while a lot of bugs are fixed (excellent job!), there is a small regression with the dropdowns, making the nested sub-menus badly aligned.
See: Bad Dropdown
Don't include *.map in dist/css/todc-bootstrap.css, have a debug build
So todc-bootstrap.css shouldn't be a debug build by default, maybe have a todc-bootstrap.debug.css which has the source map included.
This is mainly due to using that file with other files in an app, and usually we bring in the non-minified version and minify things for production only. We generate our own source maps when needed, so this is kind of a hassle, since we need to use the min version (or edit the file, which is hardly acceptable).
Popout Menu is not visible outside of a scrollable area
When creating a scrollable area and using a dropdown or any other popout element inside the scrollable area, it will not be shown outside of the overflow-hidden area.
See example:
I realize that this may not be directly related to the TODC port, but rather Bootstrap itself.
In any case, a possible solution might be by using Tether.js: https://github.com/HubSpot/tether