= Creating new Themes with Foundation and SCSS = [[TOC]] == Creating the Theme == === CSS/SCSS Files and Folders === {{{ themes/THEME Base folder of the theme | +---theme.css the theme's SCSS-built parts +---style.css the theme's additional CSS (optional) +---eden.min.css css.cfg-built, minified CSS +---*.css any additional injectable CSS (s3.stylesheets) themes/THEME/foundation The theme's Foundation base style sheets (CSS) | +---foundation.css the theme's foundation stylesheet for Left-to-Right writing direction +---foundation.rtl.css the theme's foundation stylesheet for Right-to-Left writing direction +---foundation.min.css minified versions of the above +---foundation.rtl.min.css " themes/THEME/img Image folder of the theme themes/THEME/js Script folder of the theme (injected scripts) themes/THEME/favicon.ico The bookmark icon of the theme themes/THEME/scss The SCSS environment of the theme | +---_settings.scss the theme's foundation SCSS settings (=> falls back to default/scss/_settings.scss if not present) +---foundation.scss the theme's foundation SCSS imports +---foundation.rtl.scss the theme's foundation SCSS RTL overrides +---theme.scss the theme's SCSS imports +---config.rb the build configuration for Compass | +---theme/ The theme's SCSS sources | +---_base.scss the theme's SCSS base (required) +---_config.scss the theme's Sahana-specific SCSS settings +---_*.scss the individual SCSS sources (=> fall back to the corresponding default/scss/theme/*.scss) }}} === Copying from Skeleton === == Building the Theme == === Developer Preview === === Production === == Using the Theme in a Template == === Adding Foundation to layout.html === ==== Base Styles ==== Foundation-based themes must include the '''Foundation base stylesheets''', ahead of any Sahana style sheets: - static/themes/foundation/normalize.css - static/themes/THEME/foundation/foundation.css - static/themes/THEME/foundation/foundation.rtl.css Note that only one of {{{foundation.css}}} or {{{foundation.rtl.css}}} is loaded, depending on the writing direction for the current UI language (Left-To-Right or Right-To-Left). The sequence to include Foundation base styles is encoded in a view template {{{views/foundation.css.html}}}, so it can easily be added to {{{layout.html}}}: {{{ ... {{for sheet in s3.external_stylesheets:}} {{pass}} {{include "foundation.css.html"}} <--- Foundation base styles are loaded here {{for sheet in s3.stylesheets:}} {{pass}} {{if s3.debug:}}{{=s3base.s3_include_debug_css()}}{{else:}} {{# Built by /static/scripts/tools/build.sahana.py }} {{pass}} ... }}} ==== Scripts ==== Additionally, Foundation requires loading and initialization of some scripts at the end of the {{{}}}. The corresponding sequence is also encoded in a view template {{{views/foundation.js.html}}}, so it can easily be added to {{{layout.html}}}: {{{ ... {{include "foundation.js.html"}} <--- this loads and initializes Foundation scripts }}} === Adding Theme Styles to css.cfg === The SCSS-built {{{theme.css}}} style sheet is included at the end of {{{css.cfg}}}: {{{ ... ../themes/THEME/theme.css #../themes/THEME/style.css # Final line required for parsing }}} It can be followed by an optional {{{THEME/style.css}}} to add CSS for template-specific elements as well as final overrides. The {{{style.css}}} style sheet is not built from SCSS, so it can be edited directly.