naoned: new theme (#88161)
gitea/publik-base-theme/pipeline/head This commit looks good Details

This commit is contained in:
Thomas Jund 2024-04-10 18:06:12 +02:00 committed by Emmanuel Cazenave
parent 38f2c4ab38
commit 845776da3d
6 changed files with 737 additions and 0 deletions

535
static/naoned/_custom.scss Normal file
View File

@ -0,0 +1,535 @@
//
// Typo
//
html {
@media ($max-mobile-viewport) {
font-size: 100% / ( 16 / 15 );
}
}
h1, h2, label {
color: black;
}
h1, .h1 {
font-size: $fz-1;
font-weight: 600;
line-height: 1.2;
display: inline-block;
color: black;
padding: 0.5em 0;
border-bottom: 2px solid;
}
h2, .h2 {
font-size: $fz-2;
line-height: 1.2;
font-weight: bold;
}
h3, .h3 {
font-size: $fz-3;
line-height: 1.3;
font-weight: bold;
}
h4, .h4 {
font-size: $fz-4;
line-height: 1.3;
font-weight: 600;
}
//
// Buttons
//
%button {
border: 2px solid currentColor;
font-weight: 600;
&, &:hover {
box-shadow: none !important;
}
&:hover {
outline: $button-focus-outline;
}
}
.white-btn {
@extend %button;
--color: #{$font-color};
--background: white;
--hover-color: #{$button-color};
--hover-background: var(--background);
&:not(:hover) {
border-color: transparent;
}
}
.black-btn {
@extend %button;
--color: white;
--background: #{$font-color};
--hover-color: var(--color);
--hover-background: #{$button-color};
}
%inverted-button {
&:hover {
background-image: linear-gradient(
hsla(0, 0%, 0%, 0.5),
hsla(0, 0%, 0%, 0.5)
);
}
}
%delete-button {
--color: #{$error-color};
--hover-color: var(--color);
&:hover, &:focus {
outline-color: var(--color);
}
}
//
// HEADER
//
$naoned-mobile-logo-width: var(--naoned-mobile_logo_width, #{nth($header-logo-size, 1)});
$naoned-mobile-logo-height: var(--naoned-mobile_logo_height, #{nth($header-logo-size, 2)});
$naoned-header-vertical-padding: 1em;
.header-width {
--edge-gutter: 1em;
box-sizing: border-box;
}
#top {
display: flex;
padding: $naoned-header-vertical-padding 0;
align-items: center;
}
#logo {
border: none;
padding-top: 0;
padding-bottom: 0;
font-size: 1.2em;
font-weight: normal;
line-height: 1;
flex-grow: 1;
@media ($max-mobile-viewport) {
&.has-logo a {
&::before {
width: $naoned-mobile-logo-width;
height: $naoned-mobile-logo-height;
}
}
}
}
// toplinks
#toplinks {
position: static;
font-weight: 600;
text-align: right;
a {
margin-right: 0 !important;
padding: .33em .66em !important;
}
.login-link {
@extend .black-btn;
vertical-align: bottom;
}
.registration, .logout {
@extend .white-btn;
vertical-align: bottom;
}
.account-link {
@extend .white-btn;
vertical-align: bottom;
background-color: transparent;
text-align: center;
font-weight: 400;
.user-icon::before {
content: "\f2be"; // user-circle-o
display: block;
font-family: "fontAwesome", sans-serif;
font-size: $fz-3;
color: $button-color;
}
}
}
.site-title {
margin-top: 0;
@extend .h4;
font-style: italic;
color: $lighten-font-color;
font-weight: 600;
@media ($max-mobile-viewport) {
text-align: center;
}
}
// nav
div.gru-nav {
$active-border-height: extract-width($nav-item-selected-border);
@media ($min-desktop-viewport) {
text-align: center;
margin-bottom: -1*$active-border-height;
.submenu {
transform: translateY(-1*$active-border-height);
border: 1px solid $nav-active-color;
&--link {
border-bottom: none !important;
}
}
}
.menu{
margin: 0;
}
.menu--link {
position: relative;
}
li.selected > a,
li:focus-within > a,
li:hover > a {
color: $nav-item-hover-color;
}
}
@media ($max-mobile-viewport) {
div.gru-nav {
--edge-gutter: 1em;
position: fixed;
z-index: 2000;
top: 0;
width: auto;
font-size: 1rem;
height: $naoned-mobile-logo-height;
padding-top: $naoned-header-vertical-padding;
display: flex;
align-items: center;
justify-content: center;
.gru-nav-button {
position: relative;
top: unset;
left: unset;
+ ul::before {
height: calc( #{$naoned-mobile-logo-height} + #{$naoned-header-vertical-padding} );
}
&.toggled {
.icon-bar {
background: $font-color;
}
~ div.gru-nav-mask {
opacity: 0.6;
}
}
}
li > a {
border-bottom: none !important;
}
}
}
//
// MAIN
//
main {
background-color: $body-background;
border-top: 1px solid $primary-color;
}
div#main-content-wrapper {
position: static;
}
// Page title
.theme-page-header {
.cell {
text-align: center;
@extend .pk-transparent;
}
h1 {
font-weight: 300;
}
}
// sidebar
#sidebar {
@media ($min-desktop-viewport) {
padding-right: $columns-gutter / 2;
border-right: 1px solid $gray;
align-self: baseline;
}
}
//
// CELLS
//
%cell {
// --cell-background: #{$cell-background};
margin-bottom: 1.4em;
overflow: hidden;
}
.gru-content %cell-links-list {
& > li > a {
border-radius: 0 !important;
flex-wrap: nowrap;
border: solid transparent;
transition: transform 0.2s;
border-width: 0 0.2em 0 0;
&::before {
content: "";
display: block;
align-items: flex-start;
width: .5em;
height: .5em;
border: solid currentColor;
border-width: 0.15em 0.15em 0 0;
transform: rotate(45deg);
transform-origin: right;
margin-right: .66em;
}
&:hover {
transform: translateX(.33em);
filter: brightness(0.6);
}
}
li div.description {
color: $lighten-font-color;
p {
margin-left: 0;
margin-right: 0;
margin-bottom: 1rem;
}
}
}
div.cell.foldable {
> div > h2:first-child:hover {
color: $button-color;
background-color: white;
}
}
.white-cell {
&%cell {
background-color: white;
.links-list ul {
border-top: $cell-entry-border;
border-color: $body-background;
> li {
border-color: $body-background
}
}
}
}
.gru-content div.list-of-forms {
ul > li > a {
flex-wrap: wrap;
}
span.form-number,
span.form-status {
color: $font-color;
}
span.form-number {
font-size: $font-size-small;
}
}
// Image position (left of cell title)
.gru-content .cell.has-asset-picture {
$image-size: 3rem;
> div {
display: flex;
flex-wrap: wrap;
align-items: center;
> * {
flex: 0 0 100%;
}
> h2:first-child {
flex: 1 0 50%;
margin-left: -1 * ($image-size + 1);
padding-left: $image-size + 2;
}
> picture {
display: block;
order: -1;
flex: 0 0 $image-size;
align-self: center;
margin-left: 1rem;
position: relative;
z-index: 1;
img {
height: $image-size;
width: $image-size;
object-fit: contain;
// background-color: white;
border-radius: $cell-border-radius;
}
}
}
}
//
// WCS
//
.form-content {
padding-left: 1em;
padding-right: 1em;
}
div#side {
align-items: center;
}
div#tracking-code {
text-align: center;
.tracking-code-part {
background-color: white;
border-radius: $cell-border-radius;
}
h3 {
@media ($min-desktop-viewport) {
padding-bottom: 0;
}
}
a {
@extend %title;
color: $link-color;
&:hover {
text-decoration: underline;
}
}
}
.wcs-step {
&:not(.current) &--marker {
border: 1px solid currentColor;
}
}
div#rub_service {
form {
padding-top: 0;
padding-left: 0;
padding-right: 0;
}
}
*[readonly] {
background-color: transparent;
}
ul#evolutions li div.msg div.comment {
background-color: white;
}
ul#evolutions span.time {
color: $lighten-font-color;
}
ul#evolutions span.user {
font-style: italic;
opacity: 1;
}
ul#evolutions li span.item {
background-color: white !important;
}
//
// A2
//
#account-management, #account-management-fc {
@extend .white-cell;
}
//
// FOOTER
//
footer {
background-color: var(--naoned-footer_background, #{$primary-color});
margin-top: 1rem;
}
.footer-width {
// --edge-gutter: 1em;
}
#footer-wrapper a {
font-weight: 600;
}
#footer {
.cell {
margin-bottom: 1em;
h2:first-child {
@extend .h4;
color: $footer-color;
}
.links-list ul {
list-style: inside disc;
& > li {
border: none;
}
& > li > a {
display: unset;
padding: 0;
&:hover {
text-decoration: underline;
}
}
}
}
.menucell li a {
padding-top: 0;
padding-bottom: 0;
color: $footer-link-color;
}
}
// PWA
.pwa-navigation {
padding-top: 8px;
div > ul li a {
background-size: auto 25px;
background-position: center 7px;
padding-top: 40px;
font-size: $font-size-xsmall;
text-transform: uppercase;
line-height: 1.2;
background-color: white;
}
div > ul li {
margin: 0 1px;
&.selected {
&::before {
content: "";
width: 100%;
height: 8px;
background-color: $nav-active-color;
position: absolute;
bottom: 100%;
left: 0;
}
}
}
}

129
static/naoned/_vars.scss Normal file
View File

@ -0,0 +1,129 @@
// Colors
$gray-xlight: #f1f1f1;
$gray-light: #ccc;
$gray: #6E6E6E;
$gray-dark: #444;
$gray-xdark: #333;
$lighten-font-color: $gray-dark;
// typo
$base-font: 18;
$font-ratio: 1.16;
$fz-5: $font-ratio*1em;
$fz-4: $fz-5*$font-ratio;
$fz-3: $fz-4*$font-ratio;
$fz-2: $fz-3*$font-ratio;
$fz-1: $fz-2*$font-ratio*$font-ratio;
$fz-small: 1em/$font-ratio;
$fz-xsmall: $fz-small/$font-ratio;
// Core vars
$mobile-limit: 64em;
$very-small-limit: 35em;
$width: 1280em / $base-font;
$columns-gutter: 3em;
$sidebar-columns-gutter: $columns-gutter / 2;
$edge-gutter: 0em;
$sidebar-width: 16em;
$form-sidebar-width: $sidebar-width;
$font-size: 100% / ( 16 / $base-font );
$font-size-small: $fz-small;
$font-size-xsmall: $fz-xsmall;
$font-family: var(--naoned-font, sans-serif), sans-serif;
$primary-color: var(--naoned-primary_color, #117187);
$font-color: $gray-xdark;
$body-background: $gray-xlight;
$link-color: var(--naoned-link_color, #{$primary-color});
$error-color: #DA0000;
$header-background-color: var(--naoned-header_background_color, transparent);
$header-logo-size: var(--naoned-logo_width, 100px) var(--naoned-logo_height, 100px);
$toplinks-style: none;
$nav-after-image: false;
$responsive-menu: left-to-right;
$responsive-menu-mask: true;
$responsive-menu-mask-background: $primary-color;
$nav-full-width-background: true;
$nav-active-color: $primary-color;
$nav-border-color: none;
$nav-menu-color: $font-color;
$nav-font-weight: 600;
$nav-font-size: $font-size-small;
$nav-text-transform: uppercase;
$nav-item-selected-mode: bottom-border;
$nav-item-hover-background: white;
$nav-item-selected-background: white;
$nav-item-selected-border: 8px solid $nav-active-color;
$nav-item-selected-color: $primary-color;
$nav-menu-side: 40px;
$nav-mobile-menu-background: white;
$nav-mobile-menu-item-hover-background: $body-background;
$nav-button-color: $body-background;
$nav-mobile-bottom-bar-background: $body-background;
$title-background: transparent;
$title-font-size: $fz-3;
$title-transform: uppercase;
$cell-background: transparent;
$cell-border-radius: 5px;
$cell-border: 2px solid transparent;
$cell-image-padding: 0.33em;
$cell-entry-border: 3px solid white;
$cell-entry-hover-background: transparent;
$cell-entry-color: $link-color;
$cell-entry-hover-color: $primary-color;
$required-authentification-icon: "\f023";
$button-background: white;
$button-color: var(--naoned-button_color, #{$primary-color});
$button-hover-background: $button-background;
$button-hover-color: $button-color;
$button-border-radius: 5px;
$buttons-with-icons: true;
$submit-button-style: '%inverted-button';
$cancel-button-style: '.white-btn';
$buttons-order: previous, cancel (grow), submit;
$button-focus-outline: 2px solid $button-color;
$wcs-steps-spacing: 1em;
$wcs-step-color: $gray-dark;
$wcs-step-current-color: $primary-color;
$wcs-step-border-bottom: none;
$wcs-step-marker-color: $gray;
$wcs-step-marker-background: white;
$wcs-step-current-marker-background: $wcs-step-current-color;
$wcs-step-current-marker-color: white;
$wcs-step-marker-type: disc tied;
$wcs-step-marker-size: 1.9em;
$wcs-step-marker-tie-color: $gray-light;
$wcs-step-marker-tie-width: 4px;
$widget-unique-checkbox-position: left;
$widget-custom-radio-checkbox-color: blue;
$form-title-style: none;
$form-sidebar-gutter: $columns-gutter;
$form-accent-color: $primary-color;
$timetable-cell-background: white;
$timetable-cell-hover-color: $button-background;
$timetable-cell-hover-background: $button-color;
$widget-background: hsla(0, 0%, 100%, 0.5);
$widget-focus-background: white;
$widget-border: 1px solid $gray;
$widget-focus-outline: 2px solid $primary-color;
$notification-style: border-bar;
$notification_base_color: $error-color;
$table-wrapper-background: $body-background;
$footer-background: hsla(0, 0%, 0%, 0.5);
$footer-color: $gray-xlight;
$footer-link-color: var(--naoned-footer_link_color, white);
$footer-menucell-separator: 1px solid;

15
static/naoned/config.json Normal file
View File

@ -0,0 +1,15 @@
{
"label": "Naoned",
"variables": {
"theme_color": "#CC65FD",
"email_header_asset": "emails:logo"
},
"settings": {
"combo": {
"COMBO_ASSET_SLOTS.update": {
"header:logo": { "label": "Têtière : logo" },
"emails:logo": {"label": "Emails : logo"}
}
}
}
}

13
static/naoned/style.scss Normal file
View File

@ -0,0 +1,13 @@
@charset "UTF-8";
@import '../includes/fonts/asap';
@import '../includes/fonts/firasans';
@import '../includes/fonts/ibm-plex-serif';
@import '../includes/fonts/inter';
@import '../includes/fonts/krub';
@import '../includes/fonts/lato';
@import '../includes/fonts/montserrat';
@import '../includes/fonts/source-sans-pro';
@import 'vars';
@import '../includes/publik';
@import 'custom';

View File

@ -0,0 +1,7 @@
<span class="user-icon" aria-hidden="true"></span>
<span class="connected-user--first-name">
{{ user.first_name }}
</span>
<span class="connected-user--last-name">
{{ user.last_name|slice:"1" }}.
</span>

View File

@ -0,0 +1,38 @@
{% extends "theme.html" %}
{% load assets static %}
{% block extra_css %}
{% if theme_customization %}
<style>
html {
{% for varName, varValue in theme_customization.items %}
--naoned-{{ varName }}: {{varValue}};
{% endfor %}
}
</style>
{% endif %}
{% endblock %}
{% block header-bottom %}
<p class="site-title">
{% firstof global_title site_title "Compte Citoyen" %}
</p>
{% endblock %}
{% block content-pre %}
{% if custom_page_title != "None" %}
{% firstof custom_page_title page.title title as page_title %}
{% if page_title %}
<header class="theme-page-header gru-content">
<div class="cell">
<div class="cell--body">
<h1 class="theme-page-title">
{{ page_title }}
</h1>
</div>
</div>
</header>
{% endif %}
{% endif %}
{% endblock %}