mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
This feature introduces the concept of themes. Themes are an evolution
of site customizations.
Themes introduce two very big conceptual changes:
- A theme may include other "child themes", children can include grand
children and so on.
- A theme may specify a color scheme
The change does away with the idea of "enabled" color schemes.
It also adds a bunch of big niceties like
- You can source a theme from a git repo
- History for themes is much improved
- You can only have a single enabled theme. Themes can be selected by
users, if you opt for it.
On a technical level this change comes with a whole bunch of goodies
- All CSS is now compiled using a custom pipeline that uses libsass
see /lib/stylesheet
- There is a single pipeline for css compilation (in the past we used
one for customizations and another one for the rest of the app
- The stylesheet pipeline is now divorced of sprockets, there is no
reliance on sprockets for CSS bundling
- CSS is generated with source maps everywhere (including themes) this
makes debugging much easier
- Our "live reloader" is smarter and avoid a flash of unstyled content
we run a file watcher in "puma" in dev so you no longer need to run
rake autospec to watch for CSS changes
98 lines
1.9 KiB
SCSS
98 lines
1.9 KiB
SCSS
// --------------------------------------------------
|
|
// Navigation menus
|
|
// --------------------------------------------------
|
|
|
|
// Base
|
|
// --------------------------------------------------
|
|
|
|
%nav {
|
|
margin-left: 0;
|
|
list-style: none;
|
|
li a {
|
|
display: block;
|
|
text-decoration: none;
|
|
}
|
|
}
|
|
|
|
// Pill nav
|
|
// --------------------------------------------------
|
|
|
|
.nav-pills {
|
|
@extend %nav;
|
|
@extend .clearfix;
|
|
> li {
|
|
float: left;
|
|
margin-right: 5px;
|
|
> a {
|
|
border: none;
|
|
padding: 5px 12px;
|
|
color: $primary;
|
|
font-size: 1.143em;
|
|
line-height: 20px;
|
|
transition: background .15s;
|
|
&:hover {
|
|
color: $quaternary;
|
|
background-color: dark-light-diff($quaternary, $secondary, 70%, -70%);
|
|
}
|
|
}
|
|
&.active > a, > a.active {
|
|
color: $secondary;
|
|
background-color: $quaternary;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Stacked nav
|
|
// --------------------------------------------------
|
|
|
|
.nav-stacked {
|
|
@extend %nav;
|
|
padding: 0;
|
|
overflow: hidden;
|
|
background: dark-light-diff($primary, $secondary, 90%, -75%);
|
|
li {
|
|
border-bottom: 1px solid dark-light-diff($primary, $secondary, 80%, -60%);
|
|
position: relative;
|
|
&:last-of-type {
|
|
border-bottom: 0;
|
|
}
|
|
a {
|
|
margin: 0;
|
|
padding: 13px 13px 13px 30px;
|
|
font-size: 1.143em;
|
|
line-height: 20px;
|
|
cursor: pointer;
|
|
color: $primary;
|
|
}
|
|
}
|
|
.active > a, & li > a.active
|
|
{
|
|
color: $secondary;
|
|
background-color: $quaternary;
|
|
}
|
|
|
|
.active > a::after, & li > a.active::after
|
|
{
|
|
left: 90%;
|
|
top: 33%;
|
|
content: " ";
|
|
position: absolute;
|
|
border: 8px solid transparent;
|
|
border-left-color: $secondary;
|
|
}
|
|
|
|
.count {
|
|
font-size: 0.857em;
|
|
line-height: 16px;
|
|
}
|
|
|
|
.glyph {
|
|
font-size: 0.857em;
|
|
width: 30px;
|
|
text-align: center;
|
|
position: absolute;
|
|
left: 2px;
|
|
line-height: 20px;
|
|
}
|
|
}
|