From e8ec7ae60c7ea7ab59547e6246234a4bcb5ba876 Mon Sep 17 00:00:00 2001 From: Jim Perrin Date: Jan 23 2014 23:07:35 +0000 Subject: upload of current site content --- diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5285ad4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +*~ +output/* +tmp/* +.sass-cache/* +Guardfile +output.diff +crash.log diff --git a/README.md b/README.md index 99c55c1..28b475a 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,7 @@ +This is a repository for a yet-to-be-announced project. Consider +everything here company confidential until the announcement. + + The site is built with *nanoc* and *Bootstrap 3*. * http://www.nanoc.ws @@ -30,30 +34,9 @@ May be in RPM: * asciidoc * nokogiri -Installing on Fedora 19/20: -Packages will come later for the dependencies. +Installing on Fedora 20: +
 sudo yum install ruby asciidoc nokogiri
-gem install nanoc adsf cri compass haml kramdown pry rainpress rubypants sass susy systemu guard-nanoc
+gem install nanoc adsf cri compass haml kramdown pry rainpress rubypants sass susy systemu
 
- - -#Site Layout - * Template and menu files live in /layouts - * Markdown, erb and processed text files live in /content - * Static site content such as images and javascript live in /static - * The /lib directory contains nanoc helper files used to process the site - * Compiled site content exists in /output - -#Building the site - * Run 'nanoc' to compile assemble the static site. files from /static, /content, and /layouts will be combined. - * You may view the site with 'nanoc view' and then pointing your browser at http://127.0.0.1:3000 - -You may compile and view the site live as you make changes using the guard module. To do this, run 'guard init' at the root of the site. -This will create a watch file that will serve as list for what files the guard module will keep an eye on. Changes to these files will trigger an automatic rebuild of the site. -Next run 'nanoc view &', followed by 'guard' -Now in another terminal, you may make changes to the website content, and it will rebuild as you touch files. - - -#Deploying the site -Simply run 'nanoc deploy --target=' where the target value is either prod1 or prod2. These targets are defined in the nanoc.yaml file. diff --git a/Rules b/Rules new file mode 100644 index 0000000..ede8eec --- /dev/null +++ b/Rules @@ -0,0 +1,103 @@ +#!/usr/bin/env ruby + +## Required Gems +require 'compass' +require 'susy' + +### Compass configuration #################################################### +Compass.add_project_configuration 'config.rb' +sass_options = Compass.sass_engine_options + +### Configuration ############################################################ +TypographicalImprovementFilter = :rubypants +TypographicalImprovementFilterParams = {} + +### Preprocessing ############################################################ +preprocess do + config[:nanoc_version_info] = `nanoc --version`.strip + config[:gem_version_info] = `gem --version`.strip +end + +### Routing ################################################################## +route '/static/*' do + # /static/foo.html/ → /foo.html + item.identifier[7..-2] +end + +route 'sitemap' do + item.identifier.chop + '.xml' +end + + +route '/assets/css/bootstrap/_*/' do + # Don't output partials, so return nil + nil +end + +route '/assets/css/*/' do + # path with version + '/assets/style' + '-v' + rep.item[:version].to_s + '.css' +end + +route '*' do + if item.binary? + item.identifier.chop + '.' + item[:extension] + elsif item[:is_partial] || item[:kind] == 'article' + # Don’t output partial items (e.g. sub-stylesheets) + nil + elsif item[:path] + item[:path] + else + # Place each file in its own directory + rep.item.identifier + 'index.html' + end +end + + +### Compilation ############################################################## + +compile 'sitemap' do + filter :erb +end + +compile '/assets/css/bootstrap/_*/' do + # Don’t compile partials +end + +compile '/assets/css/*/' do + filter :sass, Compass.sass_engine_options + filter :relativize_paths, :type => :css + filter :rainpress +end +compile '/static/*' do +end + +compile '*' do + if item.binary? + # ha, do nothing! :) + else + puts "item = #{item.identifier} -- extension = #{item[:extension]}" + case item[:extension] + when 'md' + filter :erb + filter :kramdown + when 'haml' + filter :erb + filter :haml + when 'js' + filter :erb + filter :uglify_js + when 'adoc' + filter :asciidoc + else + filter :erb + end + layout 'default-haml' unless item[:extension] == 'js' + filter :add_ids_to_headers + filter TypographicalImprovementFilter, TypographicalImprovementFilterParams + end +end +### Layouting ################################################################ + + +layout '*', :haml diff --git a/config.rb b/config.rb new file mode 100755 index 0000000..dd7e649 --- /dev/null +++ b/config.rb @@ -0,0 +1,11 @@ +project_path = "." +http_path = '/' +output_style = :expanded +sass_dir = 'content/assets/css' +css_dir = 'output/assets/css' +fonts_dir = "output/assets/fonts" +icon_fonts_path = "output/assets/fonts" +icon_fonts_dir = "output/assets/fonts" +sass_options = { + :syntax => :scss +} diff --git a/content/about.md b/content/about.md new file mode 100644 index 0000000..5fd2d9e --- /dev/null +++ b/content/about.md @@ -0,0 +1,31 @@ +--- +title: "About CentOS" +markdown: basic +is_dynamic: true +--- +* Table of contents will replace this text. +{:toc} + + +#CentOS Linux +The CentOS Linux distribution is a stable, predictable, manageable and reproduceable platform derived from the sources of Red Hat Enterprise Linux (RHEL). We are now looking to expand on that by creating the resources needed by other communities to come together and be able to buld on the CentOS Linux platform. And today we start the process by delivering a clear governance model, increased transparency and access. In the coming weeks we aim to publish our own roadmap that includes variants of the core CentOS Linux. + +Since March 2004, CentOS Linux has been a community-supported distribution derived from sources freely provided to the public by Red Hat. As such, CentOS Linux aims to be functionally compatible with RHEL. We mainly changes packages to remove upstream vendor branding and artwork. CentOS Linux is no-cost and [free to redistribute](/legal). + +CentOS Linux is developed by a small but growing team of core developers. In turn the core developers are supported by an active user community including system administrators, network administrators, managers, core Linux contributors, and Linux enthusiasts from around the world. + +Over the coming year, the CentOS Project will expand its mission to establish CentOS Linux as a leading community platform for emerging open source technologies coming from other projects such as OpenStack. These technologies will be at the center of multiple variations of CentOS, as individual downloads or accessed from a custom installer. Read more about the [variants](/variants) and [Special Interest Groups](http://wiki.centos.org/SpecialInterestGroup) that produce them. + +#The CentOS Project +The CentOS Project is a community-driven free software effort focused around the goal of providing a rich base platform for open source communities to build upon. We will provide a development framework for cloud providers, the hosting community, and scientific data processing, as a few examples. We work with several 'upstream' communities to help them layer and distribute their software more effectively on a platform they can rely on. + + +## The Governing Board +The CentOS Governing Board is made up of members of the CentOS Project, many of whom have been around since the creation of the Project, as well as new members from Red Hat who were instrumental in bringing the new relationship together. The focus of the Governing Board is to curate the CentOS Project, assist and guide in the progress and development of the various SIGs, as well as to promote CentOS Linux. For more information read the [governance page](/about/governance). + +## The Project Structure +The CentOS Project is modelled on the structure of the [Apache Foundation](http://apache.org), with a governing board that oversees various semi-autonomous [Special Interest Groups or 'SIGs'](http://wiki.centos.org/SpecialInterestGroup). These groups are focused on providing various enhancements, addons, or replacements for core CentOS Linux functionality. A few notable examples of SIGs are: + +* [Core](http://wiki.centos.org/SpecialInterestGroup/Core) - Building and releasing the core CentOS Linux platform. +* [Xen4CentOS](http://wiki.centos.org/Manuals/ReleaseNotes/Xen4-01) - Providing Xen4 support for CentOS 6 +* [CentOS Design](http://wiki.centos.org/ArtWork) - Improving the user experience with high quality artwork diff --git a/content/about/governance.md b/content/about/governance.md new file mode 100644 index 0000000..a0feb09 --- /dev/null +++ b/content/about/governance.md @@ -0,0 +1,51 @@ +--- +title: "CentOS Governance" +markdown: basic +is_dynamic: true +--- + +* Table of contents will replace this text. +{:toc} + +#CentOS Governance +{:.no_toc} + +The CentOS Project governance structure has two main tiers: + +* The Governing Board, a group of 8 to 11 people, responsible for overall oversight of the CentOS Project +* Special Interest Groups (SIGs), teams within the community that focus on either enabling a technology solution as an add-on to the core CentOS release, or building and maintaining a functional aspect of the Project, such as infrastructure or documentation. + +
+ Image describing the board +
+

The Governing Board is like a greenhouse, providing support for starting and maturing a SIG the way a greenhouse uses sunlight, water, nutrients, and soil to turn seeds in to fruiting plants.

+
+
+ +## The CentOS Governing Board + +The focus of the Governing Board is to assist and guide in the progress and development of the various SIGs, as well as to lead and promote CentOS. + +The CentOS Governing Board is the governing body responsible for the overall oversight of the CentOS Project and SIGs, the creation of new SIGs, and the election (and re-election) of new board members. The Board also has the responsibility to ensure the goals, brands, and marks of the CentOS Project and community are protected. The Board serves as the final authority within the CentOS Project. + +## Current Sitting Board +The initial CentOS Governing Board will be made up of members of the CentOS Project, many of whom have been around since the creation of the Project, as well as new members from Red Hat who were instrumental in bringing the new relationship together. + +The CentOS Governing Board is: + +* [Carl Trieloff](http://wiki.centos.org/CarlTrieloff) +* [Fabian Arrotin](http://wiki.centos.org/FabianArrotin) +* [Jim Perrin](http://wiki.centos.org/JimPerrin) +* [Johnny Hughes](http://wiki.centos.org/JohnnyHughes) +* [Karanbir Singh](http://wiki.centos.org/KaranbirSingh) ([Chair](/about/governance/board-responsibilities/#chair-responsibilities)) +* [Karsten Wade](http://wiki.centos.org/KarstenWade) ([Liaison](/about/governance/board-responsibilities/#red-hat-liaison-responsibilities)) +* [Mike McLean](http://wiki.centos.org/MikeMcLean) +* [Ralph Angenendt](http://wiki.centos.org/RalphAngenendt) +* [Tru Huynh](http://wiki.centos.org/TruHuynh) + +## More information +* [Governing Board responsibilities](/about/governance/board-responsibilities) +* [SIGs](/about/governance/sigs) +* [Joining the project](/about/governance/joining-the-project) +* [Voting](/about/governance/voting) +* [Appendix: Glossary](/about/governance/appendix-glossary) diff --git a/content/about/governance/appendix-glossary.md b/content/about/governance/appendix-glossary.md new file mode 100644 index 0000000..4ec30a1 --- /dev/null +++ b/content/about/governance/appendix-glossary.md @@ -0,0 +1,38 @@ +--- +title: "CentOS Governance - Appendix: Glossary" +markdown: basic +is_dynamic: true +--- + +* Table of contents will replace this text. +{:toc} + +#CentOS Governance - Appendix: Glossary +{:.no_toc} +[« Back to Governance](/about/governance) + +## Meritocracy +In the free and open source software communities, meritocracy is one of the 3 main governance models in use and is likely the most popular, powerful, and successful. However, there is still, at times, confusion over how exactly this model works. + +First and foremost, the basic tenet behind meritocracy is that people gain merit by their actions and activities within the community. What actually comprises that merit is determined by the pre-existing community itself, and so there exists an internal, stabilizing feedback system that prevents a healthy meritocracy from going askew. This basis of “what is merit” and “how one earns it” is self-defined and known within the community and can, and does, vary from community and project. For example, one FOSS project/community may value simple coding capability above all, and thus heavy-coders will gain merit quickly, whether they do so as volunteers or are paid to do so, and whether they work well with others or not. Other communities value a healthy balance of coding skills with consensus-based collaboration skills, whereas others also include the individual's personal stake in the project (how much they are personally involved and invested). + +As the above shows, a meritocracy is not, therefore, a democracy proper but a pseudo-republic. The wants and desires of the community are weighed in the atmosphere of merit that enables access and control. + +##Consensus decision making +One practice of meritocracy is the consensus-based decision model. From http://en.wikipedia.org/wiki/Consensus_decision-making, “Consensus decision-making is a group decision making process that seeks the consent of all participants.” In practice, it is different from a majority-vote-wins approach. In the CentOS Project a discussion toward a decision follows this process: + +1. A proposal is put forth and a check for consensus is made. + 1. Consensus is signified through a +1 vote. +1. A check is made for any dissent on the proposal. + 1. Reservations? State reservation, sometimes with a ‘-1’ signifier + 1. Reservations about the proposal are worked through, seeking consensus to resolve the reservations. + 1. A reservation is not a vote against the proposal, but may turn into a vote against if unresolved. It is often expressed with an initial -1 vote to indicate reservations and concerns. This indicates there is still discussion to be had. + 1. Stand aside? No comment, or state concerns without a -1 reservation; sometimes the ‘-0’ signifier is used. + 1. This option allows a member to have issues with the proposal without choosing to block the proposal, by instead standing aside with a +/-0 vote. + 1. The stated concerns may influence other people to have or release reservations. + 1. Block? Vote ‘-1’ with reasons for the block. + 1. This is a complete block on a proposal, refusing to let it pass. A block is a -1 vote and must be accompanied with substantive arguments that are rooted in the merit criteria of the Project -- protecting the community, the upstream, technical reasons, and so forth. + +Block (-1) votes used as a veto are typically used only when consensus cannot otherwise be met, and are effectively a veto that any sitting Board member can utilize with sufficient substantiation. + +[« Back to Governance](/about/governance) diff --git a/content/about/governance/board-diagram-involvement.png b/content/about/governance/board-diagram-involvement.png new file mode 100644 index 0000000..dafd110 Binary files /dev/null and b/content/about/governance/board-diagram-involvement.png differ diff --git a/content/about/governance/board-responsibilities.md b/content/about/governance/board-responsibilities.md new file mode 100644 index 0000000..5a3b4f4 --- /dev/null +++ b/content/about/governance/board-responsibilities.md @@ -0,0 +1,60 @@ +--- +title: "CentOS Governance - Board Structure" +markdown: basic +is_dynamic: true +--- + +* Table of contents will replace this text. +{:toc} + +#CentOS Governing Responsibilities +{:.no_toc} +[« Back to Governance](/about/governance) + +## CentOS Governing Board Responsibilities +* Guidance and leadership over the ultimate Project roadmap. +* Community outreach. +* Maintenance of health and viability of CentOS community. +* Maintenance of a healthy and proactive relationship with the Project users and consider those needs and uses in decisions. +* Coordination of Project messaging. +* Overall Project leadership as the final escalation point for decisions unable to be resolved effectively at the SIG level. +* Approval of new SIGs and changes to SIGs charters. +* Approval of new contributors as requested by SIGs. +* Approval of SIG graduations. +* Oversight of SIG variants, including those that may fork or drive the core base OS. At a minimum, + * There must be overwhelming community support for this; + * It must be net-positive or, at least, net-neutral to the core. +* Trademark and brand oversight. + * Create Git licensing and contribution policies. +* Appointment of Board Chair. +* Appointment of new Board members. +* Re-appointment of Board members after 12 month term of service. + +## Individual Governing Board Member Responsibilities +* Work with SIGs as mentors to help SIGs reach effective stability and self-sustainability. +* Act as leaders across the community, generally and as appropriate. + * Continue to be active in one or more SIGs. +* Attend Board meetings on a regular basis via the agreed-upon meeting methods. + * Occasionally be available on short notice or for important Board business, electronically or in person. + * Be responsive to highly important or critical items raised by the Chair or Liaison (both defined below), including attending urgent or emergency Board meetings, to provide a quorum and conduct voting or other necessary actions. +* Strive to conduct Board business transparently following the principles of the open source way. + +The CentOS Governing Board shall include two named roles: a Chair and a Liaison, which shall be present at all times on the Board. The Board is responsible for appointing one Board member as Chair. Red Hat is responsible for appointing the Liaison role to a Board member, who must be a Red Hat employee. + +## Chair Responsibilities +* Organize and run the Board meetings. +* Be the coordinating and lead voice for the Project. +* Coordinate the Board to set direction and articulation thereof. +* Focus on helping the Board to reach consensus. +* Guide the Board in transparency and practicing the open source way in leadership and decision making. + +## Red Hat Liaison Responsibilities +* Provide the perspective and insights to the Board on Red Hat business (including potential legal, ecosystem, and security concerns) by acting as the interface for various Red Hat constituencies. +* Allow for the Board to bring concerns or perspectives from the community to Red Hat. +* The Liaison may be requested by the Board Chair to escalate a decision beyond the Board in some cases when the Board cannot reach consensus. This is discussed in the section on The Role of the Liaison. + +The Liaison is required to be a Red Hat employee, which will enable this person to be an effective bi-directional conduit between Red Hat and the CentOS Project. The Chair, however, can be anyone selected by the Board from among its members. The Liaison may be rotated at any time to an alternate Red Hat employee who is a Board member. Newly appointed Board members may also hold the Liaison seat. The Chair and the Liaison cannot be the same person. + +The Board will operate under the principles of [meritocracy](/about/governance/appendix-glossary/#meritocracy), having the Board be driven by a [consensus-based decision model](/about/governance/appendix-glossary/#consensus-decision-making). This model fosters an active healthy debate that furthers the Project while recognising its relationship to Red Hat’s product source, the new formal relationship with Red Hat, and preserving the viability of the key upstream that feeds it. + +[« Back to Governance](/about/governance) diff --git a/content/about/governance/governance-greenhouse.png b/content/about/governance/governance-greenhouse.png new file mode 100644 index 0000000..abefde2 Binary files /dev/null and b/content/about/governance/governance-greenhouse.png differ diff --git a/content/about/governance/governance-structure-diagram.png b/content/about/governance/governance-structure-diagram.png new file mode 100644 index 0000000..5ded58d Binary files /dev/null and b/content/about/governance/governance-structure-diagram.png differ diff --git a/content/about/governance/joining-the-project.md b/content/about/governance/joining-the-project.md new file mode 100644 index 0000000..b629894 --- /dev/null +++ b/content/about/governance/joining-the-project.md @@ -0,0 +1,39 @@ +--- +title: "CentOS Governance - Joining the Project" +markdown: basic +is_dynamic: true +--- + +* Table of contents will replace this text. +{:toc} + +#CentOS Governance - Joining the Project +{:.no_toc} +[« Back to Governance](/about/governance) + +There are 3 primary paths within the CentOS Project for individuals to obtain and grow merit. The main path is by proving yourself within a SIG or between SIGs (if the SIGs are related in such a way that merit would be transferred.) A second path is to get involved in the primary technical SIG, CentOS Core. A third path is to be part of the Governing Board. + +##Variant or Functional SIGs +Individuals wishing to participate in the CentOS Project typically start as users then contributors and eventually committers to a SIG. A contributor is anyone who contributes something to the Project, such as documentation, code, forum help, wiki edits, IRC moderating, and so forth. A committer is a contributor who has gained the right through merit to commit their own contributions directly to Project source repositories, such as git.centos.org (code) and wiki.centos.org (documentation.) + +The initial level of effort required is quite low, and generally consists of those who use CentOS and submit bug reports and patches to the build, or other contributions as per a SIG's needs. By creating a steady reputation in helping out a SIG, the SIG team may decide to provide that person with commit access (to any stream of contributions required to show and gain merit, such as code, wiki articles, design artifacts, etc.) under the watchful eye of an assigned mentor. The individual is expected to grow in merit enough that the mentor is no longer required, and at the request of the mentor, the individual becomes a peer within the SIG committer group. The structure in a SIG is flat and a peer with 1 month of experience has as much of a voice about project direction as one with 1 or more years. + +##CentOS Core SIG +A SIG with a higher barrier to entry is the CentOS Core SIG, which has the ultimate say in technical and directional decisions related to the build and components in the core. The CentOS Core SIG team is selected for membership from the CentOS Core SIG committer group, as voted on by the current team. Obtaining core team membership requires current members to give at least 3 +1 votes and no -1 votes. A -1 vote on core team membership must be based on a substantive reason, such as technical, Project merit, community behavior, etc. + +A SIG that consistently has a significant number of -1 votes, especially from a single person, indicates an issue that should be brought to the attention of the Board , as it may be an indicator of a dis-functional SIG and may adversely impact the meritocracy. + +##Board Members +Each Board member appointed or reconfirmed by the Board will be selected based on merit. Merit criteria have been defined to recognize, among other things, active participation in the CentOS Project, an understanding of the Project, and an understanding and ability to balance the objectives derived from the relationship with it’s Red Hat-based upstream. In this regard, Candidate Board members must: + +* Have demonstrated, including through active participation and contribution to the broader aspects of running the CentOS Project for an extended period of time, a solid understanding of and motivation to foster a healthy relationship to it's upstream, the factors that influence and guide that ecosystem, and the need to maintain the health and vitality of that ecosystem. +* Promote CentOS and the needs of the community projects in CentOS to achieve active and vibrant adoption in the community for CentOS. +* Have the ability to debate, understand, and balance sometimes opposing CentOS Project objectives. +* Have a solid understanding of meritocracy, the merit criteria and running, operating, and/or governing a large scale FOSS community project. + +Based upon the merit criteria, the existing Board may nominate additional Board members. The Board must consist of at least 8 members and is capped at a total of 11 members. Given Red Hat's strategic hiring of original core members to focus more extensively on the Project, and in consideration of its strategic ongoing contributions and investment, Red Hat will maintain and hold a majority of governing Board members. In addition, the Board values user representation on the Board directly through members seated on the Board who have met the merit criteria. This is in addition to the indirect user community influence via interactions with individual Board members. + +As the new CentOS grows and learns, the CentOS community may propose to the Board and/or the Board may propose its own changes to the governance and/or the merit criteria to account for, among other things, confusion or inadequacies. + +[« Back to Governance](/about/governance) + diff --git a/content/about/governance/sig-maturity-crossover.png b/content/about/governance/sig-maturity-crossover.png new file mode 100644 index 0000000..6339755 Binary files /dev/null and b/content/about/governance/sig-maturity-crossover.png differ diff --git a/content/about/governance/sigs.md b/content/about/governance/sigs.md new file mode 100644 index 0000000..5f5c0fe --- /dev/null +++ b/content/about/governance/sigs.md @@ -0,0 +1,79 @@ +--- +title: "CentOS Governance - SIGs" +markdown: basic +is_dynamic: true +--- + +* Table of contents will replace this text. +{:toc} + +#The CentOS SIGs +{:.no_toc} +[« Back to Governance](/about/governance) + +The Special Interest Groups (SIGs), are the teams responsible for their specific CentOS Project variants. Variants are specialized and focused rebuilds of CentOS to meet the needs and requirements of their corresponding communities and the technology associated with those communities. + +SIGs are usually self-forming around a technology by a small community of enthusiasts and interested parties. In addition to the existing CentOS SIGs, it is expected that additional SIGs, as approved by the CentOS Board, will be created. + +Each group will be responsible for its own variant in CentOS that is specifically targeted towards its community (e.g., The CentOS FooBar SIG creates a CentOS variant targeted to FooBar users and developers, the CentOS Hosting SIG builds a variant for web hosters, included in the CentOS distribution). The SIG is the deciding authority on what is required in their variant to satisfy the needs of their community, with the understanding that the Board has ultimate oversight as explained elsewhere. If required, the CentOS Board will help the individual SIGs to reach consensus on any issues or problems. + +SIGs are the only way for an entity to use and associate the CentOS brand with a variant. You can always use Git and the repo to fork and try-out ideas, but only those packages in git.centos.org and released and signed by CentOS can be called ‘CentOS’. + +Another type of SIG is functional, focused on maintaining parts of the Project itself, such as infrastructure, documentation, and design. A unique SIG is the Core SIG that builds and maintains the core CentOS derivative of Red Hat Enterprise Linux. It is unique because it is the central, orchestrating platform that all other variants are built from. + +##CentOS Core SIG Responsibilities +* Build the CentOS release. +* _Sign_ the CentOS release. +* Push official CentOS releases to the initial mirror. +* Coordinate with upstream as required. +* Accept changes into Git. + * Manage Git licensing and contribution policies. + +##Variant SIG Responsibilities +* Create and maintain one or more variations with technology in CentOS on top of or modifications to the core base. +* Foster a user community as a primary purpose of the variant. + * Keep the Project artifacts (the variant) relevant and useful to the user community. +* Ensure the software brought in to support the variant is licensed and prepared properly for packaging and distribution as part of the CentOS Project. +* Oversee inclusions of code related to the variant in to git.centos.org. +* Conduct the business of the SIG following accepted open source practices around meritocracy and consensus decision making. + +##Functional SIG Responsibilities +* Accountable for designing, building, and maintaining key Project component(s). +* Make the functional area open for participation, with barriers to contribution as low as feasible and reasonable. +* Foster a community of users and doers around the functional aspect, to share the responsibility, workload, and innovation. +* Work within given legal constraints and requirements. + +##SIG Governance + +
+ Illustration +
+

+
+
+ +The SIGs themselves also have a merit path toward autonomy and accountability for Project aspects. The determination of merit level is reflected in the amount of oversight required by the Board and the SIGs ability to self-sign and release software builds. As merit increases, Board oversight goes down, with a transition spot in the middle where the SIG naturally obtains more autonomy, usually toward the end of the “Early” phase. + + +__Sandboxes__ are the entry point for all proposed SIGs. To enter, there must be a Champion from or approved by the Board and a proposal (which indicates the reason for the SIG, the expected audience, initial team, risks, etc.) For a SIG to be created, there must be at least 3 +1 votes from the Board (NOT including the Champion) and zero (nil) -1 votes. When approved, the Champion becomes the formal Mentor of the Sandbox SIG. + +Sandboxes cannot make formal releases, but can create releases that allow people, developers, etc. to use, test, and play with the build. Sandboxes are also closely monitored by the Board to ensure that they are attracting interest and developers and users are learning the ropes regarding SIG operation. All new committers, developers, SIG core team members, etc. must be approved by the Board. + +SIGs that have expressed a level of merit, as determined by the Board, will move to the __Early__ SIG stage (Sandboxes can request graduation to Early, if they like). These SIGs are allowed to create formal releases, but the release must be approved by the Board and signed by the Mentor. In all other matters, however, they are self-sufficient and no longer require Board approval, such as as in adding committers and so forth. Movement from Sandbox to Early is via 3 +1 vote of the Board (Mentor not included) and zero (nil) -1 votes. + +The final stage is the __Mature__ SIG. Again, this graduation is based on the judgment and determination of the Board, but this movement must be a unanimous decision of the Board. The Mature SIG has full control over the SIG, pulling in its own sources to git.centos.org, its releases, its internal governance, and has the ability to self-sign releases. The Board members may vote in, or participate in any SIG decision at any time. + +In both the Sandbox and Early SIGs, the role of the Board is primarily to facilitate the movement of those SIGs towards the Mature level; it serves as an initial gateway with the goal of getting out of the way of the SIGs. + +Note that in all cases, maturity is a measure of the community itself, and not the codebase or the actual SIG variant release. A mature SIG could create a non-mature (e.g., Alpha or Beta release) distribution and, conversely, a Sandbox SIG could produce a very mature (robust and reliable) distro. + +##Community and SIGs +SIGs represent the true power and value of the CentOS Project. As seen in the current CentOS Dojos, and in the CentOS community itself, the builds provide a safe, neutral, and communal central meeting place for major technology areas. This is the reason why SIGs should not be program/project specific (e.g., a MariaDB rebuild), but rather technology-area focused (e.g., the “Hoster's” rebuild). By creating a central point where all projects and communities can interact, using the OS as the common foundation, upstream projects will be able to reach and interface with a much larger audience. + +It is expected that SIGs may propose significant forking of the base CentOS core, such as introducing a new Python version or Linux kernel. It is the job of the Board and CentOS Core SIG to oversee and approve any forks that are pulled back into Git, including to ensure that these forks are supportable. This support is best done by an active and engaged variant SIG. The Board or CentOS Core SIG can pull a variant from release if they reasonably believe the variant SIG is unable to support the variant. Another option is reassigning an active variant from a dead SIG to a willing living SIG. The Board is specifically not limited in what it can do to protect the quality of the CentOS mark where it comes to the content and quality of a variant. + +If you want to start a SIG please email the board at [centosdev@centos.org](mailto:centosdev@centos.org) or [board-requests@centos.org](mailto:board-requests@centos.org) for private correspondence. + +For the current list of active SIGs, refer to [http://wiki.centos.org/SpecialInterestGroup](http://wiki.centos.org/SpecialInterestGroup) + +[« Back to Governance](/about/governance) diff --git a/content/about/governance/voting.md b/content/about/governance/voting.md new file mode 100644 index 0000000..59febee --- /dev/null +++ b/content/about/governance/voting.md @@ -0,0 +1,34 @@ +--- +title: "CentOS Governance - Voting" +markdown: basic +is_dynamic: true +--- + +* Table of contents will replace this text. +{:toc} + +#CentOS Governance - Voting +{:.no_toc} +[« Back to Governance](/about/governance) + +The voting system used by all SIGs and the Governing Board uses a [consensus-based decision model](/about/governance/appendix-glossary/#consensus-decision-making) except where noted. + +Except where noted, decisions require 3 yes votes (+1) and no objections (-1's) and, except as noted below, votes should be left open for at least 72 hours. Any Board member may cast a vote in any SIG vote and it is considered binding (counted against the vote). If a vote is held on a public list (e.g., to test the broader consensus of a group) only the votes of the Board members for Board votes or SIG committers or Board members for SIG votes are considered binding. All other votes are just considered as valuable data in the decision process. Board business may be conducted on a private or public list, whichever is more appropriate for the issue at hand. + +All -1s votes require reason/ explanation, -1's with no substantiation may be overturned. + +##When do votes need to be called? +Votes need to be called for all substantial business. Votes need to be left open for a reasonable period (not less than 72 hours) if members of the Board are not available to participate in the vote; provided that for votes/matters that have been deemed time or business critical by Red Hat, as noted below, voting must be held open until the Liaison has voted. + +_Lazy consensus_ may be used for non-substantial business. Lazy consensus is defined as asking for objections as opposed to calling for a vote. Any objection on lazy consensus is considered the same as a -1 on a vote. There is no minimum +1 vote requirement. + +##Role of the Liaison +The Liaison also has the role of dealing with issues such as security, export, or items that have a direct legal or other Red Hat business connection for the Project, and on issues of such business may have an additional role as defined by the following: + +A. If a decision/solution cannot be found on an issue that is deemed time and/or business critical by Red Hat then, after a reasonable time, the Liaison may be requested by the Chair to seek assistance from Red Hat in making the decision, obtaining additional input from Red Hat executives, engineers, and stakeholders. + +B. The Liaison may, in exceptional circumstances, make a decision on behalf of the Board if a consensus has not been reached on an issue that is deemed time or business critical by Red Hat if: (1) a board quorum (i.e., a majority) is present or a quorum of Board members has cast their votes; or (2) after 3 working days if a Board quorum is not present at a meeting or a quorum has not cast their votes (list votes); provided that the Chair may (or at the request of the Liaison, will) call a meeting and demand that a quorum be present. + +Unless the Liaison specifically indicates on a specific issue that he/she is acting in his/her official capacity as Liaison, either prior to a vote or later (e.g., after an issue has been deemed time or business critical), the Liaison’s voice and vote is treated the same as any other member of the Board. Decisions indicated as Liaison decisions made on behalf of the Board by the Liaison may not be overturned. + +[« Back to Governance](/about/governance) diff --git a/content/assets/css/bootstrap.scss b/content/assets/css/bootstrap.scss new file mode 100644 index 0000000..361b2f4 --- /dev/null +++ b/content/assets/css/bootstrap.scss @@ -0,0 +1,7 @@ +--- +version: 2 +is_hidden: true +is_dynamic: false +--- + +@import "bootstrap/bootstrap"; diff --git a/content/assets/css/bootstrap/_alerts.scss b/content/assets/css/bootstrap/_alerts.scss new file mode 100644 index 0000000..cba8a1f --- /dev/null +++ b/content/assets/css/bootstrap/_alerts.scss @@ -0,0 +1,67 @@ +// +// Alerts +// -------------------------------------------------- + + +// Base styles +// ------------------------- + +.alert { + padding: $alert-padding; + margin-bottom: $line-height-computed; + border: 1px solid transparent; + border-radius: $alert-border-radius; + + // Headings for larger alerts + h4 { + margin-top: 0; + // Specified for the h4 to prevent conflicts of changing $headingsColor + color: inherit; + } + // Provide class for links that match alerts + .alert-link { + font-weight: $alert-link-font-weight; + } + + // Improve alignment and spacing of inner content + > p, + > ul { + margin-bottom: 0; + } + > p + p { + margin-top: 5px; + } +} + +// Dismissable alerts +// +// Expand the right padding and account for the close button's positioning. + +.alert-dismissable { + padding-right: ($alert-padding + 20); + + // Adjust close link position + .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; + } +} + +// Alternate styles +// +// Generate contextual modifier classes for colorizing the alert. + +.alert-success { + @include alert-variant($alert-success-bg, $alert-success-border, $alert-success-text); +} +.alert-info { + @include alert-variant($alert-info-bg, $alert-info-border, $alert-info-text); +} +.alert-warning { + @include alert-variant($alert-warning-bg, $alert-warning-border, $alert-warning-text); +} +.alert-danger { + @include alert-variant($alert-danger-bg, $alert-danger-border, $alert-danger-text); +} diff --git a/content/assets/css/bootstrap/_badges.scss b/content/assets/css/bootstrap/_badges.scss new file mode 100644 index 0000000..191b715 --- /dev/null +++ b/content/assets/css/bootstrap/_badges.scss @@ -0,0 +1,51 @@ +// +// Badges +// -------------------------------------------------- + + +// Base classes +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: $font-size-small; + font-weight: $badge-font-weight; + color: $badge-color; + line-height: $badge-line-height; + vertical-align: baseline; + white-space: nowrap; + text-align: center; + background-color: $badge-bg; + border-radius: $badge-border-radius; + + // Empty badges collapse automatically (not available in IE8) + &:empty { + display: none; + } +} + +// Hover state, but only for links +a.badge { + &:hover, + &:focus { + color: $badge-link-hover-color; + text-decoration: none; + cursor: pointer; + } +} + +// Quick fix for labels/badges in buttons +.btn .badge { + position: relative; + top: -1px; +} + +// Account for counters in navs +a.list-group-item.active > .badge, +.nav-pills > .active > a > .badge { + color: $badge-active-color; + background-color: $badge-active-bg; +} +.nav-pills > li > a > .badge { + margin-left: 3px; +} diff --git a/content/assets/css/bootstrap/_breadcrumbs.scss b/content/assets/css/bootstrap/_breadcrumbs.scss new file mode 100644 index 0000000..d6097c9 --- /dev/null +++ b/content/assets/css/bootstrap/_breadcrumbs.scss @@ -0,0 +1,23 @@ +// +// Breadcrumbs +// -------------------------------------------------- + + +.breadcrumb { + padding: 8px 15px; + margin-bottom: $line-height-computed; + list-style: none; + background-color: $breadcrumb-bg; + border-radius: $border-radius-base; + > li { + display: inline-block; + &+li:before { + content: "/\00a0"; // Unicode space added since inline-block means non-collapsing white-space + padding: 0 5px; + color: $breadcrumb-color; + } + } + > .active { + color: $breadcrumb-active-color; + } +} diff --git a/content/assets/css/bootstrap/_button-groups.scss b/content/assets/css/bootstrap/_button-groups.scss new file mode 100644 index 0000000..53b9bf2 --- /dev/null +++ b/content/assets/css/bootstrap/_button-groups.scss @@ -0,0 +1,248 @@ +// +// Button groups +// -------------------------------------------------- + +// Button carets +// +// Match the button text color to the arrow/caret for indicating dropdown-ness. + +.caret { + .btn-default & { + border-top-color: $btn-default-color; + } + .btn-primary &, + .btn-success &, + .btn-warning &, + .btn-danger &, + .btn-info & { + border-top-color: #fff; + } +} +.dropup { + & .btn-default .caret { + border-bottom-color: $btn-default-color; + } + .btn-primary, + .btn-success, + .btn-warning, + .btn-danger, + .btn-info { + .caret { + border-bottom-color: #fff; + } + } +} + +// Make the div behave like a button +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; // match .btn alignment given font-size hack above + > .btn { + position: relative; + float: left; + // Bring the "active" button to the front + &:hover, + &:focus, + &:active, + &.active { + z-index: 2; + } + &:focus { + // Remove focus outline when dropdown JS adds it after closing the menu + outline: none; + } + } +} + +// Prevent double borders when buttons are next to each other +.btn-group { + .btn + .btn, + .btn + .btn-group, + .btn-group + .btn, + .btn-group + .btn-group { + margin-left: -1px; + } +} + +// Optional: Group multiple button groups together for a toolbar +.btn-toolbar { + @include clearfix(); + + .btn-group { + float: left; + } + // Space out series of button groups + > .btn, + > .btn-group { + + .btn, + + .btn-group { + margin-left: 5px; + } + } +} + +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} + +// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match +.btn-group > .btn:first-child { + margin-left: 0; + &:not(:last-child):not(.dropdown-toggle) { + @include border-right-radius(0); + } +} +// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + @include border-left-radius(0); +} + +// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group) +.btn-group > .btn-group { + float: left; +} +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group > .btn-group:first-child { + > .btn:last-child, + > .dropdown-toggle { + @include border-right-radius(0); + } +} +.btn-group > .btn-group:last-child > .btn:first-child { + @include border-left-radius(0); +} + +// On active and open, don't show outline +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + + +// Sizing +// +// Remix the default button sizing classes into new ones for easier manipulation. + +.btn-group-xs > .btn { @extend .btn-xs; } +.btn-group-sm > .btn { @extend .btn-sm; } +.btn-group-lg > .btn { @extend .btn-lg; } + + +// Split button dropdowns +// ---------------------- + +// Give the line between buttons some depth +.btn-group > .btn + .dropdown-toggle { + padding-left: 8px; + padding-right: 8px; +} +.btn-group > .btn-lg + .dropdown-toggle { + padding-left: 12px; + padding-right: 12px; +} + +// The clickable button for toggling the menu +// Remove the gradient and set the same inset shadow as the :active state +.btn-group.open .dropdown-toggle { + @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); +} + + +// Reposition the caret +.btn .caret { + margin-left: 0; +} +// Carets in other button sizes +.btn-lg .caret { + border-width: $caret-width-large $caret-width-large 0; + border-bottom-width: 0; +} +// Upside down carets for .dropup +.dropup .btn-lg .caret { + border-width: 0 $caret-width-large $caret-width-large; +} + + +// Vertical button groups +// ---------------------- + +.btn-group-vertical { + > .btn, + > .btn-group { + display: block; + float: none; + width: 100%; + max-width: 100%; + } + + // Clear floats so dropdown menus can be properly placed + > .btn-group { + @include clearfix(); + > .btn { + float: none; + } + } + + > .btn + .btn, + > .btn + .btn-group, + > .btn-group + .btn, + > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; + } +} + +.btn-group-vertical > .btn { + &:not(:first-child):not(:last-child) { + border-radius: 0; + } + &:first-child:not(:last-child) { + border-top-right-radius: $border-radius-base; + @include border-bottom-radius(0); + } + &:last-child:not(:first-child) { + border-bottom-left-radius: $border-radius-base; + @include border-top-radius(0); + } +} +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group-vertical > .btn-group:first-child { + > .btn:last-child, + > .dropdown-toggle { + @include border-bottom-radius(0); + } +} +.btn-group-vertical > .btn-group:last-child > .btn:first-child { + @include border-top-radius(0); +} + + + +// Justified button groups +// ---------------------- + +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; + .btn { + float: none; + display: table-cell; + width: 1%; + } +} + + +// Checkbox and radio options +[data-toggle="buttons"] > .btn > input[type="radio"], +[data-toggle="buttons"] > .btn > input[type="checkbox"] { + display: none; +} diff --git a/content/assets/css/bootstrap/_buttons.scss b/content/assets/css/bootstrap/_buttons.scss new file mode 100644 index 0000000..564b28c --- /dev/null +++ b/content/assets/css/bootstrap/_buttons.scss @@ -0,0 +1,160 @@ +// +// Buttons +// -------------------------------------------------- + + +// Base styles +// -------------------------------------------------- + +// Core styles +.btn { + display: inline-block; + padding: $padding-base-vertical $padding-base-horizontal; + margin-bottom: 0; // For input.btn + font-size: $font-size-base; + font-weight: $btn-font-weight; + line-height: $line-height-base; + text-align: center; + vertical-align: middle; + cursor: pointer; + border: 1px solid transparent; + border-radius: $border-radius-base; + white-space: nowrap; + @include user-select(none); + + &:focus { + @include tab-focus(); + } + + &:hover, + &:focus { + color: $btn-default-color; + text-decoration: none; + } + + &:active, + &.active { + outline: 0; + background-image: none; + @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); + } + + &.disabled, + &[disabled], + fieldset[disabled] & { + cursor: not-allowed; + pointer-events: none; // Future-proof disabling of clicks + @include opacity(.65); + @include box-shadow(none); + } + +} + + +// Alternate buttons +// -------------------------------------------------- + +.btn-default { + @include button-variant($btn-default-color, $btn-default-bg, $btn-default-border); +} +.btn-primary { + @include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border); +} +// Warning appears as orange +.btn-warning { + @include button-variant($btn-warning-color, $btn-warning-bg, $btn-warning-border); +} +// Danger and error appear as red +.btn-danger { + @include button-variant($btn-danger-color, $btn-danger-bg, $btn-danger-border); +} +// Success appears as green +.btn-success { + @include button-variant($btn-success-color, $btn-success-bg, $btn-success-border); +} +// Info appears as blue-green +.btn-info { + @include button-variant($btn-info-color, $btn-info-bg, $btn-info-border); +} + + +// Link buttons +// ------------------------- + +// Make a button look and behave like a link +.btn-link { + color: $link-color; + font-weight: normal; + cursor: pointer; + border-radius: 0; + + &, + &:active, + &[disabled], + fieldset[disabled] & { + background-color: transparent; + @include box-shadow(none); + } + &, + &:hover, + &:focus, + &:active { + border-color: transparent; + } + &:hover, + &:focus { + color: $link-hover-color; + text-decoration: underline; + background-color: transparent; + } + &[disabled], + fieldset[disabled] & { + &:hover, + &:focus { + color: $btn-link-disabled-color; + text-decoration: none; + } + } +} + + +// Button Sizes +// -------------------------------------------------- + +.btn-lg { + // line-height: ensure even-numbered height of button next to large input + @include button-size($padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $border-radius-large); +} +.btn-sm, +.btn-xs { + // line-height: ensure proper height of button next to small input + @include button-size($padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $border-radius-small); +} +.btn-xs { + padding: 1px 5px; +} + + +// Block button +// -------------------------------------------------- + +.btn-block { + display: block; + width: 100%; + padding-left: 0; + padding-right: 0; +} + +// Vertically space out multiple block buttons +.btn-block + .btn-block { + margin-top: 5px; +} + +// Specificity overrides +input[type="submit"], +input[type="reset"], +input[type="button"] { + &.btn-block { + width: 100%; + } +} diff --git a/content/assets/css/bootstrap/_carousel.scss b/content/assets/css/bootstrap/_carousel.scss new file mode 100644 index 0000000..40d4c6c --- /dev/null +++ b/content/assets/css/bootstrap/_carousel.scss @@ -0,0 +1,209 @@ +// +// Carousel +// -------------------------------------------------- + + +// Wrapper for the slide container and indicators +.carousel { + position: relative; +} + +.carousel-inner { + position: relative; + overflow: hidden; + width: 100%; + + > .item { + display: none; + position: relative; + @include transition(.6s ease-in-out left); + + // Account for jankitude on images + > img, + > a > img { + @include img-responsive(); + line-height: 1; + } + } + + > .active, + > .next, + > .prev { display: block; } + + > .active { + left: 0; + } + + > .next, + > .prev { + position: absolute; + top: 0; + width: 100%; + } + + > .next { + left: 100%; + } + > .prev { + left: -100%; + } + > .next.left, + > .prev.right { + left: 0; + } + + > .active.left { + left: -100%; + } + > .active.right { + left: 100%; + } + +} + +// Left/right controls for nav +// --------------------------- + +.carousel-control { + position: absolute; + top: 0; + left: 0; + bottom: 0; + width: $carousel-control-width; + @include opacity($carousel-control-opacity); + font-size: $carousel-control-font-size; + color: $carousel-control-color; + text-align: center; + text-shadow: $carousel-text-shadow; + // We can't have this transition here because webkit cancels the carousel + // animation if you trip this while in the middle of another animation. + + // Set gradients for backgrounds + &.left { + @include gradient-horizontal($start-color: rgba(0,0,0,.5), $end-color: rgba(0,0,0,.0001)); + } + &.right { + left: auto; + right: 0; + @include gradient-horizontal($start-color: rgba(0,0,0,.0001), $end-color: rgba(0,0,0,.5)); + } + + // Hover/focus state + &:hover, + &:focus { + color: $carousel-control-color; + text-decoration: none; + @include opacity(.9); + } + + // Toggles + .icon-prev, + .icon-next, + .glyphicon-chevron-left, + .glyphicon-chevron-right { + position: absolute; + top: 50%; + left: 50%; + z-index: 5; + display: inline-block; + } + .icon-prev, + .icon-next { + width: 20px; + height: 20px; + margin-top: -10px; + margin-left: -10px; + font-family: serif; + } + + .icon-prev { + &:before { + content: '\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039) + } + } + .icon-next { + &:before { + content: '\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A) + } + } +} + +// Optional indicator pips +// +// Add an unordered list with the following class and add a list item for each +// slide your carousel holds. + +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + margin-left: -30%; + padding-left: 0; + list-style: none; + text-align: center; + + li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + border: 1px solid $carousel-indicator-border-color; + border-radius: 10px; + cursor: pointer; + } + .active { + margin: 0; + width: 12px; + height: 12px; + background-color: $carousel-indicator-active-bg; + } +} + +// Optional captions +// ----------------------------- +// Hidden by default for smaller viewports +.carousel-caption { + position: absolute; + left: 15%; + right: 15%; + bottom: 20px; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: $carousel-caption-color; + text-align: center; + text-shadow: $carousel-text-shadow; + & .btn { + text-shadow: none; // No shadow for button elements in carousel-caption + } +} + + +// Scale up controls for tablets and up +@media screen and (min-width: $screen-tablet) { + + // Scale up the controls a smidge + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -15px; + margin-left: -15px; + font-size: 30px; + } + + // Show and left align the captions + .carousel-caption { + left: 20%; + right: 20%; + padding-bottom: 30px; + } + + // Move up the indicators + .carousel-indicators { + bottom: 20px; + } +} diff --git a/content/assets/css/bootstrap/_close.scss b/content/assets/css/bootstrap/_close.scss new file mode 100644 index 0000000..62ce30f --- /dev/null +++ b/content/assets/css/bootstrap/_close.scss @@ -0,0 +1,35 @@ +// +// Close icons +// -------------------------------------------------- + + +.close { + float: right; + font-size: ($font-size-base * 1.5); + font-weight: $close-font-weight; + line-height: 1; + color: $close-color; + text-shadow: $close-text-shadow; + @include opacity(.2); + + &:hover, + &:focus { + color: $close-color; + text-decoration: none; + cursor: pointer; + @include opacity(.5); + } + + // [converter] extracted button& to button.close +} + +// Additional properties for button version +// iOS requires the button element instead of an anchor tag. +// If you want the anchor version, it requires `href="#"`. +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} diff --git a/content/assets/css/bootstrap/_code.scss b/content/assets/css/bootstrap/_code.scss new file mode 100644 index 0000000..4946e2b --- /dev/null +++ b/content/assets/css/bootstrap/_code.scss @@ -0,0 +1,56 @@ +// +// Code (inline and blocK) +// -------------------------------------------------- + + +// Inline and block code styles +code, +pre { + font-family: $font-family-monospace; +} + +// Inline code +code { + padding: 2px 4px; + font-size: 90%; + color: $code-color; + background-color: $code-bg; + white-space: nowrap; + border-radius: $border-radius-base; +} + +// Blocks of code +pre { + display: block; + padding: (($line-height-computed - 1) / 2); + margin: 0 0 ($line-height-computed / 2); + font-size: ($font-size-base - 1); // 14px to 13px + line-height: $line-height-base; + word-break: break-all; + word-wrap: break-word; + color: $pre-color; + background-color: $pre-bg; + border: 1px solid $pre-border-color; + border-radius: $border-radius-base; + + // Make prettyprint styles more spaced out for readability + &.prettyprint { + margin-bottom: $line-height-computed; + } + + // Account for some code outputs that place code tags in pre tags + code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border: 0; + } +} + +// Enable scrollable blocks of code +.pre-scrollable { + max-height: $pre-scrollable-max-height; + overflow-y: scroll; +} diff --git a/content/assets/css/bootstrap/_component-animations.scss b/content/assets/css/bootstrap/_component-animations.scss new file mode 100644 index 0000000..86632fd --- /dev/null +++ b/content/assets/css/bootstrap/_component-animations.scss @@ -0,0 +1,29 @@ +// +// Component animations +// -------------------------------------------------- + +// Heads up! +// +// We don't use the `.opacity()` mixin here since it causes a bug with text +// fields in IE7-8. Source: https://github.com/twitter/bootstrap/pull/3552. + +.fade { + opacity: 0; + @include transition(opacity .15s linear); + &.in { + opacity: 1; + } +} + +.collapse { + display: none; + &.in { + display: block; + } +} +.collapsing { + position: relative; + height: 0; + overflow: hidden; + @include transition(height .35s ease); +} diff --git a/content/assets/css/bootstrap/_dropdowns.scss b/content/assets/css/bootstrap/_dropdowns.scss new file mode 100644 index 0000000..8d8db0a --- /dev/null +++ b/content/assets/css/bootstrap/_dropdowns.scss @@ -0,0 +1,194 @@ +// +// Dropdown menus +// -------------------------------------------------- + + +// Dropdown arrow/caret +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: $caret-width-base solid $dropdown-caret-color; + border-right: $caret-width-base solid transparent; + border-left: $caret-width-base solid transparent; + // Firefox fix for https://github.com/twbs/bootstrap/issues/9538. Once fixed, + // we can just straight up remove this. + border-bottom: 0 dotted; + content: ""; +} + +// The dropdown wrapper (div) +.dropdown { + position: relative; +} + +// Prevent the focus on the dropdown toggle when closing dropdowns +.dropdown-toggle:focus { + outline: 0; +} + +// The dropdown menu (ul) +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: $zindex-dropdown; + display: none; // none by default, but block on "open" of the menu + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; // override default ul + list-style: none; + font-size: $font-size-base; + background-color: $dropdown-bg; + border: 1px solid $dropdown-fallback-border; // IE8 fallback + border: 1px solid $dropdown-border; + border-radius: $border-radius-base; + @include box-shadow(0 6px 12px rgba(0,0,0,.175)); + background-clip: padding-box; + + // Aligns the dropdown menu to right + &.pull-right { + right: 0; + left: auto; + } + + // Dividers (basically an hr) within the dropdown + .divider { + @include nav-divider($dropdown-divider-bg); + } + + // Links within the dropdown menu + > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: $line-height-base; + color: $dropdown-link-color; + white-space: nowrap; // prevent links from randomly breaking onto new lines + } +} + +// Hover/Focus state +.dropdown-menu > li > a { + &:hover, + &:focus { + text-decoration: none; + color: $dropdown-link-hover-color; + background-color: $dropdown-link-hover-bg; + } +} + +// Active state +.dropdown-menu > .active > a { + &, + &:hover, + &:focus { + color: $dropdown-link-active-color; + text-decoration: none; + outline: 0; + background-color: $dropdown-link-active-bg; + } +} + +// Disabled state +// +// Gray out text and ensure the hover/focus state remains gray + +.dropdown-menu > .disabled > a { + &, + &:hover, + &:focus { + color: $dropdown-link-disabled-color; + } +} +// Nuke hover/focus effects +.dropdown-menu > .disabled > a { + &:hover, + &:focus { + text-decoration: none; + background-color: transparent; + background-image: none; // Remove CSS gradient + @include reset-filter(); + cursor: not-allowed; + } +} + +// Open state for the dropdown +.open { + // Show the menu + > .dropdown-menu { + display: block; + } + + // Remove the outline when :focus is triggered + > a { + outline: 0; + } +} + +// Dropdown section headers +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: $font-size-small; + line-height: $line-height-base; + color: $dropdown-header-color; +} + +// Backdrop to catch body clicks on mobile, etc. +.dropdown-backdrop { + position: fixed; + left: 0; + right: 0; + bottom: 0; + top: 0; + z-index: $zindex-dropdown - 10; +} + +// Right aligned dropdowns +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +// Allow for dropdowns to go bottom up (aka, dropup-menu) +// +// Just add .dropup after the standard .dropdown class and you're set, bro. +// TODO: abstract this so that the navbar fixed styles are not placed here? + +.dropup, +.navbar-fixed-bottom .dropdown { + // Reverse the caret + .caret { + // Firefox fix for https://github.com/twbs/bootstrap/issues/9538. Once this + // gets fixed, restore `border-top: 0;`. + border-top: 0 dotted; + border-bottom: 4px solid $dropdown-caret-color; + content: ""; + } + // Different positioning for bottom up menu + .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; + } +} + + +// Component alignment +// +// Reiterate per navbar.less and the modified component alignment there. + +@media (min-width: $grid-float-breakpoint) { + .navbar-right { + .dropdown-menu { + right: 0; + left: auto; + } + } +} + diff --git a/content/assets/css/bootstrap/_forms.scss b/content/assets/css/bootstrap/_forms.scss new file mode 100644 index 0000000..fefb3be --- /dev/null +++ b/content/assets/css/bootstrap/_forms.scss @@ -0,0 +1,352 @@ +// +// Forms +// -------------------------------------------------- + + +// Normalize non-controls +// +// Restyle and baseline non-control form elements. + +fieldset { + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: $line-height-computed; + font-size: ($font-size-base * 1.5); + line-height: inherit; + color: $legend-color; + border: 0; + border-bottom: 1px solid $legend-border-color; +} + +label { + display: inline-block; + margin-bottom: 5px; + font-weight: bold; +} + + +// Normalize form controls + +// Override content-box in Normalize (* isn't specific enough) +input[type="search"] { + @include box-sizing(border-box); +} + +// Position radios and checkboxes better +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; /* IE8-9 */ + line-height: normal; +} + +// Set the height of select and file controls to match text inputs +input[type="file"] { + display: block; +} + +// Make multiple select elements height not fixed +select[multiple], +select[size] { + height: auto; +} + +// Fix optgroup Firefox bug per https://github.com/twbs/bootstrap/issues/7611 +select optgroup { + font-size: inherit; + font-style: inherit; + font-family: inherit; +} + +// Focus for select, file, radio, and checkbox +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + @include tab-focus(); +} + +// Fix for Chrome number input +// Setting certain font-sizes causes the `I` bar to appear on hover of the bottom increment button. +// See https://github.com/twbs/bootstrap/issues/8350 for more. +input[type="number"] { + &::-webkit-outer-spin-button, + &::-webkit-inner-spin-button { + height: auto; + } +} + + +// Placeholder +// +// Placeholder text gets special styles because when browsers invalidate entire +// lines if it doesn't understand a selector/ +.form-control { + @include placeholder(); +} + + +// Common form controls +// +// Shared size and type resets for form controls. Apply `.form-control` to any +// of the following form controls: +// +// select +// textarea +// input[type="text"] +// input[type="password"] +// input[type="datetime"] +// input[type="datetime-local"] +// input[type="date"] +// input[type="month"] +// input[type="time"] +// input[type="week"] +// input[type="number"] +// input[type="email"] +// input[type="url"] +// input[type="search"] +// input[type="tel"] +// input[type="color"] + +.form-control { + display: block; + width: 100%; + height: $input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border) + padding: $padding-base-vertical $padding-base-horizontal; + font-size: $font-size-base; + line-height: $line-height-base; + color: $input-color; + vertical-align: middle; + background-color: $input-bg; + border: 1px solid $input-border; + border-radius: $input-border-radius; + @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); + @include transition(border-color ease-in-out .15s, box-shadow ease-in-out .15s); + + // Customize the `:focus` state to imitate native WebKit styles. + @include form-control-focus(); + + // Disabled and read-only inputs + // Note: HTML5 says that controls under a fieldset > legend:first-child won't + // be disabled if the fieldset is disabled. Due to implementation difficulty, + // we don't honor that edge case; we style them as disabled anyway. + &[disabled], + &[readonly], + fieldset[disabled] & { + cursor: not-allowed; + background-color: $input-bg-disabled; + } + + // [converter] extracted textarea& to textarea.form-control +} + +// Reset height for `textarea`s +textarea.form-control { + height: auto; +} + + +// Form groups +// +// Designed to help with the organization and spacing of vertical forms. For +// horizontal forms, use the predefined grid classes. + +.form-group { + margin-bottom: 15px; +} + + +// Checkboxes and radios +// +// Indent the labels to position radios/checkboxes as hanging controls. + +.radio, +.checkbox { + display: block; + min-height: $line-height-computed; // clear the floating input if there is no label text + margin-top: 10px; + margin-bottom: 10px; + padding-left: 20px; + vertical-align: middle; + label { + display: inline; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; + } +} +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + float: left; + margin-left: -20px; +} +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing +} + +// Radios and checkboxes on same line +.radio-inline, +.checkbox-inline { + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + vertical-align: middle; + font-weight: normal; + cursor: pointer; +} +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; // space out consecutive inline controls +} + +// Apply same disabled cursor tweak as for inputs +// +// Note: Neither radios nor checkboxes can be readonly. +input[type="radio"], +input[type="checkbox"], +.radio, +.radio-inline, +.checkbox, +.checkbox-inline { + &[disabled], + fieldset[disabled] & { + cursor: not-allowed; + } +} + +// Form control sizing + +@include input-size('.input-sm', $input-height-small, $padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $border-radius-small); + +@include input-size('.input-lg', $input-height-large, $padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $border-radius-large); + + +// Form control feedback states +// +// Apply contextual and semantic states to individual form controls. + +// Warning +.has-warning { + @include form-control-validation($state-warning-text, $state-warning-text, $state-warning-bg); +} +// Error +.has-error { + @include form-control-validation($state-danger-text, $state-danger-text, $state-danger-bg); +} +// Success +.has-success { + @include form-control-validation($state-success-text, $state-success-text, $state-success-bg); +} + + +// Static form control text +// +// Apply class to a `p` element to make any string of text align with labels in +// a horizontal form layout. + +.form-control-static { + margin-bottom: 0; // Remove default margin from `p` + padding-top: ($padding-base-vertical + 1); +} + + +// Help text +// +// Apply to any element you wish to create light text for placement immediately +// below a form control. Use for general help, formatting, or instructional text. + +.help-block { + display: block; // account for any element using help-block + margin-top: 5px; + margin-bottom: 10px; + color: lighten($text-color, 25%); // lighten the text some for contrast +} + + + +// Inline forms +// +// Make forms appear inline(-block) by adding the `.form-inline` class. Inline +// forms begin stacked on extra small (mobile) devices and then go inline when +// viewports reach <768px. +// +// Requires wrapping inputs and labels with `.form-group` for proper display of +// default HTML form controls and our custom form controls (e.g., input groups). +// +// Heads up! This is mixin-ed into `.navbar-form` in navbars.less. + +.form-inline { + + // Kick in the inline + @media (min-width: $screen-tablet) { + // Inline-block all the things for "inline" + .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + + // In navbar-form, allow folks to *not* use `.form-group` + .form-control { + display: inline-block; + } + + // Remove default margin on radios/checkboxes that were used for stacking, and + // then undo the floating of radios and checkboxes to match (which also avoids + // a bug in WebKit: https://github.com/twbs/bootstrap/issues/1969). + .radio, + .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + padding-left: 0; + } + .radio input[type="radio"], + .checkbox input[type="checkbox"] { + float: none; + margin-left: 0; + } + } +} + + +// Horizontal forms +// +// Horizontal forms are built on grid classes and allow you to create forms with +// labels on the left and inputs on the right. + +.form-horizontal { + + // Consistent vertical alignment of labels, radios, and checkboxes + .control-label, + .radio, + .checkbox, + .radio-inline, + .checkbox-inline { + margin-top: 0; + margin-bottom: 0; + padding-top: ($padding-base-vertical + 1); // Default padding plus a border + } + + // Make form groups behave like rows + .form-group { + @include make-row(); + } + + // Only right align form labels here when the columns stop stacking + @media (min-width: $screen-tablet) { + .control-label { + text-align: right; + } + } +} diff --git a/content/assets/css/bootstrap/_glyphicons.scss b/content/assets/css/bootstrap/_glyphicons.scss new file mode 100644 index 0000000..7614a7a --- /dev/null +++ b/content/assets/css/bootstrap/_glyphicons.scss @@ -0,0 +1,232 @@ +// +// Glyphicons for Bootstrap +// +// Since icons are fonts, they can be placed anywhere text is placed and are +// thus automatically sized to match the surrounding child. To use, create an +// inline element with the appropriate classes, like so: +// +// Star + +// Import the fonts +@font-face { + font-family: 'Glyphicons Halflings'; + src: font-url('#{$icon-font-path}#{$icon-font-name}.eot'); + src: font-url('#{$icon-font-path}#{$icon-font-name}.eot?#iefix') format('embedded-opentype'), + font-url('#{$icon-font-path}#{$icon-font-name}.woff') format('woff'), + font-url('#{$icon-font-path}#{$icon-font-name}.ttf') format('truetype'), + font-url('#{$icon-font-path}#{$icon-font-name}.svg#glyphicons-halflingsregular') format('svg'); +} + +// Catchall baseclass +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: normal; + line-height: 1; + -webkit-font-smoothing: antialiased; +} + +// Individual icons +.glyphicon-asterisk { &:before { content: "\2a"; } } +.glyphicon-plus { &:before { content: "\2b"; } } +.glyphicon-euro { &:before { content: "\20ac"; } } +.glyphicon-minus { &:before { content: "\2212"; } } +.glyphicon-cloud { &:before { content: "\2601"; } } +.glyphicon-envelope { &:before { content: "\2709"; } } +.glyphicon-pencil { &:before { content: "\270f"; } } +.glyphicon-glass { &:before { content: "\e001"; } } +.glyphicon-music { &:before { content: "\e002"; } } +.glyphicon-search { &:before { content: "\e003"; } } +.glyphicon-heart { &:before { content: "\e005"; } } +.glyphicon-star { &:before { content: "\e006"; } } +.glyphicon-star-empty { &:before { content: "\e007"; } } +.glyphicon-user { &:before { content: "\e008"; } } +.glyphicon-film { &:before { content: "\e009"; } } +.glyphicon-th-large { &:before { content: "\e010"; } } +.glyphicon-th { &:before { content: "\e011"; } } +.glyphicon-th-list { &:before { content: "\e012"; } } +.glyphicon-ok { &:before { content: "\e013"; } } +.glyphicon-remove { &:before { content: "\e014"; } } +.glyphicon-zoom-in { &:before { content: "\e015"; } } +.glyphicon-zoom-out { &:before { content: "\e016"; } } +.glyphicon-off { &:before { content: "\e017"; } } +.glyphicon-signal { &:before { content: "\e018"; } } +.glyphicon-cog { &:before { content: "\e019"; } } +.glyphicon-trash { &:before { content: "\e020"; } } +.glyphicon-home { &:before { content: "\e021"; } } +.glyphicon-file { &:before { content: "\e022"; } } +.glyphicon-time { &:before { content: "\e023"; } } +.glyphicon-road { &:before { content: "\e024"; } } +.glyphicon-download-alt { &:before { content: "\e025"; } } +.glyphicon-download { &:before { content: "\e026"; } } +.glyphicon-upload { &:before { content: "\e027"; } } +.glyphicon-inbox { &:before { content: "\e028"; } } +.glyphicon-play-circle { &:before { content: "\e029"; } } +.glyphicon-repeat { &:before { content: "\e030"; } } +.glyphicon-refresh { &:before { content: "\e031"; } } +.glyphicon-list-alt { &:before { content: "\e032"; } } +.glyphicon-flag { &:before { content: "\e034"; } } +.glyphicon-headphones { &:before { content: "\e035"; } } +.glyphicon-volume-off { &:before { content: "\e036"; } } +.glyphicon-volume-down { &:before { content: "\e037"; } } +.glyphicon-volume-up { &:before { content: "\e038"; } } +.glyphicon-qrcode { &:before { content: "\e039"; } } +.glyphicon-barcode { &:before { content: "\e040"; } } +.glyphicon-tag { &:before { content: "\e041"; } } +.glyphicon-tags { &:before { content: "\e042"; } } +.glyphicon-book { &:before { content: "\e043"; } } +.glyphicon-print { &:before { content: "\e045"; } } +.glyphicon-font { &:before { content: "\e047"; } } +.glyphicon-bold { &:before { content: "\e048"; } } +.glyphicon-italic { &:before { content: "\e049"; } } +.glyphicon-text-height { &:before { content: "\e050"; } } +.glyphicon-text-width { &:before { content: "\e051"; } } +.glyphicon-align-left { &:before { content: "\e052"; } } +.glyphicon-align-center { &:before { content: "\e053"; } } +.glyphicon-align-right { &:before { content: "\e054"; } } +.glyphicon-align-justify { &:before { content: "\e055"; } } +.glyphicon-list { &:before { content: "\e056"; } } +.glyphicon-indent-left { &:before { content: "\e057"; } } +.glyphicon-indent-right { &:before { content: "\e058"; } } +.glyphicon-facetime-video { &:before { content: "\e059"; } } +.glyphicon-picture { &:before { content: "\e060"; } } +.glyphicon-map-marker { &:before { content: "\e062"; } } +.glyphicon-adjust { &:before { content: "\e063"; } } +.glyphicon-tint { &:before { content: "\e064"; } } +.glyphicon-edit { &:before { content: "\e065"; } } +.glyphicon-share { &:before { content: "\e066"; } } +.glyphicon-check { &:before { content: "\e067"; } } +.glyphicon-move { &:before { content: "\e068"; } } +.glyphicon-step-backward { &:before { content: "\e069"; } } +.glyphicon-fast-backward { &:before { content: "\e070"; } } +.glyphicon-backward { &:before { content: "\e071"; } } +.glyphicon-play { &:before { content: "\e072"; } } +.glyphicon-pause { &:before { content: "\e073"; } } +.glyphicon-stop { &:before { content: "\e074"; } } +.glyphicon-forward { &:before { content: "\e075"; } } +.glyphicon-fast-forward { &:before { content: "\e076"; } } +.glyphicon-step-forward { &:before { content: "\e077"; } } +.glyphicon-eject { &:before { content: "\e078"; } } +.glyphicon-chevron-left { &:before { content: "\e079"; } } +.glyphicon-chevron-right { &:before { content: "\e080"; } } +.glyphicon-plus-sign { &:before { content: "\e081"; } } +.glyphicon-minus-sign { &:before { content: "\e082"; } } +.glyphicon-remove-sign { &:before { content: "\e083"; } } +.glyphicon-ok-sign { &:before { content: "\e084"; } } +.glyphicon-question-sign { &:before { content: "\e085"; } } +.glyphicon-info-sign { &:before { content: "\e086"; } } +.glyphicon-screenshot { &:before { content: "\e087"; } } +.glyphicon-remove-circle { &:before { content: "\e088"; } } +.glyphicon-ok-circle { &:before { content: "\e089"; } } +.glyphicon-ban-circle { &:before { content: "\e090"; } } +.glyphicon-arrow-left { &:before { content: "\e091"; } } +.glyphicon-arrow-right { &:before { content: "\e092"; } } +.glyphicon-arrow-up { &:before { content: "\e093"; } } +.glyphicon-arrow-down { &:before { content: "\e094"; } } +.glyphicon-share-alt { &:before { content: "\e095"; } } +.glyphicon-resize-full { &:before { content: "\e096"; } } +.glyphicon-resize-small { &:before { content: "\e097"; } } +.glyphicon-exclamation-sign { &:before { content: "\e101"; } } +.glyphicon-gift { &:before { content: "\e102"; } } +.glyphicon-leaf { &:before { content: "\e103"; } } +.glyphicon-eye-open { &:before { content: "\e105"; } } +.glyphicon-eye-close { &:before { content: "\e106"; } } +.glyphicon-warning-sign { &:before { content: "\e107"; } } +.glyphicon-plane { &:before { content: "\e108"; } } +.glyphicon-random { &:before { content: "\e110"; } } +.glyphicon-comment { &:before { content: "\e111"; } } +.glyphicon-magnet { &:before { content: "\e112"; } } +.glyphicon-chevron-up { &:before { content: "\e113"; } } +.glyphicon-chevron-down { &:before { content: "\e114"; } } +.glyphicon-retweet { &:before { content: "\e115"; } } +.glyphicon-shopping-cart { &:before { content: "\e116"; } } +.glyphicon-folder-close { &:before { content: "\e117"; } } +.glyphicon-folder-open { &:before { content: "\e118"; } } +.glyphicon-resize-vertical { &:before { content: "\e119"; } } +.glyphicon-resize-horizontal { &:before { content: "\e120"; } } +.glyphicon-hdd { &:before { content: "\e121"; } } +.glyphicon-bullhorn { &:before { content: "\e122"; } } +.glyphicon-certificate { &:before { content: "\e124"; } } +.glyphicon-thumbs-up { &:before { content: "\e125"; } } +.glyphicon-thumbs-down { &:before { content: "\e126"; } } +.glyphicon-hand-right { &:before { content: "\e127"; } } +.glyphicon-hand-left { &:before { content: "\e128"; } } +.glyphicon-hand-up { &:before { content: "\e129"; } } +.glyphicon-hand-down { &:before { content: "\e130"; } } +.glyphicon-circle-arrow-right { &:before { content: "\e131"; } } +.glyphicon-circle-arrow-left { &:before { content: "\e132"; } } +.glyphicon-circle-arrow-up { &:before { content: "\e133"; } } +.glyphicon-circle-arrow-down { &:before { content: "\e134"; } } +.glyphicon-globe { &:before { content: "\e135"; } } +.glyphicon-tasks { &:before { content: "\e137"; } } +.glyphicon-filter { &:before { content: "\e138"; } } +.glyphicon-fullscreen { &:before { content: "\e140"; } } +.glyphicon-dashboard { &:before { content: "\e141"; } } +.glyphicon-heart-empty { &:before { content: "\e143"; } } +.glyphicon-link { &:before { content: "\e144"; } } +.glyphicon-phone { &:before { content: "\e145"; } } +.glyphicon-usd { &:before { content: "\e148"; } } +.glyphicon-gbp { &:before { content: "\e149"; } } +.glyphicon-sort { &:before { content: "\e150"; } } +.glyphicon-sort-by-alphabet { &:before { content: "\e151"; } } +.glyphicon-sort-by-alphabet-alt { &:before { content: "\e152"; } } +.glyphicon-sort-by-order { &:before { content: "\e153"; } } +.glyphicon-sort-by-order-alt { &:before { content: "\e154"; } } +.glyphicon-sort-by-attributes { &:before { content: "\e155"; } } +.glyphicon-sort-by-attributes-alt { &:before { content: "\e156"; } } +.glyphicon-unchecked { &:before { content: "\e157"; } } +.glyphicon-expand { &:before { content: "\e158"; } } +.glyphicon-collapse-down { &:before { content: "\e159"; } } +.glyphicon-collapse-up { &:before { content: "\e160"; } } +.glyphicon-log-in { &:before { content: "\e161"; } } +.glyphicon-flash { &:before { content: "\e162"; } } +.glyphicon-log-out { &:before { content: "\e163"; } } +.glyphicon-new-window { &:before { content: "\e164"; } } +.glyphicon-record { &:before { content: "\e165"; } } +.glyphicon-save { &:before { content: "\e166"; } } +.glyphicon-open { &:before { content: "\e167"; } } +.glyphicon-saved { &:before { content: "\e168"; } } +.glyphicon-import { &:before { content: "\e169"; } } +.glyphicon-export { &:before { content: "\e170"; } } +.glyphicon-send { &:before { content: "\e171"; } } +.glyphicon-floppy-disk { &:before { content: "\e172"; } } +.glyphicon-floppy-saved { &:before { content: "\e173"; } } +.glyphicon-floppy-remove { &:before { content: "\e174"; } } +.glyphicon-floppy-save { &:before { content: "\e175"; } } +.glyphicon-floppy-open { &:before { content: "\e176"; } } +.glyphicon-credit-card { &:before { content: "\e177"; } } +.glyphicon-transfer { &:before { content: "\e178"; } } +.glyphicon-cutlery { &:before { content: "\e179"; } } +.glyphicon-header { &:before { content: "\e180"; } } +.glyphicon-compressed { &:before { content: "\e181"; } } +.glyphicon-earphone { &:before { content: "\e182"; } } +.glyphicon-phone-alt { &:before { content: "\e183"; } } +.glyphicon-tower { &:before { content: "\e184"; } } +.glyphicon-stats { &:before { content: "\e185"; } } +.glyphicon-sd-video { &:before { content: "\e186"; } } +.glyphicon-hd-video { &:before { content: "\e187"; } } +.glyphicon-subtitles { &:before { content: "\e188"; } } +.glyphicon-sound-stereo { &:before { content: "\e189"; } } +.glyphicon-sound-dolby { &:before { content: "\e190"; } } +.glyphicon-sound-5-1 { &:before { content: "\e191"; } } +.glyphicon-sound-6-1 { &:before { content: "\e192"; } } +.glyphicon-sound-7-1 { &:before { content: "\e193"; } } +.glyphicon-copyright-mark { &:before { content: "\e194"; } } +.glyphicon-registration-mark { &:before { content: "\e195"; } } +.glyphicon-cloud-download { &:before { content: "\e197"; } } +.glyphicon-cloud-upload { &:before { content: "\e198"; } } +.glyphicon-tree-conifer { &:before { content: "\e199"; } } +.glyphicon-tree-deciduous { &:before { content: "\e200"; } } +.glyphicon-briefcase { &:before { content: "\1f4bc"; } } +.glyphicon-calendar { &:before { content: "\1f4c5"; } } +.glyphicon-pushpin { &:before { content: "\1f4cc"; } } +.glyphicon-paperclip { &:before { content: "\1f4ce"; } } +.glyphicon-camera { &:before { content: "\1f4f7"; } } +.glyphicon-lock { &:before { content: "\1f512"; } } +.glyphicon-bell { &:before { content: "\1f514"; } } +.glyphicon-bookmark { &:before { content: "\1f516"; } } +.glyphicon-fire { &:before { content: "\1f525"; } } +.glyphicon-wrench { &:before { content: "\1f527"; } } diff --git a/content/assets/css/bootstrap/_grid.scss b/content/assets/css/bootstrap/_grid.scss new file mode 100644 index 0000000..7b33ecd --- /dev/null +++ b/content/assets/css/bootstrap/_grid.scss @@ -0,0 +1,346 @@ +// +// Grid system +// -------------------------------------------------- + + +// Set the container width, and override it for fixed navbars in media queries +.container { + @include container-fixed(); +} + +// mobile first defaults +.row { + @include make-row(); +} + +// Common styles for small and large grid columns +.col-xs-1, +.col-xs-2, +.col-xs-3, +.col-xs-4, +.col-xs-5, +.col-xs-6, +.col-xs-7, +.col-xs-8, +.col-xs-9, +.col-xs-10, +.col-xs-11, +.col-xs-12, +.col-sm-1, +.col-sm-2, +.col-sm-3, +.col-sm-4, +.col-sm-5, +.col-sm-6, +.col-sm-7, +.col-sm-8, +.col-sm-9, +.col-sm-10, +.col-sm-11, +.col-sm-12, +.col-md-1, +.col-md-2, +.col-md-3, +.col-md-4, +.col-md-5, +.col-md-6, +.col-md-7, +.col-md-8, +.col-md-9, +.col-md-10, +.col-md-11, +.col-md-12, +.col-lg-1, +.col-lg-2, +.col-lg-3, +.col-lg-4, +.col-lg-5, +.col-lg-6, +.col-lg-7, +.col-lg-8, +.col-lg-9, +.col-lg-10, +.col-lg-11, +.col-lg-12 { + position: relative; + // Prevent columns from collapsing when empty + min-height: 1px; + // Inner gutter via padding + padding-left: ($grid-gutter-width / 2); + padding-right: ($grid-gutter-width / 2); +} + + +// Extra small grid +// +// Grid classes for extra small devices like smartphones. No offset, push, or +// pull classes are present here due to the size of the target. +// +// Note that `.col-xs-12` doesn't get floated on purpose—there's no need since +// it's full-width. + +.col-xs-1, +.col-xs-2, +.col-xs-3, +.col-xs-4, +.col-xs-5, +.col-xs-6, +.col-xs-7, +.col-xs-8, +.col-xs-9, +.col-xs-10, +.col-xs-11 { + float: left; +} +.col-xs-1 { width: percentage((1 / $grid-columns)); } +.col-xs-2 { width: percentage((2 / $grid-columns)); } +.col-xs-3 { width: percentage((3 / $grid-columns)); } +.col-xs-4 { width: percentage((4 / $grid-columns)); } +.col-xs-5 { width: percentage((5 / $grid-columns)); } +.col-xs-6 { width: percentage((6 / $grid-columns)); } +.col-xs-7 { width: percentage((7 / $grid-columns)); } +.col-xs-8 { width: percentage((8 / $grid-columns)); } +.col-xs-9 { width: percentage((9 / $grid-columns)); } +.col-xs-10 { width: percentage((10/ $grid-columns)); } +.col-xs-11 { width: percentage((11/ $grid-columns)); } +.col-xs-12 { width: 100%; } + + +// Small grid +// +// Columns, offsets, pushes, and pulls for the small device range, from phones +// to tablets. +// +// Note that `.col-sm-12` doesn't get floated on purpose—there's no need since +// it's full-width. + +@media (min-width: $screen-tablet) { + .container { + max-width: $container-tablet; + } + + .col-sm-1, + .col-sm-2, + .col-sm-3, + .col-sm-4, + .col-sm-5, + .col-sm-6, + .col-sm-7, + .col-sm-8, + .col-sm-9, + .col-sm-10, + .col-sm-11 { + float: left; + } + .col-sm-1 { width: percentage((1 / $grid-columns)); } + .col-sm-2 { width: percentage((2 / $grid-columns)); } + .col-sm-3 { width: percentage((3 / $grid-columns)); } + .col-sm-4 { width: percentage((4 / $grid-columns)); } + .col-sm-5 { width: percentage((5 / $grid-columns)); } + .col-sm-6 { width: percentage((6 / $grid-columns)); } + .col-sm-7 { width: percentage((7 / $grid-columns)); } + .col-sm-8 { width: percentage((8 / $grid-columns)); } + .col-sm-9 { width: percentage((9 / $grid-columns)); } + .col-sm-10 { width: percentage((10/ $grid-columns)); } + .col-sm-11 { width: percentage((11/ $grid-columns)); } + .col-sm-12 { width: 100%; } + + // Push and pull columns for source order changes + .col-sm-push-1 { left: percentage((1 / $grid-columns)); } + .col-sm-push-2 { left: percentage((2 / $grid-columns)); } + .col-sm-push-3 { left: percentage((3 / $grid-columns)); } + .col-sm-push-4 { left: percentage((4 / $grid-columns)); } + .col-sm-push-5 { left: percentage((5 / $grid-columns)); } + .col-sm-push-6 { left: percentage((6 / $grid-columns)); } + .col-sm-push-7 { left: percentage((7 / $grid-columns)); } + .col-sm-push-8 { left: percentage((8 / $grid-columns)); } + .col-sm-push-9 { left: percentage((9 / $grid-columns)); } + .col-sm-push-10 { left: percentage((10/ $grid-columns)); } + .col-sm-push-11 { left: percentage((11/ $grid-columns)); } + + .col-sm-pull-1 { right: percentage((1 / $grid-columns)); } + .col-sm-pull-2 { right: percentage((2 / $grid-columns)); } + .col-sm-pull-3 { right: percentage((3 / $grid-columns)); } + .col-sm-pull-4 { right: percentage((4 / $grid-columns)); } + .col-sm-pull-5 { right: percentage((5 / $grid-columns)); } + .col-sm-pull-6 { right: percentage((6 / $grid-columns)); } + .col-sm-pull-7 { right: percentage((7 / $grid-columns)); } + .col-sm-pull-8 { right: percentage((8 / $grid-columns)); } + .col-sm-pull-9 { right: percentage((9 / $grid-columns)); } + .col-sm-pull-10 { right: percentage((10/ $grid-columns)); } + .col-sm-pull-11 { right: percentage((11/ $grid-columns)); } + + // Offsets + .col-sm-offset-1 { margin-left: percentage((1 / $grid-columns)); } + .col-sm-offset-2 { margin-left: percentage((2 / $grid-columns)); } + .col-sm-offset-3 { margin-left: percentage((3 / $grid-columns)); } + .col-sm-offset-4 { margin-left: percentage((4 / $grid-columns)); } + .col-sm-offset-5 { margin-left: percentage((5 / $grid-columns)); } + .col-sm-offset-6 { margin-left: percentage((6 / $grid-columns)); } + .col-sm-offset-7 { margin-left: percentage((7 / $grid-columns)); } + .col-sm-offset-8 { margin-left: percentage((8 / $grid-columns)); } + .col-sm-offset-9 { margin-left: percentage((9 / $grid-columns)); } + .col-sm-offset-10 { margin-left: percentage((10/ $grid-columns)); } + .col-sm-offset-11 { margin-left: percentage((11/ $grid-columns)); } +} + + +// Medium grid +// +// Columns, offsets, pushes, and pulls for the desktop device range. +// +// Note that `.col-md-12` doesn't get floated on purpose—there's no need since +// it's full-width. + +@media (min-width: $screen-desktop) { + .container { + max-width: $container-desktop; + } + .col-md-1, + .col-md-2, + .col-md-3, + .col-md-4, + .col-md-5, + .col-md-6, + .col-md-7, + .col-md-8, + .col-md-9, + .col-md-10, + .col-md-11 { + float: left; + } + .col-md-1 { width: percentage((1 / $grid-columns)); } + .col-md-2 { width: percentage((2 / $grid-columns)); } + .col-md-3 { width: percentage((3 / $grid-columns)); } + .col-md-4 { width: percentage((4 / $grid-columns)); } + .col-md-5 { width: percentage((5 / $grid-columns)); } + .col-md-6 { width: percentage((6 / $grid-columns)); } + .col-md-7 { width: percentage((7 / $grid-columns)); } + .col-md-8 { width: percentage((8 / $grid-columns)); } + .col-md-9 { width: percentage((9 / $grid-columns)); } + .col-md-10 { width: percentage((10/ $grid-columns)); } + .col-md-11 { width: percentage((11/ $grid-columns)); } + .col-md-12 { width: 100%; } + + // Push and pull columns for source order changes + .col-md-push-0 { left: auto; } + .col-md-push-1 { left: percentage((1 / $grid-columns)); } + .col-md-push-2 { left: percentage((2 / $grid-columns)); } + .col-md-push-3 { left: percentage((3 / $grid-columns)); } + .col-md-push-4 { left: percentage((4 / $grid-columns)); } + .col-md-push-5 { left: percentage((5 / $grid-columns)); } + .col-md-push-6 { left: percentage((6 / $grid-columns)); } + .col-md-push-7 { left: percentage((7 / $grid-columns)); } + .col-md-push-8 { left: percentage((8 / $grid-columns)); } + .col-md-push-9 { left: percentage((9 / $grid-columns)); } + .col-md-push-10 { left: percentage((10/ $grid-columns)); } + .col-md-push-11 { left: percentage((11/ $grid-columns)); } + + .col-md-pull-0 { right: auto; } + .col-md-pull-1 { right: percentage((1 / $grid-columns)); } + .col-md-pull-2 { right: percentage((2 / $grid-columns)); } + .col-md-pull-3 { right: percentage((3 / $grid-columns)); } + .col-md-pull-4 { right: percentage((4 / $grid-columns)); } + .col-md-pull-5 { right: percentage((5 / $grid-columns)); } + .col-md-pull-6 { right: percentage((6 / $grid-columns)); } + .col-md-pull-7 { right: percentage((7 / $grid-columns)); } + .col-md-pull-8 { right: percentage((8 / $grid-columns)); } + .col-md-pull-9 { right: percentage((9 / $grid-columns)); } + .col-md-pull-10 { right: percentage((10/ $grid-columns)); } + .col-md-pull-11 { right: percentage((11/ $grid-columns)); } + + // Offsets + .col-md-offset-0 { margin-left: 0; } + .col-md-offset-1 { margin-left: percentage((1 / $grid-columns)); } + .col-md-offset-2 { margin-left: percentage((2 / $grid-columns)); } + .col-md-offset-3 { margin-left: percentage((3 / $grid-columns)); } + .col-md-offset-4 { margin-left: percentage((4 / $grid-columns)); } + .col-md-offset-5 { margin-left: percentage((5 / $grid-columns)); } + .col-md-offset-6 { margin-left: percentage((6 / $grid-columns)); } + .col-md-offset-7 { margin-left: percentage((7 / $grid-columns)); } + .col-md-offset-8 { margin-left: percentage((8 / $grid-columns)); } + .col-md-offset-9 { margin-left: percentage((9 / $grid-columns)); } + .col-md-offset-10 { margin-left: percentage((10/ $grid-columns)); } + .col-md-offset-11 { margin-left: percentage((11/ $grid-columns)); } +} + + +// Large grid +// +// Columns, offsets, pushes, and pulls for the large desktop device range. +// +// Note that `.col-lg-12` doesn't get floated on purpose—there's no need since +// it's full-width. + +@media (min-width: $screen-lg-desktop) { + .container { + max-width: $container-lg-desktop; + } + + .col-lg-1, + .col-lg-2, + .col-lg-3, + .col-lg-4, + .col-lg-5, + .col-lg-6, + .col-lg-7, + .col-lg-8, + .col-lg-9, + .col-lg-10, + .col-lg-11 { + float: left; + } + .col-lg-1 { width: percentage((1 / $grid-columns)); } + .col-lg-2 { width: percentage((2 / $grid-columns)); } + .col-lg-3 { width: percentage((3 / $grid-columns)); } + .col-lg-4 { width: percentage((4 / $grid-columns)); } + .col-lg-5 { width: percentage((5 / $grid-columns)); } + .col-lg-6 { width: percentage((6 / $grid-columns)); } + .col-lg-7 { width: percentage((7 / $grid-columns)); } + .col-lg-8 { width: percentage((8 / $grid-columns)); } + .col-lg-9 { width: percentage((9 / $grid-columns)); } + .col-lg-10 { width: percentage((10/ $grid-columns)); } + .col-lg-11 { width: percentage((11/ $grid-columns)); } + .col-lg-12 { width: 100%; } + + // Push and pull columns for source order changes + .col-lg-push-0 { left: auto; } + .col-lg-push-1 { left: percentage((1 / $grid-columns)); } + .col-lg-push-2 { left: percentage((2 / $grid-columns)); } + .col-lg-push-3 { left: percentage((3 / $grid-columns)); } + .col-lg-push-4 { left: percentage((4 / $grid-columns)); } + .col-lg-push-5 { left: percentage((5 / $grid-columns)); } + .col-lg-push-6 { left: percentage((6 / $grid-columns)); } + .col-lg-push-7 { left: percentage((7 / $grid-columns)); } + .col-lg-push-8 { left: percentage((8 / $grid-columns)); } + .col-lg-push-9 { left: percentage((9 / $grid-columns)); } + .col-lg-push-10 { left: percentage((10/ $grid-columns)); } + .col-lg-push-11 { left: percentage((11/ $grid-columns)); } + + .col-lg-pull-0 { right: auto; } + .col-lg-pull-1 { right: percentage((1 / $grid-columns)); } + .col-lg-pull-2 { right: percentage((2 / $grid-columns)); } + .col-lg-pull-3 { right: percentage((3 / $grid-columns)); } + .col-lg-pull-4 { right: percentage((4 / $grid-columns)); } + .col-lg-pull-5 { right: percentage((5 / $grid-columns)); } + .col-lg-pull-6 { right: percentage((6 / $grid-columns)); } + .col-lg-pull-7 { right: percentage((7 / $grid-columns)); } + .col-lg-pull-8 { right: percentage((8 / $grid-columns)); } + .col-lg-pull-9 { right: percentage((9 / $grid-columns)); } + .col-lg-pull-10 { right: percentage((10/ $grid-columns)); } + .col-lg-pull-11 { right: percentage((11/ $grid-columns)); } + + // Offsets + .col-lg-offset-0 { margin-left: 0; } + .col-lg-offset-1 { margin-left: percentage((1 / $grid-columns)); } + .col-lg-offset-2 { margin-left: percentage((2 / $grid-columns)); } + .col-lg-offset-3 { margin-left: percentage((3 / $grid-columns)); } + .col-lg-offset-4 { margin-left: percentage((4 / $grid-columns)); } + .col-lg-offset-5 { margin-left: percentage((5 / $grid-columns)); } + .col-lg-offset-6 { margin-left: percentage((6 / $grid-columns)); } + .col-lg-offset-7 { margin-left: percentage((7 / $grid-columns)); } + .col-lg-offset-8 { margin-left: percentage((8 / $grid-columns)); } + .col-lg-offset-9 { margin-left: percentage((9 / $grid-columns)); } + .col-lg-offset-10 { margin-left: percentage((10/ $grid-columns)); } + .col-lg-offset-11 { margin-left: percentage((11/ $grid-columns)); } +} diff --git a/content/assets/css/bootstrap/_input-groups.scss b/content/assets/css/bootstrap/_input-groups.scss new file mode 100644 index 0000000..563c067 --- /dev/null +++ b/content/assets/css/bootstrap/_input-groups.scss @@ -0,0 +1,127 @@ +// +// Input groups +// -------------------------------------------------- + +// Base styles +// ------------------------- +.input-group { + position: relative; // For dropdowns + display: table; + border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table + + // Undo padding and float of grid classes + &.col { + float: none; + padding-left: 0; + padding-right: 0; + } + + .form-control { + width: 100%; + margin-bottom: 0; + } +} + +// Sizing options +// +// Remix the default form control sizing classes into new ones for easier +// manipulation. + +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { @extend .input-lg; } +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { @extend .input-sm; } + + +// Display as table-cell +// ------------------------- +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; + + &:not(:first-child):not(:last-child) { + border-radius: 0; + } +} +// Addon and addon wrapper for buttons +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; // Match the inputs +} + +// Text input groups +// ------------------------- +.input-group-addon { + padding: $padding-base-vertical $padding-base-horizontal; + font-size: $font-size-base; + font-weight: normal; + line-height: 1; + text-align: center; + background-color: $input-group-addon-bg; + border: 1px solid $input-group-addon-border-color; + border-radius: $border-radius-base; + + // Sizing + &.input-sm { + padding: $padding-small-vertical $padding-small-horizontal; + font-size: $font-size-small; + border-radius: $border-radius-small; + } + &.input-lg { + padding: $padding-large-vertical $padding-large-horizontal; + font-size: $font-size-large; + border-radius: $border-radius-large; + } + + // Nuke default margins from checkboxes and radios to vertically center within. + input[type="radio"], + input[type="checkbox"] { + margin-top: 0; + } +} + +// Reset rounded corners +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) { + @include border-right-radius(0); +} +.input-group-addon:first-child { + border-right: 0; +} +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child) { + @include border-left-radius(0); +} +.input-group-addon:last-child { + border-left: 0; +} + +// Button input groups +// ------------------------- +.input-group-btn { + position: relative; + white-space: nowrap; +} +.input-group-btn > .btn { + position: relative; + // Jankily prevent input button groups from wrapping + + .btn { + margin-left: -4px; + } + // Bring the "active" button to the front + &:hover, + &:active { + z-index: 2; + } +} diff --git a/content/assets/css/bootstrap/_jumbotron.scss b/content/assets/css/bootstrap/_jumbotron.scss new file mode 100644 index 0000000..cd796be --- /dev/null +++ b/content/assets/css/bootstrap/_jumbotron.scss @@ -0,0 +1,40 @@ +// +// Jumbotron +// -------------------------------------------------- + + +.jumbotron { + padding: $jumbotron-padding; + margin-bottom: $jumbotron-padding; + font-size: ($font-size-base * 1.5); + font-weight: 200; + line-height: ($line-height-base * 1.5); + color: $jumbotron-color; + background-color: $jumbotron-bg; + + h1 { + line-height: 1; + color: $jumbotron-heading-color; + } + p { + line-height: 1.4; + } + + .container & { + border-radius: $border-radius-large; // Only round corners at higher resolutions if contained in a container + } + + @media screen and (min-width: $screen-tablet) { + padding-top: ($jumbotron-padding * 1.6); + padding-bottom: ($jumbotron-padding * 1.6); + + .container & { + padding-left: ($jumbotron-padding * 2); + padding-right: ($jumbotron-padding * 2); + } + + h1 { + font-size: ($font-size-base * 4.5); + } + } +} diff --git a/content/assets/css/bootstrap/_labels.scss b/content/assets/css/bootstrap/_labels.scss new file mode 100644 index 0000000..bc6af1d --- /dev/null +++ b/content/assets/css/bootstrap/_labels.scss @@ -0,0 +1,58 @@ +// +// Labels +// -------------------------------------------------- + +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: $label-color; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; + + // Add hover effects, but only for links + &[href] { + &:hover, + &:focus { + color: $label-link-hover-color; + text-decoration: none; + cursor: pointer; + } + } + + // Empty labels collapse automatically (not available in IE8) + &:empty { + display: none; + } +} + +// Colors +// Contextual variations (linked labels get darker on :hover) + +.label-default { + @include label-variant($label-default-bg); +} + +.label-primary { + @include label-variant($label-primary-bg); +} + +.label-success { + @include label-variant($label-success-bg); +} + +.label-info { + @include label-variant($label-info-bg); +} + +.label-warning { + @include label-variant($label-warning-bg); +} + +.label-danger { + @include label-variant($label-danger-bg); +} diff --git a/content/assets/css/bootstrap/_list-group.scss b/content/assets/css/bootstrap/_list-group.scss new file mode 100644 index 0000000..b3c116d --- /dev/null +++ b/content/assets/css/bootstrap/_list-group.scss @@ -0,0 +1,90 @@ +// +// List groups +// -------------------------------------------------- + +// Base class +// +// Easily usable on