ohif-viewer/Packages/ohif-design/styles/imports/theming.styl
Eloízio Salgado 20a2a8e453 LT 281: Users shall be able to switch between themes (#45)
* LT-281: Users shall be able to switch between themes

* Avoiding compatibility issues

* Typo fixing
2016-11-15 08:24:30 +01:00

75 lines
2.3 KiB
Stylus

$themes = {}
$defaultTheme = 'tide'
// Import the theme variables
@import "./themes/theme-tide.styl"
@import "./themes/theme-tigerlily.styl"
@import "./themes/theme-crickets.styl"
@import "./themes/theme-honeycomb.styl"
@import "./themes/theme-mint.styl"
@import "./themes/theme-overcast.styl"
@import "./themes/theme-quartz.styl"
/*
* Process each theme variable in the given value, splitting it by space
*/
parseSpaceVars($theme, $value, $alpha)
// Split values by space
$valueSplit = split(' ', $value)
// Create an empty list
$list = ''
pop($list)
// Iterate over split values
for $property in $valueSplit
// Try to get the theme with current property key
$val = $theme[$property]
if ($val)
if($val is a 'color')
// Apply given alpha if it's a color
$val = alpha($val, $alpha)
// Push the processed theme variable to the list
push($list, $val)
else
// Push the property itself if not found in theme variables
push($list, $property)
// Merge the resulting processed list by joining values back with space
join(' ', $list)
/*
* Process each theme variable in the given value, splitting it by comma
*/
parseCommaVars($theme, $value, $alpha)
// Split values by comma
$valueSplit = split(',', $value)
// Create an empty list
$list = ''
pop($list)
// Iterate over split values
for $sentence in $valueSplit
// Procces the values splitting by space
push($list, parseSpaceVars($theme, $sentence, $alpha))
// Merge the resulting processed list by joining values back with comma
unquote(join(',', $list))
/*
* Return a processed theme variable or color with alpha
*/
theme($property, $value, $alpha=1)
// Crete the selector for default theme
/ {selector()}
{$property}: parseCommaVars($themes[$defaultTheme], $value, $alpha)
// Create the selector for each registered theme
for $themeName, $theme in $themes
for $selectorPiece in split(',', selector())
// prefix the selector with the body.theme-{themeName} selector
/ body.theme-{$themeName} {$selectorPiece}
{$property}: parseCommaVars($theme, $value, $alpha)