Browse Source

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.
master
cedric@yterium.com 9 years ago
commit
eadeb9451a
  1. 10
      .gitattributes
  2. 31
      body.html
  3. 466
      css/bootswatch.less
  4. BIN
      css/img/background.png
  5. 24
      css/layouts.less
  6. 53
      css/spip.comment.less
  7. 34
      css/theme.less
  8. 296
      css/variables.less
  9. 12
      plugin.xml
  10. BIN
      vignette.png

10
.gitattributes

@ -0,0 +1,10 @@
* text=auto !eol
/body.html -text
css/bootswatch.less -text
css/img/background.png -text
css/layouts.less -text
css/spip.comment.less -text
css/theme.less -text
css/variables.less -text
/plugin.xml -text
/vignette.png -text

31
body.html

@ -0,0 +1,31 @@
<body>
<div class="page">
<div class="container">
<div class="header" id="header">
<INCLURE{fond=header/#ENV{type-page},env} />
</div>
<div class="navbar navbar-inverse" id="nav">
<div class="navbar-wrap">
<INCLURE{fond=inclure/nav,env} />
</div>
</div>
<INCLURE{fond=breadcrumb/#ENV{type-page},env} />
<div class="wrapper">
<div class="content primary" id="content">
<div class="inner">
<INCLURE{fond=content/#ENV{type-page},env} />
</div>
</div>
<div class="aside secondary" id="aside">
<INCLURE{fond=aside/#ENV{type-page},env} />
</div>
<div class="extra secondary" id="extra">
<INCLURE{fond=extra/#ENV{type-page},env} />
</div>
</div>
<div class="footer" id="footer">
<INCLURE{fond=footer/#ENV{type-page},env} />
</div>
</div>
</div>
</body>

466
css/bootswatch.less

@ -0,0 +1,466 @@
// Bootswatch.less
// Swatch: Readable
// Version: 2.1.1
// -----------------------------------------------------
// TYPOGRAPHY
// -----------------------------------------------------
body {
word-spacing: -0.05em;
}
h1 { font-size: 2.5em; }
h2 { font-size: 2em; }
h3 { font-size: 1.5em; }
small {
font-size: 13px;
}
blockquote {
border-left: 6px solid @grayLighter;
&.pull-right {
border-right: 6px solid @grayLighter;
}
p {
font-size: 1em;
line-height: 1.2em;
}
}
code, pre {
.border-radius(0);
background-color: @white;
}
.muted, .help-block, .uneditable-input, blockquote, small {
color: @grayLight;
}
// SCAFFOLDING
// -----------------------------------------------------
.page-header {
border-bottom: 2px solid @grayLighter;
}
// NAVBAR
// -----------------------------------------------------
.navbar {
.brand {
font-weight: bold;
line-height: 1em;
&:hover {
color: @linkColorHover;
}
}
.nav > li > a {
text-shadow: none;
padding: 15px 15px 7px;
}
.nav > .active > a,
.nav > .active > a:hover,
.nav > .active > a:focus {
.box-shadow(none);
}
.navbar-search {
margin-top: 11px;
}
.search-query {
border: 1px solid #D4D4D4;
.border-radius(0);
color: @textColor;
background-color: @white;
}
.navbar-text {
margin: 15px 15px 0;
line-height: @baseLineHeight;
}
.divider-vertical {
border-right: 1px solid rgba(128, 128, 128, 0.3);
border-left: none;
}
&-inverse {
.brand:hover {
color: @white;
}
}
}
@media (max-width: @navbarCollapseWidth) {
.navbar .nav-collapse {
.nav li:first-child > a {
margin-bottom: 10px;
}
.nav li > a {
color: @linkColor;
.border-radius(0);
font-weight: normal;
&:hover {
background-color: rgba(0, 0, 0, 0.05);
color: @linkColorHover;
}
}
.navbar-form,
.navbar-search {
border-top: 1px solid rgba(128, 128, 128, 0.2);
border-bottom: 1px solid rgba(128, 128, 128, 0.2);
}
.nav-header {
color: @grayLight;
}
}
.navbar-inverse .nav-collapse {
.nav li > a {
color: @grayLighter;
}
.nav li > a:hover {
background-color: rgba(0, 0, 0, 0.2) !important;
color: @white;
}
}
}
div.subnav {
.box-shadow(none);
.border-radius(0);
background-color: @white;
background-image: none;
.nav {
padding: 0;
}
.nav > li.active > a,
.nav > li:active > a {
color: @linkColor;
.box-shadow(none);
background-color: transparent;
}
.nav > li > a:hover,
.nav > li.active > a:hover,
.nav > li:active > a:hover {
background-color: transparent;
.box-shadow(none);
color: @linkColorHover;
}
&-fixed {
top: @navbarHeight;
}
}
// NAV
// -----------------------------------------------------
.nav .dropdown .caret {
opacity: 1;
}
.nav-tabs {
li > a {
.border-radius(0);
}
li > a:hover {
background-color: @bodyBackground;
}
li.active > a,
li.active > a:hover {
color: @textColor;
background-color: @bodyBackground;
}
}
.nav-tabs.nav-stacked {
li > a {
background-color: @white;
}
li.active > a,
li.active > a:hover,
li > a:hover {
background-color: #F5F5F5;
}
li:first-child > a,
li:last-child > a {
.border-radius(0);
}
}
.nav-pills {
li > a {
.border-radius(0);
}
li > a:hover {
background-color: @bodyBackground;
}
li.active > a,
li.active > a:hover {
color: @textColor;
background-color: @bodyBackground;
}
.open .dropdown-toggle {
background-color: transparent;
color: @linkColor;
border-left: 1px solid whiteSmoke;
border-right: 1px solid #E5E5E5;
}
li.dropdown.open .dropdown-toggle .caret {
border-top-color: @linkColor;
}
li.dropdown.open .dropdown-toggle:hover .caret {
border-top-color: @linkColorHover;
}
}
.nav-list {
li > a:hover,
li.active > a,
li.active > a:hover {
background-color: transparent;
text-shadow: none;
}
li.active > a,
li.active > a:hover {
color: @textColor;
}
[class^="icon-"] {
margin-top: 3px;
opacity: 0.8;
}
.divider {
margin: 1px;
}
}
.breadcrumb {
.border-radius(0);
background-color: transparent;
background-image: none;
padding-left: 0;
padding-right: 0;
}
.pagination {
ul {
.box-shadow(none);
}
li > a {
padding: 10px 14px;
}
li.active > a,
li.active > a:hover {
color: @textColor;
background-color: #F5F5F5;
}
li > a,
li.disabled > a,
li.disabled > a:hover {
background-color: @white;
}
li:first-child > a,
li:last-child > a {
.border-radius(0);
}
}
.pager {
a {
.border-radius(0);
}
}
// BUTTONS
// -----------------------------------------------------
.btn-primary {
.buttonBackground(lighten(@btnPrimaryBackground, 10%), @btnPrimaryBackground);
}
.btn [class^="icon-"],
.btn [class*=" icon-"] {
margin-top: 4px;
}
.btn-large [class^="icon-"],
.btn-large [class*=" icon-"] {
margin-top: 6px;
margin-right: 2px;
}
.btn-small [class^="icon-"],
.btn-small [class*=" icon-"] {
margin-top: 3px;
}
.btn .caret {
margin-top: 13px;
}
// TABLES
// -----------------------------------------------------
.table-bordered {
.border-radius(0);
}
.table-bordered thead:first-child tr:first-child th:first-child,
.table-bordered tbody:first-child tr:first-child td:first-child {
.border-radius(0);
}
.table-bordered thead:last-child tr:last-child th:first-child,
.table-bordered tbody:last-child tr:last-child td:first-child {
.border-radius(0);
}
// FORMS
// -----------------------------------------------------
input, button, select, textarea {
font-family: @baseFontFamily;
}
input, textarea, select {
color: @textColor;
}
select, input[type="file"] {
height: auto;
line-height: normal;
}
.form-actions {
border-top: 1px solid #D4D4D4;
padding-top: 2em;
}
// DROPDOWNS
// -----------------------------------------------------
.dropdown-menu {
border: 1px solid #D4D4D4;
.border-radius(0);
.box-shadow(1px 1px 1px rgba(0, 0, 0, 0.2));
.divider {
margin: 5px 1px;
}
}
// ALERTS, LABELS, BADGES
// -----------------------------------------------------
.alert,
.label, .label:hover {
.border-radius(0);
border: 1px solid #D4D4D4;
color: @textColor;
text-shadow: none;
}
.alert-heading {
color: @textColor;
text-shadow: none;
}
.label, .label:hover {
background-color: @white;
font-weight: normal;
font-size: @baseFontSize;
padding: 4px;
}
.label-important, .label-important:hover { background-color: @errorBackground; }
.label-warning, .label-warning:hover { background-color: @warningBackground; }
.label-success, .label-success:hover { background-color: @successBackground; }
.label-info, .label-info:hover { background-color: @infoBackground; }
// MISC
// -----------------------------------------------------
.well, .hero-unit {
.box-shadow(none);
border: 1px solid #D4D4D4;
.border-radius(0);
}
.thumbnail {
background-color: @white;
}
.thumbnail,
.thumbnail > img {
.border-radius(0);
.box-shadow(none);
}
.modal {
background-color: @white;
.border-radius(0);
}
.modal-header {
border-bottom: none;
}
.modal-footer {
background-color: @bodyBackground;
}
// MEDIA QUERIES
// -----------------------------------------------------

BIN
css/img/background.png

After

Width: 250  |  Height: 250  |  Size: 3.8 KiB

24
css/layouts.less

@ -0,0 +1,24 @@
@import "bootstrap/css/layouts.less";
@import "css/layoutgala/33";
@import "css/layoutgala/27";
#layoutgala33 > .core(8,4,4,@gridColumnWidth,@gridGutterWidth);
#content > .inner {padding-right: @gridColumnWidth;}
@media (min-width: 1200px) {
#layoutgala33 > .core(7,5,5,@gridColumnWidth1200,@gridGutterWidth1200);
#content > .inner {padding-right: @gridColumnWidth1200+@gridGutterWidth1200;}
}
@media (min-width: 768px) and (max-width: 979px) {
#layoutgala33 > .core(8,4,4,@gridColumnWidth768,@gridGutterWidth768);
#content > .inner {padding-right: 0;}
}
@media (max-width: 767px) {
#layoutgala27 > .core(auto,48%,48%,@gridColumnWidth768,@gridGutterWidth768);
#content > .inner {padding-right: 0;}
}
@media (max-width: 450px) {
div#aside {float:none;width:100%;}
div#extra {float:none;width:100%;}
}

53
css/spip.comment.less

@ -0,0 +1,53 @@
/* Habillage des forums
---------------------------------------------- */
@import "css/variables.less";
@import "css/mixins.less";
/* * Habillage des forums */
//.comments { margin-bottom:/*@margin-bottom*/1.5em/*/@*/}
/* comments list */
.comments-items {list-style: none;margin-left: 0;}
//.comments-items {border-bottom: 1px solid #eee;}
.comments-items .comments-items {margin-left: @gridColumnWidth+@gridGutterWidth;}
.comments-items .comments-items .comments-items .comments-items .comments-items {margin-left: @gridGutterWidth;}
//.comments-items .comment-item {border-top: 1px solid #eee;}
//.comments-items .comment-item .comment-item {border-top: 0;}
.comment {
overflow:hidden;position: relative;padding-top: @baseLineHeight/2; border-top : 1px solid @grayLighter;
padding-left: @gridColumnWidth+@gridGutterWidth;position: relative;
}
.comment-meta {color: @grayLight;padding-right: @baseLineHeight;}
.comment-meta a {.opacity(70);}
.comment-meta .spip_logos {position:absolute;left: 0;top:@baseLineHeight/2;}
.comment-meta .permalink { position: absolute;right: 0;font-size: 2em;color:@grayLight;}
//.comment-item .comment-item .comment-meta {background : #f4f4f4;}
.comment-meta .forum-titre {display: block;}
.comment-content {background: transparent;max-height:60em;overflow:auto;overflow-x:none;}
.comment-reply { clear: both; text-align: right; margin-bottom:0;margin-top: -@baseLineHeight/2;visibility: hidden;}
.comment:hover .comment-reply {visibility: visible;position: relative;}
/* avec plugin comments */
.comment-item:hover >.comment-reply {visibility: visible;position: relative;}
/* en thread */
.comments-thread .comment-item {margin-bottom:@baseLineHeight;}
.comments-thread .comment-item .comment-item {margin-bottom:0;}
.comments-thread .permalink.in-reply-to {top:@baseLineHeight;}
/* avec plugin comments */
//.comment-meta .permalink.picto {font-size:1em;right:/*@demi-margin-bottom*/0.75em/*/@*/;}
//.comment {position:relative;}
//.comment .spip-admin {position:absolute;left:0;bottom:0;visibility:hidden;}
//.comment:hover .spip-admin {visibility:visible;}
/* en list avec plugin comments */
.comment-meta .item {display:block;}
.comments-list .comment-meta .item {display: none;}
.boutons.modererforum {text-align: right;position: absolute;top: 0;right: @baseLineHeight;display: none;}
.comment:hover .boutons.modererforum {display: block;}

34
css/theme.less

@ -0,0 +1,34 @@
@import "css/variables.less";
@import "css/mixins.less";
body {background-image: url(img/background.png);background-repeat: repeat;}
.col h1,
.col h2,
.col h3 {font-size: @baseFontSize*1.25; line-height: @baseLineHeight;}
.header {position: relative;}
.header .accueil a {color: inherit;}
.header .spip_logos {float:left;margin: @paddingLarge;margin-left: 0;margin-top:0;}
#logo_site_spip {line-height: 1em;}
#slogan_site_spip {display: block;}
.header .formulaire_menu_lang {width: 100%;}
.header .formulaire_menu_lang select {width: 100%;}
.formulaire_recherche {padding-right: 42px+2*14px;} /* provisionner la largeur du bouton+padding sur le input.search */
.formulaire_recherche form .input-append {width:100%;}
.formulaire_recherche form input.search {width:100%;}
.footer {
margin-top:8em;
padding-top: 4em;
padding-bottom: 2em;
margin-bottom:0;
font-size: @fontSizeSmall;
text-align: center;
}
.cartouche {margin-bottom: @baseLineHeight;}
.content-principal {.clearfix}

296
css/variables.less

@ -0,0 +1,296 @@
//
// Variables
// Swatch: Readable
// Version: 2.1.1
// --------------------------------------------------
// Global values
// --------------------------------------------------
// Grays
// -------------------------
@black: #000;
@grayDarker: #282828;
@grayDark: #333;
@gray: #777;
@grayLight: #999;
@grayLighter: #CDCDCD;
@white: #fff;
// Accent colors
// -------------------------
@blue: #049cdb;
@blueDark: #0064cd;
@green: #46a546;
@red: #9C0001;
@yellow: #ffc40d;
@orange: #f89406;
@pink: #c3325f;
@purple: #7a43b6;
// Scaffolding
// -------------------------
@bodyBackground: #FAFDFA;
@textColor: @grayDarker;
// Links
// -------------------------
@linkColor: @red;
@linkColorHover: lighten(@linkColor, 8%);
// Typography
// -------------------------
@sansFontFamily: "Helvetica Neue", Helvetica, Arial, sans-serif;
@serifFontFamily: Palatino, Georgia, "Times New Roman", Times, serif;
@monoFontFamily: Menlo, Monaco, Consolas, "Courier New", monospace;
@baseFontSize: 16px;
@baseFontFamily: @serifFontFamily;
@baseLineHeight: 22px;
@altFontFamily: @serifFontFamily;
@headingsFontFamily: inherit; // empty to use BS default, @baseFontFamily
@headingsFontWeight: bold; // instead of browser default, bold
@headingsColor: inherit; // 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; // 42px
@paddingSmall: 4px 10px; // 28px
@paddingMini: 2px 6px; // 24px
@baseBorderRadius: 4px;
@borderRadiusLarge: 5px;
@borderRadiusSmall: 3px;
// Tables
// -------------------------
@tableBackground: transparent; // overall background-color
@tableBackgroundAccent: darken(@bodyBackground, 2%); // for striping
@tableBackgroundHover: darken(@bodyBackground, 4%); // for hover
@tableBorder: #ddd; // table and cell border
// Buttons
// -------------------------
@btnBackground: @white;
@btnBackgroundHighlight: darken(@white, 10%);
@btnBorder: darken(@white, 20%);
@btnPrimaryBackground: @linkColor;
@btnPrimaryBackgroundHighlight: spin(@btnPrimaryBackground, 15%);
@btnInfoBackground: #5bc0de;
@btnInfoBackgroundHighlight: #2f96b4;
@btnSuccessBackground: #62c462;
@btnSuccessBackgroundHighlight: #51a351;
@btnWarningBackground: lighten(@orange, 15%);
@btnWarningBackgroundHighlight: @orange;
@btnDangerBackground: #ee5f5b;
@btnDangerBackgroundHighlight: #bd362f;
@btnInverseBackground: @gray;
@btnInverseBackgroundHighlight: @grayDarker;
// Forms
// -------------------------
@inputBackground: @white;
@inputBorder: #ccc;
@inputBorderRadius: 3px;
@inputDisabledBackground: @grayLighter;
@formActionsBackground: transparent;
@inputHeight: @baseLineHeight + 10px; // base line-height + 8px vertical padding + 2px top/bottom border
// Dropdowns
// -------------------------
@dropdownBackground: @white;
@dropdownBorder: rgba(0,0,0,.2);
@dropdownDividerTop: #e5e5e5;
@dropdownDividerBottom: @white;
@dropdownLinkColor: @linkColor;
@dropdownLinkColorHover: @linkColorHover;
@dropdownLinkBackgroundHover: rgba(255,255,255,0);
@dropdownLinkColorActive: @dropdownLinkColor;
@dropdownLinkBackgroundActive: @linkColor;
// 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: 1030;
@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;
// Wells
// -------------------------
@wellBackground: @white;
// Navbar
// -------------------------
@navbarCollapseWidth: 767px;
@navbarCollapseDesktopWidth: @navbarCollapseWidth + 1;
@navbarHeight: 50px;
@navbarBackground: @bodyBackground;
@navbarBackgroundHighlight: @bodyBackground;
@navbarBorder: darken(@navbarBackground, 12%);
@navbarText: @textColor;
@navbarLinkColor: @textColor;
@navbarLinkColorHover: @linkColor;
@navbarLinkColorActive: @linkColor;
@navbarLinkBackgroundHover: transparent;
@navbarLinkBackgroundActive: @navbarBackground;
@navbarBrandColor: @navbarLinkColor;
// Inverted navbar
@navbarInverseBackground: @linkColor;
@navbarInverseBackgroundHighlight: lighten(@linkColor, 3%);
@navbarInverseBorder: darken(@linkColor, 3%);
@navbarInverseText: @grayLighter;
@navbarInverseLinkColor: @grayLighter;
@navbarInverseLinkColorHover: @white;
@navbarInverseLinkColorActive: @white;
@navbarInverseLinkBackgroundHover: transparent;
@navbarInverseLinkBackgroundActive: @navbarInverseBackground;
@navbarInverseSearchBackground: lighten(@navbarInverseBackground, 25%);
@navbarInverseSearchBackgroundFocus: @white;
@navbarInverseSearchBorder: @navbarInverseBackground;
@navbarInverseSearchPlaceholderColor: @grayLighter;
@navbarInverseBrandColor: @navbarInverseLinkColor;
// Pagination
// -------------------------
@paginationBackground: #fff;
@paginationBorder: #ddd;
@paginationActiveBackground: #f5f5f5;
// Hero unit
// -------------------------
@heroUnitBackground: @white;
@heroUnitHeadingColor: inherit;
@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);

12
plugin.xml

@ -0,0 +1,12 @@
<plugin>
<nom>Readable</nom>
<version>2.1.1</version>
<etat>stable</etat>
<auteur>Cedric</auteur>
<licence>GPL</licence>
<prefix>theme_bsreadable</prefix>
<description>Optimized for legibility</description>
<icon>vignette.png</icon>
<utilise id="ZBoot" version="[0.1.0-dev;]" />
<categorie>theme</categorie>
</plugin>

BIN
vignette.png

After

Width: 200  |  Height: 150  |  Size: 9.7 KiB

Loading…
Cancel
Save