From 7bee6f08726a9192043f2fbadbb7086fcc20c9c1 Mon Sep 17 00:00:00 2001 From: "cedric@yterium.com" <> Date: Thu, 29 Nov 2012 09:52:57 +0000 Subject: [PATCH] Rangement : spipr (pour spip reboot) est une famille de squelettes qui repose sur Z+BootStrap(+less)+html5 3 variantes de squelettes : spipr-dist : un squelette generique par defaut spipr-blog : un squelette de blog spipr-doc : un squelette de doc (pour un minisite de doc de quelques pages comme celui de bootstrap par exemple) + un 4e squelette complet multifonction configurable qui est la version 4.0 de SarkaSpip Des themes de base dans spipr/v1 (on versionne preventivement), adaptes de bootswatch Tout ca est encore en DEVELOPPEMENT, des choses sont suceptibles de bouger avec casse de la compatibilite (notamment revision de la typo car SPIP a mieux a proposer que BootStrap, et squelettes/conventions des listes d'objet) Documentation a venir. Merci de ne pas utiliser en production pour le moment. --- .gitattributes | 5 + css/bootswatch.less | 332 ++++++++++++++++++++++++++++++++++++++++++++ css/variables.less | 302 ++++++++++++++++++++++++++++++++++++++++ plugin.xml | 12 ++ vignette.png | Bin 0 -> 5488 bytes 5 files changed, 651 insertions(+) create mode 100644 .gitattributes create mode 100644 css/bootswatch.less create mode 100644 css/variables.less create mode 100644 plugin.xml create mode 100644 vignette.png diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..dc7b5a5 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,5 @@ +* text=auto !eol +css/bootswatch.less -text +css/variables.less -text +/plugin.xml -text +/vignette.png -text diff --git a/css/bootswatch.less b/css/bootswatch.less new file mode 100644 index 0000000..cb828cf --- /dev/null +++ b/css/bootswatch.less @@ -0,0 +1,332 @@ +// Bootswatch.less +// Swatch: Journal +// Version: 2.1.1 +// ----------------------------------------------------- + +// TYPOGRAPHY +// ----------------------------------------------------- + +@import url('https://fonts.googleapis.com/css?family=News+Cycle:400,700'); + +h1, h2, h3, h4, h5, h6 { +/* + margin: 0 0 10px; + line-height: 1.2; +*/ + a { + color: @headingsColor; + } +} + +/* +h1 { font-size: 48px; } + +h2 { font-size: 36px; } + +h3 { font-size: 28px; } + +h4 { font-size: 20px; } + +h5 { font-size: 13px; } + +p > a, +address > a, +.breadcrumb a, +abbr[title] { + text-decoration: none; + border-bottom: 1px dotted; + + &:hover { + text-decoration: none; + border-bottom: 1px solid; + } +} +*/ + +code, pre { + .border-radius(0); + background-color: @grayLighter; + .box-shadow(none); +} + +// SCAFFOLDING +// ----------------------------------------------------- + +.page-header { + border-bottom: 2px solid @grayLighter; +} + +hr { + border-bottom: 1px solid @grayLighter; +} + +// NAVBAR +// ----------------------------------------------------- + +.navbar { + + font-family: @sansFontFamily; + font-weight: bold; + + .navbar-inner { + border-bottom: 2px solid @grayLighter; + .border-radius(0); + .box-shadow(none); + } + + .brand { + padding: 19px 20px 21px; + font-size: 24px; + font-weight: bold; + text-shadow: none; + text-transform: uppercase; + } + + .nav > li > a { + padding: 20px 10px 20px; + font-size: 18px; + text-shadow: none; + text-transform: uppercase; + } + + .nav > .active > a { + background-color: transparent; + } + + .navbar-text { + margin-top: 20px; + padding-left: 10px; + padding-right: 10px; + font-size: 18px; + line-height: 20px; + } + + .nav > .active > a, + .nav > .active > a:hover, + .nav > .active > a:focus { + .box-shadow(none); + } + + .divider-vertical { + border-left-color: @grayLighter; + border-right-color: @grayLighter; + } + + .dropdown-menu { + + top: 85%; + .border-radius(0); + + a { + font-size: 15px; + font-weight: bold; + } + } + + .navbar-search .search-query, + .navbar-search .search-query:hover { + border: 2px solid @grayLighter; + color: @textColor; + .placeholder(@gray); + } +} + +@media (max-width: @navbarCollapseWidth) { + + .nav-collapse .navbar-form, + .nav-collapse .navbar-search { + margin-bottom: 0; + border-top: 2px solid @grayLighter; + border-bottom: 2px solid @grayLighter; + } + + + + .navbar .nav-collapse { + + .nav li > a { + color: @navbarLinkColor; + + &:hover { + background-color: @dropdownLinkBackgroundHover; + } + } + + .navbar-text { + margin-top: 0; + } + } + + .navbar-inverse .nav-collapse { + + .nav li > a { + color: @navbarInverseLinkColor; + + &:hover { + background-color: #111; + background-image: none; + } + } + + } +} + +div.subnav { + + height: 54px; + background-color: @bodyBackground; + background-image: none; + .box-shadow(none); + border: 2px solid @grayLighter; + border-left: none; + border-right: none; + .border-radius(0); + + &.subnav-fixed { + top: @navbarHeight; + } + + .nav > li > a, + .nav > li:first-child > a, + .nav > li.active > a { + padding: 20px 15px; + border-left: none; + border-right: none; + background-color: transparent; + .box-shadow(none); + font-family: @sansFontFamily; + color: @headingsColor; + font-size: 15px; + font-weight: bold; + + &:hover { + padding: 20px 15px; + background-color: transparent; + .box-shadow(none); + color: @headingsColor; + } + } + + li.dropdown > .dropdown-toggle .caret , + li.dropdown > .dropdown-toggle:hover .caret, + li.dropdown.open > .dropdown-toggle .caret { + border-top-color: @headingsColor; + border-bottom-color: @headingsColor; + opacity: 1; + } + + li.dropdown.open .dropdown-toggle, + li.dropdown.open .dropdown-toggle:hover { + background-color: @bodyBackground; + color: @headingsColor; + } +} + +// NAV +// ----------------------------------------------------- + +// BUTTONS +// ----------------------------------------------------- + +[class^="icon-"], [class*=" icon-"] { + vertical-align: baseline; +} + +.btn-inverse { + .buttonBackground(@grayDarker, @black); +} + +// TABLES +// ----------------------------------------------------- + +.table-bordered { + .border-radius(0); + .box-shadow(none); +} + +// FORMS +// ----------------------------------------------------- + +legend { + border-bottom: 2px solid @grayLighter; + font-family: @headingsFontFamily; + font-weight: @headingsFontWeight; + color: @headingsColor; +} + +// DROPDOWNS +// ----------------------------------------------------- + +// MISC +// ----------------------------------------------------- + +.well { + .border-radius(0); + .box-shadow(none); +} + +.hero-unit { + padding: 30px 60px; + border: 1px solid rgba(0,0,0,.05); + .border-radius(0); + .box-shadow(none); + + h1 { + margin: 0 0 10px; + line-height: 1.2; + } +} + +// a.thumbnail:hover { +// .box-shadow(0 1px 3px 1px rgba(0, 0, 0, 0.3)); +// border-color: #ddd; +// } + +.modal { + .border-radius(0px); + background: @bodyBackground; +} + +.modal-header { + border-bottom: none; +} + +.modal-footer { + border-top: none; + background: transparent; + .box-shadow(none); +} + +.close, +.close:hover { + border-bottom: none; +} + +// MEDIA QUERIES +// ----------------------------------------------------- + +@media (max-width: 768px) { + + div.subnav { + + height: auto; + + .nav > li.active > a { + border-top: none; + } + + .nav > li:hover > a, + .nav > li:first-child:hover > a, + .nav > li.active:hover > a, + .nav > li.dropdown.open .dropdown-toggle, + .nav > li.dropdown.open .dropdown-toggle:hover { + background-color: @dropdownLinkBackgroundHover; + } + } + + .nav-tabs .open .dropdown-toggle, + .nav-pills .open .dropdown-toggle, + .nav > li.dropdown.open.active > a:hover { + border-color: #e5e5e5; + } +} \ No newline at end of file diff --git a/css/variables.less b/css/variables.less new file mode 100644 index 0000000..a03a339 --- /dev/null +++ b/css/variables.less @@ -0,0 +1,302 @@ +// Variables +// Swatch: Journal +// Version: 2.1.1 +// -------------------------------------------------- + + +// Global values +// -------------------------------------------------- + + +// Grays +// ------------------------- +@black: #000; +@grayDarker: #333; +@grayDark: #777; +@gray: #999; +@grayLight: #bbb; +@grayLighter: #ebebeb; +@white: #fff; + + +// Accent colors +// ------------------------- +@blue: #369; +@blueDark: darken(@blue, 15%); +@green: #22B24C; +@red: #C00; +@yellow: #FCFADB; +@orange: #FF7F00; +@pink: #CC99CC; +@purple: #7a43b6; + + +// Scaffolding +// ------------------------- +@bodyBackground: @white; +@textColor: @grayDark; + + +// Links +// ------------------------- +@linkColor: @grayDarker; +@linkColorHover: @linkColor; + + +// Typography +// ------------------------- +@sansFontFamily: "News Cycle", "Arial Narrow Bold", sans-serif; +@serifFontFamily: Georgia, "Times New Roman", Times, serif; +@monoFontFamily: Menlo, Monaco, Consolas, "Courier New", monospace; + +@baseFontSize: 14px; +@baseFontFamily: @serifFontFamily; +@baseLineHeight: 20px; +@altFontFamily: @sansFontFamily; + +@headingsFontFamily: @sansFontFamily; // empty to use BS default, @baseFontFamily +@headingsFontWeight: bold; // instead of browser default, bold +@headingsColor: @black; // empty to use BS default, @textColor + + +// Component sizing +// ------------------------- +// Based on 14px font-size and 20px line-height + +@fontSizeLarge: @baseFontSize * 1.25; // ~18px +@fontSizeSmall: @baseFontSize * 0.85; // ~12px +@fontSizeMini: @baseFontSize * 0.75; // ~11px + +@paddingLarge: 11px 19px; // 44px +@paddingSmall: 2px 10px; // 26px +@paddingMini: 1px 6px; // 24px + +@baseBorderRadius: 4px; +@borderRadiusLarge: 5px; +@borderRadiusSmall: 3px; + + +// Tables +// ------------------------- +@tableBackground: transparent; // overall background-color +@tableBackgroundAccent: #f5f5f5; // for striping +@tableBackgroundHover: @grayLighter; // for hover +@tableBorder: #ddd; // table and cell border + +// Buttons +// ------------------------- +@btnBackground: @white; +@btnBackgroundHighlight: darken(@white, 10%); +@btnBorder: darken(@white, 15%); + +@btnPrimaryBackground: lighten(@linkColor, 5%); +@btnPrimaryBackgroundHighlight: @linkColor; + +@btnInfoBackground: lighten(@blue, 5%); +@btnInfoBackgroundHighlight: @blue; + +@btnSuccessBackground: lighten(@green, 5%); +@btnSuccessBackgroundHighlight: @green; + +@btnWarningBackground: lighten(@orange, 10%); +@btnWarningBackgroundHighlight: @orange; + +@btnDangerBackground: lighten(@red, 10%); +@btnDangerBackgroundHighlight: @red; + +@btnInverseBackground: lighten(@grayDark, 5%); +@btnInverseBackgroundHighlight: @grayDark; + + +// Forms +// ------------------------- +@inputBackground: @white; +@inputBorder: #ccc; +@inputBorderRadius: 3px; +@inputDisabledBackground: @grayLighter; +@formActionsBackground: @grayLighter; +@inputHeight: @baseLineHeight + 10px; // base line-height + 8px vertical padding + 2px top/bottom border + + +// Dropdowns +// ------------------------- +@dropdownBackground: @bodyBackground; +@dropdownBorder: rgba(0,0,0,.2); +@dropdownDividerTop: @grayLighter; +@dropdownDividerBottom: @grayLighter; + +@dropdownLinkColor: @headingsColor; +@dropdownLinkColorHover: @headingsColor; +@dropdownLinkColorActive: @dropdownLinkColor; + +@dropdownLinkBackgroundActive: @dropdownLinkBackgroundHover; +@dropdownLinkBackgroundHover: @grayLighter; + + + +// COMPONENT VARIABLES +// -------------------------------------------------- + + +// Z-index master list +// ------------------------- +// Used for a bird's eye view of components dependent on the z-axis +// Try to avoid customizing these :) +@zindexDropdown: 1000; +@zindexPopover: 1010; +@zindexTooltip: 1020; +@zindexFixedNavbar: 1030; +@zindexModalBackdrop: 1040; +@zindexModal: 1050; + + +// Sprite icons path +// ------------------------- +@iconSpritePath: "../img/glyphicons-halflings.png"; +@iconWhiteSpritePath: "../img/glyphicons-halflings-white.png"; + + +// Input placeholder text color +// ------------------------- +@placeholderText: @grayLight; + + +// Hr border color +// ------------------------- +@hrBorder: @grayLighter; + + +// Horizontal forms & lists +// ------------------------- +@horizontalComponentOffset: 180px; + + +// Wells +// ------------------------- +@wellBackground: lighten(@grayLighter,4%); + + +// Navbar +// ------------------------- +@navbarCollapseWidth: 979px; +@navbarCollapseDesktopWidth: @navbarCollapseWidth + 1; + +@navbarHeight: 60px; +@navbarBackgroundHighlight: @bodyBackground; +@navbarBackground: @bodyBackground; +@navbarBorder: darken(@navbarBackground, 12%); + +@navbarText: @textColor; +@navbarLinkColor: @headingsColor; +@navbarLinkColorHover: @headingsColor; +@navbarLinkColorActive: @headingsColor; +@navbarLinkBackgroundHover: transparent; +@navbarLinkBackgroundActive: transparent; + +@navbarBrandColor: @navbarLinkColor; + +// Inverted navbar +@navbarInverseBackground: #111111; +@navbarInverseBackgroundHighlight: #222222; +@navbarInverseBorder: #252525; + +@navbarInverseText: @grayLight; +@navbarInverseLinkColor: @grayLight; +@navbarInverseLinkColorHover: @white; +@navbarInverseLinkColorActive: @navbarInverseLinkColorHover; +@navbarInverseLinkBackgroundHover: transparent; +@navbarInverseLinkBackgroundActive: @navbarInverseBackground; + +@navbarInverseSearchBackground: lighten(@navbarInverseBackground, 25%); +@navbarInverseSearchBackgroundFocus: @white; +@navbarInverseSearchBorder: @navbarInverseBackground; +@navbarInverseSearchPlaceholderColor: #ccc; + +@navbarInverseBrandColor: @navbarInverseLinkColor; + + +// Pagination +// ------------------------- +@paginationBackground: @bodyBackground; +@paginationBorder: #ddd; +@paginationActiveBackground: @grayLighter; + + +// Hero unit +// ------------------------- +@heroUnitBackground: @grayLighter; +@heroUnitHeadingColor: @headingsColor; +@heroUnitLeadColor: inherit; + + +// Form states and alerts +// ------------------------- +@warningText: #c09853; +@warningBackground: #fcf8e3; +@warningBorder: darken(spin(@warningBackground, -10), 3%); + +@errorText: #b94a48; +@errorBackground: #f2dede; +@errorBorder: darken(spin(@errorBackground, -10), 3%); + +@successText: #468847; +@successBackground: #dff0d8; +@successBorder: darken(spin(@successBackground, -10), 5%); + +@infoText: #3a87ad; +@infoBackground: #d9edf7; +@infoBorder: darken(spin(@infoBackground, -10), 7%); + + +// Tooltips and popovers +// ------------------------- +@tooltipColor: #fff; +@tooltipBackground: #000; +@tooltipArrowWidth: 5px; +@tooltipArrowColor: @tooltipBackground; + +@popoverBackground: #fff; +@popoverArrowWidth: 10px; +@popoverArrowColor: #fff; +@popoverTitleBackground: darken(@popoverBackground, 3%); + +// Special enhancement for popovers +@popoverArrowOuterWidth: @popoverArrowWidth + 1; +@popoverArrowOuterColor: rgba(0,0,0,.25); + + + +// GRID +// -------------------------------------------------- + + +// Default 940px grid +// ------------------------- +@gridColumns: 12; +@gridColumnWidth: 60px; +@gridGutterWidth: 20px; +@gridRowWidth: (@gridColumns * @gridColumnWidth) + (@gridGutterWidth * (@gridColumns - 1)); + +// 1200px min +@gridColumnWidth1200: 70px; +@gridGutterWidth1200: 30px; +@gridRowWidth1200: (@gridColumns * @gridColumnWidth1200) + (@gridGutterWidth1200 * (@gridColumns - 1)); + +// 768px-979px +@gridColumnWidth768: 42px; +@gridGutterWidth768: 20px; +@gridRowWidth768: (@gridColumns * @gridColumnWidth768) + (@gridGutterWidth768 * (@gridColumns - 1)); + + +// Fluid grid +// ------------------------- +@fluidGridColumnWidth: percentage(@gridColumnWidth/@gridRowWidth); +@fluidGridGutterWidth: percentage(@gridGutterWidth/@gridRowWidth); + +// 1200px min +@fluidGridColumnWidth1200: percentage(@gridColumnWidth1200/@gridRowWidth1200); +@fluidGridGutterWidth1200: percentage(@gridGutterWidth1200/@gridRowWidth1200); + +// 768px-979px +@fluidGridColumnWidth768: percentage(@gridColumnWidth768/@gridRowWidth768); +@fluidGridGutterWidth768: percentage(@gridGutterWidth768/@gridRowWidth768); diff --git a/plugin.xml b/plugin.xml new file mode 100644 index 0000000..6c74e3b --- /dev/null +++ b/plugin.xml @@ -0,0 +1,12 @@ + + Journal + 2.1.1 + stable + Cedric + GPL + theme_bsjournal + Crisp like a new sheet of paper + vignette.png + + theme + diff --git a/vignette.png b/vignette.png new file mode 100644 index 0000000000000000000000000000000000000000..448e9039de51588992525a61e28cf1595780fdd2 GIT binary patch literal 5488 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 m&RPrz1HynXAbpblBftQD!X5f6&Z-Ci0000